mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/hlsl: Parse the Load() method.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
aafe776401
commit
cd2df526e1
@@ -166,6 +166,7 @@ enum hlsl_ir_node_type
|
||||
HLSL_IR_LOAD,
|
||||
HLSL_IR_LOOP,
|
||||
HLSL_IR_JUMP,
|
||||
HLSL_IR_RESOURCE_LOAD,
|
||||
HLSL_IR_STORE,
|
||||
HLSL_IR_SWIZZLE,
|
||||
};
|
||||
@@ -239,6 +240,7 @@ struct hlsl_ir_var
|
||||
uint32_t is_output_semantic : 1;
|
||||
uint32_t is_uniform : 1;
|
||||
uint32_t is_param : 1;
|
||||
uint32_t has_resource_access : 1;
|
||||
};
|
||||
|
||||
struct hlsl_ir_function
|
||||
@@ -366,6 +368,19 @@ struct hlsl_ir_load
|
||||
struct hlsl_deref src;
|
||||
};
|
||||
|
||||
enum hlsl_resource_load_type
|
||||
{
|
||||
HLSL_RESOURCE_LOAD,
|
||||
};
|
||||
|
||||
struct hlsl_ir_resource_load
|
||||
{
|
||||
struct hlsl_ir_node node;
|
||||
enum hlsl_resource_load_type load_type;
|
||||
struct hlsl_deref resource;
|
||||
struct hlsl_src coords;
|
||||
};
|
||||
|
||||
struct hlsl_ir_store
|
||||
{
|
||||
struct hlsl_ir_node node;
|
||||
@@ -521,6 +536,12 @@ static inline struct hlsl_ir_loop *hlsl_ir_loop(const struct hlsl_ir_node *node)
|
||||
return CONTAINING_RECORD(node, struct hlsl_ir_loop, node);
|
||||
}
|
||||
|
||||
static inline struct hlsl_ir_resource_load *hlsl_ir_resource_load(const struct hlsl_ir_node *node)
|
||||
{
|
||||
assert(node->type == HLSL_IR_RESOURCE_LOAD);
|
||||
return CONTAINING_RECORD(node, struct hlsl_ir_resource_load, node);
|
||||
}
|
||||
|
||||
static inline struct hlsl_ir_store *hlsl_ir_store(const struct hlsl_ir_node *node)
|
||||
{
|
||||
assert(node->type == HLSL_IR_STORE);
|
||||
@@ -639,7 +660,7 @@ struct hlsl_ir_node *hlsl_new_binary_expr(struct hlsl_ctx *ctx, enum hlsl_ir_exp
|
||||
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);
|
||||
struct hlsl_ir_expr *hlsl_new_cast(struct hlsl_ctx *ctx, struct hlsl_ir_node *node, struct hlsl_type *type,
|
||||
struct vkd3d_shader_location *loc);
|
||||
const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_expr *hlsl_new_copy(struct hlsl_ctx *ctx, struct hlsl_ir_node *node);
|
||||
struct hlsl_ir_function_decl *hlsl_new_func_decl(struct hlsl_ctx *ctx, struct hlsl_type *return_type,
|
||||
struct list *parameters, const struct hlsl_semantic *semantic, struct vkd3d_shader_location loc);
|
||||
@@ -648,6 +669,9 @@ struct hlsl_ir_jump *hlsl_new_jump(struct hlsl_ctx *ctx, enum hlsl_ir_jump_type
|
||||
struct hlsl_ir_load *hlsl_new_load(struct hlsl_ctx *ctx, struct hlsl_ir_var *var, struct hlsl_ir_node *offset,
|
||||
struct hlsl_type *type, struct vkd3d_shader_location loc);
|
||||
struct hlsl_ir_loop *hlsl_new_loop(struct hlsl_ctx *ctx, struct vkd3d_shader_location loc);
|
||||
struct hlsl_ir_resource_load *hlsl_new_resource_load(struct hlsl_ctx *ctx, struct hlsl_type *data_type,
|
||||
enum hlsl_resource_load_type type, struct hlsl_ir_var *resource, struct hlsl_ir_node *offset,
|
||||
struct hlsl_ir_node *coords, const struct vkd3d_shader_location *loc);
|
||||
struct hlsl_ir_store *hlsl_new_simple_store(struct hlsl_ctx *ctx, struct hlsl_ir_var *lhs, struct hlsl_ir_node *rhs);
|
||||
struct hlsl_ir_store *hlsl_new_store(struct hlsl_ctx *ctx, struct hlsl_ir_var *var, struct hlsl_ir_node *offset,
|
||||
struct hlsl_ir_node *rhs, unsigned int writemask, struct vkd3d_shader_location loc);
|
||||
|
||||
Reference in New Issue
Block a user