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,