From: Francisco Casas fcasas@codeweavers.com
If in the same shader_test file we have both a [buffer uav n] and a [uav n] with the same slot "n", we want the last one to override the first one instead of passing both resources to the backends.
Same for [buffer srv n] and [texture n] after we introduce SRV buffers. --- tests/shader_runner.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tests/shader_runner.c b/tests/shader_runner.c index bac3a8f26..a41c2807f 100644 --- a/tests/shader_runner.c +++ b/tests/shader_runner.c @@ -419,13 +419,21 @@ struct resource *shader_runner_get_resource(struct shader_runner *runner, enum r return NULL; }
+static enum resource_type get_resource_type_category(enum resource_type type) +{ + if (type == RESOURCE_TYPE_BUFFER_UAV) + return RESOURCE_TYPE_UAV; + return type; +} + static void set_resource(struct shader_runner *runner, struct resource *resource) { size_t i;
for (i = 0; i < runner->resource_count; ++i) { - if (runner->resources[i]->slot == resource->slot && runner->resources[i]->type == resource->type) + if (runner->resources[i]->slot == resource->slot + && get_resource_type_category(runner->resources[i]->type) == get_resource_type_category(resource->type)) { runner->ops->destroy_resource(runner, runner->resources[i]); runner->resources[i] = resource;