mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Introduce HLSL_REGSET_STREAM_OUTPUTS regset.
This commit is contained in:
Notes:
Henri Verbeet
2025-04-23 18:18:33 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1458
@@ -387,6 +387,9 @@ static enum hlsl_regset type_get_regset(const struct hlsl_type *type)
|
||||
case HLSL_CLASS_UAV:
|
||||
return HLSL_REGSET_UAVS;
|
||||
|
||||
case HLSL_CLASS_STREAM_OUTPUT:
|
||||
return HLSL_REGSET_STREAM_OUTPUTS;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -493,6 +496,10 @@ static void hlsl_type_calculate_reg_size(struct hlsl_ctx *ctx, struct hlsl_type
|
||||
type->reg_size[HLSL_REGSET_UAVS] = 1;
|
||||
break;
|
||||
|
||||
case HLSL_CLASS_STREAM_OUTPUT:
|
||||
type->reg_size[HLSL_REGSET_STREAM_OUTPUTS] = 1;
|
||||
break;
|
||||
|
||||
case HLSL_CLASS_DEPTH_STENCIL_STATE:
|
||||
case HLSL_CLASS_DEPTH_STENCIL_VIEW:
|
||||
case HLSL_CLASS_EFFECT_GROUP:
|
||||
@@ -511,7 +518,6 @@ static void hlsl_type_calculate_reg_size(struct hlsl_ctx *ctx, struct hlsl_type
|
||||
case HLSL_CLASS_HULL_SHADER:
|
||||
case HLSL_CLASS_GEOMETRY_SHADER:
|
||||
case HLSL_CLASS_BLEND_STATE:
|
||||
case HLSL_CLASS_STREAM_OUTPUT:
|
||||
case HLSL_CLASS_NULL:
|
||||
break;
|
||||
}
|
||||
@@ -984,6 +990,7 @@ struct hlsl_type *hlsl_new_stream_output_type(struct hlsl_ctx *ctx,
|
||||
type->class = HLSL_CLASS_STREAM_OUTPUT;
|
||||
type->e.so.so_type = so_type;
|
||||
type->e.so.type = data_type;
|
||||
hlsl_type_calculate_reg_size(ctx, type);
|
||||
|
||||
list_add_tail(&ctx->types, &type->entry);
|
||||
|
||||
|
@@ -141,7 +141,8 @@ enum hlsl_regset
|
||||
HLSL_REGSET_SAMPLERS,
|
||||
HLSL_REGSET_TEXTURES,
|
||||
HLSL_REGSET_UAVS,
|
||||
HLSL_REGSET_LAST_OBJECT = HLSL_REGSET_UAVS,
|
||||
HLSL_REGSET_STREAM_OUTPUTS,
|
||||
HLSL_REGSET_LAST_OBJECT = HLSL_REGSET_STREAM_OUTPUTS,
|
||||
HLSL_REGSET_NUMERIC,
|
||||
HLSL_REGSET_LAST = HLSL_REGSET_NUMERIC,
|
||||
};
|
||||
|
@@ -5191,6 +5191,8 @@ static char get_regset_name(enum hlsl_regset regset)
|
||||
return 't';
|
||||
case HLSL_REGSET_UAVS:
|
||||
return 'u';
|
||||
case HLSL_REGSET_STREAM_OUTPUTS:
|
||||
return 'm';
|
||||
case HLSL_REGSET_NUMERIC:
|
||||
vkd3d_unreachable();
|
||||
}
|
||||
@@ -13248,7 +13250,7 @@ static void process_entry_function(struct hlsl_ctx *ctx,
|
||||
validate_and_record_prim_type(ctx, var);
|
||||
prepend_input_var_copy(ctx, entry_func, var);
|
||||
}
|
||||
else if (hlsl_get_stream_output_type(var->data_type))
|
||||
else if (var->data_type->reg_size[HLSL_REGSET_STREAM_OUTPUTS])
|
||||
{
|
||||
if (profile->type != VKD3D_SHADER_TYPE_GEOMETRY)
|
||||
{
|
||||
|
Reference in New Issue
Block a user