Skip BufferZeroInitTests.ResolveQuerySet if not on MacOS 10
Bug: dawn:940 Change-Id: I830cebf2247b65ea0be58a10e02fbcc0542ff73b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/59040 Reviewed-by: Stephen White <senorblanco@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
parent
4d94647e1f
commit
e50f8c65b7
|
@ -213,6 +213,10 @@ if (is_win || is_linux || is_chromeos || is_mac || is_fuchsia || is_android) {
|
|||
"xlib_with_undefs.h",
|
||||
]
|
||||
|
||||
if (is_mac) {
|
||||
sources += [ "SystemUtils_mac.mm" ]
|
||||
}
|
||||
|
||||
public_configs = [ ":dawn_internal" ]
|
||||
deps = [
|
||||
"${dawn_root}/src/dawn:dawn_headers",
|
||||
|
|
|
@ -24,6 +24,11 @@ std::string GetEnvironmentVar(const char* variableName);
|
|||
bool SetEnvironmentVar(const char* variableName, const char* value);
|
||||
std::string GetExecutableDirectory();
|
||||
|
||||
#ifdef DAWN_PLATFORM_APPLE
|
||||
void GetMacOSVersion(int32_t* majorVersion, int32_t* minorVersion = nullptr);
|
||||
bool IsMacOSVersionAtLeast(uint32_t majorVersion, uint32_t minorVersion = 0);
|
||||
#endif
|
||||
|
||||
class ScopedEnvironmentVar {
|
||||
public:
|
||||
ScopedEnvironmentVar() = default;
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
// Copyright 2021 The Dawn Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "common/SystemUtils.h"
|
||||
|
||||
#include "common/Assert.h"
|
||||
|
||||
#import <Foundation/NSProcessInfo.h>
|
||||
|
||||
void GetMacOSVersion(int32_t* majorVersion, int32_t* minorVersion) {
|
||||
NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion];
|
||||
ASSERT(majorVersion != nullptr);
|
||||
*majorVersion = version.majorVersion;
|
||||
if (minorVersion != nullptr) {
|
||||
*minorVersion = version.minorVersion;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsMacOSVersionAtLeast(uint32_t majorVersion, uint32_t minorVersion) {
|
||||
return
|
||||
[NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:{majorVersion, minorVersion, 0}];
|
||||
}
|
|
@ -18,6 +18,7 @@
|
|||
#include "common/GPUInfo.h"
|
||||
#include "common/NSRef.h"
|
||||
#include "common/Platform.h"
|
||||
#include "common/SystemUtils.h"
|
||||
#include "dawn_native/Instance.h"
|
||||
#include "dawn_native/MetalBackend.h"
|
||||
#include "dawn_native/metal/DeviceMTL.h"
|
||||
|
@ -152,8 +153,7 @@ namespace dawn_native { namespace metal {
|
|||
|
||||
bool IsMetalSupported() {
|
||||
// Metal was first introduced in macOS 10.11
|
||||
NSOperatingSystemVersion macOS10_11 = {10, 11, 0};
|
||||
return [NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:macOS10_11];
|
||||
return IsMacOSVersionAtLeast(10, 11);
|
||||
}
|
||||
#elif defined(DAWN_PLATFORM_IOS)
|
||||
MaybeError GetDevicePCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
|
@ -225,8 +225,7 @@ namespace dawn_native { namespace metal {
|
|||
// Disable timestamp query on macOS 10.15 on AMD GPU because WriteTimestamp
|
||||
// fails to call without any copy commands on MTLBlitCommandEncoder. This issue
|
||||
// has been fixed on macOS 11.0. See crbug.com/dawn/545
|
||||
if (!gpu_info::IsAMD(GetPCIInfo().vendorId) ||
|
||||
[NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:{11, 0, 0}]) {
|
||||
if (!gpu_info::IsAMD(GetPCIInfo().vendorId) || IsMacOSVersionAtLeast(11)) {
|
||||
mSupportedExtensions.EnableExtension(Extension::TimestampQuery);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -785,9 +785,15 @@ bool DawnTestBase::IsLinux() const {
|
|||
#endif
|
||||
}
|
||||
|
||||
bool DawnTestBase::IsMacOS() const {
|
||||
bool DawnTestBase::IsMacOS(int32_t majorVersion, int32_t minorVersion) const {
|
||||
#ifdef DAWN_PLATFORM_APPLE
|
||||
if (majorVersion == -1 && minorVersion == -1) {
|
||||
return true;
|
||||
}
|
||||
int32_t majorVersionOut, minorVersionOut = 0;
|
||||
GetMacOSVersion(&majorVersionOut, &minorVersionOut);
|
||||
return (majorVersion != -1 && majorVersion == majorVersionOut) &&
|
||||
(minorVersion != -1 && minorVersion == minorVersionOut);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#define TESTS_DAWNTEST_H_
|
||||
|
||||
#include "common/Log.h"
|
||||
#include "common/Platform.h"
|
||||
#include "common/Preprocessor.h"
|
||||
#include "dawn/dawn_proc_table.h"
|
||||
#include "dawn/webgpu_cpp.h"
|
||||
|
@ -289,7 +290,7 @@ class DawnTestBase {
|
|||
|
||||
bool IsWindows() const;
|
||||
bool IsLinux() const;
|
||||
bool IsMacOS() const;
|
||||
bool IsMacOS(int32_t majorVersion = -1, int32_t minorVersion = -1) const;
|
||||
|
||||
bool UsesWire() const;
|
||||
bool IsBackendValidationEnabled() const;
|
||||
|
|
|
@ -1205,6 +1205,9 @@ TEST_P(BufferZeroInitTest, ResolveQuerySet) {
|
|||
// Skip if timestamp extension is not supported on device
|
||||
DAWN_TEST_UNSUPPORTED_IF(!SupportsExtensions({"timestamp_query"}));
|
||||
|
||||
// crbug.com/dawn/940: Does not work on Mac 11.0+. Backend validation changed.
|
||||
DAWN_TEST_UNSUPPORTED_IF(IsMacOS() && !IsMacOS(10));
|
||||
|
||||
constexpr uint64_t kBufferSize = 16u;
|
||||
constexpr wgpu::BufferUsage kBufferUsage =
|
||||
wgpu::BufferUsage::QueryResolve | wgpu::BufferUsage::CopyDst;
|
||||
|
|
Loading…
Reference in New Issue