mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	 73fc486eb6
			
		
	
	
		73fc486eb6
		
	
	
	
	
		
			
			An ExternalTexture is a texture that is created and owned by gecko, but shared with the webgpu implementation. It is used for webgpu presentation. While this name describes the class well, it is confusing due to webgpu having an entirely unrelated concept of GPUExternalTexture. This patch renames ExternalTexture, and all of its subclasses and uses, to SharedTexture. This still describes the purpose accurately, and has similarities to gl::SharedSurface which serves a similar purpose for our webgl implementation. Differential Revision: https://phabricator.services.mozilla.com/D255976
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #ifndef GPU_SharedTextureD3D11_H_
 | |
| #define GPU_SharedTextureD3D11_H_
 | |
| 
 | |
| #include "mozilla/gfx/FileHandleWrapper.h"
 | |
| #include "mozilla/webgpu/SharedTexture.h"
 | |
| 
 | |
| struct ID3D11Texture2D;
 | |
| 
 | |
| namespace mozilla {
 | |
| 
 | |
| namespace layers {
 | |
| class FenceD3D11;
 | |
| }  // namespace layers
 | |
| 
 | |
| namespace webgpu {
 | |
| 
 | |
| class SharedTextureD3D11 final : public SharedTexture {
 | |
|  public:
 | |
|   static UniquePtr<SharedTextureD3D11> Create(
 | |
|       WebGPUParent* aParent, const ffi::WGPUDeviceId aDeviceId,
 | |
|       const uint32_t aWidth, const uint32_t aHeight,
 | |
|       const struct ffi::WGPUTextureFormat aFormat,
 | |
|       const ffi::WGPUTextureUsages aUsage);
 | |
| 
 | |
|   SharedTextureD3D11(
 | |
|       const uint32_t aWidth, const uint32_t aHeight,
 | |
|       const struct ffi::WGPUTextureFormat aFormat,
 | |
|       const ffi::WGPUTextureUsages aUsage,
 | |
|       const RefPtr<ID3D11Texture2D> aTexture,
 | |
|       RefPtr<gfx::FileHandleWrapper>&& aSharedHandle,
 | |
|       const layers::CompositeProcessFencesHolderId aFencesHolderId,
 | |
|       RefPtr<layers::FenceD3D11>&& aWriteFence);
 | |
|   virtual ~SharedTextureD3D11();
 | |
| 
 | |
|   void* GetSharedTextureHandle();
 | |
| 
 | |
|   Maybe<layers::SurfaceDescriptor> ToSurfaceDescriptor() override;
 | |
| 
 | |
|   void GetSnapshot(const ipc::Shmem& aDestShmem,
 | |
|                    const gfx::IntSize& aSize) override;
 | |
| 
 | |
|   SharedTextureD3D11* AsSharedTextureD3D11() override { return this; }
 | |
| 
 | |
|  protected:
 | |
|   const RefPtr<ID3D11Texture2D> mTexture;
 | |
|   const RefPtr<gfx::FileHandleWrapper> mSharedHandle;
 | |
|   const layers::CompositeProcessFencesHolderId mFencesHolderId;
 | |
|   const RefPtr<layers::FenceD3D11> mWriteFence;
 | |
| };
 | |
| 
 | |
| }  // namespace webgpu
 | |
| }  // namespace mozilla
 | |
| 
 | |
| #endif  // GPU_Texture_H_
 |