On Wed, Mar 31, 2021 at 12:04 AM Zebediah Figura zfigura@codeweavers.com wrote:
Signed-off-by: Zebediah Figura zfigura@codeweavers.com
libs/vkd3d-shader/hlsl.c | 9 +++++++-- libs/vkd3d-shader/hlsl.h | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/hlsl.c b/libs/vkd3d-shader/hlsl.c index 67ca2f2c..c1f03978 100644 --- a/libs/vkd3d-shader/hlsl.c +++ b/libs/vkd3d-shader/hlsl.c @@ -1556,10 +1556,15 @@ static void declare_predefined_types(struct hlsl_ctx *ctx) } }
-static bool hlsl_ctx_init(struct hlsl_ctx *ctx, struct vkd3d_shader_message_context *message_context) +static bool hlsl_ctx_init(struct hlsl_ctx *ctx, const struct hlsl_profile_info *profile,
struct vkd3d_shader_message_context *message_context)
{ memset(ctx, 0, sizeof(*ctx));
ctx->shader_type = profile->type;
ctx->major_version = profile->sm_major;
ctx->minor_version = profile->sm_minor;
ctx->message_context = message_context;
if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files))))
@@ -1642,7 +1647,7 @@ int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d
vkd3d_shader_dump_shader(profile->type, &compile_info->source);
- if (!hlsl_ctx_init(&ctx, message_context))
if (!hlsl_ctx_init(&ctx, profile, message_context)) return VKD3D_ERROR_OUT_OF_MEMORY;
if (hlsl_lexer_compile(&ctx, hlsl) == 2)
diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h index 664137ce..475119d1 100644 --- a/libs/vkd3d-shader/hlsl.h +++ b/libs/vkd3d-shader/hlsl.h @@ -380,6 +380,7 @@ struct hlsl_ir_constant double d[4]; bool b[4]; } value;
- struct hlsl_reg reg;
};
struct hlsl_scope @@ -392,6 +393,9 @@ struct hlsl_scope
struct hlsl_ctx {
- enum vkd3d_shader_type shader_type;
- unsigned int major_version, minor_version;
- const char **source_files; unsigned int source_files_count; struct vkd3d_shader_location location;
Otherwise we could store a pointer to the hlsl_profile_info structure. Not sure if that would make things more complicated down the line.