diff --git a/libs/vkd3d-shader/fx.c b/libs/vkd3d-shader/fx.c index 7a226c1c87090b8b99a4f260752828d9c9608ed8..debcb2618115be39931912585940ad7060f8d7c0 100644 --- a/libs/vkd3d-shader/fx.c +++ b/libs/vkd3d-shader/fx.c @@ -2366,6 +2366,7 @@ static inline bool is_object_fx_type(enum state_property_component_type type) case FX_BLEND: case FX_VERTEXSHADER: case FX_PIXELSHADER: + case FX_GEOMETRYSHADER: return true; default: return false; @@ -2761,7 +2762,8 @@ static void resolve_fx_4_state_block_values(struct hlsl_ir_var *var, struct hlsl struct hlsl_ir_constant *c = hlsl_ir_constant(node); struct hlsl_type *data_type = c->node.data_type; - if (data_type->class == HLSL_CLASS_SCALAR && data_type->e.numeric.type == HLSL_TYPE_UINT) + if (data_type->class == HLSL_CLASS_SCALAR + && (data_type->e.numeric.type == HLSL_TYPE_INT || data_type->e.numeric.type == HLSL_TYPE_UINT)) { if (c->value.u[0].u != 0) hlsl_error(ctx, &ctx->location, VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX, diff --git a/tests/hlsl/effect-pass-states-fx_5.shader_test b/tests/hlsl/effect-pass-states-fx_5.shader_test index 651122d15e3d264340ec2ded22c2c0744b21235a..2ff18759824826045784e08a0170d68b87c86d10 100644 --- a/tests/hlsl/effect-pass-states-fx_5.shader_test +++ b/tests/hlsl/effect-pass-states-fx_5.shader_test @@ -39,5 +39,19 @@ technique11 SetBlendState(NULL, float4(5, 6, 7, 8), 0xf0); SetVertexShader(NULL); SetPixelShader(NULL); + SetGeometryShader(NULL); + } + pass + { + SetDepthStencilState(1-1, 4); + SetRasterizerState(1-1); + SetHullShader(1-1); + SetComputeShader(1-1); + SetDomainShader(1-1); + OMSetRenderTargets(1-1, 1-1); + SetBlendState(1-1, float4(5, 6, 7, 8), 0xf0); + SetVertexShader(1-1); + SetPixelShader(1-1); + SetGeometryShader(0u); } }