diff --git a/include/vkd3d.h b/include/vkd3d.h index 173b6de6..35798d21 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -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); diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index a41bf249..24c20a15 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -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) diff --git a/libs/vkd3d/memory.c b/libs/vkd3d/memory.c index 7fc6fe52..6b9037c8 100644 --- a/libs/vkd3d/memory.c +++ b/libs/vkd3d/memory.c @@ -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;