diff --git a/src/dawn_native/vulkan/ComputePipelineVk.cpp b/src/dawn_native/vulkan/ComputePipelineVk.cpp index 0db1421a34..16dd8e7d15 100644 --- a/src/dawn_native/vulkan/ComputePipelineVk.cpp +++ b/src/dawn_native/vulkan/ComputePipelineVk.cpp @@ -18,7 +18,6 @@ #include "dawn_native/vulkan/FencedDeleter.h" #include "dawn_native/vulkan/PipelineLayoutVk.h" #include "dawn_native/vulkan/ShaderModuleVk.h" -#include "dawn_native/vulkan/UtilsVulkan.h" #include "dawn_native/vulkan/VulkanError.h" namespace dawn_native { namespace vulkan { @@ -51,18 +50,6 @@ namespace dawn_native { namespace vulkan { createInfo.stage.pSpecializationInfo = nullptr; Device* device = ToBackend(GetDevice()); - - PNextChainBuilder extChain(&createInfo); - - VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT subgroupSizeInfo = {}; - uint32_t computeSubgroupSize = device->GetComputeSubgroupSize(); - if (computeSubgroupSize != 0u) { - extChain.Add( - &subgroupSizeInfo, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT); - subgroupSizeInfo.requiredSubgroupSize = computeSubgroupSize; - } - return CheckVkSuccess( device->fn.CreateComputePipelines(device->GetVkDevice(), ::VK_NULL_HANDLE, 1, &createInfo, nullptr, &*mHandle), diff --git a/src/dawn_native/vulkan/DeviceVk.cpp b/src/dawn_native/vulkan/DeviceVk.cpp index a2b291bfd1..2c7e40f464 100644 --- a/src/dawn_native/vulkan/DeviceVk.cpp +++ b/src/dawn_native/vulkan/DeviceVk.cpp @@ -388,8 +388,6 @@ namespace dawn_native { namespace vulkan { *dst = mDeviceInfo.featuresExtensions.subgroupSizeControl; featuresChain.Add(dst); - - mComputeSubgroupSize = FindComputeSubgroupSize(); } // Always require independentBlend because it is a core Dawn feature @@ -466,33 +464,6 @@ namespace dawn_native { namespace vulkan { return usedKnobs; } - uint32_t Device::FindComputeSubgroupSize() const { - if (!mDeviceInfo.subgroupSizeControl) { - return 0; - } - - const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& ext = - mDeviceInfo.propertiesExtensions.subgroupSizeControl; - - if (ext.minSubgroupSize == ext.maxSubgroupSize) { - return 0; - } - - // At the moment, only Intel devices support varying subgroup sizes - // and 16, which is the next value after the minimum of 8, is the sweet - // spot according to [1]. Hence the following heuristics, which may - // need to be adjusted in the future for other architectures, or if - // a specific API is added to let client code select the size.. - // - // [1] https://bugs.freedesktop.org/show_bug.cgi?id=108875 - uint32_t subgroupSize = ext.minSubgroupSize * 2; - if (subgroupSize <= ext.maxSubgroupSize) { - return subgroupSize; - } else { - return ext.minSubgroupSize; - } - } - void Device::GatherQueueFromDevice() { fn.GetDeviceQueue(mVkDevice, mQueueFamily, 0, &mQueue); } diff --git a/src/dawn_native/vulkan/DeviceVk.h b/src/dawn_native/vulkan/DeviceVk.h index 44ad7cb585..a4445f26f7 100644 --- a/src/dawn_native/vulkan/DeviceVk.h +++ b/src/dawn_native/vulkan/DeviceVk.h @@ -100,12 +100,6 @@ namespace dawn_native { namespace vulkan { ResourceMemoryAllocator* GetResourceMemoryAllocatorForTesting() const; - // Return the fixed subgroup size to use for compute shaders on this device, - // or 0 if none needs to be set. - uint32_t GetComputeSubgroupSize() const { - return mComputeSubgroupSize; - } - private: ResultOrError CreateBindGroupImpl( const BindGroupDescriptor* descriptor) override; @@ -136,7 +130,6 @@ namespace dawn_native { namespace vulkan { ResultOrError CreateDevice(VkPhysicalDevice physicalDevice); void GatherQueueFromDevice(); - uint32_t FindComputeSubgroupSize() const; void InitTogglesFromDriver(); void ApplyDepth24PlusS8Toggle(); @@ -151,7 +144,6 @@ namespace dawn_native { namespace vulkan { VkDevice mVkDevice = VK_NULL_HANDLE; uint32_t mQueueFamily = 0; VkQueue mQueue = VK_NULL_HANDLE; - uint32_t mComputeSubgroupSize = 0; std::unique_ptr mDescriptorSetService; std::unique_ptr mDeleter;