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);
     }
 }