From 83e54bdc0c3d13ced53579912f737fd18b262061 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 22 Jul 2025 00:20:37 +0200 Subject: [PATCH] vkd3d-shader/hlsl: Handle HLSL_RESOURCE_SAMPLE_LOD in sm1_generate_vsir_instr_resource_load(). Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58063 --- libs/vkd3d-shader/d3dbc.c | 1 + libs/vkd3d-shader/hlsl_codegen.c | 4 ++++ tests/hlsl/sample-level.shader_test | 16 ++++++++-------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/libs/vkd3d-shader/d3dbc.c b/libs/vkd3d-shader/d3dbc.c index 49e1a5293..49802e2c9 100644 --- a/libs/vkd3d-shader/d3dbc.c +++ b/libs/vkd3d-shader/d3dbc.c @@ -2018,6 +2018,7 @@ static void d3dbc_write_vsir_instruction(struct d3dbc_compiler *d3dbc, const str case VSIR_OP_SINCOS: case VSIR_OP_SLT: case VSIR_OP_TEXLD: + case VSIR_OP_TEXLDL: case VSIR_OP_TEXLDD: d3dbc_write_instruction(d3dbc, ins); break; diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 263653e2f..d4bcdf5c9 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -9403,6 +9403,10 @@ static void sm1_generate_vsir_instr_resource_load(struct hlsl_ctx *ctx, flags |= VKD3DSI_TEXLD_PROJECT; break; + case HLSL_RESOURCE_SAMPLE_LOD: + opcode = VSIR_OP_TEXLDL; + break; + case HLSL_RESOURCE_SAMPLE_LOD_BIAS: opcode = VSIR_OP_TEXLD; flags |= VKD3DSI_TEXLD_BIAS; diff --git a/tests/hlsl/sample-level.shader_test b/tests/hlsl/sample-level.shader_test index 6bd2e098e..681216d4b 100644 --- a/tests/hlsl/sample-level.shader_test +++ b/tests/hlsl/sample-level.shader_test @@ -14,7 +14,7 @@ levels 2 0.0 0.0 1.0 0.0 -[pixel shader todo(sm<4)] +[pixel shader] sampler s; Texture2D t; uniform float level; @@ -26,20 +26,20 @@ float4 main() : sv_target [test] uniform 0 float4 0.0 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (1.0, 0.0, 1.0, 0.0) uniform 0 float4 0.5 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (0.5, 0.0, 1.0, 0.0) uniform 0 float4 1.0 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (0.0, 0.0, 1.0, 0.0) [require] shader model >= 3.0 options: backcompat -[pixel shader fail(sm>=5.1) todo(sm<4 | sm>=5.1)] +[pixel shader fail(sm>=5.1) todo(sm>=5.1)] sampler s; float level; @@ -50,11 +50,11 @@ float4 main() : sv_target [test] uniform 0 float4 0.0 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (1.0, 0.0, 1.0, 0.0) uniform 0 float4 0.5 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (0.5, 0.0, 1.0, 0.0) uniform 0 float4 1.0 0.0 0.0 0.0 -todo(sm<4) draw quad +draw quad probe (0, 0) rgba (0.0, 0.0, 1.0, 0.0)