mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-16 13:40:29 +01:00
i965/fs: Always provide a default LOD of 0 for TXS and TXL
We already provide a default LOD for textureQueryLevels and texture() on
non-fragment stages. However, there are more cases where one is needed
such as textureSize(gsampler2DMS*) in SPIR-V. Instead of trying to list
out all of the cases one at a time, just provide the default for all TXS
and TXL operations. This fixes a shader validation error in the new
Sascha deferredmultisampling demo which uses textureSize(gsampler2DMS).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100391
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Cc: "13.0 17.0" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 3503b2714b)
This commit is contained in:
parent
d20d8fdc1d
commit
f77cecf08c
1 changed files with 9 additions and 9 deletions
|
|
@ -4377,15 +4377,6 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
|
|||
srcs[TEX_LOGICAL_SRC_COORD_COMPONENTS] = brw_imm_d(instr->coord_components);
|
||||
srcs[TEX_LOGICAL_SRC_GRAD_COMPONENTS] = brw_imm_d(lod_components);
|
||||
|
||||
if (instr->op == nir_texop_query_levels ||
|
||||
(instr->op == nir_texop_tex && stage != MESA_SHADER_FRAGMENT)) {
|
||||
/* textureQueryLevels() and texture() are implemented in terms of TXS
|
||||
* and TXL respectively, so we need to pass a valid LOD argument.
|
||||
*/
|
||||
assert(srcs[TEX_LOGICAL_SRC_LOD].file == BAD_FILE);
|
||||
srcs[TEX_LOGICAL_SRC_LOD] = brw_imm_ud(0u);
|
||||
}
|
||||
|
||||
enum opcode opcode;
|
||||
switch (instr->op) {
|
||||
case nir_texop_tex:
|
||||
|
|
@ -4452,6 +4443,15 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
|
|||
unreachable("unknown texture opcode");
|
||||
}
|
||||
|
||||
/* TXS and TXL require a LOD but not everything we implement using those
|
||||
* two opcodes provides one. Provide a default LOD of 0.
|
||||
*/
|
||||
if ((opcode == SHADER_OPCODE_TXS_LOGICAL ||
|
||||
opcode == SHADER_OPCODE_TXL_LOGICAL) &&
|
||||
srcs[TEX_LOGICAL_SRC_LOD].file == BAD_FILE) {
|
||||
srcs[TEX_LOGICAL_SRC_LOD] = brw_imm_ud(0u);
|
||||
}
|
||||
|
||||
if (instr->op == nir_texop_tg4) {
|
||||
if (instr->component == 1 &&
|
||||
key_tex->gather_channel_quirk_mask & (1 << texture)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue