Commit d053d2b9 authored by Jan Wilken Dörrie's avatar Jan Wilken Dörrie Committed by Commit Bot

Revert "vma_wrapper: create VmaAllocator for vulkan 1.1.0"

This reverts commit de6734f7.

Reason for revert: Likely culprit for https://crbug.com/1086863.

Original change's description:
> vma_wrapper: create VmaAllocator for vulkan 1.1.0
> 
> For vulkan 1.1.0, VmaAllocator will use dedicated memory
> allocation for some big vulkan memory request, and free
> it when the allocation is released. Without this change,
> the VmaAllocator will allocate memory from self managed
> memory blocks for all vulkan memory request. And the
> memory may not be released when the allocation is
> released. VmaAllocator may keep the memory for later
> usage. It could be the reason for the memory regression
> in fuchsia.
> 
> Bug: fuchsia:52463
> Change-Id: I7b905435d31b927b2344724f8a2e1738e0544410
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2215414
> Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org>
> Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
> Auto-Submit: Peng Huang <penghuang@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#771927}

TBR=penghuang@chromium.org,vasilyt@chromium.org

Change-Id: I2bc3a572ff9e95b4dcb3cdd8bf7a9f6bb5969c0a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: fuchsia:52463
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2216254Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Commit-Queue: Jan Wilken Dörrie <jdoerrie@chromium.org>
Cr-Commit-Position: refs/heads/master@{#772152}
parent d69cb83a
...@@ -22,8 +22,6 @@ from reg import Registry ...@@ -22,8 +22,6 @@ from reg import Registry
registry = Registry() registry = Registry()
registry.loadFile(open(path.join(vulkan_reg_path, "vk.xml"))) registry.loadFile(open(path.join(vulkan_reg_path, "vk.xml")))
VULKAN_REQUIRED_API_VERSION = 'VK_API_VERSION_1_1'
VULKAN_UNASSOCIATED_FUNCTIONS = [ VULKAN_UNASSOCIATED_FUNCTIONS = [
{ {
'functions': [ 'functions': [
...@@ -410,8 +408,6 @@ namespace gpu { ...@@ -410,8 +408,6 @@ namespace gpu {
struct VulkanFunctionPointers; struct VulkanFunctionPointers;
constexpr uint32_t kVulkanRequiredApiVersion = %s;
COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers* GetVulkanFunctionPointers(); COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers* GetVulkanFunctionPointers();
struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers { struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers {
...@@ -466,7 +462,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers { ...@@ -466,7 +462,7 @@ struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers {
// Unassociated functions // Unassociated functions
VulkanFunction<PFN_vkGetInstanceProcAddr> vkGetInstanceProcAddr; VulkanFunction<PFN_vkGetInstanceProcAddr> vkGetInstanceProcAddr;
""" % VULKAN_REQUIRED_API_VERSION) """)
WriteFunctionDeclarations(file, VULKAN_UNASSOCIATED_FUNCTIONS) WriteFunctionDeclarations(file, VULKAN_UNASSOCIATED_FUNCTIONS)
...@@ -589,7 +585,6 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers( ...@@ -589,7 +585,6 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers(
VkInstance vk_instance, VkInstance vk_instance,
uint32_t api_version, uint32_t api_version,
const gfx::ExtensionSet& enabled_extensions) { const gfx::ExtensionSet& enabled_extensions) {
DCHECK_GE(api_version, kVulkanRequiredApiVersion);
""") """)
WriteInstanceFunctionPointerInitialization(file, VULKAN_INSTANCE_FUNCTIONS); WriteInstanceFunctionPointerInitialization(file, VULKAN_INSTANCE_FUNCTIONS);
...@@ -603,7 +598,6 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers( ...@@ -603,7 +598,6 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers(
VkDevice vk_device, VkDevice vk_device,
uint32_t api_version, uint32_t api_version,
const gfx::ExtensionSet& enabled_extensions) { const gfx::ExtensionSet& enabled_extensions) {
DCHECK_GE(api_version, kVulkanRequiredApiVersion);
// Device functions // Device functions
""") """)
WriteDeviceFunctionPointerInitialization(file, VULKAN_DEVICE_FUNCTIONS) WriteDeviceFunctionPointerInitialization(file, VULKAN_DEVICE_FUNCTIONS)
......
...@@ -39,7 +39,6 @@ VkResult CreateAllocator(VkPhysicalDevice physical_device, ...@@ -39,7 +39,6 @@ VkResult CreateAllocator(VkPhysicalDevice physical_device,
function_pointers->vkGetImageMemoryRequirements2.get(), function_pointers->vkGetImageMemoryRequirements2.get(),
}; };
static_assert(kVulkanRequiredApiVersion >= VK_API_VERSION_1_1, "");
VmaAllocatorCreateInfo allocator_info = { VmaAllocatorCreateInfo allocator_info = {
.flags = VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, .flags = VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT,
.physicalDevice = physical_device, .physicalDevice = physical_device,
...@@ -52,7 +51,6 @@ VkResult CreateAllocator(VkPhysicalDevice physical_device, ...@@ -52,7 +51,6 @@ VkResult CreateAllocator(VkPhysicalDevice physical_device,
.preferredLargeHeapBlockSize = 4 * 1024 * 1024, .preferredLargeHeapBlockSize = 4 * 1024 * 1024,
.pVulkanFunctions = &functions, .pVulkanFunctions = &functions,
.instance = instance, .instance = instance,
.vulkanApiVersion = kVulkanRequiredApiVersion,
}; };
return vmaCreateAllocator(&allocator_info, pAllocator); return vmaCreateAllocator(&allocator_info, pAllocator);
......
...@@ -66,14 +66,16 @@ TEST_F(VulkanCXXTest, CreateInstanceUnique) { ...@@ -66,14 +66,16 @@ TEST_F(VulkanCXXTest, CreateInstanceUnique) {
auto* vulkan_function_pointers = GetVulkanFunctionPointers(); auto* vulkan_function_pointers = GetVulkanFunctionPointers();
EXPECT_TRUE(vulkan_function_pointers->BindUnassociatedFunctionPointers()); EXPECT_TRUE(vulkan_function_pointers->BindUnassociatedFunctionPointers());
constexpr uint32_t kRequiredApiVersion = VK_MAKE_VERSION(1, 1, 0);
vk::Result result; vk::Result result;
uint32_t api_version; uint32_t api_version;
std::tie(result, api_version) = vk::enumerateInstanceVersion(); std::tie(result, api_version) = vk::enumerateInstanceVersion();
EXPECT_EQ(result, vk::Result::eSuccess); EXPECT_EQ(result, vk::Result::eSuccess);
EXPECT_GE(api_version, kVulkanRequiredApiVersion); EXPECT_GE(api_version, kRequiredApiVersion);
vk::ApplicationInfo app_info("VulkanCXXTest", 0, nullptr, 0, vk::ApplicationInfo app_info("VulkanCXXTest", 0, nullptr, 0,
kVulkanRequiredApiVersion); kRequiredApiVersion);
vk::InstanceCreateInfo instance_create_info({}, &app_info); vk::InstanceCreateInfo instance_create_info({}, &app_info);
auto result_value = vk::createInstanceUnique(instance_create_info); auto result_value = vk::createInstanceUnique(instance_create_info);
EXPECT_EQ(result_value.result, vk::Result::eSuccess); EXPECT_EQ(result_value.result, vk::Result::eSuccess);
...@@ -82,7 +84,7 @@ TEST_F(VulkanCXXTest, CreateInstanceUnique) { ...@@ -82,7 +84,7 @@ TEST_F(VulkanCXXTest, CreateInstanceUnique) {
EXPECT_TRUE(instance); EXPECT_TRUE(instance);
EXPECT_TRUE(vulkan_function_pointers->BindInstanceFunctionPointers( EXPECT_TRUE(vulkan_function_pointers->BindInstanceFunctionPointers(
instance.get(), kVulkanRequiredApiVersion, gfx::ExtensionSet())); instance.get(), kRequiredApiVersion, gfx::ExtensionSet()));
instance.reset(); instance.reset();
} }
......
...@@ -74,7 +74,6 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers( ...@@ -74,7 +74,6 @@ bool VulkanFunctionPointers::BindInstanceFunctionPointers(
VkInstance vk_instance, VkInstance vk_instance,
uint32_t api_version, uint32_t api_version,
const gfx::ExtensionSet& enabled_extensions) { const gfx::ExtensionSet& enabled_extensions) {
DCHECK_GE(api_version, kVulkanRequiredApiVersion);
vkCreateDevice = reinterpret_cast<PFN_vkCreateDevice>( vkCreateDevice = reinterpret_cast<PFN_vkCreateDevice>(
vkGetInstanceProcAddr(vk_instance, "vkCreateDevice")); vkGetInstanceProcAddr(vk_instance, "vkCreateDevice"));
if (!vkCreateDevice) { if (!vkCreateDevice) {
...@@ -357,7 +356,6 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers( ...@@ -357,7 +356,6 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers(
VkDevice vk_device, VkDevice vk_device,
uint32_t api_version, uint32_t api_version,
const gfx::ExtensionSet& enabled_extensions) { const gfx::ExtensionSet& enabled_extensions) {
DCHECK_GE(api_version, kVulkanRequiredApiVersion);
// Device functions // Device functions
vkAllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>( vkAllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>(
vkGetDeviceProcAddr(vk_device, "vkAllocateCommandBuffers")); vkGetDeviceProcAddr(vk_device, "vkAllocateCommandBuffers"));
......
...@@ -44,8 +44,6 @@ namespace gpu { ...@@ -44,8 +44,6 @@ namespace gpu {
struct VulkanFunctionPointers; struct VulkanFunctionPointers;
constexpr uint32_t kVulkanRequiredApiVersion = VK_API_VERSION_1_1;
COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers* GetVulkanFunctionPointers(); COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers* GetVulkanFunctionPointers();
struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers { struct COMPONENT_EXPORT(VULKAN) VulkanFunctionPointers {
......
...@@ -60,6 +60,8 @@ VulkanWarningCallback(VkDebugReportFlagsEXT flags, ...@@ -60,6 +60,8 @@ VulkanWarningCallback(VkDebugReportFlagsEXT flags,
} }
#endif // DCHECK_IS_ON() #endif // DCHECK_IS_ON()
constexpr uint32_t kRequiredApiVersion = VK_MAKE_VERSION(1, 1, 0);
} // namespace } // namespace
VulkanInstance::VulkanInstance() = default; VulkanInstance::VulkanInstance() = default;
...@@ -85,13 +87,13 @@ bool VulkanInstance::Initialize( ...@@ -85,13 +87,13 @@ bool VulkanInstance::Initialize(
return false; return false;
} }
if (vulkan_info_.api_version < kVulkanRequiredApiVersion) if (vulkan_info_.api_version < kRequiredApiVersion)
return false; return false;
gpu::crash_keys::vulkan_api_version.Set( gpu::crash_keys::vulkan_api_version.Set(
VkVersionToString(vulkan_info_.api_version)); VkVersionToString(vulkan_info_.api_version));
vulkan_info_.used_api_version = kVulkanRequiredApiVersion; vulkan_info_.used_api_version = kRequiredApiVersion;
VkApplicationInfo app_info = {}; VkApplicationInfo app_info = {};
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
...@@ -304,21 +306,24 @@ bool VulkanInstance::CollectInfo() { ...@@ -304,21 +306,24 @@ bool VulkanInstance::CollectInfo() {
// API version of the VkPhysicalDevice, so we need to check the GPU's // API version of the VkPhysicalDevice, so we need to check the GPU's
// API version instead of just testing to see if // API version instead of just testing to see if
// vkGetPhysicalDeviceFeatures2 is non-null. // vkGetPhysicalDeviceFeatures2 is non-null.
static_assert(kVulkanRequiredApiVersion >= VK_API_VERSION_1_1, ""); if (info.properties.apiVersion >= VK_MAKE_VERSION(1, 1, 0)) {
VkPhysicalDeviceSamplerYcbcrConversionFeatures ycbcr_conversion_features = { VkPhysicalDeviceSamplerYcbcrConversionFeatures ycbcr_conversion_features =
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES}; {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES};
VkPhysicalDeviceProtectedMemoryFeatures protected_memory_feature = { VkPhysicalDeviceProtectedMemoryFeatures protected_memory_feature = {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES}; VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES};
VkPhysicalDeviceFeatures2 features_2 = { VkPhysicalDeviceFeatures2 features_2 = {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2}; VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2};
features_2.pNext = &ycbcr_conversion_features; features_2.pNext = &ycbcr_conversion_features;
ycbcr_conversion_features.pNext = &protected_memory_feature; ycbcr_conversion_features.pNext = &protected_memory_feature;
vkGetPhysicalDeviceFeatures2(device, &features_2); vkGetPhysicalDeviceFeatures2(device, &features_2);
info.features = features_2.features; info.features = features_2.features;
info.feature_sampler_ycbcr_conversion = info.feature_sampler_ycbcr_conversion =
ycbcr_conversion_features.samplerYcbcrConversion; ycbcr_conversion_features.samplerYcbcrConversion;
info.feature_protected_memory = protected_memory_feature.protectedMemory; info.feature_protected_memory = protected_memory_feature.protectedMemory;
} else {
vkGetPhysicalDeviceFeatures(device, &info.features);
}
count = 0; count = 0;
vkGetPhysicalDeviceQueueFamilyProperties(device, &count, nullptr); vkGetPhysicalDeviceQueueFamilyProperties(device, &count, nullptr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment