mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader: Consistently pass location structure by pointer.
This commit is contained in:
parent
0ce55e8b8e
commit
dfe923ea1d
Notes:
Alexandre Julliard
2023-04-19 22:10:22 +02:00
Approved-by: Matteo Bruni (@Mystral) Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Zebediah Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/158
@ -921,7 +921,7 @@ struct hlsl_ir_node *hlsl_new_cast(struct hlsl_ctx *ctx, struct hlsl_ir_node *no
|
||||
{
|
||||
struct hlsl_ir_node *cast;
|
||||
|
||||
cast = hlsl_new_unary_expr(ctx, HLSL_OP1_CAST, node, *loc);
|
||||
cast = hlsl_new_unary_expr(ctx, HLSL_OP1_CAST, node, loc);
|
||||
if (cast)
|
||||
cast->data_type = type;
|
||||
return cast;
|
||||
@ -934,7 +934,7 @@ struct hlsl_ir_node *hlsl_new_copy(struct hlsl_ctx *ctx, struct hlsl_ir_node *no
|
||||
}
|
||||
|
||||
struct hlsl_ir_var *hlsl_new_var(struct hlsl_ctx *ctx, const char *name, struct hlsl_type *type,
|
||||
const struct vkd3d_shader_location loc, const struct hlsl_semantic *semantic, unsigned int modifiers,
|
||||
const struct vkd3d_shader_location *loc, const struct hlsl_semantic *semantic, unsigned int modifiers,
|
||||
const struct hlsl_reg_reservation *reg_reservation)
|
||||
{
|
||||
struct hlsl_ir_var *var;
|
||||
@ -944,7 +944,7 @@ struct hlsl_ir_var *hlsl_new_var(struct hlsl_ctx *ctx, const char *name, struct
|
||||
|
||||
var->name = name;
|
||||
var->data_type = type;
|
||||
var->loc = loc;
|
||||
var->loc = *loc;
|
||||
if (semantic)
|
||||
var->semantic = *semantic;
|
||||
var->storage_modifiers = modifiers;
|
||||
@ -969,7 +969,7 @@ struct hlsl_ir_var *hlsl_new_synthetic_var(struct hlsl_ctx *ctx, const char *tem
|
||||
hlsl_release_string_buffer(ctx, string);
|
||||
return NULL;
|
||||
}
|
||||
var = hlsl_new_var(ctx, name, type, *loc, NULL, 0, NULL);
|
||||
var = hlsl_new_var(ctx, name, type, loc, NULL, 0, NULL);
|
||||
hlsl_release_string_buffer(ctx, string);
|
||||
if (var)
|
||||
list_add_tail(&ctx->dummy_scope->vars, &var->scope_entry);
|
||||
@ -1192,11 +1192,11 @@ struct hlsl_ir_node *hlsl_new_expr(struct hlsl_ctx *ctx, enum hlsl_ir_expr_op op
|
||||
}
|
||||
|
||||
struct hlsl_ir_node *hlsl_new_unary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_expr_op op,
|
||||
struct hlsl_ir_node *arg, struct vkd3d_shader_location loc)
|
||||
struct hlsl_ir_node *arg, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *operands[HLSL_MAX_OPERANDS] = {arg};
|
||||
|
||||
return hlsl_new_expr(ctx, op, operands, arg->data_type, &loc);
|
||||
return hlsl_new_expr(ctx, op, operands, arg->data_type, loc);
|
||||
}
|
||||
|
||||
struct hlsl_ir_node *hlsl_new_binary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_expr_op op,
|
||||
@ -1256,12 +1256,12 @@ struct hlsl_ir_load *hlsl_new_load_index(struct hlsl_ctx *ctx, const struct hlsl
|
||||
}
|
||||
|
||||
struct hlsl_ir_load *hlsl_new_var_load(struct hlsl_ctx *ctx, struct hlsl_ir_var *var,
|
||||
struct vkd3d_shader_location loc)
|
||||
const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_deref var_deref;
|
||||
|
||||
hlsl_init_simple_deref_from_var(&var_deref, var);
|
||||
return hlsl_new_load_index(ctx, &var_deref, NULL, &loc);
|
||||
return hlsl_new_load_index(ctx, &var_deref, NULL, loc);
|
||||
}
|
||||
|
||||
struct hlsl_ir_load *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
@ -1385,24 +1385,25 @@ struct hlsl_ir_node *hlsl_new_index(struct hlsl_ctx *ctx, struct hlsl_ir_node *v
|
||||
return &index->node;
|
||||
}
|
||||
|
||||
struct hlsl_ir_jump *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type type, struct vkd3d_shader_location loc)
|
||||
struct hlsl_ir_jump *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type type,
|
||||
const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_jump *jump;
|
||||
|
||||
if (!(jump = hlsl_alloc(ctx, sizeof(*jump))))
|
||||
return NULL;
|
||||
init_node(&jump->node, HLSL_IR_JUMP, NULL, &loc);
|
||||
init_node(&jump->node, HLSL_IR_JUMP, NULL, loc);
|
||||
jump->type = type;
|
||||
return jump;
|
||||
}
|
||||
|
||||
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, struct vkd3d_shader_location loc)
|
||||
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_loop *loop;
|
||||
|
||||
if (!(loop = hlsl_alloc(ctx, sizeof(*loop))))
|
||||
return NULL;
|
||||
init_node(&loop->node, HLSL_IR_LOOP, NULL, &loc);
|
||||
init_node(&loop->node, HLSL_IR_LOOP, NULL, loc);
|
||||
hlsl_block_init(&loop->body);
|
||||
return loop;
|
||||
}
|
||||
@ -1545,7 +1546,7 @@ static struct hlsl_ir_node *clone_jump(struct hlsl_ctx *ctx, struct hlsl_ir_jump
|
||||
{
|
||||
struct hlsl_ir_jump *dst;
|
||||
|
||||
if (!(dst = hlsl_new_jump(ctx, src->type, src->node.loc)))
|
||||
if (!(dst = hlsl_new_jump(ctx, src->type, &src->node.loc)))
|
||||
return NULL;
|
||||
return &dst->node;
|
||||
}
|
||||
@ -1570,7 +1571,7 @@ static struct hlsl_ir_node *clone_loop(struct hlsl_ctx *ctx, struct clone_instr_
|
||||
{
|
||||
struct hlsl_ir_loop *dst;
|
||||
|
||||
if (!(dst = hlsl_new_loop(ctx, src->node.loc)))
|
||||
if (!(dst = hlsl_new_loop(ctx, &src->node.loc)))
|
||||
return NULL;
|
||||
if (!clone_block(ctx, &dst->body, &src->body, map))
|
||||
{
|
||||
@ -1760,7 +1761,7 @@ struct hlsl_ir_function_decl *hlsl_new_func_decl(struct hlsl_ctx *ctx,
|
||||
}
|
||||
|
||||
struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type type, const char *name,
|
||||
const struct hlsl_reg_reservation *reservation, struct vkd3d_shader_location loc)
|
||||
const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_buffer *buffer;
|
||||
|
||||
@ -1770,7 +1771,7 @@ struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type
|
||||
buffer->name = name;
|
||||
if (reservation)
|
||||
buffer->reservation = *reservation;
|
||||
buffer->loc = loc;
|
||||
buffer->loc = *loc;
|
||||
list_add_tail(&ctx->buffers, &buffer->entry);
|
||||
return buffer;
|
||||
}
|
||||
@ -3158,10 +3159,10 @@ static bool hlsl_ctx_init(struct hlsl_ctx *ctx, const char *source_name,
|
||||
list_init(&ctx->buffers);
|
||||
|
||||
if (!(ctx->globals_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
|
||||
hlsl_strdup(ctx, "$Globals"), NULL, ctx->location)))
|
||||
hlsl_strdup(ctx, "$Globals"), NULL, &ctx->location)))
|
||||
return false;
|
||||
if (!(ctx->params_buffer = hlsl_new_buffer(ctx, HLSL_BUFFER_CONSTANT,
|
||||
hlsl_strdup(ctx, "$Params"), NULL, ctx->location)))
|
||||
hlsl_strdup(ctx, "$Params"), NULL, &ctx->location)))
|
||||
return false;
|
||||
ctx->cur_buffer = ctx->globals_buffer;
|
||||
|
||||
|
@ -1051,7 +1051,7 @@ struct hlsl_ir_node *hlsl_new_binary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_exp
|
||||
struct hlsl_ir_node *arg2);
|
||||
struct hlsl_ir_node *hlsl_new_bool_constant(struct hlsl_ctx *ctx, bool b, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_buffer *hlsl_new_buffer(struct hlsl_ctx *ctx, enum hlsl_buffer_type type, const char *name,
|
||||
const struct hlsl_reg_reservation *reservation, struct vkd3d_shader_location loc);
|
||||
const struct hlsl_reg_reservation *reservation, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_call(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *decl,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_cast(struct hlsl_ctx *ctx, struct hlsl_ir_node *node, struct hlsl_type *type,
|
||||
@ -1071,12 +1071,13 @@ struct hlsl_ir_node *hlsl_new_if(struct hlsl_ctx *ctx, struct hlsl_ir_node *cond
|
||||
struct hlsl_block *then_block, struct hlsl_block *else_block, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_constant *hlsl_new_int_constant(struct hlsl_ctx *ctx, int n,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_jump *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type type, struct vkd3d_shader_location loc);
|
||||
struct hlsl_ir_jump *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type type,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
|
||||
void hlsl_init_simple_deref_from_var(struct hlsl_deref *deref, struct hlsl_ir_var *var);
|
||||
|
||||
struct hlsl_ir_load *hlsl_new_var_load(struct hlsl_ctx *ctx, struct hlsl_ir_var *var,
|
||||
struct vkd3d_shader_location loc);
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_load *hlsl_new_load_index(struct hlsl_ctx *ctx, const struct hlsl_deref *deref,
|
||||
struct hlsl_ir_node *idx, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_load *hlsl_new_load_component(struct hlsl_ctx *ctx, struct hlsl_block *block,
|
||||
@ -1092,7 +1093,7 @@ bool hlsl_index_is_noncontiguous(struct hlsl_ir_index *index);
|
||||
|
||||
struct hlsl_ir_node *hlsl_new_index(struct hlsl_ctx *ctx, struct hlsl_ir_node *val,
|
||||
struct hlsl_ir_node *idx, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, struct vkd3d_shader_location loc);
|
||||
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_resource_load *hlsl_new_resource_load(struct hlsl_ctx *ctx,
|
||||
const struct hlsl_resource_load_params *params, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_resource_store *hlsl_new_resource_store(struct hlsl_ctx *ctx, const struct hlsl_deref *resource,
|
||||
@ -1109,9 +1110,9 @@ struct hlsl_type *hlsl_new_uav_type(struct hlsl_ctx *ctx, enum hlsl_sampler_dim
|
||||
struct hlsl_ir_constant *hlsl_new_uint_constant(struct hlsl_ctx *ctx, unsigned int n,
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_node *hlsl_new_unary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_expr_op op, struct hlsl_ir_node *arg,
|
||||
struct vkd3d_shader_location loc);
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_var *hlsl_new_var(struct hlsl_ctx *ctx, const char *name, struct hlsl_type *type,
|
||||
const struct vkd3d_shader_location loc, const struct hlsl_semantic *semantic, unsigned int modifiers,
|
||||
const struct vkd3d_shader_location *loc, const struct hlsl_semantic *semantic, unsigned int modifiers,
|
||||
const struct hlsl_reg_reservation *reg_reservation);
|
||||
|
||||
void hlsl_error(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc,
|
||||
|
@ -345,7 +345,7 @@ static struct hlsl_ir_node *add_cast(struct hlsl_ctx *ctx, struct list *instrs,
|
||||
list_move_tail(instrs, &block.instrs);
|
||||
}
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, loc)))
|
||||
return NULL;
|
||||
list_add_tail(instrs, &load->node.entry);
|
||||
|
||||
@ -389,14 +389,15 @@ static struct hlsl_ir_node *add_implicit_conversion(struct hlsl_ctx *ctx, struct
|
||||
return add_cast(ctx, instrs, node, dst_type, loc);
|
||||
}
|
||||
|
||||
static DWORD add_modifiers(struct hlsl_ctx *ctx, DWORD modifiers, DWORD mod, const struct vkd3d_shader_location loc)
|
||||
static DWORD add_modifiers(struct hlsl_ctx *ctx, DWORD modifiers, DWORD mod,
|
||||
const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
if (modifiers & mod)
|
||||
{
|
||||
struct vkd3d_string_buffer *string;
|
||||
|
||||
if ((string = hlsl_modifiers_to_string(ctx, mod)))
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
|
||||
"Modifier '%s' was already specified.", string->buffer);
|
||||
hlsl_release_string_buffer(ctx, string);
|
||||
return modifiers;
|
||||
@ -415,13 +416,13 @@ static bool append_conditional_break(struct hlsl_ctx *ctx, struct list *cond_lis
|
||||
return true;
|
||||
|
||||
condition = node_from_list(cond_list);
|
||||
if (!(not = hlsl_new_unary_expr(ctx, HLSL_OP1_LOGIC_NOT, condition, condition->loc)))
|
||||
if (!(not = hlsl_new_unary_expr(ctx, HLSL_OP1_LOGIC_NOT, condition, &condition->loc)))
|
||||
return false;
|
||||
list_add_tail(cond_list, ¬->entry);
|
||||
|
||||
hlsl_block_init(&then_block);
|
||||
|
||||
if (!(jump = hlsl_new_jump(ctx, HLSL_IR_JUMP_BREAK, condition->loc)))
|
||||
if (!(jump = hlsl_new_jump(ctx, HLSL_IR_JUMP_BREAK, &condition->loc)))
|
||||
return false;
|
||||
hlsl_block_add_instr(&then_block, &jump->node);
|
||||
|
||||
@ -439,7 +440,7 @@ enum loop_type
|
||||
};
|
||||
|
||||
static struct list *create_loop(struct hlsl_ctx *ctx, enum loop_type type, struct list *init, struct list *cond,
|
||||
struct list *iter, struct list *body, struct vkd3d_shader_location loc)
|
||||
struct list *iter, struct list *body, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct list *list = NULL;
|
||||
struct hlsl_ir_loop *loop = NULL;
|
||||
@ -585,7 +586,7 @@ static struct hlsl_ir_swizzle *get_swizzle(struct hlsl_ctx *ctx, struct hlsl_ir_
|
||||
}
|
||||
|
||||
static struct hlsl_ir_jump *add_return(struct hlsl_ctx *ctx, struct list *instrs,
|
||||
struct hlsl_ir_node *return_value, struct vkd3d_shader_location loc)
|
||||
struct hlsl_ir_node *return_value, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_type *return_type = ctx->cur_function->return_type;
|
||||
struct hlsl_ir_jump *jump;
|
||||
@ -596,7 +597,7 @@ static struct hlsl_ir_jump *add_return(struct hlsl_ctx *ctx, struct list *instrs
|
||||
{
|
||||
struct hlsl_ir_store *store;
|
||||
|
||||
if (!(return_value = add_implicit_conversion(ctx, instrs, return_value, return_type, &loc)))
|
||||
if (!(return_value = add_implicit_conversion(ctx, instrs, return_value, return_type, loc)))
|
||||
return NULL;
|
||||
|
||||
if (!(store = hlsl_new_simple_store(ctx, ctx->cur_function->return_var, return_value)))
|
||||
@ -605,14 +606,14 @@ static struct hlsl_ir_jump *add_return(struct hlsl_ctx *ctx, struct list *instrs
|
||||
}
|
||||
else
|
||||
{
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN, "Non-void functions must return a value.");
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN, "Non-void functions must return a value.");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (return_value)
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN, "Void functions cannot return a value.");
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN, "Void functions cannot return a value.");
|
||||
}
|
||||
|
||||
if (!(jump = hlsl_new_jump(ctx, HLSL_IR_JUMP_RETURN, loc)))
|
||||
@ -648,18 +649,18 @@ static struct hlsl_ir_load *add_load_component(struct hlsl_ctx *ctx, struct list
|
||||
}
|
||||
|
||||
static bool add_record_access(struct hlsl_ctx *ctx, struct list *instrs, struct hlsl_ir_node *record,
|
||||
unsigned int idx, const struct vkd3d_shader_location loc)
|
||||
unsigned int idx, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *index;
|
||||
struct hlsl_ir_constant *c;
|
||||
|
||||
assert(idx < record->data_type->e.record.field_count);
|
||||
|
||||
if (!(c = hlsl_new_uint_constant(ctx, idx, &loc)))
|
||||
if (!(c = hlsl_new_uint_constant(ctx, idx, loc)))
|
||||
return false;
|
||||
list_add_tail(instrs, &c->node.entry);
|
||||
|
||||
if (!(index = hlsl_new_index(ctx, record, &c->node, &loc)))
|
||||
if (!(index = hlsl_new_index(ctx, record, &c->node, loc)))
|
||||
return false;
|
||||
list_add_tail(instrs, &index->entry);
|
||||
|
||||
@ -696,7 +697,7 @@ static struct hlsl_ir_node *add_zero_mipmap_level(struct hlsl_ctx *ctx, struct l
|
||||
return NULL;
|
||||
list_add_tail(instrs, &store->node.entry);
|
||||
|
||||
if (!(coords_load = hlsl_new_var_load(ctx, coords, *loc)))
|
||||
if (!(coords_load = hlsl_new_var_load(ctx, coords, loc)))
|
||||
return NULL;
|
||||
list_add_tail(instrs, &coords_load->node.entry);
|
||||
|
||||
@ -971,7 +972,7 @@ static bool add_typedef(struct hlsl_ctx *ctx, struct hlsl_type *const orig_type,
|
||||
}
|
||||
|
||||
static bool add_func_parameter(struct hlsl_ctx *ctx, struct hlsl_func_parameters *parameters,
|
||||
struct parse_parameter *param, const struct vkd3d_shader_location loc)
|
||||
struct parse_parameter *param, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_var *var;
|
||||
|
||||
@ -979,11 +980,11 @@ static bool add_func_parameter(struct hlsl_ctx *ctx, struct hlsl_func_parameters
|
||||
assert(param->type->modifiers & HLSL_MODIFIERS_MAJORITY_MASK);
|
||||
|
||||
if ((param->modifiers & HLSL_STORAGE_OUT) && (param->modifiers & HLSL_STORAGE_UNIFORM))
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER,
|
||||
"Parameter '%s' is declared as both \"out\" and \"uniform\".", param->name);
|
||||
|
||||
if (param->reg_reservation.offset_type)
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION,
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION,
|
||||
"packoffset() is not allowed on function parameters.");
|
||||
|
||||
if (!(var = hlsl_new_var(ctx, param->name, param->type, loc, ¶m->semantic, param->modifiers,
|
||||
@ -1319,7 +1320,7 @@ static struct hlsl_ir_node *add_expr(struct hlsl_ctx *ctx, struct list *instrs,
|
||||
list_move_tail(instrs, &block.instrs);
|
||||
}
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, loc)))
|
||||
return NULL;
|
||||
list_add_tail(instrs, &load->node.entry);
|
||||
|
||||
@ -1410,13 +1411,13 @@ static struct hlsl_ir_node *add_binary_arithmetic_expr(struct hlsl_ctx *ctx, str
|
||||
}
|
||||
|
||||
static struct list *add_binary_arithmetic_expr_merge(struct hlsl_ctx *ctx, struct list *list1, struct list *list2,
|
||||
enum hlsl_ir_expr_op op, struct vkd3d_shader_location loc)
|
||||
enum hlsl_ir_expr_op op, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *arg1 = node_from_list(list1), *arg2 = node_from_list(list2);
|
||||
|
||||
list_move_tail(list1, list2);
|
||||
vkd3d_free(list2);
|
||||
add_binary_arithmetic_expr(ctx, list1, op, arg1, arg2, &loc);
|
||||
add_binary_arithmetic_expr(ctx, list1, op, arg1, arg2, loc);
|
||||
return list1;
|
||||
}
|
||||
|
||||
@ -1468,13 +1469,13 @@ static struct hlsl_ir_node *add_binary_comparison_expr(struct hlsl_ctx *ctx, str
|
||||
}
|
||||
|
||||
static struct list *add_binary_comparison_expr_merge(struct hlsl_ctx *ctx, struct list *list1, struct list *list2,
|
||||
enum hlsl_ir_expr_op op, const struct vkd3d_shader_location loc)
|
||||
enum hlsl_ir_expr_op op, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *arg1 = node_from_list(list1), *arg2 = node_from_list(list2);
|
||||
|
||||
list_move_tail(list1, list2);
|
||||
vkd3d_free(list2);
|
||||
add_binary_comparison_expr(ctx, list1, op, arg1, arg2, &loc);
|
||||
add_binary_comparison_expr(ctx, list1, op, arg1, arg2, loc);
|
||||
return list1;
|
||||
}
|
||||
|
||||
@ -1835,16 +1836,16 @@ static struct hlsl_ir_node *add_assignment(struct hlsl_ctx *ctx, struct list *in
|
||||
}
|
||||
|
||||
static bool add_increment(struct hlsl_ctx *ctx, struct list *instrs, bool decrement, bool post,
|
||||
struct vkd3d_shader_location loc)
|
||||
const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_node *lhs = node_from_list(instrs);
|
||||
struct hlsl_ir_constant *one;
|
||||
|
||||
if (lhs->data_type->modifiers & HLSL_MODIFIER_CONST)
|
||||
hlsl_error(ctx, &loc, VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST,
|
||||
hlsl_error(ctx, loc, VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST,
|
||||
"Argument to %s%screment operator is const.", post ? "post" : "pre", decrement ? "de" : "in");
|
||||
|
||||
if (!(one = hlsl_new_int_constant(ctx, 1, &loc)))
|
||||
if (!(one = hlsl_new_int_constant(ctx, 1, loc)))
|
||||
return false;
|
||||
list_add_tail(instrs, &one->node.entry);
|
||||
|
||||
@ -2052,7 +2053,7 @@ static struct list *declare_vars(struct hlsl_ctx *ctx, struct hlsl_type *basic_t
|
||||
}
|
||||
vkd3d_free(v->arrays.sizes);
|
||||
|
||||
if (!(var = hlsl_new_var(ctx, v->name, type, v->loc, &v->semantic, modifiers, &v->reg_reservation)))
|
||||
if (!(var = hlsl_new_var(ctx, v->name, type, &v->loc, &v->semantic, modifiers, &v->reg_reservation)))
|
||||
{
|
||||
free_parse_variable_def(v);
|
||||
continue;
|
||||
@ -2172,7 +2173,7 @@ static struct list *declare_vars(struct hlsl_ctx *ctx, struct hlsl_type *basic_t
|
||||
}
|
||||
else
|
||||
{
|
||||
struct hlsl_ir_load *load = hlsl_new_var_load(ctx, var, var->loc);
|
||||
struct hlsl_ir_load *load = hlsl_new_var_load(ctx, var, &var->loc);
|
||||
|
||||
assert(v->initializer.args_count == 1);
|
||||
list_add_tail(v->initializer.instrs, &load->node.entry);
|
||||
@ -2537,7 +2538,7 @@ static bool intrinsic_cross(struct hlsl_ctx *ctx,
|
||||
&arg1_swzl1->node, &arg2_swzl1->node, loc)))
|
||||
return false;
|
||||
|
||||
if (!(mul1_neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, mul1, *loc)))
|
||||
if (!(mul1_neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, mul1, loc)))
|
||||
return false;
|
||||
list_add_tail(params->instrs, &mul1_neg->entry);
|
||||
|
||||
@ -2791,7 +2792,7 @@ static bool intrinsic_lit(struct hlsl_ctx *ctx,
|
||||
return false;
|
||||
list_move_tail(params->instrs, &block.instrs);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, loc)))
|
||||
return false;
|
||||
list_add_tail(params->instrs, &load->node.entry);
|
||||
|
||||
@ -2954,7 +2955,7 @@ static bool intrinsic_mul(struct hlsl_ctx *ctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, loc)))
|
||||
return false;
|
||||
list_add_tail(params->instrs, &load->node.entry);
|
||||
|
||||
@ -3263,7 +3264,7 @@ static bool intrinsic_transpose(struct hlsl_ctx *ctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, loc)))
|
||||
return false;
|
||||
list_add_tail(params->instrs, &load->node.entry);
|
||||
|
||||
@ -3380,7 +3381,7 @@ static struct list *add_call(struct hlsl_ctx *ctx, const char *name,
|
||||
hlsl_error(ctx, &arg->loc, VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST,
|
||||
"Output argument to \"%s\" is const.", decl->func->name);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, param, arg->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, param, &arg->loc)))
|
||||
goto fail;
|
||||
list_add_tail(args->instrs, &load->node.entry);
|
||||
|
||||
@ -3393,7 +3394,7 @@ static struct list *add_call(struct hlsl_ctx *ctx, const char *name,
|
||||
{
|
||||
struct hlsl_ir_load *load;
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, decl->return_var, *loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, decl->return_var, loc)))
|
||||
goto fail;
|
||||
list_add_tail(args->instrs, &load->node.entry);
|
||||
}
|
||||
@ -3461,13 +3462,13 @@ fail:
|
||||
}
|
||||
|
||||
static struct list *add_constructor(struct hlsl_ctx *ctx, struct hlsl_type *type,
|
||||
struct parse_initializer *params, struct vkd3d_shader_location loc)
|
||||
struct parse_initializer *params, const struct vkd3d_shader_location *loc)
|
||||
{
|
||||
struct hlsl_ir_load *load;
|
||||
struct hlsl_ir_var *var;
|
||||
unsigned int i, idx = 0;
|
||||
|
||||
if (!(var = hlsl_new_synthetic_var(ctx, "constructor", type, &loc)))
|
||||
if (!(var = hlsl_new_synthetic_var(ctx, "constructor", type, loc)))
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < params->args_count; ++i)
|
||||
@ -4087,7 +4088,7 @@ buffer_declaration:
|
||||
if ($3.semantic.name)
|
||||
hlsl_error(ctx, &@3, VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC, "Semantics are not allowed on buffers.");
|
||||
|
||||
if (!(ctx->cur_buffer = hlsl_new_buffer(ctx, $1, $2, &$3.reg_reservation, @2)))
|
||||
if (!(ctx->cur_buffer = hlsl_new_buffer(ctx, $1, $2, &$3.reg_reservation, &@2)))
|
||||
YYABORT;
|
||||
}
|
||||
|
||||
@ -4611,7 +4612,7 @@ param_list:
|
||||
parameter
|
||||
{
|
||||
memset(&$$, 0, sizeof($$));
|
||||
if (!add_func_parameter(ctx, &$$, &$1, @1))
|
||||
if (!add_func_parameter(ctx, &$$, &$1, &@1))
|
||||
{
|
||||
ERR("Error adding function parameter %s.\n", $1.name);
|
||||
YYABORT;
|
||||
@ -4620,7 +4621,7 @@ param_list:
|
||||
| param_list ',' parameter
|
||||
{
|
||||
$$ = $1;
|
||||
if (!add_func_parameter(ctx, &$$, &$3, @3))
|
||||
if (!add_func_parameter(ctx, &$$, &$3, &@3))
|
||||
{
|
||||
hlsl_error(ctx, &@3, VKD3D_SHADER_ERROR_HLSL_REDEFINED,
|
||||
"Parameter \"%s\" is already declared.", $3.name);
|
||||
@ -5063,59 +5064,59 @@ var_modifiers:
|
||||
}
|
||||
| KW_EXTERN var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_EXTERN, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_EXTERN, &@1);
|
||||
}
|
||||
| KW_NOINTERPOLATION var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_NOINTERPOLATION, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_NOINTERPOLATION, &@1);
|
||||
}
|
||||
| KW_PRECISE var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_PRECISE, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_PRECISE, &@1);
|
||||
}
|
||||
| KW_SHARED var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_SHARED, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_SHARED, &@1);
|
||||
}
|
||||
| KW_GROUPSHARED var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_GROUPSHARED, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_GROUPSHARED, &@1);
|
||||
}
|
||||
| KW_STATIC var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_STATIC, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_STATIC, &@1);
|
||||
}
|
||||
| KW_UNIFORM var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_UNIFORM, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_UNIFORM, &@1);
|
||||
}
|
||||
| KW_VOLATILE var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_VOLATILE, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_VOLATILE, &@1);
|
||||
}
|
||||
| KW_CONST var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_CONST, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_CONST, &@1);
|
||||
}
|
||||
| KW_ROW_MAJOR var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_ROW_MAJOR, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_ROW_MAJOR, &@1);
|
||||
}
|
||||
| KW_COLUMN_MAJOR var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_COLUMN_MAJOR, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_MODIFIER_COLUMN_MAJOR, &@1);
|
||||
}
|
||||
| KW_IN var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_IN, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_IN, &@1);
|
||||
}
|
||||
| KW_OUT var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_OUT, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_OUT, &@1);
|
||||
}
|
||||
| KW_INOUT var_modifiers
|
||||
{
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_IN | HLSL_STORAGE_OUT, @1);
|
||||
$$ = add_modifiers(ctx, $2, HLSL_STORAGE_IN | HLSL_STORAGE_OUT, &@1);
|
||||
}
|
||||
|
||||
|
||||
@ -5227,7 +5228,7 @@ statement:
|
||||
jump_statement:
|
||||
KW_RETURN expr ';'
|
||||
{
|
||||
if (!add_return(ctx, $2, node_from_list($2), @1))
|
||||
if (!add_return(ctx, $2, node_from_list($2), &@1))
|
||||
YYABORT;
|
||||
$$ = $2;
|
||||
}
|
||||
@ -5235,7 +5236,7 @@ jump_statement:
|
||||
{
|
||||
if (!($$ = make_empty_list(ctx)))
|
||||
YYABORT;
|
||||
if (!add_return(ctx, $$, NULL, @1))
|
||||
if (!add_return(ctx, $$, NULL, &@1))
|
||||
YYABORT;
|
||||
}
|
||||
|
||||
@ -5284,20 +5285,20 @@ if_body:
|
||||
loop_statement:
|
||||
KW_WHILE '(' expr ')' statement
|
||||
{
|
||||
$$ = create_loop(ctx, LOOP_WHILE, NULL, $3, NULL, $5, @1);
|
||||
$$ = create_loop(ctx, LOOP_WHILE, NULL, $3, NULL, $5, &@1);
|
||||
}
|
||||
| KW_DO statement KW_WHILE '(' expr ')' ';'
|
||||
{
|
||||
$$ = create_loop(ctx, LOOP_DO_WHILE, NULL, $5, NULL, $2, @1);
|
||||
$$ = create_loop(ctx, LOOP_DO_WHILE, NULL, $5, NULL, $2, &@1);
|
||||
}
|
||||
| KW_FOR '(' scope_start expr_statement expr_statement expr_optional ')' statement
|
||||
{
|
||||
$$ = create_loop(ctx, LOOP_FOR, $4, $5, $6, $8, @1);
|
||||
$$ = create_loop(ctx, LOOP_FOR, $4, $5, $6, $8, &@1);
|
||||
hlsl_pop_scope(ctx);
|
||||
}
|
||||
| KW_FOR '(' scope_start declaration expr_statement expr_optional ')' statement
|
||||
{
|
||||
$$ = create_loop(ctx, LOOP_FOR, $4, $5, $6, $8, @1);
|
||||
$$ = create_loop(ctx, LOOP_FOR, $4, $5, $6, $8, &@1);
|
||||
hlsl_pop_scope(ctx);
|
||||
}
|
||||
|
||||
@ -5367,7 +5368,7 @@ primary_expr:
|
||||
hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED, "Variable \"%s\" is not defined.", $1);
|
||||
YYABORT;
|
||||
}
|
||||
if (!(load = hlsl_new_var_load(ctx, var, @1)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &@1)))
|
||||
YYABORT;
|
||||
if (!($$ = make_list(ctx, &load->node)))
|
||||
YYABORT;
|
||||
@ -5395,7 +5396,7 @@ primary_expr:
|
||||
if (!(var = hlsl_new_synthetic_var(ctx, "state_block_expr",
|
||||
hlsl_get_scalar_type(ctx, HLSL_TYPE_INT), &@1)))
|
||||
YYABORT;
|
||||
if (!(load = hlsl_new_var_load(ctx, var, @1)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &@1)))
|
||||
YYABORT;
|
||||
if (!($$ = make_list(ctx, &load->node)))
|
||||
YYABORT;
|
||||
@ -5411,7 +5412,7 @@ postfix_expr:
|
||||
primary_expr
|
||||
| postfix_expr OP_INC
|
||||
{
|
||||
if (!add_increment(ctx, $1, false, true, @2))
|
||||
if (!add_increment(ctx, $1, false, true, &@2))
|
||||
{
|
||||
destroy_instr_list($1);
|
||||
YYABORT;
|
||||
@ -5420,7 +5421,7 @@ postfix_expr:
|
||||
}
|
||||
| postfix_expr OP_DEC
|
||||
{
|
||||
if (!add_increment(ctx, $1, true, true, @2))
|
||||
if (!add_increment(ctx, $1, true, true, &@2))
|
||||
{
|
||||
destroy_instr_list($1);
|
||||
YYABORT;
|
||||
@ -5444,7 +5445,7 @@ postfix_expr:
|
||||
}
|
||||
|
||||
field_idx = field - type->e.record.fields;
|
||||
if (!add_record_access(ctx, $1, node, field_idx, @2))
|
||||
if (!add_record_access(ctx, $1, node, field_idx, &@2))
|
||||
YYABORT;
|
||||
$$ = $1;
|
||||
}
|
||||
@ -5511,7 +5512,7 @@ postfix_expr:
|
||||
YYABORT;
|
||||
}
|
||||
|
||||
if (!($$ = add_constructor(ctx, $2, &$4, @2)))
|
||||
if (!($$ = add_constructor(ctx, $2, &$4, &@2)))
|
||||
{
|
||||
free_parse_initializer(&$4);
|
||||
YYABORT;
|
||||
@ -5538,7 +5539,7 @@ unary_expr:
|
||||
postfix_expr
|
||||
| OP_INC unary_expr
|
||||
{
|
||||
if (!add_increment(ctx, $2, false, false, @1))
|
||||
if (!add_increment(ctx, $2, false, false, &@1))
|
||||
{
|
||||
destroy_instr_list($2);
|
||||
YYABORT;
|
||||
@ -5547,7 +5548,7 @@ unary_expr:
|
||||
}
|
||||
| OP_DEC unary_expr
|
||||
{
|
||||
if (!add_increment(ctx, $2, true, false, @1))
|
||||
if (!add_increment(ctx, $2, true, false, &@1))
|
||||
{
|
||||
destroy_instr_list($2);
|
||||
YYABORT;
|
||||
@ -5624,31 +5625,31 @@ mul_expr:
|
||||
unary_expr
|
||||
| mul_expr '*' unary_expr
|
||||
{
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_MUL, @2);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_MUL, &@2);
|
||||
}
|
||||
| mul_expr '/' unary_expr
|
||||
{
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_DIV, @2);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_DIV, &@2);
|
||||
}
|
||||
| mul_expr '%' unary_expr
|
||||
{
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_MOD, @2);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_MOD, &@2);
|
||||
}
|
||||
|
||||
add_expr:
|
||||
mul_expr
|
||||
| add_expr '+' mul_expr
|
||||
{
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_ADD, @2);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_ADD, &@2);
|
||||
}
|
||||
| add_expr '-' mul_expr
|
||||
{
|
||||
struct hlsl_ir_node *neg;
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, node_from_list($3), @2)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, node_from_list($3), &@2)))
|
||||
YYABORT;
|
||||
list_add_tail($3, &neg->entry);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_ADD, @2);
|
||||
$$ = add_binary_arithmetic_expr_merge(ctx, $1, $3, HLSL_OP2_ADD, &@2);
|
||||
}
|
||||
|
||||
shift_expr:
|
||||
@ -5666,30 +5667,30 @@ relational_expr:
|
||||
shift_expr
|
||||
| relational_expr '<' shift_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_LESS, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_LESS, &@2);
|
||||
}
|
||||
| relational_expr '>' shift_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $3, $1, HLSL_OP2_LESS, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $3, $1, HLSL_OP2_LESS, &@2);
|
||||
}
|
||||
| relational_expr OP_LE shift_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $3, $1, HLSL_OP2_GEQUAL, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $3, $1, HLSL_OP2_GEQUAL, &@2);
|
||||
}
|
||||
| relational_expr OP_GE shift_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_GEQUAL, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_GEQUAL, &@2);
|
||||
}
|
||||
|
||||
equality_expr:
|
||||
relational_expr
|
||||
| equality_expr OP_EQ relational_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_EQUAL, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_EQUAL, &@2);
|
||||
}
|
||||
| equality_expr OP_NE relational_expr
|
||||
{
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_NEQUAL, @2);
|
||||
$$ = add_binary_comparison_expr_merge(ctx, $1, $3, HLSL_OP2_NEQUAL, &@2);
|
||||
}
|
||||
|
||||
bitand_expr:
|
||||
|
@ -198,7 +198,7 @@ static void prepend_uniform_copy(struct hlsl_ctx *ctx, struct list *instrs, stru
|
||||
* can write the uniform name into the shader reflection data. */
|
||||
|
||||
if (!(uniform = hlsl_new_var(ctx, temp->name, temp->data_type,
|
||||
temp->loc, NULL, temp->storage_modifiers, &temp->reg_reservation)))
|
||||
&temp->loc, NULL, temp->storage_modifiers, &temp->reg_reservation)))
|
||||
return;
|
||||
list_add_before(&temp->scope_entry, &uniform->scope_entry);
|
||||
list_add_tail(&ctx->extern_vars, &uniform->extern_entry);
|
||||
@ -212,7 +212,7 @@ static void prepend_uniform_copy(struct hlsl_ctx *ctx, struct list *instrs, stru
|
||||
temp->name = hlsl_strdup(ctx, name->buffer);
|
||||
hlsl_release_string_buffer(ctx, name);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, uniform, temp->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, uniform, &temp->loc)))
|
||||
return;
|
||||
list_add_head(instrs, &load->node.entry);
|
||||
|
||||
@ -238,7 +238,7 @@ static struct hlsl_ir_var *add_semantic_var(struct hlsl_ctx *ctx, struct hlsl_ir
|
||||
}
|
||||
new_semantic.index = semantic->index;
|
||||
if (!(ext_var = hlsl_new_var(ctx, hlsl_strdup(ctx, name->buffer),
|
||||
type, var->loc, &new_semantic, modifiers, NULL)))
|
||||
type, &var->loc, &new_semantic, modifiers, NULL)))
|
||||
{
|
||||
hlsl_release_string_buffer(ctx, name);
|
||||
hlsl_cleanup_semantic(&new_semantic);
|
||||
@ -278,7 +278,7 @@ static void prepend_input_copy(struct hlsl_ctx *ctx, struct list *instrs, struct
|
||||
if (!(input = add_semantic_var(ctx, var, vector_type, modifiers, &semantic_copy, false)))
|
||||
return;
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, input, var->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, input, &var->loc)))
|
||||
return;
|
||||
list_add_after(&lhs->node.entry, &load->node.entry);
|
||||
|
||||
@ -341,7 +341,7 @@ static void prepend_input_var_copy(struct hlsl_ctx *ctx, struct list *instrs, st
|
||||
struct hlsl_ir_load *load;
|
||||
|
||||
/* This redundant load is expected to be deleted later by DCE. */
|
||||
if (!(load = hlsl_new_var_load(ctx, var, var->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &var->loc)))
|
||||
return;
|
||||
list_add_head(instrs, &load->node.entry);
|
||||
|
||||
@ -437,7 +437,7 @@ static void append_output_var_copy(struct hlsl_ctx *ctx, struct list *instrs, st
|
||||
struct hlsl_ir_load *load;
|
||||
|
||||
/* This redundant load is expected to be deleted later by DCE. */
|
||||
if (!(load = hlsl_new_var_load(ctx, var, var->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &var->loc)))
|
||||
return;
|
||||
list_add_tail(instrs, &load->node.entry);
|
||||
|
||||
@ -523,11 +523,11 @@ static void insert_early_return_break(struct hlsl_ctx *ctx,
|
||||
|
||||
hlsl_block_init(&then_block);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, func->early_return_var, cf_instr->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, func->early_return_var, &cf_instr->loc)))
|
||||
return;
|
||||
list_add_after(&cf_instr->entry, &load->node.entry);
|
||||
|
||||
if (!(jump = hlsl_new_jump(ctx, HLSL_IR_JUMP_BREAK, cf_instr->loc)))
|
||||
if (!(jump = hlsl_new_jump(ctx, HLSL_IR_JUMP_BREAK, &cf_instr->loc)))
|
||||
return;
|
||||
hlsl_block_add_instr(&then_block, &jump->node);
|
||||
|
||||
@ -692,11 +692,11 @@ static bool lower_return(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *fun
|
||||
list_move_slice_tail(&then_block.instrs, list_next(&block->instrs, &cf_instr->entry), tail);
|
||||
lower_return(ctx, func, &then_block, in_loop);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, func->early_return_var, cf_instr->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, func->early_return_var, &cf_instr->loc)))
|
||||
return false;
|
||||
hlsl_block_add_instr(block, &load->node);
|
||||
|
||||
if (!(not = hlsl_new_unary_expr(ctx, HLSL_OP1_LOGIC_NOT, &load->node, cf_instr->loc)))
|
||||
if (!(not = hlsl_new_unary_expr(ctx, HLSL_OP1_LOGIC_NOT, &load->node, &cf_instr->loc)))
|
||||
return false;
|
||||
hlsl_block_add_instr(block, not);
|
||||
|
||||
@ -793,7 +793,7 @@ static bool lower_index_loads(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
list_add_before(&instr->entry, &store->node.entry);
|
||||
}
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, instr->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &load->node.entry);
|
||||
hlsl_replace_node(instr, &load->node);
|
||||
@ -1813,7 +1813,7 @@ static bool lower_division(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, voi
|
||||
if (expr->op != HLSL_OP2_DIV)
|
||||
return false;
|
||||
|
||||
if (!(rcp = hlsl_new_unary_expr(ctx, HLSL_OP1_RCP, expr->operands[1].node, instr->loc)))
|
||||
if (!(rcp = hlsl_new_unary_expr(ctx, HLSL_OP1_RCP, expr->operands[1].node, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&expr->node.entry, &rcp->entry);
|
||||
expr->op = HLSL_OP2_MUL;
|
||||
@ -1834,7 +1834,7 @@ static bool lower_sqrt(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *c
|
||||
if (expr->op != HLSL_OP1_SQRT)
|
||||
return false;
|
||||
|
||||
if (!(rsq = hlsl_new_unary_expr(ctx, HLSL_OP1_RSQ, expr->operands[0].node, instr->loc)))
|
||||
if (!(rsq = hlsl_new_unary_expr(ctx, HLSL_OP1_RSQ, expr->operands[0].node, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&expr->node.entry, &rsq->entry);
|
||||
expr->op = HLSL_OP1_RCP;
|
||||
@ -1911,7 +1911,7 @@ static bool lower_abs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *co
|
||||
if (expr->op != HLSL_OP1_ABS)
|
||||
return false;
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg, instr->loc)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg->entry);
|
||||
|
||||
@ -1952,11 +1952,11 @@ static bool lower_round(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void *
|
||||
return false;
|
||||
list_add_before(&instr->entry, &sum->entry);
|
||||
|
||||
if (!(frc = hlsl_new_unary_expr(ctx, HLSL_OP1_FRACT, sum, instr->loc)))
|
||||
if (!(frc = hlsl_new_unary_expr(ctx, HLSL_OP1_FRACT, sum, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &frc->entry);
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, frc, instr->loc)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, frc, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg->entry);
|
||||
|
||||
@ -2028,7 +2028,7 @@ struct hlsl_ir_load *hlsl_add_conditional(struct hlsl_ctx *ctx, struct list *ins
|
||||
return NULL;
|
||||
list_add_tail(instrs, &iff->entry);
|
||||
|
||||
if (!(load = hlsl_new_var_load(ctx, var, condition->loc)))
|
||||
if (!(load = hlsl_new_var_load(ctx, var, &condition->loc)))
|
||||
return NULL;
|
||||
list_add_tail(instrs, &load->node.entry);
|
||||
|
||||
@ -2071,7 +2071,7 @@ static bool lower_int_division(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &and->entry);
|
||||
|
||||
if (!(abs1 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg1, instr->loc)))
|
||||
if (!(abs1 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg1, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &abs1->entry);
|
||||
|
||||
@ -2079,7 +2079,7 @@ static bool lower_int_division(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &cast1->entry);
|
||||
|
||||
if (!(abs2 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg2, instr->loc)))
|
||||
if (!(abs2 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg2, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &abs2->entry);
|
||||
|
||||
@ -2095,7 +2095,7 @@ static bool lower_int_division(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &cast3->entry);
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, cast3, instr->loc)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, cast3, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg->entry);
|
||||
|
||||
@ -2138,7 +2138,7 @@ static bool lower_int_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &and->entry);
|
||||
|
||||
if (!(abs1 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg1, instr->loc)))
|
||||
if (!(abs1 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg1, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &abs1->entry);
|
||||
|
||||
@ -2146,7 +2146,7 @@ static bool lower_int_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &cast1->entry);
|
||||
|
||||
if (!(abs2 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg2, instr->loc)))
|
||||
if (!(abs2 = hlsl_new_unary_expr(ctx, HLSL_OP1_ABS, arg2, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &abs2->entry);
|
||||
|
||||
@ -2162,7 +2162,7 @@ static bool lower_int_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr,
|
||||
return false;
|
||||
list_add_before(&instr->entry, &cast3->entry);
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, cast3, instr->loc)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, cast3, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg->entry);
|
||||
|
||||
@ -2192,7 +2192,7 @@ static bool lower_int_abs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, void
|
||||
|
||||
arg = expr->operands[0].node;
|
||||
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg, instr->loc)))
|
||||
if (!(neg = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg->entry);
|
||||
|
||||
@ -2228,7 +2228,7 @@ static bool lower_float_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr
|
||||
return false;
|
||||
list_add_before(&instr->entry, &mul1->entry);
|
||||
|
||||
if (!(neg1 = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, mul1, instr->loc)))
|
||||
if (!(neg1 = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, mul1, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg1->entry);
|
||||
|
||||
@ -2237,7 +2237,7 @@ static bool lower_float_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr
|
||||
ge->data_type = btype;
|
||||
list_add_before(&instr->entry, &ge->entry);
|
||||
|
||||
if (!(neg2 = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg2, instr->loc)))
|
||||
if (!(neg2 = hlsl_new_unary_expr(ctx, HLSL_OP1_NEG, arg2, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &neg2->entry);
|
||||
|
||||
@ -2258,7 +2258,7 @@ static bool lower_float_modulus(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr
|
||||
return false;
|
||||
list_add_before(&instr->entry, &mul2->entry);
|
||||
|
||||
if (!(frc = hlsl_new_unary_expr(ctx, HLSL_OP1_FRACT, mul2, instr->loc)))
|
||||
if (!(frc = hlsl_new_unary_expr(ctx, HLSL_OP1_FRACT, mul2, &instr->loc)))
|
||||
return false;
|
||||
list_add_before(&instr->entry, &frc->entry);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user