vkd3d: Use global descriptor sets for static samplers.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
This commit is contained in:
parent
a862d02c4c
commit
17cf1f69d7
|
@ -5173,13 +5173,8 @@ static void d3d12_command_list_set_root_signature(struct d3d12_command_list *lis
|
|||
bindings->root_signature = root_signature;
|
||||
bindings->static_sampler_set = VK_NULL_HANDLE;
|
||||
|
||||
if (root_signature && root_signature->vk_sampler_descriptor_layout)
|
||||
{
|
||||
/* FIXME allocate static sampler sets globally */
|
||||
bindings->static_sampler_set = d3d12_command_allocator_allocate_descriptor_set(
|
||||
list->allocator, root_signature->vk_sampler_descriptor_layout,
|
||||
VKD3D_DESCRIPTOR_POOL_TYPE_IMMUTABLE_SAMPLER);
|
||||
}
|
||||
if (root_signature && root_signature->vk_sampler_set)
|
||||
bindings->static_sampler_set = root_signature->vk_sampler_set;
|
||||
|
||||
d3d12_command_list_invalidate_root_parameters(list, bind_point, true);
|
||||
}
|
||||
|
|
|
@ -63,6 +63,9 @@ static void d3d12_root_signature_cleanup(struct d3d12_root_signature *root_signa
|
|||
{
|
||||
const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
|
||||
|
||||
vkd3d_sampler_state_free_descriptor_set(&device->sampler_state, device,
|
||||
root_signature->vk_sampler_set, root_signature->vk_sampler_pool);
|
||||
|
||||
VK_CALL(vkDestroyPipelineLayout(device->vk_device, root_signature->vk_pipeline_layout, NULL));
|
||||
VK_CALL(vkDestroyDescriptorSetLayout(device->vk_device, root_signature->vk_sampler_descriptor_layout, NULL));
|
||||
VK_CALL(vkDestroyDescriptorSetLayout(device->vk_device, root_signature->vk_root_descriptor_layout, NULL));
|
||||
|
@ -718,8 +721,13 @@ static HRESULT d3d12_root_signature_init_static_samplers(struct d3d12_root_signa
|
|||
context->vk_binding += 1;
|
||||
}
|
||||
|
||||
hr = vkd3d_create_descriptor_set_layout(root_signature->device, 0,
|
||||
desc->NumStaticSamplers, vk_binding_info, vk_set_layout);
|
||||
if (FAILED(hr = vkd3d_create_descriptor_set_layout(root_signature->device, 0,
|
||||
desc->NumStaticSamplers, vk_binding_info, &root_signature->vk_sampler_descriptor_layout)))
|
||||
goto cleanup;
|
||||
|
||||
hr = vkd3d_sampler_state_allocate_descriptor_set(&root_signature->device->sampler_state,
|
||||
root_signature->device, root_signature->vk_sampler_descriptor_layout,
|
||||
&root_signature->vk_sampler_set, &root_signature->vk_sampler_pool);
|
||||
|
||||
cleanup:
|
||||
vkd3d_free(vk_binding_info);
|
||||
|
|
|
@ -864,6 +864,9 @@ struct d3d12_root_signature
|
|||
VkDescriptorSetLayout vk_sampler_descriptor_layout;
|
||||
VkDescriptorSetLayout vk_root_descriptor_layout;
|
||||
|
||||
VkDescriptorPool vk_sampler_pool;
|
||||
VkDescriptorSet vk_sampler_set;
|
||||
|
||||
struct d3d12_root_parameter *parameters;
|
||||
unsigned int parameter_count;
|
||||
|
||||
|
|
Loading…
Reference in New Issue