vkd3d-shader: Store a vkd3d_shader_register_range structure in struct vkd3d_shader_constant_buffer.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Conor McCarthy
2021-06-24 14:03:48 +10:00
committed by Alexandre Julliard
parent 1b716f8c28
commit 533d901a24
5 changed files with 10 additions and 10 deletions

View File

@@ -686,12 +686,12 @@ static void shader_sm4_read_dcl_constant_buffer(struct vkd3d_shader_instruction
const DWORD *end = &tokens[token_count]; const DWORD *end = &tokens[token_count];
shader_sm4_read_src_param(priv, &tokens, end, VKD3D_DATA_FLOAT, &ins->declaration.cb.src); shader_sm4_read_src_param(priv, &tokens, end, VKD3D_DATA_FLOAT, &ins->declaration.cb.src);
ins->declaration.cb.register_index = shader_sm4_map_resource_idx(&ins->declaration.cb.src.reg, priv); ins->declaration.cb.range.first = shader_sm4_map_resource_idx(&ins->declaration.cb.src.reg, priv);
if (opcode_token & VKD3D_SM4_INDEX_TYPE_MASK) if (opcode_token & VKD3D_SM4_INDEX_TYPE_MASK)
ins->flags |= VKD3DSI_INDEXED_DYNAMIC; ins->flags |= VKD3DSI_INDEXED_DYNAMIC;
ins->declaration.cb.size = ins->declaration.cb.src.reg.idx[2].offset; ins->declaration.cb.size = ins->declaration.cb.src.reg.idx[2].offset;
ins->declaration.cb.register_space = 0; ins->declaration.cb.range.space = 0;
if (shader_is_sm_5_1(priv)) if (shader_is_sm_5_1(priv))
{ {
@@ -702,7 +702,7 @@ static void shader_sm4_read_dcl_constant_buffer(struct vkd3d_shader_instruction
} }
ins->declaration.cb.size = *tokens++; ins->declaration.cb.size = *tokens++;
shader_sm4_read_register_space(priv, &tokens, end, &ins->declaration.cb.register_space); shader_sm4_read_register_space(priv, &tokens, end, &ins->declaration.cb.range.space);
} }
} }

View File

@@ -2403,8 +2403,8 @@ static bool vkd3d_dxbc_compiler_check_shader_visibility(const struct vkd3d_dxbc_
static struct vkd3d_push_constant_buffer_binding *vkd3d_dxbc_compiler_find_push_constant_buffer( static struct vkd3d_push_constant_buffer_binding *vkd3d_dxbc_compiler_find_push_constant_buffer(
const struct vkd3d_dxbc_compiler *compiler, const struct vkd3d_shader_constant_buffer *cb) const struct vkd3d_dxbc_compiler *compiler, const struct vkd3d_shader_constant_buffer *cb)
{ {
unsigned int register_space = cb->register_space; unsigned int register_space = cb->range.space;
unsigned int reg_idx = cb->register_index; unsigned int reg_idx = cb->range.first;
unsigned int i; unsigned int i;
for (i = 0; i < compiler->shader_interface.push_constant_buffer_count; ++i) for (i = 0; i < compiler->shader_interface.push_constant_buffer_count; ++i)
@@ -5309,7 +5309,7 @@ static void vkd3d_dxbc_compiler_emit_dcl_constant_buffer(struct vkd3d_dxbc_compi
pointer_type_id, storage_class, 0); pointer_type_id, storage_class, 0);
vkd3d_dxbc_compiler_emit_descriptor_binding_for_reg(compiler, vkd3d_dxbc_compiler_emit_descriptor_binding_for_reg(compiler,
var_id, reg, cb->register_space, cb->register_index, VKD3D_SHADER_RESOURCE_BUFFER, false); var_id, reg, cb->range.space, cb->range.first, VKD3D_SHADER_RESOURCE_BUFFER, false);
vkd3d_dxbc_compiler_emit_register_debug_name(builder, var_id, reg); vkd3d_dxbc_compiler_emit_register_debug_name(builder, var_id, reg);

View File

@@ -1438,7 +1438,7 @@ static void shader_dump_instruction(struct vkd3d_d3d_asm_compiler *compiler,
shader_print_subscript(compiler, ins->declaration.cb.size, NULL); shader_print_subscript(compiler, ins->declaration.cb.size, NULL);
shader_addline(buffer, ", %s", shader_addline(buffer, ", %s",
ins->flags & VKD3DSI_INDEXED_DYNAMIC ? "dynamicIndexed" : "immediateIndexed"); ins->flags & VKD3DSI_INDEXED_DYNAMIC ? "dynamicIndexed" : "immediateIndexed");
shader_dump_register_space(compiler, ins->declaration.cb.register_space); shader_dump_register_space(compiler, ins->declaration.cb.range.space);
break; break;
case VKD3DSIH_DCL_FUNCTION_BODY: case VKD3DSIH_DCL_FUNCTION_BODY:

View File

@@ -632,8 +632,8 @@ static void vkd3d_shader_scan_constant_buffer_declaration(struct vkd3d_shader_sc
if (!context->scan_descriptor_info) if (!context->scan_descriptor_info)
return; return;
vkd3d_shader_scan_add_descriptor(context, VKD3D_SHADER_DESCRIPTOR_TYPE_CBV, cb->register_space, vkd3d_shader_scan_add_descriptor(context, VKD3D_SHADER_DESCRIPTOR_TYPE_CBV, cb->range.space,
cb->register_index, VKD3D_SHADER_RESOURCE_BUFFER, VKD3D_SHADER_RESOURCE_DATA_UINT, 0); cb->range.first, VKD3D_SHADER_RESOURCE_BUFFER, VKD3D_SHADER_RESOURCE_DATA_UINT, 0);
} }
static void vkd3d_shader_scan_sampler_declaration(struct vkd3d_shader_scan_context *context, static void vkd3d_shader_scan_sampler_declaration(struct vkd3d_shader_scan_context *context,

View File

@@ -727,7 +727,7 @@ struct vkd3d_shader_constant_buffer
{ {
struct vkd3d_shader_src_param src; struct vkd3d_shader_src_param src;
unsigned int size; unsigned int size;
unsigned int register_space, register_index; struct vkd3d_shader_register_range range;
}; };
struct vkd3d_shader_structured_resource struct vkd3d_shader_structured_resource