mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader: Store the shader type and version in the hlsl_ctx structure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
e957d3a346
commit
60ece9cd62
@ -1370,17 +1370,6 @@ void hlsl_add_function(struct rb_tree *funcs, char *name, struct hlsl_ir_functio
|
|||||||
rb_put(funcs, func->name, &func->entry);
|
rb_put(funcs, func->name, &func->entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct hlsl_profile_info
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
enum vkd3d_shader_type type;
|
|
||||||
DWORD sm_major;
|
|
||||||
DWORD sm_minor;
|
|
||||||
DWORD level_major;
|
|
||||||
DWORD level_minor;
|
|
||||||
bool sw;
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct hlsl_profile_info *get_target_info(const char *target)
|
static const struct hlsl_profile_info *get_target_info(const char *target)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@ -1556,10 +1545,13 @@ 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));
|
memset(ctx, 0, sizeof(*ctx));
|
||||||
|
|
||||||
|
ctx->profile = profile;
|
||||||
|
|
||||||
ctx->message_context = message_context;
|
ctx->message_context = message_context;
|
||||||
|
|
||||||
if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files))))
|
if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files))))
|
||||||
@ -1642,7 +1634,7 @@ int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d
|
|||||||
|
|
||||||
vkd3d_shader_dump_shader(profile->type, &compile_info->source);
|
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;
|
return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
||||||
if (hlsl_lexer_compile(&ctx, hlsl) == 2)
|
if (hlsl_lexer_compile(&ctx, hlsl) == 2)
|
||||||
|
@ -390,8 +390,21 @@ struct hlsl_scope
|
|||||||
struct hlsl_scope *upper;
|
struct hlsl_scope *upper;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct hlsl_profile_info
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
enum vkd3d_shader_type type;
|
||||||
|
unsigned int major_version;
|
||||||
|
unsigned int minor_version;
|
||||||
|
unsigned int major_level;
|
||||||
|
unsigned int minor_level;
|
||||||
|
bool software;
|
||||||
|
};
|
||||||
|
|
||||||
struct hlsl_ctx
|
struct hlsl_ctx
|
||||||
{
|
{
|
||||||
|
const struct hlsl_profile_info *profile;
|
||||||
|
|
||||||
const char **source_files;
|
const char **source_files;
|
||||||
unsigned int source_files_count;
|
unsigned int source_files_count;
|
||||||
struct vkd3d_shader_location location;
|
struct vkd3d_shader_location location;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user