mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-31 17:35:50 +00:00
Use ExternalImageDescriptor->isCleared to set the clear status of subresources so it can be correctly lazy cleared when used. Also remove old Wrap path that uses regular texture descriptors since we have moved to use ExternalImageDescriptor. Bug: chromium:1036080 Change-Id: Icb605dbf3cf3f0dc8a30287e8b9b8d9134805112 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/16320 Commit-Queue: Natasha Lee <natlee@microsoft.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
64 lines
2.4 KiB
C++
64 lines
2.4 KiB
C++
// Copyright 2018 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.
|
|
|
|
#ifndef DAWNNATIVE_METALBACKEND_H_
|
|
#define DAWNNATIVE_METALBACKEND_H_
|
|
|
|
#include <dawn/dawn_wsi.h>
|
|
#include <dawn_native/DawnNative.h>
|
|
|
|
// The specifics of the Metal backend expose types in function signatures that might not be
|
|
// available in dependent's minimum supported SDK version. Suppress all availability errors using
|
|
// clang's pragmas. Dependents using the types without guarded availability will still get errors
|
|
// when using the types.
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wunguarded-availability"
|
|
|
|
struct __IOSurface;
|
|
typedef __IOSurface* IOSurfaceRef;
|
|
|
|
#ifdef __OBJC__
|
|
# import <Metal/Metal.h>
|
|
#endif //__OBJC__
|
|
|
|
namespace dawn_native { namespace metal {
|
|
struct DAWN_NATIVE_EXPORT ExternalImageDescriptorIOSurface : ExternalImageDescriptor {
|
|
public:
|
|
ExternalImageDescriptorIOSurface();
|
|
|
|
IOSurfaceRef ioSurface;
|
|
uint32_t plane;
|
|
};
|
|
|
|
DAWN_NATIVE_EXPORT WGPUTexture
|
|
WrapIOSurface(WGPUDevice device, const ExternalImageDescriptorIOSurface* descriptor);
|
|
|
|
// When making Metal interop with other APIs, we need to be careful that QueueSubmit doesn't
|
|
// mean that the operations will be visible to other APIs/Metal devices right away. macOS
|
|
// does have a global queue of graphics operations, but the command buffers are inserted there
|
|
// when they are "scheduled". Submitting other operations before the command buffer is
|
|
// scheduled could lead to races in who gets scheduled first and incorrect rendering.
|
|
DAWN_NATIVE_EXPORT void WaitForCommandsToBeScheduled(WGPUDevice device);
|
|
}} // namespace dawn_native::metal
|
|
|
|
#ifdef __OBJC__
|
|
namespace dawn_native { namespace metal {
|
|
DAWN_NATIVE_EXPORT id<MTLDevice> GetMetalDevice(WGPUDevice device);
|
|
}} // namespace dawn_native::metal
|
|
#endif // __OBJC__
|
|
|
|
#pragma clang diagnostic pop
|
|
|
|
#endif // DAWNNATIVE_METALBACKEND_H_
|