[PATCH vkd3d 3/5] vkd3d-shader: Store the shader type and version in the hlsl_ctx structure.
Matteo Bruni
matteo.mystral at gmail.com
Fri Apr 2 15:05:07 CDT 2021
On Wed, Mar 31, 2021 at 12:04 AM Zebediah Figura
<zfigura at codeweavers.com> wrote:
>
> Signed-off-by: Zebediah Figura <zfigura at 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.
More information about the wine-devel
mailing list