Remove pipeline statistics query feature
Bug: chromium:1177506
Change-Id: Iefbd7d3a6208ccffb3c251d3d945a3b43fd82ea5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/157220
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
diff --git a/dawn.json b/dawn.json
index 081488a..cfe2851 100644
--- a/dawn.json
+++ b/dawn.json
@@ -905,14 +905,6 @@
]
},
{
- "name": "begin pipeline statistics query",
- "tags": ["upstream", "emscripten"],
- "args": [
- {"name": "query set", "type": "query set"},
- {"name": "query index", "type": "uint32_t"}
- ]
- },
- {
"name": "dispatch workgroups",
"args": [
{"name": "workgroupCountX", "type": "uint32_t"},
@@ -931,10 +923,6 @@
"name": "end"
},
{
- "name": "end pipeline statistics query",
- "tags": ["upstream", "emscripten"]
- },
- {
"name": "set label",
"returns": "void",
"args": [
@@ -1878,15 +1866,14 @@
{"value": 1, "name": "depth clip control"},
{"value": 2, "name": "depth32 float stencil8"},
{"value": 3, "name": "timestamp query"},
- {"value": 4, "name": "chromium experimental pipeline statistics query"},
- {"value": 5, "name": "texture compression BC"},
- {"value": 6, "name": "texture compression ETC2"},
- {"value": 7, "name": "texture compression ASTC"},
- {"value": 8, "name": "indirect first instance"},
- {"value": 9, "name": "shader f16"},
- {"value": 10, "name": "RG11B10 ufloat renderable"},
- {"value": 11, "name": "BGRA8 unorm storage"},
- {"value": 12, "name": "float32 filterable"},
+ {"value": 4, "name": "texture compression BC"},
+ {"value": 5, "name": "texture compression ETC2"},
+ {"value": 6, "name": "texture compression ASTC"},
+ {"value": 7, "name": "indirect first instance"},
+ {"value": 8, "name": "shader f16"},
+ {"value": 9, "name": "RG11B10 ufloat renderable"},
+ {"value": 10, "name": "BGRA8 unorm storage"},
+ {"value": 11, "name": "float32 filterable"},
{"value": 1002, "name": "dawn internal usages", "tags": ["dawn"]},
{"value": 1003, "name": "dawn multi planar formats", "tags": ["dawn"]},
@@ -2185,16 +2172,6 @@
{"name": "format", "type": "texture format"}
]
},
- "pipeline statistic name": {
- "category": "enum",
- "values": [
- {"value": 0, "name": "vertex shader invocations"},
- {"value": 1, "name": "clipper invocations"},
- {"value": 2, "name": "clipper primitives out"},
- {"value": 3, "name": "fragment shader invocations"},
- {"value": 4, "name": "compute shader invocations"}
- ]
- },
"power preference": {
"category": "enum",
"values": [
@@ -2262,17 +2239,14 @@
"members": [
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true},
{"name": "type", "type": "query type"},
- {"name": "count", "type": "uint32_t"},
- {"name": "pipeline statistics", "type": "pipeline statistic name", "annotation": "const*", "length": "pipeline statistic count"},
- {"name": "pipeline statistic count", "type": "size_t", "default": "0"}
+ {"name": "count", "type": "uint32_t"}
]
},
"query type": {
"category": "enum",
"values": [
{"value": 0, "name": "occlusion"},
- {"value": 1, "name": "pipeline statistics"},
- {"value": 2, "name": "timestamp"}
+ {"value": 1, "name": "timestamp"}
]
},
"queue": {
@@ -2744,14 +2718,6 @@
]
},
{
- "name": "begin pipeline statistics query",
- "tags": ["upstream", "emscripten"],
- "args": [
- {"name": "query set", "type": "query set"},
- {"name": "query index", "type": "uint32_t"}
- ]
- },
- {
"name": "end occlusion query"
},
{
@@ -2770,10 +2736,6 @@
"name": "end"
},
{
- "name": "end pipeline statistics query",
- "tags": ["upstream", "emscripten"]
- },
- {
"name": "set label",
"returns": "void",
"args": [
diff --git a/src/dawn/native/Features.cpp b/src/dawn/native/Features.cpp
index f0b855f..c098b5e 100644
--- a/src/dawn/native/Features.cpp
+++ b/src/dawn/native/Features.cpp
@@ -59,10 +59,6 @@
{"Support Adaptable Scalable Texture Compressed (ASTC) "
"texture formats",
"https://bugs.chromium.org/p/dawn/issues/detail?id=955", FeatureInfo::FeatureState::Stable}},
- {Feature::ChromiumExperimentalPipelineStatisticsQuery,
- {"Support experimental Pipeline Statistics Query",
- "https://bugs.chromium.org/p/dawn/issues/detail?id=434",
- FeatureInfo::FeatureState::Experimental}},
{Feature::TimestampQuery,
{"Support Timestamp Query", "https://bugs.chromium.org/p/dawn/issues/detail?id=434",
FeatureInfo::FeatureState::Experimental}},
diff --git a/src/dawn/native/QuerySet.cpp b/src/dawn/native/QuerySet.cpp
index 9287a2f..d5d6b03 100644
--- a/src/dawn/native/QuerySet.cpp
+++ b/src/dawn/native/QuerySet.cpp
@@ -60,36 +60,8 @@
switch (descriptor->type) {
case wgpu::QueryType::Occlusion:
- DAWN_INVALID_IF(descriptor->pipelineStatisticCount != 0,
- "Pipeline statistics specified for a query of type %s.",
- descriptor->type);
break;
- case wgpu::QueryType::PipelineStatistics: {
- // TODO(crbug.com/1177506): Pipeline statistics query is not fully implemented.
- // Allow it only as unsafe until the implementaion is completed.
- DAWN_INVALID_IF(!device->IsToggleEnabled(Toggle::AllowUnsafeAPIs),
- "Pipeline statistics queries are disallowed because they are not "
- "fully implemented");
-
- DAWN_INVALID_IF(
- !device->HasFeature(Feature::ChromiumExperimentalPipelineStatisticsQuery),
- "Pipeline statistics query set created without the feature being enabled.");
-
- DAWN_INVALID_IF(descriptor->pipelineStatisticCount == 0,
- "Pipeline statistics query set created with 0 statistics.");
-
- std::set<wgpu::PipelineStatisticName> pipelineStatisticsSet;
- for (uint32_t i = 0; i < descriptor->pipelineStatisticCount; i++) {
- DAWN_TRY(ValidatePipelineStatisticName(descriptor->pipelineStatistics[i]));
-
- auto [_, inserted] =
- pipelineStatisticsSet.insert((descriptor->pipelineStatistics[i]));
- DAWN_INVALID_IF(!inserted, "Statistic %s is specified more than once.",
- descriptor->pipelineStatistics[i]);
- }
- } break;
-
case wgpu::QueryType::Timestamp:
DAWN_INVALID_IF(!device->IsToggleEnabled(Toggle::AllowUnsafeAPIs),
"Timestamp queries are disallowed because they may expose precise "
@@ -99,10 +71,6 @@
!device->HasFeature(Feature::TimestampQuery) &&
!device->HasFeature(Feature::ChromiumExperimentalTimestampQueryInsidePasses),
"Timestamp query set created without the feature being enabled.");
-
- DAWN_INVALID_IF(descriptor->pipelineStatisticCount != 0,
- "Pipeline statistics specified for a query of type %s.",
- descriptor->type);
break;
default:
@@ -117,10 +85,6 @@
mQueryType(descriptor->type),
mQueryCount(descriptor->count),
mState(QuerySetState::Available) {
- for (uint32_t i = 0; i < descriptor->pipelineStatisticCount; i++) {
- mPipelineStatistics.push_back(descriptor->pipelineStatistics[i]);
- }
-
mQueryAvailability.resize(descriptor->count);
GetObjectTrackingList()->Track(this);
}
@@ -165,10 +129,6 @@
return mQueryCount;
}
-const std::vector<wgpu::PipelineStatisticName>& QuerySetBase::GetPipelineStatistics() const {
- return mPipelineStatistics;
-}
-
const std::vector<bool>& QuerySetBase::GetQueryAvailability() const {
return mQueryAvailability;
}
diff --git a/src/dawn/native/QuerySet.h b/src/dawn/native/QuerySet.h
index 6382d2d..7019c3a 100644
--- a/src/dawn/native/QuerySet.h
+++ b/src/dawn/native/QuerySet.h
@@ -48,7 +48,6 @@
wgpu::QueryType GetQueryType() const;
uint32_t GetQueryCount() const;
- const std::vector<wgpu::PipelineStatisticName>& GetPipelineStatistics() const;
const std::vector<bool>& GetQueryAvailability() const;
void SetQueryAvailability(uint32_t index, bool available);
@@ -72,7 +71,6 @@
private:
wgpu::QueryType mQueryType;
uint32_t mQueryCount;
- std::vector<wgpu::PipelineStatisticName> mPipelineStatistics;
enum class QuerySetState { Unavailable, Available, Destroyed };
QuerySetState mState = QuerySetState::Unavailable;
diff --git a/src/dawn/native/d3d12/CommandBufferD3D12.cpp b/src/dawn/native/d3d12/CommandBufferD3D12.cpp
index e8bf9f5..4e989e2 100644
--- a/src/dawn/native/d3d12/CommandBufferD3D12.cpp
+++ b/src/dawn/native/d3d12/CommandBufferD3D12.cpp
@@ -69,8 +69,6 @@
switch (type) {
case wgpu::QueryType::Occlusion:
return D3D12_QUERY_TYPE_BINARY_OCCLUSION;
- case wgpu::QueryType::PipelineStatistics:
- return D3D12_QUERY_TYPE_PIPELINE_STATISTICS;
case wgpu::QueryType::Timestamp:
return D3D12_QUERY_TYPE_TIMESTAMP;
}
diff --git a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
index 821e207..70d67c6 100644
--- a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
+++ b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
@@ -146,7 +146,6 @@
EnableFeature(Feature::TimestampQuery);
EnableFeature(Feature::ChromiumExperimentalTimestampQueryInsidePasses);
}
- EnableFeature(Feature::ChromiumExperimentalPipelineStatisticsQuery);
// Both Dp4a and ShaderF16 features require DXC version being 1.4 or higher
if (GetBackend()->IsDXCAvailableAndVersionAtLeast(1, 4, 1, 4)) {
diff --git a/src/dawn/native/d3d12/QuerySetD3D12.cpp b/src/dawn/native/d3d12/QuerySetD3D12.cpp
index 543c2fc..5f44de8 100644
--- a/src/dawn/native/d3d12/QuerySetD3D12.cpp
+++ b/src/dawn/native/d3d12/QuerySetD3D12.cpp
@@ -40,8 +40,6 @@
switch (type) {
case wgpu::QueryType::Occlusion:
return D3D12_QUERY_HEAP_TYPE_OCCLUSION;
- case wgpu::QueryType::PipelineStatistics:
- return D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS;
case wgpu::QueryType::Timestamp:
return D3D12_QUERY_HEAP_TYPE_TIMESTAMP;
}
diff --git a/src/dawn/native/metal/BackendMTL.mm b/src/dawn/native/metal/BackendMTL.mm
index 1e8d3f5..aef3ebb 100644
--- a/src/dawn/native/metal/BackendMTL.mm
+++ b/src/dawn/native/metal/BackendMTL.mm
@@ -508,13 +508,6 @@
if (ShouldLeakCounterSets()) {
[[*mDevice counterSets] retain];
}
- if (IsGPUCounterSupported(
- *mDevice, MTLCommonCounterSetStatistic,
- {MTLCommonCounterVertexInvocations, MTLCommonCounterClipperInvocations,
- MTLCommonCounterClipperPrimitivesOut, MTLCommonCounterFragmentInvocations,
- MTLCommonCounterComputeKernelInvocations})) {
- EnableFeature(Feature::ChromiumExperimentalPipelineStatisticsQuery);
- }
if (IsGPUCounterSupported(*mDevice, MTLCommonCounterSetTimestamp,
{MTLCommonCounterTimestamp})) {
diff --git a/src/dawn/native/metal/QuerySetMTL.mm b/src/dawn/native/metal/QuerySetMTL.mm
index 2784dc1..f0b81a8 100644
--- a/src/dawn/native/metal/QuerySetMTL.mm
+++ b/src/dawn/native/metal/QuerySetMTL.mm
@@ -105,18 +105,6 @@
}
break;
}
- case wgpu::QueryType::PipelineStatistics:
- if (@available(macOS 10.15, iOS 14.0, *)) {
- NSRef<NSString> label = MakeDebugName(
- GetDevice(), "Dawn_QuerySet_PipelineStatisticCounterSampleBuffer", GetLabel());
- DAWN_TRY_ASSIGN(
- mCounterSampleBuffer,
- CreateCounterSampleBuffer(device, label.Get(), MTLCommonCounterSetStatistic,
- GetQueryCount()));
- } else {
- DAWN_UNREACHABLE();
- }
- break;
case wgpu::QueryType::Timestamp:
if (@available(macOS 10.15, iOS 14.0, *)) {
NSRef<NSString> label = MakeDebugName(
diff --git a/src/dawn/native/vulkan/DeviceVk.cpp b/src/dawn/native/vulkan/DeviceVk.cpp
index f31fb19..a96417d 100644
--- a/src/dawn/native/vulkan/DeviceVk.cpp
+++ b/src/dawn/native/vulkan/DeviceVk.cpp
@@ -340,13 +340,6 @@
usedKnobs.features.textureCompressionASTC_LDR = VK_TRUE;
}
- if (HasFeature(Feature::ChromiumExperimentalPipelineStatisticsQuery)) {
- DAWN_ASSERT(
- ToBackend(GetPhysicalDevice())->GetDeviceInfo().features.pipelineStatisticsQuery ==
- VK_TRUE);
- usedKnobs.features.pipelineStatisticsQuery = VK_TRUE;
- }
-
if (HasFeature(Feature::DepthClipControl)) {
usedKnobs.features.depthClamp = VK_TRUE;
}
diff --git a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
index a3f9ee2..0b97048 100644
--- a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
+++ b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
@@ -211,10 +211,6 @@
EnableFeature(Feature::TextureCompressionASTC);
}
- if (mDeviceInfo.features.pipelineStatisticsQuery == VK_TRUE) {
- EnableFeature(Feature::ChromiumExperimentalPipelineStatisticsQuery);
- }
-
// TODO(dawn:1559) Resolving timestamp queries after a render pass is failing on Qualcomm-based
// Android devices.
if (mDeviceInfo.properties.limits.timestampComputeAndGraphics == VK_TRUE &&
diff --git a/src/dawn/native/vulkan/QuerySetVk.cpp b/src/dawn/native/vulkan/QuerySetVk.cpp
index c565e17..05db1db 100644
--- a/src/dawn/native/vulkan/QuerySetVk.cpp
+++ b/src/dawn/native/vulkan/QuerySetVk.cpp
@@ -43,39 +43,11 @@
switch (type) {
case wgpu::QueryType::Occlusion:
return VK_QUERY_TYPE_OCCLUSION;
- case wgpu::QueryType::PipelineStatistics:
- return VK_QUERY_TYPE_PIPELINE_STATISTICS;
case wgpu::QueryType::Timestamp:
return VK_QUERY_TYPE_TIMESTAMP;
}
DAWN_UNREACHABLE();
}
-
-VkQueryPipelineStatisticFlags VulkanQueryPipelineStatisticFlags(
- std::vector<wgpu::PipelineStatisticName> pipelineStatisticsSet) {
- VkQueryPipelineStatisticFlags pipelineStatistics = 0;
- for (size_t i = 0; i < pipelineStatisticsSet.size(); ++i) {
- switch (pipelineStatisticsSet[i]) {
- case wgpu::PipelineStatisticName::ClipperInvocations:
- pipelineStatistics |= VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT;
- break;
- case wgpu::PipelineStatisticName::ClipperPrimitivesOut:
- pipelineStatistics |= VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT;
- break;
- case wgpu::PipelineStatisticName::ComputeShaderInvocations:
- pipelineStatistics |= VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT;
- break;
- case wgpu::PipelineStatisticName::FragmentShaderInvocations:
- pipelineStatistics |= VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT;
- break;
- case wgpu::PipelineStatisticName::VertexShaderInvocations:
- pipelineStatistics |= VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT;
- break;
- }
- }
-
- return pipelineStatistics;
-}
} // anonymous namespace
// static
@@ -93,9 +65,6 @@
createInfo.flags = 0;
createInfo.queryType = VulkanQueryType(GetQueryType());
createInfo.queryCount = std::max(GetQueryCount(), uint32_t(1u));
- if (GetQueryType() == wgpu::QueryType::PipelineStatistics) {
- createInfo.pipelineStatistics = VulkanQueryPipelineStatisticFlags(GetPipelineStatistics());
- }
Device* device = ToBackend(GetDevice());
DAWN_TRY(CheckVkOOMThenSuccess(
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 66a419a..6db077a 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1517,7 +1517,6 @@
case wgpu::FeatureName::MultiPlanarFormatExtendedUsages:
case wgpu::FeatureName::MultiPlanarFormatP010:
case wgpu::FeatureName::Norm16TextureFormats:
- case wgpu::FeatureName::ChromiumExperimentalPipelineStatisticsQuery:
case wgpu::FeatureName::PixelLocalStorageCoherent:
case wgpu::FeatureName::PixelLocalStorageNonCoherent:
case wgpu::FeatureName::SharedFenceDXGISharedHandle:
@@ -1553,9 +1552,6 @@
case wgpu::QueryType::Timestamp:
out = interop::GPUQueryType::kTimestamp;
return true;
- case wgpu::QueryType::PipelineStatistics:
- // TODO(dawn:1123): Add support for pipeline statistics if they are in WebGPU one day.
- return false;
}
return false;
}
diff --git a/src/dawn/tests/end2end/QueryTests.cpp b/src/dawn/tests/end2end/QueryTests.cpp
index 04b6cd0..fed9bcc 100644
--- a/src/dawn/tests/end2end/QueryTests.cpp
+++ b/src/dawn/tests/end2end/QueryTests.cpp
@@ -594,51 +594,6 @@
}
}
-class PipelineStatisticsQueryTests : public QueryTests {
- protected:
- void SetUp() override {
- DawnTest::SetUp();
-
- // Skip all tests if pipeline statistics feature is not supported
- DAWN_TEST_UNSUPPORTED_IF(
- !SupportsFeatures({wgpu::FeatureName::ChromiumExperimentalPipelineStatisticsQuery}));
- }
-
- std::vector<wgpu::FeatureName> GetRequiredFeatures() override {
- std::vector<wgpu::FeatureName> requiredFeatures = {};
- if (SupportsFeatures({wgpu::FeatureName::ChromiumExperimentalPipelineStatisticsQuery})) {
- requiredFeatures.push_back(
- wgpu::FeatureName::ChromiumExperimentalPipelineStatisticsQuery);
- }
-
- return requiredFeatures;
- }
-
- wgpu::QuerySet CreateQuerySetForPipelineStatistics(
- uint32_t queryCount,
- std::vector<wgpu::PipelineStatisticName> pipelineStatistics = {}) {
- wgpu::QuerySetDescriptor descriptor;
- descriptor.count = queryCount;
- descriptor.type = wgpu::QueryType::PipelineStatistics;
-
- if (pipelineStatistics.size() > 0) {
- descriptor.pipelineStatistics = pipelineStatistics.data();
- descriptor.pipelineStatisticCount = pipelineStatistics.size();
- }
- return device.CreateQuerySet(&descriptor);
- }
-};
-
-// Test creating query set with the type of PipelineStatistics
-TEST_P(PipelineStatisticsQueryTests, QuerySetCreation) {
- // Zero-sized query set is allowed.
- CreateQuerySetForPipelineStatistics(0, {wgpu::PipelineStatisticName::ClipperInvocations,
- wgpu::PipelineStatisticName::VertexShaderInvocations});
-
- CreateQuerySetForPipelineStatistics(1, {wgpu::PipelineStatisticName::ClipperInvocations,
- wgpu::PipelineStatisticName::VertexShaderInvocations});
-}
-
class TimestampExpectation : public detail::Expectation {
public:
~TimestampExpectation() override = default;
@@ -1337,13 +1292,6 @@
MetalBackend(),
MetalBackend({"metal_fill_empty_occlusion_queries_with_zero"}),
VulkanBackend());
-DAWN_INSTANTIATE_TEST(PipelineStatisticsQueryTests,
- D3D11Backend(),
- D3D12Backend(),
- MetalBackend(),
- OpenGLBackend(),
- OpenGLESBackend(),
- VulkanBackend());
DAWN_INSTANTIATE_TEST(TimestampQueryTests,
D3D11Backend(),
D3D12Backend(),
diff --git a/src/dawn/tests/unittests/validation/QueryValidationTests.cpp b/src/dawn/tests/unittests/validation/QueryValidationTests.cpp
index eb095a3..d40decc 100644
--- a/src/dawn/tests/unittests/validation/QueryValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/QueryValidationTests.cpp
@@ -35,20 +35,13 @@
class QuerySetValidationTest : public ValidationTest {
protected:
- wgpu::QuerySet CreateQuerySet(
- wgpu::Device cDevice,
- wgpu::QueryType queryType,
- uint32_t queryCount,
- std::vector<wgpu::PipelineStatisticName> pipelineStatistics = {}) {
+ wgpu::QuerySet CreateQuerySet(wgpu::Device cDevice,
+ wgpu::QueryType queryType,
+ uint32_t queryCount) {
wgpu::QuerySetDescriptor descriptor;
descriptor.type = queryType;
descriptor.count = queryCount;
- if (pipelineStatistics.size() > 0) {
- descriptor.pipelineStatistics = pipelineStatistics.data();
- descriptor.pipelineStatisticCount = pipelineStatistics.size();
- }
-
return cDevice.CreateQuerySet(&descriptor);
}
};
@@ -57,19 +50,6 @@
TEST_F(QuerySetValidationTest, CreationWithoutFeatures) {
// Creating a query set for occlusion queries succeeds without any features enabled.
CreateQuerySet(device, wgpu::QueryType::Occlusion, 1);
-
- // Creating a query set for other types of queries fails without features enabled.
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::ClipperPrimitivesOut}));
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::ComputeShaderInvocations}));
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::FragmentShaderInvocations}));
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::Timestamp, 1));
}
// Test creating query set with invalid count
@@ -86,12 +66,6 @@
ASSERT_DEVICE_ERROR(CreateQuerySet(device, static_cast<wgpu::QueryType>(0xFFFFFFFF), 1));
}
-// Test creating query set with unnecessary pipeline statistics for occlusion queries
-TEST_F(QuerySetValidationTest, UnnecessaryPipelineStatistics) {
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::Occlusion, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
-}
-
// Test destroying a destroyed query set
TEST_F(QuerySetValidationTest, DestroyDestroyedQuerySet) {
wgpu::QuerySetDescriptor descriptor;
@@ -324,23 +298,8 @@
// Creating a query set for occlusion queries succeeds.
CreateQuerySet(device, wgpu::QueryType::Occlusion, 1);
- // Creating a query set for pipeline statistics queries fails.
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
-
// Creating a query set for timestamp queries succeeds.
CreateQuerySet(device, wgpu::QueryType::Timestamp, 1);
-
- // Fail to create with pipeline statistics for Timestamp query
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::Timestamp, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
-}
-
-// Test creating query set with unnecessary pipeline statistics for timestamp queries
-TEST_F(TimestampQueryValidationTest, UnnecessaryPipelineStatistics) {
- // Fail to create with pipeline statistics for Occlusion query
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::Timestamp, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations}));
}
// Test query set with type of timestamp is set to the occlusionQuerySet of RenderPassDescriptor.
@@ -708,80 +667,6 @@
}
}
-class PipelineStatisticsQueryValidationTest : public QuerySetValidationTest {
- protected:
- WGPUDevice CreateTestDevice(native::Adapter dawnAdapter,
- wgpu::DeviceDescriptor descriptor) override {
- // Create a device with pipeline statistic query feature required. Note that Pipeline
- // statistic query is an unsafe API, while AllowUnsafeApis instance toggle is enabled
- // when ValidationTest creating testing instance, so we can test it.
- wgpu::FeatureName requiredFeatures[1] = {
- wgpu::FeatureName::ChromiumExperimentalPipelineStatisticsQuery};
- descriptor.requiredFeatures = requiredFeatures;
- descriptor.requiredFeatureCount = 1;
-
- return dawnAdapter.CreateDevice(&descriptor);
- }
-};
-
-// Test creating query set with only the pipeline statistics feature enabled.
-TEST_F(PipelineStatisticsQueryValidationTest, Creation) {
- // Creating a query set for occlusion queries succeeds.
- CreateQuerySet(device, wgpu::QueryType::Occlusion, 1);
-
- // Creating a query set for timestamp queries fails.
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::Timestamp, 1));
-
- // Creating a query set for pipeline statistics queries succeeds.
- CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations});
-}
-
-// Test creating query set with invalid pipeline statistics
-TEST_F(PipelineStatisticsQueryValidationTest, InvalidPipelineStatistics) {
- // Success to create with all pipeline statistics names which are not in the same order as
- // defined in webgpu header file
- {
- CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::ClipperInvocations,
- wgpu::PipelineStatisticName::ClipperPrimitivesOut,
- wgpu::PipelineStatisticName::ComputeShaderInvocations,
- wgpu::PipelineStatisticName::FragmentShaderInvocations,
- wgpu::PipelineStatisticName::VertexShaderInvocations});
- }
-
- // Fail to create with empty pipeline statistics
- { ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1, {})); }
-
- // Fail to create with invalid pipeline statistics
- {
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {static_cast<wgpu::PipelineStatisticName>(0xFFFFFFFF)}));
- }
-
- // Fail to create with duplicate pipeline statistics
- {
- ASSERT_DEVICE_ERROR(CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations,
- wgpu::PipelineStatisticName::VertexShaderInvocations}));
- }
-}
-
-// Test query set with type of pipeline statistics is set to the occlusionQuerySet of
-// RenderPassDescriptor.
-TEST_F(PipelineStatisticsQueryValidationTest, BeginRenderPassWithPipelineStatisticsQuerySet) {
- // Fail to begin render pass if the type of occlusionQuerySet is not Occlusion
- wgpu::QuerySet querySet =
- CreateQuerySet(device, wgpu::QueryType::PipelineStatistics, 1,
- {wgpu::PipelineStatisticName::VertexShaderInvocations});
- PlaceholderRenderPass renderPass(device);
- renderPass.occlusionQuerySet = querySet;
-
- wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
- encoder.BeginRenderPass(&renderPass);
- ASSERT_DEVICE_ERROR(encoder.Finish());
-}
-
class ResolveQuerySetValidationTest : public QuerySetValidationTest {
protected:
wgpu::Buffer CreateBuffer(wgpu::Device cDevice, uint64_t size, wgpu::BufferUsage usage) {
diff --git a/src/dawn/wire/SupportedFeatures.cpp b/src/dawn/wire/SupportedFeatures.cpp
index d155242..0ac7afb 100644
--- a/src/dawn/wire/SupportedFeatures.cpp
+++ b/src/dawn/wire/SupportedFeatures.cpp
@@ -58,7 +58,6 @@
case WGPUFeatureName_Depth32FloatStencil8:
case WGPUFeatureName_TimestampQuery:
case WGPUFeatureName_ChromiumExperimentalTimestampQueryInsidePasses:
- case WGPUFeatureName_ChromiumExperimentalPipelineStatisticsQuery:
case WGPUFeatureName_TextureCompressionBC:
case WGPUFeatureName_TextureCompressionETC2:
case WGPUFeatureName_TextureCompressionASTC: