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:
Austin Eng 2021-07-21 18:34:19 +00:00 committed by Dawn LUCI CQ
parent 4d94647e1f
commit e50f8c65b7
7 changed files with 58 additions and 7 deletions

View File

@ -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",

View File

@ -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;

View File

@ -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}];
}

View File

@ -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);
}
}

View File

@ -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
return true;
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

View File

@ -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;

View File

@ -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;