mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 02:15:43 +00:00
Implement zero-sized QuerySet
- Add zero-sized implementation in each backend. - Test creating zero-sized query set for each type. Bug: dawn:954 Change-Id: Ib2b8a7d890dae6ee40f5a05aac570a4600dedab8 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/56260 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Commit-Queue: Hao Li <hao.x.li@intel.com>
This commit is contained in:
@@ -43,7 +43,7 @@ namespace dawn_native { namespace d3d12 {
|
||||
MaybeError QuerySet::Initialize() {
|
||||
D3D12_QUERY_HEAP_DESC queryHeapDesc = {};
|
||||
queryHeapDesc.Type = D3D12QueryHeapType(GetQueryType());
|
||||
queryHeapDesc.Count = GetQueryCount();
|
||||
queryHeapDesc.Count = std::max(GetQueryCount(), uint32_t(1u));
|
||||
|
||||
ID3D12Device* d3d12Device = ToBackend(GetDevice())->GetD3D12Device();
|
||||
return CheckOutOfMemoryHRESULT(
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace dawn_native { namespace metal {
|
||||
}
|
||||
ASSERT(descriptor.counterSet != nullptr);
|
||||
|
||||
descriptor.sampleCount = count;
|
||||
descriptor.sampleCount = static_cast<NSUInteger>(std::max(count, uint32_t(1u)));
|
||||
descriptor.storageMode = MTLStorageModePrivate;
|
||||
if (device->IsToggleEnabled(Toggle::MetalUseSharedModeForCounterSampleBuffer)) {
|
||||
descriptor.storageMode = MTLStorageModeShared;
|
||||
@@ -75,7 +75,8 @@ namespace dawn_native { namespace metal {
|
||||
switch (GetQueryType()) {
|
||||
case wgpu::QueryType::Occlusion: {
|
||||
// Create buffer for writing 64-bit results.
|
||||
NSUInteger bufferSize = static_cast<NSUInteger>(GetQueryCount() * sizeof(uint64_t));
|
||||
NSUInteger bufferSize = static_cast<NSUInteger>(
|
||||
std::max(GetQueryCount() * sizeof(uint64_t), size_t(4u)));
|
||||
mVisibilityBuffer = AcquireNSPRef([device->GetMTLDevice()
|
||||
newBufferWithLength:bufferSize
|
||||
options:MTLResourceStorageModePrivate]);
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace dawn_native { namespace vulkan {
|
||||
createInfo.pNext = NULL;
|
||||
createInfo.flags = 0;
|
||||
createInfo.queryType = VulkanQueryType(GetQueryType());
|
||||
createInfo.queryCount = GetQueryCount();
|
||||
createInfo.queryCount = std::max(GetQueryCount(), uint32_t(1u));
|
||||
if (GetQueryType() == wgpu::QueryType::PipelineStatistics) {
|
||||
createInfo.pipelineStatistics =
|
||||
VulkanQueryPipelineStatisticFlags(GetPipelineStatistics());
|
||||
|
||||
Reference in New Issue
Block a user