/** * Gets the channels present in the format as a bitfield of SkColorChannelFlag values. * Luminance channels are reported as kGray_SkColorChannelFlag.
*/
uint32_t channelMask() const;
GrColorFormatDesc desc() const;
#ifdef SK_DIRECT3D /** * If the backend API is Direct3D this gets the format as a DXGI_FORMAT and returns true. * Otherwise, returns false.
*/ bool asDxgiFormat(DXGI_FORMAT*) const; #endif
/** * If the backend API is not Mock these three calls will return kUnknown, kNone or false, * respectively. Otherwise, only one of the following can be true. The GrColorType is not * kUnknown, the compression type is not kNone, or this is a mock stencil format.
*/
GrColorType asMockColorType() const;
SkTextureCompressionType asMockCompressionType() const; bool isMockStencilFormat() const;
// If possible, copies the GrBackendFormat and forces the texture type to be Texture2D. If the // GrBackendFormat was for Vulkan and it originally had a skgpu::VulkanYcbcrConversionInfo, // we will remove the conversion and set the format to be VK_FORMAT_R8G8B8A8_UNORM.
GrBackendFormat makeTexture2D() const;
// Returns true if the backend format has been initialized. bool isValid() const { return fValid; }
private: // Size determined by looking at the GrBackendFormatData subclasses, then guessing-and-checking. // Compiler will complain if this is too small - in that case, just increase the number. inline constexpr static size_t kMaxSubclassSize = 80; using AnyFormatData = SkAnySubclass<GrBackendFormatData, kMaxSubclassSize>;
// Used by internal factories. Should not be used externally. Use factories like // GrBackendFormats::MakeGL instead. template <typename FormatData>
GrBackendFormat(GrTextureType textureType, GrBackendApi api, const FormatData& formatData)
: fBackend(api), fValid(true), fTextureType(textureType) {
fFormatData.emplace<FormatData>(formatData);
}
#ifdef SK_DIRECT3D // If the backend API is Direct3D, copies a snapshot of the GrD3DTextureResourceInfo struct into // the passed in pointer and returns true. This snapshot will set the fResourceState to the // current resource state. Otherwise returns false if the backend API is not D3D. bool getD3DTextureResourceInfo(GrD3DTextureResourceInfo*) const;
// Anytime the client changes the D3D12_RESOURCE_STATES of the D3D12_RESOURCE captured by this // GrBackendTexture, they must call this function to notify Skia of the changed layout. void setD3DResourceState(GrD3DResourceStateEnum); #endif
// Get the GrBackendFormat for this texture (or an invalid format if this is not valid).
GrBackendFormat getBackendFormat() const;
// If the backend API is Mock, copies a snapshot of the GrMockTextureInfo struct into the passed // in pointer and returns true. Otherwise returns false if the backend API is not Mock. bool getMockTextureInfo(GrMockTextureInfo*) const;
// If the client changes any of the mutable backend of the GrBackendTexture they should call // this function to inform Skia that those values have changed. The backend API specific state // that can be set from this function are: // // Vulkan: VkImageLayout and QueueFamilyIndex void setMutableState(const skgpu::MutableTextureState&);
// Returns true if we are working with protected content. bool isProtected() const;
// Returns true if the backend texture has been initialized. bool isValid() const { return fIsValid; }
// Returns true if both textures are valid and refer to the same API texture. bool isSameTexture(const GrBackendTexture&);
private: // Size determined by looking at the GrBackendTextureData subclasses, then guessing-and-checking. // Compiler will complain if this is too small - in that case, just increase the number. inline constexpr static size_t kMaxSubclassSize = 176; using AnyTextureData = SkAnySubclass<GrBackendTextureData, kMaxSubclassSize>;
#ifdef SK_DIRECT3D // If the backend API is Direct3D, copies a snapshot of the GrMtlTextureInfo struct into the // passed in pointer and returns true. Otherwise returns false if the backend API is not D3D. bool getD3DTextureResourceInfo(GrD3DTextureResourceInfo*) const;
// Anytime the client changes the D3D12_RESOURCE_STATES of the D3D12_RESOURCE captured by this // GrBackendTexture, they must call this function to notify Skia of the changed layout. void setD3DResourceState(GrD3DResourceStateEnum); #endif
// Get the GrBackendFormat for this render target (or an invalid format if this is not valid).
GrBackendFormat getBackendFormat() const;
// If the backend API is Mock, copies a snapshot of the GrMockTextureInfo struct into the passed // in pointer and returns true. Otherwise returns false if the backend API is not Mock. bool getMockRenderTargetInfo(GrMockRenderTargetInfo*) const;
// If the client changes any of the mutable backend of the GrBackendTexture they should call // this function to inform Skia that those values have changed. The backend API specific state // that can be set from this function are: // // Vulkan: VkImageLayout and QueueFamilyIndex void setMutableState(const skgpu::MutableTextureState&);
// Returns true if we are working with protected content. bool isProtected() const;
// Returns true if the backend texture has been initialized. bool isValid() const { return fIsValid; }
private: // Size determined by looking at the GrBackendRenderTargetData subclasses, then // guessing-and-checking. Compiler will complain if this is too small - in that case, just // increase the number. inline constexpr static size_t kMaxSubclassSize = 176; using AnyRenderTargetData = SkAnySubclass<GrBackendRenderTargetData, kMaxSubclassSize>;
// Used by internal factories. Should not be used externally. Use factories like // GrBackendRenderTargets::MakeGL instead. template <typename RenderTargetData>
GrBackendRenderTarget(int width, int height, int sampleCnt, int stencilBits,
GrBackendApi backend, bool framebufferOnly, const RenderTargetData& rtData)
: fIsValid(true)
, fFramebufferOnly(framebufferOnly)
, fWidth(width)
, fHeight(height)
, fSampleCnt(sampleCnt)
, fStencilBits(stencilBits)
, fBackend(backend) {
fRTData.emplace<RenderTargetData>(rtData);
}
friendclass GrVkGpu; // for getMutableState
sk_sp<skgpu::MutableTextureState> getMutableState() const;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.