From 8c82acd7780c9f07bc1f3fd8ffacedd1e7e0c3ea Mon Sep 17 00:00:00 2001 From: Corentin Wallez Date: Thu, 18 Feb 2021 18:06:28 +0000 Subject: [PATCH] Add a Toggle that can be disallowed for timestamp tick->ns conversion. Bug: dawn:686 Change-Id: If017922ece2d98e95dedc922994807b85ca07397 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41940 Reviewed-by: Stephen White Reviewed-by: Austin Eng Commit-Queue: Corentin Wallez Auto-Submit: Corentin Wallez --- src/dawn_native/CommandEncoder.cpp | 3 ++- src/dawn_native/Device.cpp | 1 + src/dawn_native/Toggles.cpp | 6 ++++++ src/dawn_native/Toggles.h | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/dawn_native/CommandEncoder.cpp b/src/dawn_native/CommandEncoder.cpp index f3c1622531..26992a8bed 100644 --- a/src/dawn_native/CommandEncoder.cpp +++ b/src/dawn_native/CommandEncoder.cpp @@ -850,7 +850,8 @@ namespace dawn_native { cmd->destinationOffset = destinationOffset; // Encode internal compute pipeline for timestamp query - if (querySet->GetQueryType() == wgpu::QueryType::Timestamp) { + if (querySet->GetQueryType() == wgpu::QueryType::Timestamp && + GetDevice()->IsToggleEnabled(Toggle::ConvertTimestampsToNanoseconds)) { EncodeTimestampsToNanosecondsConversion(this, querySet, queryCount, destination, destinationOffset); } diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp index 314ce628ac..29c9a9522a 100644 --- a/src/dawn_native/Device.cpp +++ b/src/dawn_native/Device.cpp @@ -1191,6 +1191,7 @@ namespace dawn_native { void DeviceBase::SetDefaultToggles() { SetToggle(Toggle::LazyClearResourceOnFirstUse, true); SetToggle(Toggle::DisallowUnsafeAPIs, true); + SetToggle(Toggle::ConvertTimestampsToNanoseconds, true); } void DeviceBase::ApplyToggleOverrides(const DeviceDescriptor* deviceDescriptor) { diff --git a/src/dawn_native/Toggles.cpp b/src/dawn_native/Toggles.cpp index 28d4777c29..41ac54992a 100644 --- a/src/dawn_native/Toggles.cpp +++ b/src/dawn_native/Toggles.cpp @@ -167,6 +167,12 @@ namespace dawn_native { {"flush_before_client_wait_sync", "Call glFlush before glClientWaitSync to work around bugs in the latter", "https://crbug.com/dawn/633"}}, + {Toggle::ConvertTimestampsToNanoseconds, + {"convert_timestamps_to_nanoseconds", + "If needed, use a compute shader to transform timestamp queries from ticks to " + "nanoseconds. This is temporarily needed to avoid requiring Tint to use timestamp " + "queries", + "https://crbug.com/dawn/686"}} // Dummy comment to separate the }} so it is clearer what to copy-paste to add a toggle. }}; diff --git a/src/dawn_native/Toggles.h b/src/dawn_native/Toggles.h index b173dd2b0c..df56b4f53f 100644 --- a/src/dawn_native/Toggles.h +++ b/src/dawn_native/Toggles.h @@ -50,6 +50,7 @@ namespace dawn_native { DisallowUnsafeAPIs, UseTintGenerator, FlushBeforeClientWaitSync, + ConvertTimestampsToNanoseconds, EnumCount, InvalidEnum = EnumCount,