tests: Store samplers in a fixed-size array.

We will need to allocate some structures in the Vulkan backend; this is easier
if we don't need to worry about allocating them dynamically.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-04-11 12:18:30 -05:00 committed by Alexandre Julliard
parent e208d87847
commit 3e8b5a9fc3
2 changed files with 8 additions and 10 deletions

View File

@ -725,17 +725,14 @@ void run_shader_tests(struct shader_runner *runner, int argc, char **argv, const
{ {
state = STATE_SAMPLER; state = STATE_SAMPLER;
if ((current_sampler = get_sampler(runner, index))) if (!(current_sampler = get_sampler(runner, index)))
{ {
memset(current_sampler, 0, sizeof(*current_sampler)); if (runner->sampler_count == MAX_SAMPLERS)
} fatal_error("Too many samplers declared.\n");
else
{ current_sampler = &runner->samplers[runner->sampler_count++];
runner->samplers = realloc(runner->samplers,
++runner->sampler_count * sizeof(*runner->samplers));
current_sampler = &runner->samplers[runner->sampler_count - 1];
memset(current_sampler, 0, sizeof(*current_sampler));
} }
memset(current_sampler, 0, sizeof(*current_sampler));
current_sampler->slot = index; current_sampler->slot = index;
current_sampler->filter = D3D12_FILTER_MIN_MAG_MIP_POINT; current_sampler->filter = D3D12_FILTER_MIN_MAG_MIP_POINT;
current_sampler->u_address = D3D12_TEXTURE_ADDRESS_MODE_CLAMP; current_sampler->u_address = D3D12_TEXTURE_ADDRESS_MODE_CLAMP;

View File

@ -88,6 +88,7 @@ struct input_element
}; };
#define MAX_RESOURCES 32 #define MAX_RESOURCES 32
#define MAX_SAMPLERS 32
struct shader_runner struct shader_runner
{ {
@ -103,7 +104,7 @@ struct shader_runner
struct resource *resources[MAX_RESOURCES]; struct resource *resources[MAX_RESOURCES];
size_t resource_count; size_t resource_count;
struct sampler *samplers; struct sampler samplers[MAX_SAMPLERS];
size_t sampler_count; size_t sampler_count;
struct input_element *input_elements; struct input_element *input_elements;