mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-10 01:18:18 +02:00
nir/lower_tex: skip external texture YUV lowering for query instructions
Guard external texture lowering by !nir_tex_instr_is_query(), matching the pattern already used by swizzle_result and lower_srgb. Fixes textureSize() on samplerExternalOES on panfrost, which triggers the assertion: ``` Invalid invariant idx.type == BI_INDEX_REGISTER: r10 = TEX_SINGLE.rgb.2d.f32.zero_lod _.h00, ^r10, ^r11, sr_count:0 ``` Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41454>
This commit is contained in:
parent
9d858b6719
commit
9da4fb526a
1 changed files with 53 additions and 51 deletions
|
|
@ -1649,69 +1649,71 @@ nir_lower_tex_block(nir_block *block, nir_builder *b,
|
|||
} else
|
||||
texture_mask = texture_index < 32 ? (1u << texture_index) : 0u;
|
||||
|
||||
if (texture_mask & options->lower_y_uv_external) {
|
||||
lower_y_uv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (!nir_tex_instr_is_query(tex)) {
|
||||
if (texture_mask & options->lower_y_uv_external) {
|
||||
lower_y_uv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_y_vu_external) {
|
||||
lower_y_vu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_y_vu_external) {
|
||||
lower_y_vu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_y_u_v_external) {
|
||||
lower_y_u_v_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_y_u_v_external) {
|
||||
lower_y_u_v_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_yx_xuxv_external) {
|
||||
lower_yx_xuxv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_yx_xuxv_external) {
|
||||
lower_yx_xuxv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_yx_xvxu_external) {
|
||||
lower_yx_xvxu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_yx_xvxu_external) {
|
||||
lower_yx_xvxu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_xy_uxvx_external) {
|
||||
lower_xy_uxvx_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_xy_uxvx_external) {
|
||||
lower_xy_uxvx_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_xy_vxux_external) {
|
||||
lower_xy_vxux_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_xy_vxux_external) {
|
||||
lower_xy_vxux_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_ayuv_external) {
|
||||
lower_ayuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_ayuv_external) {
|
||||
lower_ayuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_xyuv_external) {
|
||||
lower_xyuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_xyuv_external) {
|
||||
lower_xyuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_yuv_external) {
|
||||
lower_yuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_yuv_external) {
|
||||
lower_yuv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_yu_yv_external) {
|
||||
lower_yu_yv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_yu_yv_external) {
|
||||
lower_yu_yv_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_yv_yu_external) {
|
||||
lower_yv_yu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
if (texture_mask & options->lower_yv_yu_external) {
|
||||
lower_yv_yu_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (texture_mask & options->lower_y41x_external) {
|
||||
lower_y41x_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
if (texture_mask & options->lower_y41x_external) {
|
||||
lower_y41x_external(b, tex, options, texture_index);
|
||||
progress = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (sat_mask) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue