vkd3d: Add VKD3D_CONFIG to skip memory allocator clears.
For cases where games spam committed allocations and don't use NOT_ZEROED. We still rely on zerovram behavior for initial backing which should be enough in most cases. Strictly speaking however, we are forced to clear the allocations every time if application does not use the flag correctly. Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
76ca492a39
commit
8a46c21254
|
@ -83,6 +83,7 @@ enum vkd3d_config_flags
|
|||
VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_LOG = 0x00100000,
|
||||
VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_IGNORE_SPIRV = 0x00200000,
|
||||
VKD3D_CONFIG_FLAG_MUTABLE_SINGLE_SET = 0x00400000,
|
||||
VKD3D_CONFIG_FLAG_MEMORY_ALLOCATOR_SKIP_CLEAR = 0x00800000,
|
||||
};
|
||||
|
||||
typedef HRESULT (*PFN_vkd3d_signal_event)(HANDLE event);
|
||||
|
|
|
@ -610,6 +610,7 @@ static const struct vkd3d_debug_option vkd3d_config_options[] =
|
|||
{"pipeline_library_log", VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_LOG},
|
||||
{"pipeline_library_ignore_spirv", VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_IGNORE_SPIRV},
|
||||
{"mutable_single_set", VKD3D_CONFIG_FLAG_MUTABLE_SINGLE_SET},
|
||||
{"memory_allocator_skip_clear", VKD3D_CONFIG_FLAG_MEMORY_ALLOCATOR_SKIP_CLEAR},
|
||||
};
|
||||
|
||||
static void vkd3d_config_flags_init_once(void)
|
||||
|
|
|
@ -1404,7 +1404,8 @@ HRESULT vkd3d_allocate_memory(struct d3d12_device *device, struct vkd3d_memory_a
|
|||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
if (!(info->heap_flags & D3D12_HEAP_FLAG_CREATE_NOT_ZEROED))
|
||||
if (!(info->heap_flags & D3D12_HEAP_FLAG_CREATE_NOT_ZEROED) &&
|
||||
!(vkd3d_config_flags & VKD3D_CONFIG_FLAG_MEMORY_ALLOCATOR_SKIP_CLEAR))
|
||||
vkd3d_memory_allocator_clear_allocation(allocator, device, allocation);
|
||||
|
||||
return hr;
|
||||
|
|
Loading…
Reference in New Issue