зеркало из https://github.com/AvaloniaUI/angle.git
Vulkan: Cleanup extension properties and features
Bug: angleproject:4551 Change-Id: Iae6b94027cfaca6c72318203a286865c2e3b19a9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2279133 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This commit is contained in:
Родитель
62ff54ebb3
Коммит
65f7ab795e
|
@ -427,8 +427,6 @@ RendererVk::RendererVk()
|
|||
mDebugUtilsMessenger(VK_NULL_HANDLE),
|
||||
mDebugReportCallback(VK_NULL_HANDLE),
|
||||
mPhysicalDevice(VK_NULL_HANDLE),
|
||||
mExternalFenceProperties{},
|
||||
mExternalSemaphoreProperties{},
|
||||
mCurrentQueueFamilyIndex(std::numeric_limits<uint32_t>::max()),
|
||||
mMaxVertexAttribDivisor(1),
|
||||
mMaxVertexAttribStride(0),
|
||||
|
@ -875,13 +873,19 @@ void RendererVk::queryDeviceExtensionFeatures(const ExtensionNameList &deviceExt
|
|||
mIndexTypeUint8Features = {};
|
||||
mIndexTypeUint8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT;
|
||||
|
||||
mPhysicalDeviceSubgroupProperties = {};
|
||||
mPhysicalDeviceSubgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
|
||||
mSubgroupProperties = {};
|
||||
mSubgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
|
||||
|
||||
mPhysicalDeviceExternalMemoryHostProperties = {};
|
||||
mPhysicalDeviceExternalMemoryHostProperties.sType =
|
||||
mExternalMemoryHostProperties = {};
|
||||
mExternalMemoryHostProperties.sType =
|
||||
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
|
||||
|
||||
mExternalFenceProperties = {};
|
||||
mExternalFenceProperties.sType = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;
|
||||
|
||||
mExternalSemaphoreProperties = {};
|
||||
mExternalSemaphoreProperties.sType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;
|
||||
|
||||
if (!vkGetPhysicalDeviceProperties2KHR || !vkGetPhysicalDeviceFeatures2KHR)
|
||||
{
|
||||
return;
|
||||
|
@ -928,11 +932,11 @@ void RendererVk::queryDeviceExtensionFeatures(const ExtensionNameList &deviceExt
|
|||
// Query external memory host properties
|
||||
if (ExtensionFound(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME, deviceExtensionNames))
|
||||
{
|
||||
vk::AddToPNextChain(&deviceProperties, &mPhysicalDeviceExternalMemoryHostProperties);
|
||||
vk::AddToPNextChain(&deviceProperties, &mExternalMemoryHostProperties);
|
||||
}
|
||||
|
||||
// Query subgroup properties
|
||||
vk::AddToPNextChain(&deviceProperties, &mPhysicalDeviceSubgroupProperties);
|
||||
vk::AddToPNextChain(&deviceProperties, &mSubgroupProperties);
|
||||
|
||||
vkGetPhysicalDeviceFeatures2KHR(mPhysicalDevice, &deviceFeatures);
|
||||
vkGetPhysicalDeviceProperties2KHR(mPhysicalDevice, &deviceProperties);
|
||||
|
@ -940,8 +944,6 @@ void RendererVk::queryDeviceExtensionFeatures(const ExtensionNameList &deviceExt
|
|||
// Fence properties
|
||||
if (mFeatures.supportsExternalFenceCapabilities.enabled)
|
||||
{
|
||||
mExternalFenceProperties.sType = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES;
|
||||
|
||||
VkPhysicalDeviceExternalFenceInfo externalFenceInfo = {};
|
||||
externalFenceInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
|
||||
externalFenceInfo.handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
|
||||
|
@ -953,8 +955,6 @@ void RendererVk::queryDeviceExtensionFeatures(const ExtensionNameList &deviceExt
|
|||
// Semaphore properties
|
||||
if (mFeatures.supportsExternalSemaphoreCapabilities.enabled)
|
||||
{
|
||||
mExternalSemaphoreProperties.sType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES;
|
||||
|
||||
VkPhysicalDeviceExternalSemaphoreInfo externalSemaphoreInfo = {};
|
||||
externalSemaphoreInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
|
||||
externalSemaphoreInfo.handleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR;
|
||||
|
@ -964,14 +964,14 @@ void RendererVk::queryDeviceExtensionFeatures(const ExtensionNameList &deviceExt
|
|||
}
|
||||
|
||||
// Clean up pNext chains
|
||||
mLineRasterizationFeatures.pNext = nullptr;
|
||||
mProvokingVertexFeatures.pNext = nullptr;
|
||||
mVertexAttributeDivisorFeatures.pNext = nullptr;
|
||||
mVertexAttributeDivisorProperties.pNext = nullptr;
|
||||
mTransformFeedbackFeatures.pNext = nullptr;
|
||||
mIndexTypeUint8Features.pNext = nullptr;
|
||||
mPhysicalDeviceSubgroupProperties.pNext = nullptr;
|
||||
mPhysicalDeviceExternalMemoryHostProperties.pNext = nullptr;
|
||||
mLineRasterizationFeatures.pNext = nullptr;
|
||||
mProvokingVertexFeatures.pNext = nullptr;
|
||||
mVertexAttributeDivisorFeatures.pNext = nullptr;
|
||||
mVertexAttributeDivisorProperties.pNext = nullptr;
|
||||
mTransformFeedbackFeatures.pNext = nullptr;
|
||||
mIndexTypeUint8Features.pNext = nullptr;
|
||||
mSubgroupProperties.pNext = nullptr;
|
||||
mExternalMemoryHostProperties.pNext = nullptr;
|
||||
}
|
||||
|
||||
angle::Result RendererVk::initializeDevice(DisplayVk *displayVk, uint32_t queueFamilyIndex)
|
||||
|
@ -1268,7 +1268,7 @@ angle::Result RendererVk::initializeDevice(DisplayVk *displayVk, uint32_t queueF
|
|||
{
|
||||
enabledDeviceExtensions.push_back(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME);
|
||||
mMinImportedHostPointerAlignment =
|
||||
mPhysicalDeviceExternalMemoryHostProperties.minImportedHostPointerAlignment;
|
||||
mExternalMemoryHostProperties.minImportedHostPointerAlignment;
|
||||
#if !defined(ANGLE_SHARED_LIBVULKAN)
|
||||
InitExternalMemoryHostFunctions(mInstance);
|
||||
#endif // !defined(ANGLE_SHARED_LIBVULKAN)
|
||||
|
|
|
@ -98,7 +98,7 @@ class RendererVk : angle::NonCopyable
|
|||
}
|
||||
const VkPhysicalDeviceSubgroupProperties &getPhysicalDeviceSubgroupProperties() const
|
||||
{
|
||||
return mPhysicalDeviceSubgroupProperties;
|
||||
return mSubgroupProperties;
|
||||
}
|
||||
const VkPhysicalDeviceFeatures &getPhysicalDeviceFeatures() const
|
||||
{
|
||||
|
@ -297,16 +297,16 @@ class RendererVk : angle::NonCopyable
|
|||
VkPhysicalDevice mPhysicalDevice;
|
||||
VkPhysicalDeviceProperties mPhysicalDeviceProperties;
|
||||
VkPhysicalDeviceFeatures mPhysicalDeviceFeatures;
|
||||
VkExternalFenceProperties mExternalFenceProperties;
|
||||
VkExternalSemaphoreProperties mExternalSemaphoreProperties;
|
||||
VkPhysicalDeviceLineRasterizationFeaturesEXT mLineRasterizationFeatures;
|
||||
VkPhysicalDeviceProvokingVertexFeaturesEXT mProvokingVertexFeatures;
|
||||
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT mVertexAttributeDivisorFeatures;
|
||||
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT mVertexAttributeDivisorProperties;
|
||||
VkPhysicalDeviceTransformFeedbackFeaturesEXT mTransformFeedbackFeatures;
|
||||
VkPhysicalDeviceIndexTypeUint8FeaturesEXT mIndexTypeUint8Features;
|
||||
VkPhysicalDeviceSubgroupProperties mPhysicalDeviceSubgroupProperties;
|
||||
VkPhysicalDeviceExternalMemoryHostPropertiesEXT mPhysicalDeviceExternalMemoryHostProperties;
|
||||
VkPhysicalDeviceSubgroupProperties mSubgroupProperties;
|
||||
VkPhysicalDeviceExternalMemoryHostPropertiesEXT mExternalMemoryHostProperties;
|
||||
VkExternalFenceProperties mExternalFenceProperties;
|
||||
VkExternalSemaphoreProperties mExternalSemaphoreProperties;
|
||||
std::vector<VkQueueFamilyProperties> mQueueFamilyProperties;
|
||||
std::mutex mQueueMutex;
|
||||
angle::PackedEnumMap<egl::ContextPriority, VkQueue> mQueues;
|
||||
|
|
Загрузка…
Ссылка в новой задаче