8 #ifndef GrBackendSurface_DEFINED
9 #define GrBackendSurface_DEFINED
13 #include "include/gpu/gl/GrGLTypes.h"
14 #include "include/gpu/mock/GrMockTypes.h"
15 #include "include/gpu/vk/GrVkTypes.h"
16 #include "include/private/GrGLTypesPriv.h"
17 #include "include/private/GrVkTypesPriv.h"
20 #include "include/gpu/dawn/GrDawnTypes.h"
23 class GrBackendSurfaceMutableStateImpl;
24 class GrVkImageLayout;
25 class GrGLTextureParameters;
28 #include "dawn/webgpu_cpp.h"
32 #include "include/gpu/mtl/GrMtlTypes.h"
36 #include "include/gpu/d3d/GrD3DTypesMinimal.h"
37 #include "include/private/GrD3DTypesPriv.h"
38 class GrD3DResourceState;
41 #if defined(SK_DEBUG) || GR_TEST_UTILS
70 enum class GrGLFormat;
87 static GrBackendFormat MakeVk(
const GrVkYcbcrConversionInfo& ycbcrInfo);
108 bool isStencilFormat =
false);
114 GrTextureType textureType()
const {
return fTextureType; }
120 uint32_t channelMask()
const;
126 GrGLFormat asGLFormat()
const;
132 bool asVkFormat(VkFormat*)
const;
134 const GrVkYcbcrConversionInfo* getVkYcbcrConversionInfo()
const;
141 bool asDawnFormat(wgpu::TextureFormat*)
const;
149 GrMTLPixelFormat asMtlFormat()
const;
157 bool asDxgiFormat(DXGI_FORMAT*)
const;
165 GrColorType asMockColorType()
const;
167 bool isMockStencilFormat()
const;
175 bool isValid()
const {
return fValid; }
177 #if defined(SK_DEBUG) || GR_TEST_UTILS
184 GrBackendFormat(
const VkFormat vkFormat,
const GrVkYcbcrConversionInfo&);
201 bool validateMock()
const;
211 GrVkYcbcrConversionInfo fYcbcrConversionInfo;
214 wgpu::TextureFormat fDawnFormat;
218 GrMTLPixelFormat fMtlFormat;
222 DXGI_FORMAT fDxgiFormat;
225 GrColorType fColorType;
227 bool fIsStencilFormat;
230 GrTextureType fTextureType = GrTextureType::kNone;
242 const GrGLTextureInfo& glInfo);
247 const GrVkImageInfo& vkInfo);
254 const GrMtlTextureInfo& mtlInfo);
260 const GrD3DTextureResourceInfo& d3dInfo);
266 const GrDawnTextureInfo& dawnInfo);
272 const GrMockTextureInfo& mockInfo);
280 SkISize dimensions()
const {
return {fWidth, fHeight}; }
281 int width()
const {
return fWidth; }
282 int height()
const {
return fHeight; }
285 bool hasMipMaps()
const {
return this->hasMipmaps(); }
290 bool getGLTextureInfo(GrGLTextureInfo*)
const;
294 void glTextureParametersModified();
299 bool getDawnTextureInfo(GrDawnTextureInfo*)
const;
305 bool getVkImageInfo(GrVkImageInfo*)
const;
309 void setVkImageLayout(VkImageLayout);
314 bool getMtlTextureInfo(GrMtlTextureInfo*)
const;
321 bool getD3DTextureResourceInfo(GrD3DTextureResourceInfo*)
const;
325 void setD3DResourceState(GrD3DResourceStateEnum);
333 bool getMockTextureInfo(GrMockTextureInfo*)
const;
343 bool isProtected()
const;
346 bool isValid()
const {
return fIsValid; }
356 friend class GrVkGpu;
360 friend class GrGLTexture;
361 friend class GrGLGpu;
365 const GrGLTextureInfo,
371 friend class GrVkTexture;
374 const GrVkImageInfo& vkInfo,
379 friend class GrD3DTexture;
380 friend class GrD3DGpu;
383 const GrD3DTextureResourceInfo& vkInfo,
399 GrGLBackendTextureInfo fGLInfo;
401 GrVkBackendSurfaceInfo fVkInfo;
402 GrMockTextureInfo fMockInfo;
404 GrD3DBackendSurfaceInfo fD3DInfo;
408 GrMtlTextureInfo fMtlInfo;
411 GrDawnTextureInfo fDawnInfo;
428 const GrGLFramebufferInfo& glInfo);
436 const GrDawnRenderTargetInfo& dawnInfo);
449 const GrMtlTextureInfo& mtlInfo);
454 const GrMtlTextureInfo& mtlInfo);
460 const GrD3DTextureResourceInfo& d3dInfo);
467 const GrMockRenderTargetInfo& mockInfo);
474 SkISize dimensions()
const {
return {fWidth, fHeight}; }
475 int width()
const {
return fWidth; }
476 int height()
const {
return fHeight; }
477 int sampleCnt()
const {
return fSampleCnt; }
478 int stencilBits()
const {
return fStencilBits; }
480 bool isFramebufferOnly()
const {
return fFramebufferOnly; }
484 bool getGLFramebufferInfo(GrGLFramebufferInfo*)
const;
489 bool getDawnRenderTargetInfo(GrDawnRenderTargetInfo*)
const;
495 bool getVkImageInfo(GrVkImageInfo*)
const;
499 void setVkImageLayout(VkImageLayout);
504 bool getMtlTextureInfo(GrMtlTextureInfo*)
const;
510 bool getD3DTextureResourceInfo(GrD3DTextureResourceInfo*)
const;
514 void setD3DResourceState(GrD3DResourceStateEnum);
522 bool getMockRenderTargetInfo(GrMockRenderTargetInfo*)
const;
532 bool isProtected()
const;
535 bool isValid()
const {
return fIsValid; }
543 friend class GrVkGpu;
547 friend class GrVkRenderTarget;
550 const GrVkImageInfo& vkInfo,
555 friend class GrD3DGpu;
556 friend class GrD3DRenderTarget;
559 const GrD3DTextureResourceInfo& d3dInfo,
568 bool fFramebufferOnly =
false;
579 GrGLFramebufferInfo fGLInfo;
581 GrVkBackendSurfaceInfo fVkInfo;
582 GrMockRenderTargetInfo fMockInfo;
584 GrD3DBackendSurfaceInfo fD3DInfo;
588 GrMtlTextureInfo fMtlInfo;
591 GrDawnRenderTargetInfo fDawnInfo;