Mesa (main): microsoft/compiler: Fix LOD instruction to return 2 values
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Dec 30 18:51:46 UTC 2021
Module: Mesa
Branch: main
Commit: 8371591dc60f6b9b5d1b5b3d273105abd309887d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8371591dc60f6b9b5d1b5b3d273105abd309887d
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Fri Dec 10 15:03:32 2021 -0800
microsoft/compiler: Fix LOD instruction to return 2 values
Reviewed-by: Sil Vilerino <sivileri at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14161>
---
src/gallium/drivers/d3d12/ci/d3d12-quick_shader.txt | 8 ++------
src/microsoft/compiler/nir_to_dxil.c | 8 +++++---
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/gallium/drivers/d3d12/ci/d3d12-quick_shader.txt b/src/gallium/drivers/d3d12/ci/d3d12-quick_shader.txt
index 5fa226c209d..6b360e7bc2f 100644
--- a/src/gallium/drivers/d3d12/ci/d3d12-quick_shader.txt
+++ b/src/gallium/drivers/d3d12/ci/d3d12-quick_shader.txt
@@ -5754,10 +5754,6 @@ spec/arb_tessellation_shader/linker/no-vs: skip
spec/arb_tessellation_shader/linker/tcs-no-vs: skip
spec/arb_tessellation_shader/linker/tcs-output-size-declared-in-other-shader: skip
spec/arb_tessellation_shader/linker/tes-no-vs: skip
-spec/arb_texture_query_lod/execution/fs-texturequerylod-linear: crash
-spec/arb_texture_query_lod/execution/fs-texturequerylod-nearest: crash
-spec/arb_texture_query_lod/execution/fs-texturequerylod-nearest-biased: crash
-spec/arb_texture_query_lod/execution/fs-texturequerylod-no-mipmap: crash
spec/arb_uniform_buffer_object/2-buffers-bug: fail
spec/arb_uniform_buffer_object/execution/fs-array-of-structs-std140-indirect: fail
spec/arb_vertex_attrib_64bit/execution/vs-fp64-input-trunc: skip
@@ -13041,9 +13037,9 @@ spec/oes_viewport_array/viewport-gs-writes-out-of-range: skip
summary:
name: results
---- --------
- pass: 7204
+ pass: 7208
fail: 58
- crash: 27
+ crash: 23
skip: 12930
timeout: 0
warn: 25
diff --git a/src/microsoft/compiler/nir_to_dxil.c b/src/microsoft/compiler/nir_to_dxil.c
index 76f4bc09682..7649e8e1b53 100644
--- a/src/microsoft/compiler/nir_to_dxil.c
+++ b/src/microsoft/compiler/nir_to_dxil.c
@@ -3854,7 +3854,7 @@ emit_texel_fetch(struct ntd_context *ctx, struct texop_parameters *params)
}
static const struct dxil_value *
-emit_texture_lod(struct ntd_context *ctx, struct texop_parameters *params)
+emit_texture_lod(struct ntd_context *ctx, struct texop_parameters *params, bool clamped)
{
const struct dxil_func *func = dxil_get_function(&ctx->mod, "dx.op.calculateLOD", DXIL_F32);
if (!func)
@@ -3867,7 +3867,7 @@ emit_texture_lod(struct ntd_context *ctx, struct texop_parameters *params)
params->coord[0],
params->coord[1],
params->coord[2],
- dxil_module_get_int1_const(&ctx->mod, 1)
+ dxil_module_get_int1_const(&ctx->mod, clamped ? 1 : 0)
};
return dxil_emit_call(&ctx->mod, func, args, ARRAY_SIZE(args));
@@ -4060,8 +4060,10 @@ emit_tex(struct ntd_context *ctx, nir_tex_instr *instr)
break;
case nir_texop_lod:
- sample = emit_texture_lod(ctx, ¶ms);
+ sample = emit_texture_lod(ctx, ¶ms, true);
store_dest(ctx, &instr->dest, 0, sample, nir_alu_type_get_base_type(instr->dest_type));
+ sample = emit_texture_lod(ctx, ¶ms, false);
+ store_dest(ctx, &instr->dest, 1, sample, nir_alu_type_get_base_type(instr->dest_type));
return true;
case nir_texop_query_levels:
More information about the mesa-commit
mailing list