panfrost: Don't double-flip Z/W for 2D arrays
We need to mindful that we don't clobber the shadow comparator. Fixes dEQP-GLES3.functional.shaders.texture_functions.texture.sampler2darrayshadow_* Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
This commit is contained in:
parent
bc4c853b49
commit
4cd3dc94ad
|
@ -1837,10 +1837,13 @@ emit_texop_native(compiler_context *ctx, nir_tex_instr *instr,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instr->sampler_dim == GLSL_SAMPLER_DIM_2D) {
|
if (instr->sampler_dim == GLSL_SAMPLER_DIM_2D) {
|
||||||
/* Array component in w but NIR wants it in z */
|
/* Array component in w but NIR wants it in z,
|
||||||
|
* but if we have a temp coord we already fixed
|
||||||
|
* that up */
|
||||||
|
|
||||||
if (nr_components == 3) {
|
if (nr_components == 3) {
|
||||||
ins.swizzle[1][2] = COMPONENT_Z;
|
ins.swizzle[1][2] = COMPONENT_Z;
|
||||||
ins.swizzle[1][3] = COMPONENT_Z;
|
ins.swizzle[1][3] = needs_temp_coord ? COMPONENT_W : COMPONENT_Z;
|
||||||
} else if (nr_components == 2) {
|
} else if (nr_components == 2) {
|
||||||
ins.swizzle[1][2] =
|
ins.swizzle[1][2] =
|
||||||
instr->is_shadow ? COMPONENT_Z : COMPONENT_X;
|
instr->is_shadow ? COMPONENT_Z : COMPONENT_X;
|
||||||
|
|
Loading…
Reference in New Issue