Skip to content
Snippets Groups Projects

Minor vkd3d_shader_parser related cleanups.

Merged Henri Verbeet requested to merge hverbeet/vkd3d:for_upstream_0 into master
1 file
+ 2
3
Compare changes
  • Side-by-side
  • Inline
+ 15
17
@@ -207,7 +207,7 @@ struct vkd3d_sm1_opcode_info
@@ -207,7 +207,7 @@ struct vkd3d_sm1_opcode_info
struct vkd3d_shader_sm1_parser
struct vkd3d_shader_sm1_parser
{
{
const struct vkd3d_sm1_opcode_info *opcode_table;
const struct vkd3d_sm1_opcode_info *opcode_table;
const uint32_t *start, *end;
const uint32_t *start, *end, *ptr;
bool abort;
bool abort;
struct vkd3d_shader_parser p;
struct vkd3d_shader_parser p;
@@ -671,7 +671,7 @@ static void shader_sm1_read_immconst(struct vkd3d_shader_sm1_parser *sm1, const
@@ -671,7 +671,7 @@ static void shader_sm1_read_immconst(struct vkd3d_shader_sm1_parser *sm1, const
static void shader_sm1_read_comment(struct vkd3d_shader_sm1_parser *sm1)
static void shader_sm1_read_comment(struct vkd3d_shader_sm1_parser *sm1)
{
{
const uint32_t **ptr = &sm1->p.ptr;
const uint32_t **ptr = &sm1->ptr;
const char *comment;
const char *comment;
unsigned int size;
unsigned int size;
size_t remaining;
size_t remaining;
@@ -738,13 +738,12 @@ static void shader_sm1_validate_instruction(struct vkd3d_shader_sm1_parser *sm1,
@@ -738,13 +738,12 @@ static void shader_sm1_validate_instruction(struct vkd3d_shader_sm1_parser *sm1,
}
}
}
}
static void shader_sm1_read_instruction(struct vkd3d_shader_parser *parser, struct vkd3d_shader_instruction *ins)
static void shader_sm1_read_instruction(struct vkd3d_shader_sm1_parser *sm1, struct vkd3d_shader_instruction *ins)
{
{
struct vkd3d_shader_sm1_parser *sm1 = vkd3d_shader_sm1_parser(parser);
struct vkd3d_shader_src_param *src_params, *predicate;
struct vkd3d_shader_src_param *src_params, *predicate;
const struct vkd3d_sm1_opcode_info *opcode_info;
const struct vkd3d_sm1_opcode_info *opcode_info;
struct vkd3d_shader_dst_param *dst_param;
struct vkd3d_shader_dst_param *dst_param;
const uint32_t **ptr = &parser->ptr;
const uint32_t **ptr = &sm1->ptr;
uint32_t opcode_token;
uint32_t opcode_token;
const uint32_t *p;
const uint32_t *p;
bool predicated;
bool predicated;
@@ -758,11 +757,11 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_parser *parser, stru
@@ -758,11 +757,11 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_parser *parser, stru
goto fail;
goto fail;
}
}
++parser->location.line;
++sm1->p.location.line;
opcode_token = read_u32(ptr);
opcode_token = read_u32(ptr);
if (!(opcode_info = shader_sm1_get_opcode_info(sm1, opcode_token & VKD3D_SM1_OPCODE_MASK)))
if (!(opcode_info = shader_sm1_get_opcode_info(sm1, opcode_token & VKD3D_SM1_OPCODE_MASK)))
{
{
vkd3d_shader_parser_error(parser, VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE,
vkd3d_shader_parser_error(&sm1->p, VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE,
"Invalid opcode %#x (token 0x%08x, shader version %u.%u).",
"Invalid opcode %#x (token 0x%08x, shader version %u.%u).",
opcode_token & VKD3D_SM1_OPCODE_MASK, opcode_token,
opcode_token & VKD3D_SM1_OPCODE_MASK, opcode_token,
sm1->p.shader_version.major, sm1->p.shader_version.minor);
sm1->p.shader_version.major, sm1->p.shader_version.minor);
@@ -775,14 +774,14 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_parser *parser, stru
@@ -775,14 +774,14 @@ static void shader_sm1_read_instruction(struct vkd3d_shader_parser *parser, stru
ins->raw = false;
ins->raw = false;
ins->structured = false;
ins->structured = false;
predicated = !!(opcode_token & VKD3D_SM1_INSTRUCTION_PREDICATED);
predicated = !!(opcode_token & VKD3D_SM1_INSTRUCTION_PREDICATED);
ins->predicate = predicate = predicated ? shader_parser_get_src_params(parser, 1) : NULL;
ins->predicate = predicate = predicated ? shader_parser_get_src_params(&sm1->p, 1) : NULL;
ins->dst_count = opcode_info->dst_count;
ins->dst_count = opcode_info->dst_count;
ins->dst = dst_param = shader_parser_get_dst_params(parser, ins->dst_count);
ins->dst = dst_param = shader_parser_get_dst_params(&sm1->p, ins->dst_count);
ins->src_count = opcode_info->src_count;
ins->src_count = opcode_info->src_count;
ins->src = src_params = shader_parser_get_src_params(parser, ins->src_count);
ins->src = src_params = shader_parser_get_src_params(&sm1->p, ins->src_count);
if ((!predicate && predicated) || (!src_params && ins->src_count) || (!dst_param && ins->dst_count))
if ((!predicate && predicated) || (!src_params && ins->src_count) || (!dst_param && ins->dst_count))
{
{
vkd3d_shader_parser_error(parser, VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY, "Out of memory.");
vkd3d_shader_parser_error(&sm1->p, VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY, "Out of memory.");
goto fail;
goto fail;
}
}
@@ -852,10 +851,9 @@ fail:
@@ -852,10 +851,9 @@ fail:
*ptr = sm1->end;
*ptr = sm1->end;
}
}
static bool shader_sm1_is_end(struct vkd3d_shader_parser *parser)
static bool shader_sm1_is_end(struct vkd3d_shader_sm1_parser *sm1)
{
{
struct vkd3d_shader_sm1_parser *sm1 = vkd3d_shader_sm1_parser(parser);
const uint32_t **ptr = &sm1->ptr;
const uint32_t **ptr = &parser->ptr;
shader_sm1_read_comment(sm1);
shader_sm1_read_comment(sm1);
@@ -938,7 +936,7 @@ static enum vkd3d_result shader_sm1_init(struct vkd3d_shader_sm1_parser *sm1,
@@ -938,7 +936,7 @@ static enum vkd3d_result shader_sm1_init(struct vkd3d_shader_sm1_parser *sm1,
shader_desc = &sm1->p.shader_desc;
shader_desc = &sm1->p.shader_desc;
shader_desc->byte_code = code;
shader_desc->byte_code = code;
shader_desc->byte_code_size = code_size;
shader_desc->byte_code_size = code_size;
sm1->p.ptr = sm1->start;
sm1->ptr = sm1->start;
return VKD3D_OK;
return VKD3D_OK;
}
}
@@ -965,7 +963,7 @@ int vkd3d_shader_sm1_parser_create(const struct vkd3d_shader_compile_info *compi
@@ -965,7 +963,7 @@ int vkd3d_shader_sm1_parser_create(const struct vkd3d_shader_compile_info *compi
}
}
instructions = &sm1->p.instructions;
instructions = &sm1->p.instructions;
while (!shader_sm1_is_end(&sm1->p))
while (!shader_sm1_is_end(sm1))
{
{
if (!shader_instruction_array_reserve(instructions, instructions->count + 1))
if (!shader_instruction_array_reserve(instructions, instructions->count + 1))
{
{
@@ -975,7 +973,7 @@ int vkd3d_shader_sm1_parser_create(const struct vkd3d_shader_compile_info *compi
@@ -975,7 +973,7 @@ int vkd3d_shader_sm1_parser_create(const struct vkd3d_shader_compile_info *compi
return VKD3D_ERROR_OUT_OF_MEMORY;
return VKD3D_ERROR_OUT_OF_MEMORY;
}
}
ins = &instructions->elements[instructions->count];
ins = &instructions->elements[instructions->count];
shader_sm1_read_instruction(&sm1->p, ins);
shader_sm1_read_instruction(sm1, ins);
if (ins->handler_idx == VKD3DSIH_INVALID)
if (ins->handler_idx == VKD3DSIH_INVALID)
{
{
Loading