Module: Mesa Branch: main Commit: 8371591dc60f6b9b5d1b5b3d273105abd309887d URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8371591dc60f6b9b5d1b5b3d273105abd309887d
Author: Jesse Natalie <[email protected]> Date: Fri Dec 10 15:03:32 2021 -0800 microsoft/compiler: Fix LOD instruction to return 2 values Reviewed-by: Sil Vilerino <[email protected]> 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:
