diff options
Diffstat (limited to 'src/libANGLE/renderer/vulkan/RendererVk.h')
-rw-r--r-- | src/libANGLE/renderer/vulkan/RendererVk.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.h b/src/libANGLE/renderer/vulkan/RendererVk.h index a2afb45b67..787f39121e 100644 --- a/src/libANGLE/renderer/vulkan/RendererVk.h +++ b/src/libANGLE/renderer/vulkan/RendererVk.h @@ -555,6 +555,12 @@ class RendererVk : angle::NonCopyable return mSupportedFragmentShadingRates.test(shadingRate); } + VkExtent2D getMaxFragmentShadingRateAttachmentTexelSize() const + { + ASSERT(mFeatures.supportsFoveatedRendering.enabled); + return mFragmentShadingRateProperties.maxFragmentShadingRateAttachmentTexelSize; + } + void addBufferBlockToOrphanList(vk::BufferBlock *block) { mOrphanedBufferBlockList.add(block); } VkDeviceSize getSuballocationDestroyedSize() const @@ -768,7 +774,11 @@ class RendererVk : angle::NonCopyable angle::Result initializeMemoryAllocator(DisplayVk *displayVk); // Query and cache supported fragment shading rates - bool canSupportFragmentShadingRate(const vk::ExtensionNameList &deviceExtensionNames); + void queryAndCacheFragmentShadingRates(); + // Determine support for shading rate based rendering + bool canSupportFragmentShadingRate() const; + // Determine support for foveated rendering + bool canSupportFoveatedRendering() const; // Prefer host visible device local via device local based on device type and heap size. bool canPreferDeviceLocalMemoryHostVisible(VkPhysicalDeviceType deviceType); @@ -863,6 +873,7 @@ class RendererVk : angle::NonCopyable VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT mGraphicsPipelineLibraryProperties; VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT mVertexInputDynamicStateFeatures; VkPhysicalDeviceFragmentShadingRateFeaturesKHR mFragmentShadingRateFeatures; + VkPhysicalDeviceFragmentShadingRatePropertiesKHR mFragmentShadingRateProperties; VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT mFragmentShaderInterlockFeatures; VkPhysicalDeviceImagelessFramebufferFeaturesKHR mImagelessFramebufferFeatures; VkPhysicalDevicePipelineRobustnessFeaturesEXT mPipelineRobustnessFeatures; @@ -883,6 +894,7 @@ class RendererVk : angle::NonCopyable #endif angle::PackedEnumBitSet<gl::ShadingRate, uint8_t> mSupportedFragmentShadingRates; + angle::PackedEnumMap<gl::ShadingRate, uint8_t> mSupportedFragmentShadingRateSampleCounts; std::vector<VkQueueFamilyProperties> mQueueFamilyProperties; uint32_t mMaxVertexAttribDivisor; uint32_t mCurrentQueueFamilyIndex; |