mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 15:00:10 +01:00
i965: Rewrite ir_tex to ir_txl with lod 0 for vertex shaders
The ir_tex opcode turns into a sample or sample_c message, which will try to compute derivatives to determine the lod. This produces garbage for non-fragment shaders where the sample coordinates don't correspond to subspans. We fix this by rewriting the opcode from ir_tex to ir_txl and setting the lod to 0. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89457 Cc: "10.5" <mesa-stable@lists.freedesktop.org> Signed-off-by: Kristian Høgsberg <kristian.h.kristensen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
a7d018accf
commit
993a6288f7
1 changed files with 9 additions and 0 deletions
|
|
@ -1839,6 +1839,15 @@ fs_visitor::emit_texture_gen7(ir_texture_opcode op, fs_reg dst,
|
|||
offset_value.file != BAD_FILE && offset_value.file != IMM;
|
||||
bool coordinate_done = false;
|
||||
|
||||
/* The sampler can only meaningfully compute LOD for fragment shader
|
||||
* messages. For all other stages, we change the opcode to ir_txl and
|
||||
* hardcode the LOD to 0.
|
||||
*/
|
||||
if (stage != MESA_SHADER_FRAGMENT && op == ir_tex) {
|
||||
op = ir_txl;
|
||||
lod = fs_reg(0.0f);
|
||||
}
|
||||
|
||||
/* Set up the LOD info */
|
||||
switch (op) {
|
||||
case ir_tex:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue