diff --git a/src/microsoft/compiler/dxil_enums.c b/src/microsoft/compiler/dxil_enums.c index 14b6c337431..8b2e80be703 100644 --- a/src/microsoft/compiler/dxil_enums.c +++ b/src/microsoft/compiler/dxil_enums.c @@ -43,6 +43,7 @@ enum dxil_prog_sig_comp_type dxil_get_prog_sig_comp_type(const struct glsl_type case GLSL_TYPE_UINT64: return DXIL_PROG_SIG_COMP_TYPE_UINT64; case GLSL_TYPE_INT64: return DXIL_PROG_SIG_COMP_TYPE_SINT64; case GLSL_TYPE_BOOL: return DXIL_PROG_SIG_COMP_TYPE_UINT32; + case GLSL_TYPE_STRUCT: return DXIL_PROG_SIG_COMP_TYPE_UINT32; default: debug_printf("unexpected type: %s\n", glsl_get_type_name(type)); return DXIL_PROG_SIG_COMP_TYPE_UNKNOWN; diff --git a/src/microsoft/compiler/dxil_signature.c b/src/microsoft/compiler/dxil_signature.c index b3ea0178abc..7f28267d560 100644 --- a/src/microsoft/compiler/dxil_signature.c +++ b/src/microsoft/compiler/dxil_signature.c @@ -127,7 +127,8 @@ get_additional_semantic_info(nir_shader *s, nir_variable *var, struct semantic_i dxil_get_prog_sig_comp_type(type); bool is_depth = is_depth_output(info->kind); - info->sig_comp_type = dxil_get_comp_type(type); + info->sig_comp_type = glsl_type_is_struct(type) ? + DXIL_COMP_TYPE_U32 : dxil_get_comp_type(type); bool is_gs_input = s->info.stage == MESA_SHADER_GEOMETRY && (var->data.mode & (nir_var_shader_in | nir_var_system_value));