mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 18:29:23 +00:00
Do simplifications assuming macOS 10.11 is the min version supported.
Bug: dawn:1397 Change-Id: I42a588b2a30e12eb7b6889a8954311b632547c58 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/90243 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
5344184403
commit
142141cdf2
@@ -158,22 +158,14 @@ MaybeError GetDevicePCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
return GetVendorIdFromVendors(device, ids);
|
||||
}
|
||||
|
||||
bool IsMetalSupported() {
|
||||
// Metal was first introduced in macOS 10.11
|
||||
// WebGPU is targeted at macOS 10.12+
|
||||
// TODO(dawn:1181): Dawn native should allow non-conformant WebGPU on macOS 10.11
|
||||
return IsMacOSVersionAtLeast(10, 12);
|
||||
}
|
||||
#elif DAWN_PLATFORM_IS(IOS)
|
||||
|
||||
MaybeError GetDevicePCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
DAWN_UNUSED(device);
|
||||
*ids = PCIIDs{0, 0};
|
||||
return {};
|
||||
}
|
||||
|
||||
bool IsMetalSupported() {
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
#error "Unsupported Apple platform."
|
||||
#endif
|
||||
@@ -467,10 +459,8 @@ class Adapter : public AdapterBase {
|
||||
return MTLGPUFamily::Mac2;
|
||||
}
|
||||
}
|
||||
if (@available(macOS 10.11, *)) {
|
||||
if ([*mDevice supportsFeatureSet:MTLFeatureSet_macOS_GPUFamily1_v1]) {
|
||||
return MTLGPUFamily::Mac1;
|
||||
}
|
||||
if ([*mDevice supportsFeatureSet:MTLFeatureSet_macOS_GPUFamily1_v1]) {
|
||||
return MTLGPUFamily::Mac1;
|
||||
}
|
||||
#elif TARGET_OS_IOS
|
||||
if (@available(iOS 10.11, *)) {
|
||||
@@ -658,43 +648,30 @@ ResultOrError<std::vector<Ref<AdapterBase>>> Backend::DiscoverAdapters(
|
||||
ASSERT(optionsBase->backendType == WGPUBackendType_Metal);
|
||||
|
||||
std::vector<Ref<AdapterBase>> adapters;
|
||||
BOOL supportedVersion = NO;
|
||||
#if DAWN_PLATFORM_IS(MACOS)
|
||||
if (@available(macOS 10.11, *)) {
|
||||
supportedVersion = YES;
|
||||
NSRef<NSArray<id<MTLDevice>>> devices = AcquireNSRef(MTLCopyAllDevices());
|
||||
|
||||
NSRef<NSArray<id<MTLDevice>>> devices = AcquireNSRef(MTLCopyAllDevices());
|
||||
|
||||
for (id<MTLDevice> device in devices.Get()) {
|
||||
Ref<Adapter> adapter = AcquireRef(new Adapter(GetInstance(), device));
|
||||
if (!GetInstance()->ConsumedError(adapter->Initialize())) {
|
||||
adapters.push_back(std::move(adapter));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DAWN_PLATFORM_IS(IOS)
|
||||
if (@available(iOS 8.0, *)) {
|
||||
supportedVersion = YES;
|
||||
// iOS only has a single device so MTLCopyAllDevices doesn't exist there.
|
||||
Ref<Adapter> adapter =
|
||||
AcquireRef(new Adapter(GetInstance(), MTLCreateSystemDefaultDevice()));
|
||||
for (id<MTLDevice> device in devices.Get()) {
|
||||
Ref<Adapter> adapter = AcquireRef(new Adapter(GetInstance(), device));
|
||||
if (!GetInstance()->ConsumedError(adapter->Initialize())) {
|
||||
adapters.push_back(std::move(adapter));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (!supportedVersion) {
|
||||
UNREACHABLE();
|
||||
|
||||
// iOS only has a single device so MTLCopyAllDevices doesn't exist there.
|
||||
#if defined(DAWN_PLATFORM_IOS)
|
||||
Ref<Adapter> adapter =
|
||||
AcquireRef(new Adapter(GetInstance(), MTLCreateSystemDefaultDevice()));
|
||||
if (!GetInstance()->ConsumedError(adapter->Initialize())) {
|
||||
adapters.push_back(std::move(adapter));
|
||||
}
|
||||
#endif
|
||||
|
||||
return adapters;
|
||||
}
|
||||
|
||||
BackendConnection* Connect(InstanceBase* instance) {
|
||||
if (!IsMetalSupported()) {
|
||||
return nullptr;
|
||||
}
|
||||
return new Backend(instance);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,25 +29,21 @@
|
||||
namespace utils {
|
||||
|
||||
std::unique_ptr<wgpu::ChainedStruct> SetupWindowAndGetSurfaceDescriptorCocoa(GLFWwindow* window) {
|
||||
if (@available(macOS 10.11, *)) {
|
||||
NSWindow* nsWindow = glfwGetCocoaWindow(window);
|
||||
NSView* view = [nsWindow contentView];
|
||||
NSWindow* nsWindow = glfwGetCocoaWindow(window);
|
||||
NSView* view = [nsWindow contentView];
|
||||
|
||||
// Create a CAMetalLayer that covers the whole window that will be passed to
|
||||
// CreateSurface.
|
||||
[view setWantsLayer:YES];
|
||||
[view setLayer:[CAMetalLayer layer]];
|
||||
// Create a CAMetalLayer that covers the whole window that will be passed to
|
||||
// CreateSurface.
|
||||
[view setWantsLayer:YES];
|
||||
[view setLayer:[CAMetalLayer layer]];
|
||||
|
||||
// Use retina if the window was created with retina support.
|
||||
[[view layer] setContentsScale:[nsWindow backingScaleFactor]];
|
||||
// Use retina if the window was created with retina support.
|
||||
[[view layer] setContentsScale:[nsWindow backingScaleFactor]];
|
||||
|
||||
std::unique_ptr<wgpu::SurfaceDescriptorFromMetalLayer> desc =
|
||||
std::make_unique<wgpu::SurfaceDescriptorFromMetalLayer>();
|
||||
desc->layer = [view layer];
|
||||
return std::move(desc);
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
std::unique_ptr<wgpu::SurfaceDescriptorFromMetalLayer> desc =
|
||||
std::make_unique<wgpu::SurfaceDescriptorFromMetalLayer>();
|
||||
desc->layer = [view layer];
|
||||
return std::move(desc);
|
||||
}
|
||||
|
||||
} // namespace utils
|
||||
|
||||
Reference in New Issue
Block a user