mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/hlsl: Generate CTAB outside sm1_generate_vsir().
For consistency with the sm4_generate_rdef() and sm4_generate_vsir() functions.
This commit is contained in:
parent
ca9bb2e089
commit
347e7a396d
Notes:
Henri Verbeet
2024-12-10 15:58:38 +01:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1308
@ -1755,7 +1755,7 @@ static void sm1_sort_externs(struct hlsl_ctx *ctx)
|
|||||||
list_move_tail(&ctx->extern_vars, &sorted);
|
list_move_tail(&ctx->extern_vars, &sorted);
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_sm1_uniforms(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *buffer)
|
static void write_sm1_uniforms(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *buffer)
|
||||||
{
|
{
|
||||||
size_t ctab_offset, ctab_start, ctab_end, vars_offset, vars_start, size_offset, creator_offset, offset;
|
size_t ctab_offset, ctab_start, ctab_end, vars_offset, vars_start, size_offset, creator_offset, offset;
|
||||||
unsigned int uniform_count = 0;
|
unsigned int uniform_count = 0;
|
||||||
@ -1914,6 +1914,21 @@ void write_sm1_uniforms(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *buff
|
|||||||
set_u32(buffer, size_offset, vkd3d_make_u32(VKD3D_SM1_OP_COMMENT, (ctab_end - ctab_offset) / sizeof(uint32_t)));
|
set_u32(buffer, size_offset, vkd3d_make_u32(VKD3D_SM1_OP_COMMENT, (ctab_end - ctab_offset) / sizeof(uint32_t)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sm1_generate_ctab(struct hlsl_ctx *ctx, struct vkd3d_shader_code *ctab)
|
||||||
|
{
|
||||||
|
struct vkd3d_bytecode_buffer buffer = {0};
|
||||||
|
|
||||||
|
write_sm1_uniforms(ctx, &buffer);
|
||||||
|
if (buffer.status)
|
||||||
|
{
|
||||||
|
vkd3d_free(buffer.data);
|
||||||
|
ctx->result = buffer.status;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctab->code = buffer.data;
|
||||||
|
ctab->size = buffer.size;
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t sm1_encode_register_type(enum vkd3d_shader_register_type type)
|
static uint32_t sm1_encode_register_type(enum vkd3d_shader_register_type type)
|
||||||
{
|
{
|
||||||
return ((type << VKD3D_SM1_REGISTER_TYPE_SHIFT) & VKD3D_SM1_REGISTER_TYPE_MASK)
|
return ((type << VKD3D_SM1_REGISTER_TYPE_SHIFT) & VKD3D_SM1_REGISTER_TYPE_MASK)
|
||||||
|
@ -1649,10 +1649,7 @@ bool hlsl_transform_ir(struct hlsl_ctx *ctx, bool (*func)(struct hlsl_ctx *ctx,
|
|||||||
D3DXPARAMETER_CLASS hlsl_sm1_class(const struct hlsl_type *type);
|
D3DXPARAMETER_CLASS hlsl_sm1_class(const struct hlsl_type *type);
|
||||||
D3DXPARAMETER_TYPE hlsl_sm1_base_type(const struct hlsl_type *type, bool is_combined_sampler);
|
D3DXPARAMETER_TYPE hlsl_sm1_base_type(const struct hlsl_type *type, bool is_combined_sampler);
|
||||||
|
|
||||||
void write_sm1_uniforms(struct hlsl_ctx *ctx, struct vkd3d_bytecode_buffer *buffer);
|
void sm1_generate_ctab(struct hlsl_ctx *ctx, struct vkd3d_shader_code *ctab);
|
||||||
int d3dbc_compile(struct vsir_program *program, uint64_t config_flags,
|
|
||||||
const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_code *ctab,
|
|
||||||
struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
|
|
||||||
|
|
||||||
struct extern_resource
|
struct extern_resource
|
||||||
{
|
{
|
||||||
|
@ -8007,10 +8007,9 @@ static void sm1_generate_vsir_block(struct hlsl_ctx *ctx, struct hlsl_block *blo
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void sm1_generate_vsir(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_func,
|
static void sm1_generate_vsir(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_func,
|
||||||
uint64_t config_flags, struct vsir_program *program, struct vkd3d_shader_code *ctab)
|
uint64_t config_flags, struct vsir_program *program)
|
||||||
{
|
{
|
||||||
struct vkd3d_shader_version version = {0};
|
struct vkd3d_shader_version version = {0};
|
||||||
struct vkd3d_bytecode_buffer buffer = {0};
|
|
||||||
struct hlsl_block block;
|
struct hlsl_block block;
|
||||||
|
|
||||||
version.major = ctx->profile->major_version;
|
version.major = ctx->profile->major_version;
|
||||||
@ -8022,16 +8021,6 @@ static void sm1_generate_vsir(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_sm1_uniforms(ctx, &buffer);
|
|
||||||
if (buffer.status)
|
|
||||||
{
|
|
||||||
vkd3d_free(buffer.data);
|
|
||||||
ctx->result = buffer.status;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ctab->code = buffer.data;
|
|
||||||
ctab->size = buffer.size;
|
|
||||||
|
|
||||||
generate_vsir_signature(ctx, program, entry_func);
|
generate_vsir_signature(ctx, program, entry_func);
|
||||||
|
|
||||||
hlsl_block_init(&block);
|
hlsl_block_init(&block);
|
||||||
@ -10569,7 +10558,11 @@ int hlsl_emit_bytecode(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry
|
|||||||
struct vsir_program program;
|
struct vsir_program program;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
sm1_generate_vsir(ctx, entry_func, config_flags, &program, &ctab);
|
sm1_generate_ctab(ctx, &ctab);
|
||||||
|
if (ctx->result)
|
||||||
|
return ctx->result;
|
||||||
|
|
||||||
|
sm1_generate_vsir(ctx, entry_func, config_flags, &program);
|
||||||
if (ctx->result)
|
if (ctx->result)
|
||||||
{
|
{
|
||||||
vsir_program_cleanup(&program);
|
vsir_program_cleanup(&program);
|
||||||
|
@ -1659,6 +1659,10 @@ int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc,
|
|||||||
int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
|
int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
|
||||||
struct vkd3d_shader_message_context *message_context, struct shader_signature *signature);
|
struct vkd3d_shader_message_context *message_context, struct shader_signature *signature);
|
||||||
|
|
||||||
|
int d3dbc_compile(struct vsir_program *program, uint64_t config_flags,
|
||||||
|
const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_code *ctab,
|
||||||
|
struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context);
|
||||||
|
|
||||||
int glsl_compile(struct vsir_program *program, uint64_t config_flags,
|
int glsl_compile(struct vsir_program *program, uint64_t config_flags,
|
||||||
const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info,
|
const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info,
|
||||||
const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info,
|
const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user