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",
|
"xlib_with_undefs.h",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if (is_mac) {
|
||||||
|
sources += [ "SystemUtils_mac.mm" ]
|
||||||
|
}
|
||||||
|
|
||||||
public_configs = [ ":dawn_internal" ]
|
public_configs = [ ":dawn_internal" ]
|
||||||
deps = [
|
deps = [
|
||||||
"${dawn_root}/src/dawn:dawn_headers",
|
"${dawn_root}/src/dawn:dawn_headers",
|
||||||
|
|
|
@ -24,6 +24,11 @@ std::string GetEnvironmentVar(const char* variableName);
|
||||||
bool SetEnvironmentVar(const char* variableName, const char* value);
|
bool SetEnvironmentVar(const char* variableName, const char* value);
|
||||||
std::string GetExecutableDirectory();
|
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 {
|
class ScopedEnvironmentVar {
|
||||||
public:
|
public:
|
||||||
ScopedEnvironmentVar() = default;
|
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/GPUInfo.h"
|
||||||
#include "common/NSRef.h"
|
#include "common/NSRef.h"
|
||||||
#include "common/Platform.h"
|
#include "common/Platform.h"
|
||||||
|
#include "common/SystemUtils.h"
|
||||||
#include "dawn_native/Instance.h"
|
#include "dawn_native/Instance.h"
|
||||||
#include "dawn_native/MetalBackend.h"
|
#include "dawn_native/MetalBackend.h"
|
||||||
#include "dawn_native/metal/DeviceMTL.h"
|
#include "dawn_native/metal/DeviceMTL.h"
|
||||||
|
@ -152,8 +153,7 @@ namespace dawn_native { namespace metal {
|
||||||
|
|
||||||
bool IsMetalSupported() {
|
bool IsMetalSupported() {
|
||||||
// Metal was first introduced in macOS 10.11
|
// Metal was first introduced in macOS 10.11
|
||||||
NSOperatingSystemVersion macOS10_11 = {10, 11, 0};
|
return IsMacOSVersionAtLeast(10, 11);
|
||||||
return [NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:macOS10_11];
|
|
||||||
}
|
}
|
||||||
#elif defined(DAWN_PLATFORM_IOS)
|
#elif defined(DAWN_PLATFORM_IOS)
|
||||||
MaybeError GetDevicePCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
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
|
// Disable timestamp query on macOS 10.15 on AMD GPU because WriteTimestamp
|
||||||
// fails to call without any copy commands on MTLBlitCommandEncoder. This issue
|
// fails to call without any copy commands on MTLBlitCommandEncoder. This issue
|
||||||
// has been fixed on macOS 11.0. See crbug.com/dawn/545
|
// has been fixed on macOS 11.0. See crbug.com/dawn/545
|
||||||
if (!gpu_info::IsAMD(GetPCIInfo().vendorId) ||
|
if (!gpu_info::IsAMD(GetPCIInfo().vendorId) || IsMacOSVersionAtLeast(11)) {
|
||||||
[NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:{11, 0, 0}]) {
|
|
||||||
mSupportedExtensions.EnableExtension(Extension::TimestampQuery);
|
mSupportedExtensions.EnableExtension(Extension::TimestampQuery);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -785,9 +785,15 @@ bool DawnTestBase::IsLinux() const {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DawnTestBase::IsMacOS() const {
|
bool DawnTestBase::IsMacOS(int32_t majorVersion, int32_t minorVersion) const {
|
||||||
#ifdef DAWN_PLATFORM_APPLE
|
#ifdef DAWN_PLATFORM_APPLE
|
||||||
|
if (majorVersion == -1 && minorVersion == -1) {
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
int32_t majorVersionOut, minorVersionOut = 0;
|
||||||
|
GetMacOSVersion(&majorVersionOut, &minorVersionOut);
|
||||||
|
return (majorVersion != -1 && majorVersion == majorVersionOut) &&
|
||||||
|
(minorVersion != -1 && minorVersion == minorVersionOut);
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#define TESTS_DAWNTEST_H_
|
#define TESTS_DAWNTEST_H_
|
||||||
|
|
||||||
#include "common/Log.h"
|
#include "common/Log.h"
|
||||||
|
#include "common/Platform.h"
|
||||||
#include "common/Preprocessor.h"
|
#include "common/Preprocessor.h"
|
||||||
#include "dawn/dawn_proc_table.h"
|
#include "dawn/dawn_proc_table.h"
|
||||||
#include "dawn/webgpu_cpp.h"
|
#include "dawn/webgpu_cpp.h"
|
||||||
|
@ -289,7 +290,7 @@ class DawnTestBase {
|
||||||
|
|
||||||
bool IsWindows() const;
|
bool IsWindows() const;
|
||||||
bool IsLinux() const;
|
bool IsLinux() const;
|
||||||
bool IsMacOS() const;
|
bool IsMacOS(int32_t majorVersion = -1, int32_t minorVersion = -1) const;
|
||||||
|
|
||||||
bool UsesWire() const;
|
bool UsesWire() const;
|
||||||
bool IsBackendValidationEnabled() const;
|
bool IsBackendValidationEnabled() const;
|
||||||
|
|
|
@ -1205,6 +1205,9 @@ TEST_P(BufferZeroInitTest, ResolveQuerySet) {
|
||||||
// Skip if timestamp extension is not supported on device
|
// Skip if timestamp extension is not supported on device
|
||||||
DAWN_TEST_UNSUPPORTED_IF(!SupportsExtensions({"timestamp_query"}));
|
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 uint64_t kBufferSize = 16u;
|
||||||
constexpr wgpu::BufferUsage kBufferUsage =
|
constexpr wgpu::BufferUsage kBufferUsage =
|
||||||
wgpu::BufferUsage::QueryResolve | wgpu::BufferUsage::CopyDst;
|
wgpu::BufferUsage::QueryResolve | wgpu::BufferUsage::CopyDst;
|
||||||
|
|
Loading…
Reference in New Issue