mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader: Recognise the "raw_buffer" and "structured_buffer" shader model 5 resource types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
3bacb33556
commit
804d191aee
@ -442,6 +442,8 @@ enum vkd3d_sm4_resource_type
|
||||
VKD3D_SM4_RESOURCE_TEXTURE_2DARRAY = 0x8,
|
||||
VKD3D_SM4_RESOURCE_TEXTURE_2DMSARRAY = 0x9,
|
||||
VKD3D_SM4_RESOURCE_TEXTURE_CUBEARRAY = 0xa,
|
||||
VKD3D_SM4_RESOURCE_RAW_BUFFER = 0xb,
|
||||
VKD3D_SM4_RESOURCE_STRUCTURED_BUFFER = 0xc,
|
||||
};
|
||||
|
||||
enum vkd3d_sm4_data_type
|
||||
@ -535,6 +537,8 @@ static const enum vkd3d_shader_resource_type resource_type_table[] =
|
||||
/* VKD3D_SM4_RESOURCE_TEXTURE_2DARRAY */ VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY,
|
||||
/* VKD3D_SM4_RESOURCE_TEXTURE_2DMSARRAY */ VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY,
|
||||
/* VKD3D_SM4_RESOURCE_TEXTURE_CUBEARRAY */ VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY,
|
||||
/* VKD3D_SM4_RESOURCE_RAW_BUFFER */ VKD3D_SHADER_RESOURCE_BUFFER,
|
||||
/* VKD3D_SM4_RESOURCE_STRUCTURED_BUFFER */ VKD3D_SHADER_RESOURCE_BUFFER,
|
||||
};
|
||||
|
||||
static const enum vkd3d_data_type data_type_table[] =
|
||||
@ -1831,6 +1835,11 @@ static void shader_sm4_read_instruction_modifier(DWORD modifier, struct vkd3d_sh
|
||||
enum vkd3d_sm4_resource_type resource_type
|
||||
= (modifier & VKD3D_SM5_MODIFIER_RESOURCE_TYPE_MASK) >> VKD3D_SM5_MODIFIER_RESOURCE_TYPE_SHIFT;
|
||||
|
||||
if (resource_type == VKD3D_SM4_RESOURCE_RAW_BUFFER)
|
||||
ins->raw = true;
|
||||
else if (resource_type == VKD3D_SM4_RESOURCE_STRUCTURED_BUFFER)
|
||||
ins->structured = true;
|
||||
|
||||
if (resource_type < ARRAY_SIZE(resource_type_table))
|
||||
ins->resource_type = resource_type_table[resource_type];
|
||||
else
|
||||
@ -1899,6 +1908,8 @@ void shader_sm4_read_instruction(void *data, const DWORD **ptr, struct vkd3d_sha
|
||||
ins->handler_idx = opcode_info->handler_idx;
|
||||
ins->flags = 0;
|
||||
ins->coissue = false;
|
||||
ins->raw = false;
|
||||
ins->structured = false;
|
||||
ins->predicate = NULL;
|
||||
ins->dst_count = strlen(opcode_info->dst_info);
|
||||
ins->dst = priv->dst_param;
|
||||
|
@ -1639,6 +1639,10 @@ static void shader_dump_instruction(struct vkd3d_d3d_asm_compiler *compiler,
|
||||
if (ins->resource_type != VKD3D_SHADER_RESOURCE_NONE)
|
||||
{
|
||||
shader_addline(buffer, "_indexable(");
|
||||
if (ins->raw)
|
||||
vkd3d_string_buffer_printf(buffer, "raw_");
|
||||
if (ins->structured)
|
||||
vkd3d_string_buffer_printf(buffer, "structured_");
|
||||
shader_dump_resource_type(compiler, ins->resource_type);
|
||||
if (ins->resource_stride)
|
||||
shader_print_uint_literal(compiler, ", stride=", ins->resource_stride, "");
|
||||
|
@ -789,7 +789,7 @@ struct vkd3d_shader_instruction
|
||||
enum vkd3d_shader_resource_type resource_type;
|
||||
unsigned int resource_stride;
|
||||
enum vkd3d_data_type resource_data_type[VKD3D_VEC4_SIZE];
|
||||
bool coissue;
|
||||
bool coissue, structured, raw;
|
||||
const struct vkd3d_shader_src_param *predicate;
|
||||
union
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user