mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Allocate the d3d11/d3d12 resource_data arrays dynamically.
This commit is contained in:
Notes:
Henri Verbeet
2025-09-03 13:09:54 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1698
@@ -451,15 +451,11 @@ static void create_identity_view(ID3D11Device *device,
|
||||
static bool init_resource_2d(struct d3d11_shader_runner *runner, struct d3d11_resource *resource,
|
||||
const struct resource_params *params)
|
||||
{
|
||||
D3D11_SUBRESOURCE_DATA resource_data[6];
|
||||
ID3D11Device *device = runner->device;
|
||||
D3D11_TEXTURE2D_DESC desc = {0};
|
||||
UINT quality_levels;
|
||||
HRESULT hr;
|
||||
|
||||
if (params->desc.level_count > ARRAY_SIZE(resource_data))
|
||||
fatal_error("Level count %u is too high.\n", params->desc.level_count);
|
||||
|
||||
if (params->desc.sample_count > 1)
|
||||
{
|
||||
if (params->desc.level_count > 1)
|
||||
@@ -488,11 +484,15 @@ static bool init_resource_2d(struct d3d11_shader_runner *runner, struct d3d11_re
|
||||
|
||||
if (params->data)
|
||||
{
|
||||
D3D11_SUBRESOURCE_DATA *resource_data;
|
||||
|
||||
if (params->desc.sample_count > 1)
|
||||
fatal_error("Cannot upload data to a multisampled texture.\n");
|
||||
|
||||
resource_data = calloc(params->desc.layer_count * params->desc.level_count, sizeof(*resource_data));
|
||||
init_subresource_data(resource_data, params);
|
||||
hr = ID3D11Device_CreateTexture2D(device, &desc, resource_data, &resource->texture);
|
||||
free(resource_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -83,14 +83,12 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
|
||||
struct d3d12_shader_runner *runner = d3d12_shader_runner(r);
|
||||
struct test_context *test_context = &runner->test_context;
|
||||
ID3D12Device *device = test_context->device;
|
||||
D3D12_SUBRESOURCE_DATA resource_data[6] = {0};
|
||||
D3D12_RESOURCE_STATES initial_state, state;
|
||||
D3D12_SUBRESOURCE_DATA *resource_data;
|
||||
struct d3d12_resource *resource;
|
||||
unsigned int buffer_offset = 0;
|
||||
|
||||
if (params->desc.level_count > ARRAY_SIZE(resource_data))
|
||||
fatal_error("Level count %u is too high.\n", params->desc.level_count);
|
||||
|
||||
resource_data = calloc(params->desc.layer_count * params->desc.level_count, sizeof(*resource_data));
|
||||
resource = calloc(1, sizeof(*resource));
|
||||
init_resource(&resource->r, params);
|
||||
|
||||
@@ -294,6 +292,7 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
|
||||
break;
|
||||
}
|
||||
|
||||
free(resource_data);
|
||||
return &resource->r;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user