mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-15 08:06:19 +00:00
Re-enable -Wunguarded-availability in Dawn standalone builds
By bumping the min macOS SDK version for standalone Dawn builds we are able to re-introduce -Wunguarded-availability, which will help prevent usage of Metal APIs without correctly checking for their availability. BUG= Change-Id: Iebf2f64e9f68e2a7a90fc6f3f208967f952f3487 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11400 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
e8e9d5daf5
commit
280b96ea8d
@@ -103,7 +103,8 @@ namespace dawn_native { namespace metal {
|
||||
//
|
||||
// [device registryID] is the ID for one of the IOGraphicsAccelerator2 and we can see that
|
||||
// their parent always is an IOPCIDevice that has properties for the device and vendor IDs.
|
||||
MaybeError GetDeviceIORegistryPCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
MaybeError API_AVAILABLE(macos(10.13))
|
||||
GetDeviceIORegistryPCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
// Get a matching dictionary for the IOGraphicsAccelerator2
|
||||
CFMutableDictionaryRef matchingDict = IORegistryEntryIDMatching([device registryID]);
|
||||
if (matchingDict == nullptr) {
|
||||
@@ -143,7 +144,7 @@ namespace dawn_native { namespace metal {
|
||||
MaybeError GetDevicePCIInfo(id<MTLDevice> device, PCIIDs* ids) {
|
||||
// [device registryID] is introduced on macOS 10.13+, otherwise workaround to get vendor
|
||||
// id by vendor name on old macOS
|
||||
if ([NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:{10, 13, 0}]) {
|
||||
if (@available(macos 10.13, *)) {
|
||||
return GetDeviceIORegistryPCIInfo(device, ids);
|
||||
} else {
|
||||
return GetVendorIdFromVendors(device, ids);
|
||||
|
||||
@@ -48,6 +48,15 @@ namespace dawn_native { namespace metal {
|
||||
|
||||
namespace {
|
||||
|
||||
// Allows this file to use MTLStoreActionStoreAndMultismapleResolve because the logic is
|
||||
// first to compute what the "best" Metal render pass descriptor is, then fix it up if we
|
||||
// are not on macOS 10.12 (i.e. the EmulateStoreAndMSAAResolve toggle is on).
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
||||
constexpr MTLStoreAction kMTLStoreActionStoreAndMultisampleResolve =
|
||||
MTLStoreActionStoreAndMultisampleResolve;
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
// Creates an autoreleased MTLRenderPassDescriptor matching desc
|
||||
MTLRenderPassDescriptor* CreateMTLRenderPassDescriptor(BeginRenderPassCmd* renderPass) {
|
||||
MTLRenderPassDescriptor* descriptor = [MTLRenderPassDescriptor renderPassDescriptor];
|
||||
@@ -79,7 +88,7 @@ namespace dawn_native { namespace metal {
|
||||
descriptor.colorAttachments[i].resolveSlice =
|
||||
attachmentInfo.resolveTarget->GetBaseArrayLayer();
|
||||
descriptor.colorAttachments[i].storeAction =
|
||||
MTLStoreActionStoreAndMultisampleResolve;
|
||||
kMTLStoreActionStoreAndMultisampleResolve;
|
||||
} else {
|
||||
descriptor.colorAttachments[i].storeAction = MTLStoreActionStore;
|
||||
}
|
||||
@@ -876,7 +885,7 @@ namespace dawn_native { namespace metal {
|
||||
std::array<id<MTLTexture>, kMaxColorAttachments> resolveTextures = {};
|
||||
for (uint32_t i = 0; i < kMaxColorAttachments; ++i) {
|
||||
if (mtlRenderPass.colorAttachments[i].storeAction ==
|
||||
MTLStoreActionStoreAndMultisampleResolve) {
|
||||
kMTLStoreActionStoreAndMultisampleResolve) {
|
||||
hasStoreAndMSAAResolve = true;
|
||||
resolveTextures[i] = mtlRenderPass.colorAttachments[i].resolveTexture;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user