mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
vkd3d-shader/tpf: Put the actual bind count in the RDEF table.
This commit is contained in:
parent
7eba063136
commit
81afe43569
Notes:
Alexandre Julliard
2023-08-15 22:06:06 +02:00
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/299
@ -417,6 +417,9 @@ struct hlsl_ir_var
|
||||
enum hlsl_sampler_dim sampler_dim;
|
||||
struct vkd3d_shader_location first_sampler_dim_loc;
|
||||
} *objects_usage[HLSL_REGSET_LAST_OBJECT + 1];
|
||||
/* Minimum number of binds required to include all object components actually used in the shader.
|
||||
* It may be less than the allocation size, e.g. for texture arrays. */
|
||||
unsigned int bind_count[HLSL_REGSET_LAST_OBJECT + 1];
|
||||
|
||||
uint32_t is_input_semantic : 1;
|
||||
uint32_t is_output_semantic : 1;
|
||||
|
@ -3275,6 +3275,7 @@ static bool track_object_components_usage(struct hlsl_ctx *ctx, struct hlsl_ir_n
|
||||
return false;
|
||||
|
||||
var->objects_usage[regset][index].used = true;
|
||||
var->bind_count[regset] = max(var->bind_count[regset], index + 1);
|
||||
if (load->sampler.var)
|
||||
{
|
||||
var = load->sampler.var;
|
||||
@ -3282,6 +3283,7 @@ static bool track_object_components_usage(struct hlsl_ctx *ctx, struct hlsl_ir_n
|
||||
return false;
|
||||
|
||||
var->objects_usage[HLSL_REGSET_SAMPLERS][index].used = true;
|
||||
var->bind_count[HLSL_REGSET_SAMPLERS] = max(var->bind_count[HLSL_REGSET_SAMPLERS], index + 1);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -3192,7 +3192,7 @@ static struct extern_resource *sm4_get_extern_resources(struct hlsl_ctx *ctx, un
|
||||
|
||||
extern_resources[*count].regset = regset;
|
||||
extern_resources[*count].id = var->regs[regset].id;
|
||||
extern_resources[*count].bind_count = var->regs[regset].allocation_size;
|
||||
extern_resources[*count].bind_count = var->bind_count[regset];
|
||||
|
||||
++*count;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user