[dawn] Move ImportShared* ValidateAndUnpack. This CL moves the `ValidateAndUnpack` methods to be in the frontend validation and passes the unpacked objects directly to the backends. Change-Id: I0d1893871b29f14f0825856c9f958b18f9c6d75a Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/346475 Commit-Queue: dan sinclair <dsinclair@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/Device.cpp b/src/dawn/native/Device.cpp index 05a3082..095a30f 100644 --- a/src/dawn/native/Device.cpp +++ b/src/dawn/native/Device.cpp
@@ -1657,11 +1657,15 @@ ResultOrError<Ref<SharedBufferMemoryBase>> DeviceBase::ImportSharedBufferMemory( const SharedBufferMemoryDescriptor* descriptor) { DAWN_TRY(ValidateIsAlive()); - return ImportSharedBufferMemoryImpl(descriptor); + + UnpackedPtr<SharedBufferMemoryDescriptor> unpacked; + DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); + + return ImportSharedBufferMemoryImpl(unpacked); } ResultOrError<Ref<SharedBufferMemoryBase>> DeviceBase::ImportSharedBufferMemoryImpl( - const SharedBufferMemoryDescriptor* descriptor) { + UnpackedPtr<SharedBufferMemoryDescriptor> unpacked) { return DAWN_UNIMPLEMENTED_ERROR("Not implemented"); } @@ -1678,11 +1682,14 @@ ResultOrError<Ref<SharedTextureMemoryBase>> DeviceBase::ImportSharedTextureMemory( const SharedTextureMemoryDescriptor* descriptor) { DAWN_TRY(ValidateIsAlive()); - return ImportSharedTextureMemoryImpl(descriptor); + + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; + DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); + return ImportSharedTextureMemoryImpl(unpacked); } ResultOrError<Ref<SharedTextureMemoryBase>> DeviceBase::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) { + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { return DAWN_UNIMPLEMENTED_ERROR("Not implemented"); } @@ -1698,11 +1705,14 @@ ResultOrError<Ref<SharedFenceBase>> DeviceBase::ImportSharedFence( const SharedFenceDescriptor* descriptor) { DAWN_TRY(ValidateIsAlive()); - return ImportSharedFenceImpl(descriptor); + + UnpackedPtr<SharedFenceDescriptor> unpacked; + DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); + return ImportSharedFenceImpl(unpacked); } ResultOrError<Ref<SharedFenceBase>> DeviceBase::ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) { + UnpackedPtr<SharedFenceDescriptor> unpacked) { return DAWN_UNIMPLEMENTED_ERROR("Not implemented"); }
diff --git a/src/dawn/native/Device.h b/src/dawn/native/Device.h index f0f3802..57783ea 100644 --- a/src/dawn/native/Device.h +++ b/src/dawn/native/Device.h
@@ -565,11 +565,11 @@ virtual Ref<RenderPipelineBase> CreateUninitializedRenderPipelineImpl( const UnpackedPtr<RenderPipelineDescriptor>& descriptor) = 0; virtual ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor); + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked); virtual ResultOrError<Ref<SharedBufferMemoryBase>> ImportSharedBufferMemoryImpl( - const SharedBufferMemoryDescriptor* descriptor); + UnpackedPtr<SharedBufferMemoryDescriptor> unpacked); virtual ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor); + UnpackedPtr<SharedFenceDescriptor> unpacked); virtual void SetLabelImpl(); virtual bool ReduceMemoryUsageImpl(); virtual void PerformIdleTasksImpl();
diff --git a/src/dawn/native/d3d11/DeviceD3D11.cpp b/src/dawn/native/d3d11/DeviceD3D11.cpp index ba3b303..ad2e288 100644 --- a/src/dawn/native/d3d11/DeviceD3D11.cpp +++ b/src/dawn/native/d3d11/DeviceD3D11.cpp
@@ -344,10 +344,7 @@ } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN( type, (unpacked.ValidateBranches<Branch<SharedTextureMemoryDXGISharedHandleDescriptor>, @@ -359,25 +356,21 @@ "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle); return SharedTextureMemory::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedTextureMemoryDXGISharedHandleDescriptor>()); case wgpu::SType::SharedTextureMemoryD3D11Texture2DDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryD3D11Texture2D), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D); return SharedTextureMemory::Create( - this, descriptor->label, - unpacked.Get<SharedTextureMemoryD3D11Texture2DDescriptor>()); + this, unpacked->label, unpacked.Get<SharedTextureMemoryD3D11Texture2DDescriptor>()); default: DAWN_UNREACHABLE(); } } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedFenceDXGISharedHandleDescriptor>>())); @@ -386,7 +379,7 @@ case wgpu::SType::SharedFenceDXGISharedHandleDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceDXGISharedHandle), "%s is not enabled.", wgpu::FeatureName::SharedFenceDXGISharedHandle); - return SharedFence::Create(this, descriptor->label, + return SharedFence::Create(this, unpacked->label, unpacked.Get<SharedFenceDXGISharedHandleDescriptor>()); default: DAWN_UNREACHABLE();
diff --git a/src/dawn/native/d3d11/DeviceD3D11.h b/src/dawn/native/d3d11/DeviceD3D11.h index 9b097d8..90288ea 100644 --- a/src/dawn/native/d3d11/DeviceD3D11.h +++ b/src/dawn/native/d3d11/DeviceD3D11.h
@@ -173,9 +173,9 @@ void InitializeRenderPipelineAsyncImpl(Ref<CreateRenderPipelineAsyncEvent> event) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; void DestroyImpl(DestroyReason reason) override; MaybeError CheckDebugLayerAndGenerateErrors();
diff --git a/src/dawn/native/d3d12/DeviceD3D12.cpp b/src/dawn/native/d3d12/DeviceD3D12.cpp index 2d12fa1..118d46b 100644 --- a/src/dawn/native/d3d12/DeviceD3D12.cpp +++ b/src/dawn/native/d3d12/DeviceD3D12.cpp
@@ -468,10 +468,7 @@ } ResultOrError<Ref<SharedBufferMemoryBase>> Device::ImportSharedBufferMemoryImpl( - const SharedBufferMemoryDescriptor* descriptor) { - UnpackedPtr<SharedBufferMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedBufferMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN( type, (unpacked.ValidateBranches<Branch<SharedBufferMemoryD3D12ResourceDescriptor>, @@ -484,29 +481,26 @@ "%s is not enabled.", wgpu::FeatureName::SharedBufferMemoryD3D12Resource); return SharedBufferMemory::Create( - this, descriptor->label, unpacked.Get<SharedBufferMemoryD3D12ResourceDescriptor>()); + this, unpacked->label, unpacked.Get<SharedBufferMemoryD3D12ResourceDescriptor>()); case wgpu::SType::SharedBufferMemoryFromWindowsHandleDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedBufferMemoryFromWindowsHandle), "%s is not enabled.", wgpu::FeatureName::SharedBufferMemoryFromWindowsHandle); return SharedBufferMemory::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedBufferMemoryFromWindowsHandleDescriptor>()); case wgpu::SType::SharedBufferMemoryHostPointerDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedBufferMemoryHostPointer), "%s is not enabled.", wgpu::FeatureName::SharedBufferMemoryHostPointer); return SharedBufferMemory::Create( - this, descriptor->label, unpacked.Get<SharedBufferMemoryHostPointerDescriptor>()); + this, unpacked->label, unpacked.Get<SharedBufferMemoryHostPointerDescriptor>()); default: DAWN_UNREACHABLE(); } } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN( type, (unpacked.ValidateBranches<Branch<SharedTextureMemoryDXGISharedHandleDescriptor>, @@ -518,25 +512,21 @@ "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle); return SharedTextureMemory::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedTextureMemoryDXGISharedHandleDescriptor>()); case wgpu::SType::SharedTextureMemoryD3D12ResourceDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryD3D12Resource), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryD3D12Resource); return SharedTextureMemory::Create( - this, descriptor->label, - unpacked.Get<SharedTextureMemoryD3D12ResourceDescriptor>()); + this, unpacked->label, unpacked.Get<SharedTextureMemoryD3D12ResourceDescriptor>()); default: DAWN_UNREACHABLE(); } } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedFenceDXGISharedHandleDescriptor>>())); @@ -545,7 +535,7 @@ case wgpu::SType::SharedFenceDXGISharedHandleDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceDXGISharedHandle), "%s is not enabled.", wgpu::FeatureName::SharedFenceDXGISharedHandle); - return SharedFence::Create(this, descriptor->label, + return SharedFence::Create(this, unpacked->label, unpacked.Get<SharedFenceDXGISharedHandleDescriptor>()); default: DAWN_UNREACHABLE();
diff --git a/src/dawn/native/d3d12/DeviceD3D12.h b/src/dawn/native/d3d12/DeviceD3D12.h index 177d55e..c53507b 100644 --- a/src/dawn/native/d3d12/DeviceD3D12.h +++ b/src/dawn/native/d3d12/DeviceD3D12.h
@@ -219,11 +219,11 @@ void InitializeRenderPipelineAsyncImpl(Ref<CreateRenderPipelineAsyncEvent> event) override; ResultOrError<Ref<SharedBufferMemoryBase>> ImportSharedBufferMemoryImpl( - const SharedBufferMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedBufferMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; void DestroyImpl(DestroyReason reason) override;
diff --git a/src/dawn/native/metal/DeviceMTL.h b/src/dawn/native/metal/DeviceMTL.h index e329c44..f699475 100644 --- a/src/dawn/native/metal/DeviceMTL.h +++ b/src/dawn/native/metal/DeviceMTL.h
@@ -134,9 +134,9 @@ void InitializeRenderPipelineAsyncImpl(Ref<CreateRenderPipelineAsyncEvent> event) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; void StartTrace(); void StopTrace();
diff --git a/src/dawn/native/metal/DeviceMTL.mm b/src/dawn/native/metal/DeviceMTL.mm index 1b23039..02f459d 100644 --- a/src/dawn/native/metal/DeviceMTL.mm +++ b/src/dawn/native/metal/DeviceMTL.mm
@@ -271,10 +271,7 @@ } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* baseDescriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(baseDescriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedTextureMemoryIOSurfaceDescriptor>>())); @@ -285,14 +282,11 @@ DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryIOSurface), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryIOSurface); - return SharedTextureMemory::Create(this, baseDescriptor->label, descriptor); + return SharedTextureMemory::Create(this, unpacked->label, descriptor); } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* baseDescriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(baseDescriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedFenceMTLSharedEventDescriptor>>())); @@ -303,7 +297,7 @@ DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceMTLSharedEvent), "%s is not enabled.", wgpu::FeatureName::SharedFenceMTLSharedEvent); - return SharedFence::Create(this, baseDescriptor->label, descriptor); + return SharedFence::Create(this, unpacked->label, descriptor); } MaybeError Device::TickImpl() {
diff --git a/src/dawn/native/opengl/DeviceGL.cpp b/src/dawn/native/opengl/DeviceGL.cpp index c0b633f..d39bafb 100644 --- a/src/dawn/native/opengl/DeviceGL.cpp +++ b/src/dawn/native/opengl/DeviceGL.cpp
@@ -299,10 +299,7 @@ } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN( type, (unpacked.ValidateBranches<Branch<SharedTextureMemoryAHardwareBufferDescriptor>>())); @@ -313,7 +310,7 @@ "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer); return SharedTextureMemoryEGL::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedTextureMemoryAHardwareBufferDescriptor>()); default: DAWN_UNREACHABLE(); @@ -321,10 +318,7 @@ } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedFenceSyncFDDescriptor>, Branch<SharedFenceEGLSyncDescriptor>>())); @@ -333,12 +327,12 @@ case wgpu::SType::SharedFenceSyncFDDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceSyncFD), "%s is not enabled.", wgpu::FeatureName::SharedFenceSyncFD); - return SharedFenceEGL::Create(this, descriptor->label, + return SharedFenceEGL::Create(this, unpacked->label, unpacked.Get<SharedFenceSyncFDDescriptor>()); case wgpu::SType::SharedFenceEGLSyncDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceEGLSync), "%s is not enabled.", wgpu::FeatureName::SharedFenceEGLSync); - return SharedFenceEGL::Create(this, descriptor->label, + return SharedFenceEGL::Create(this, unpacked->label, unpacked.Get<SharedFenceEGLSyncDescriptor>()); default: DAWN_UNREACHABLE();
diff --git a/src/dawn/native/opengl/DeviceGL.h b/src/dawn/native/opengl/DeviceGL.h index b4bd7aa..e1d9433 100644 --- a/src/dawn/native/opengl/DeviceGL.h +++ b/src/dawn/native/opengl/DeviceGL.h
@@ -281,9 +281,9 @@ Ref<RenderPipelineBase> CreateUninitializedRenderPipelineImpl( const UnpackedPtr<RenderPipelineDescriptor>& descriptor) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; ResultOrError<Ref<TextureBase>> CreateTextureWrappingEGLImageImpl( const ExternalImageDescriptor* descriptor, ::EGLImage image);
diff --git a/src/dawn/native/vulkan/DeviceVk.cpp b/src/dawn/native/vulkan/DeviceVk.cpp index 0570e95..b76ca21 100644 --- a/src/dawn/native/vulkan/DeviceVk.cpp +++ b/src/dawn/native/vulkan/DeviceVk.cpp
@@ -301,10 +301,7 @@ } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN(type, (unpacked.ValidateBranches<Branch<SharedTextureMemoryDmaBufDescriptor>, @@ -315,30 +312,27 @@ case wgpu::SType::SharedTextureMemoryDmaBufDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryDmaBuf), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryDmaBuf); - return SharedTextureMemory::Create(this, descriptor->label, + return SharedTextureMemory::Create(this, unpacked->label, unpacked.Get<SharedTextureMemoryDmaBufDescriptor>()); case wgpu::SType::SharedTextureMemoryAHardwareBufferDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryAHardwareBuffer), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer); return SharedTextureMemory::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedTextureMemoryAHardwareBufferDescriptor>()); case wgpu::SType::SharedTextureMemoryOpaqueFDDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedTextureMemoryOpaqueFD), "%s is not enabled.", wgpu::FeatureName::SharedTextureMemoryOpaqueFD); return SharedTextureMemory::Create( - this, descriptor->label, unpacked.Get<SharedTextureMemoryOpaqueFDDescriptor>()); + this, unpacked->label, unpacked.Get<SharedTextureMemoryOpaqueFDDescriptor>()); default: DAWN_UNREACHABLE(); } } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(descriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { wgpu::SType type; DAWN_TRY_ASSIGN( type, (unpacked.ValidateBranches<Branch<SharedFenceVkSemaphoreZirconHandleDescriptor>, @@ -351,18 +345,18 @@ "%s is not enabled.", wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle); return SharedFence::Create( - this, descriptor->label, + this, unpacked->label, unpacked.Get<SharedFenceVkSemaphoreZirconHandleDescriptor>()); case wgpu::SType::SharedFenceSyncFDDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceSyncFD), "%s is not enabled.", wgpu::FeatureName::SharedFenceSyncFD); - return SharedFence::Create(this, descriptor->label, + return SharedFence::Create(this, unpacked->label, unpacked.Get<SharedFenceSyncFDDescriptor>()); case wgpu::SType::SharedFenceVkSemaphoreOpaqueFDDescriptor: DAWN_INVALID_IF(!HasFeature(Feature::SharedFenceVkSemaphoreOpaqueFD), "%s is not enabled.", wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD); - return SharedFence::Create(this, descriptor->label, + return SharedFence::Create(this, unpacked->label, unpacked.Get<SharedFenceVkSemaphoreOpaqueFDDescriptor>()); default: DAWN_UNREACHABLE();
diff --git a/src/dawn/native/vulkan/DeviceVk.h b/src/dawn/native/vulkan/DeviceVk.h index 78257f8..b73526f 100644 --- a/src/dawn/native/vulkan/DeviceVk.h +++ b/src/dawn/native/vulkan/DeviceVk.h
@@ -208,9 +208,9 @@ void InitializeRenderPipelineAsyncImpl(Ref<CreateRenderPipelineAsyncEvent> event) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* baseDescriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* baseDescriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; ResultOrError<VulkanDeviceKnobs> CreateDevice(VkPhysicalDevice vkPhysicalDevice);
diff --git a/src/dawn/native/webgpu/DeviceWGPU.cpp b/src/dawn/native/webgpu/DeviceWGPU.cpp index ed4f6b5..f1ad381 100644 --- a/src/dawn/native/webgpu/DeviceWGPU.cpp +++ b/src/dawn/native/webgpu/DeviceWGPU.cpp
@@ -293,10 +293,7 @@ } ResultOrError<Ref<SharedTextureMemoryBase>> Device::ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* baseDescriptor) { - UnpackedPtr<SharedTextureMemoryDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(baseDescriptor)); - + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) { // TODO(crbug.com/483147423): Handle all possible chained structures. if (unpacked.Get<SharedTextureMemoryIOSurfaceDescriptor>()) { auto feature = Feature::SharedTextureMemoryIOSurface; @@ -338,10 +335,7 @@ } ResultOrError<Ref<SharedFenceBase>> Device::ImportSharedFenceImpl( - const SharedFenceDescriptor* baseDescriptor) { - UnpackedPtr<SharedFenceDescriptor> unpacked; - DAWN_TRY_ASSIGN(unpacked, ValidateAndUnpack(baseDescriptor)); - + UnpackedPtr<SharedFenceDescriptor> unpacked) { // TODO(crbug.com/483147423): Handle all possible chained structures. if (unpacked.Get<SharedFenceMTLSharedEventDescriptor>()) { auto feature = Feature::SharedFenceMTLSharedEvent;
diff --git a/src/dawn/native/webgpu/DeviceWGPU.h b/src/dawn/native/webgpu/DeviceWGPU.h index 801e940..f16ec4d 100644 --- a/src/dawn/native/webgpu/DeviceWGPU.h +++ b/src/dawn/native/webgpu/DeviceWGPU.h
@@ -125,9 +125,9 @@ TextureBase* texture, const UnpackedPtr<TextureViewDescriptor>& descriptor) override; ResultOrError<Ref<SharedTextureMemoryBase>> ImportSharedTextureMemoryImpl( - const SharedTextureMemoryDescriptor* descriptor) override; + UnpackedPtr<SharedTextureMemoryDescriptor> unpacked) override; ResultOrError<Ref<SharedFenceBase>> ImportSharedFenceImpl( - const SharedFenceDescriptor* descriptor) override; + UnpackedPtr<SharedFenceDescriptor> unpacked) override; MaybeError TickImpl() override;