| /* |
| * Copyright 2019 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrDawnTexture_DEFINED |
| #define GrDawnTexture_DEFINED |
| |
| #include "include/gpu/GrTexture.h" |
| #include "dawn/dawncpp.h" |
| |
| class GrDawnGpu; |
| struct GrDawnImageInfo; |
| |
| class GrDawnTexture : public GrTexture { |
| public: |
| static sk_sp<GrDawnTexture> Make(GrDawnGpu*, const SkISize& size, GrPixelConfig config, |
| dawn::TextureFormat format, GrRenderable, int sampleCnt, |
| SkBudgeted, int mipLevels, GrMipMapsStatus); |
| |
| static sk_sp<GrDawnTexture> MakeWrapped(GrDawnGpu*, const SkISize& size, GrPixelConfig config, |
| GrRenderable, int sampleCnt, |
| GrMipMapsStatus, GrWrapCacheable, |
| const GrDawnImageInfo&); |
| |
| ~GrDawnTexture() override; |
| |
| GrBackendTexture getBackendTexture() const override; |
| GrBackendFormat backendFormat() const override; |
| |
| void textureParamsModified() override {} |
| |
| void upload(const GrMipLevel texels[], int mipLevels, dawn::CommandEncoder copyEncoder); |
| void upload(const GrMipLevel texels[], int mipLevels, const SkIRect& dstRect, |
| dawn::CommandEncoder copyEncoder); |
| |
| dawn::Texture texture() const { return fInfo.fTexture; } |
| dawn::TextureView textureView() const { return fTextureView; } |
| protected: |
| GrDawnTexture(GrDawnGpu*, const SkISize& size, GrPixelConfig config, |
| dawn::TextureView, const GrDawnImageInfo&, GrMipMapsStatus); |
| |
| GrDawnGpu* getDawnGpu() const; |
| |
| void onAbandon() override; |
| void onRelease() override; |
| |
| bool onStealBackendTexture(GrBackendTexture*, SkImage::BackendTextureReleaseProc*) override { |
| return false; |
| } |
| |
| private: |
| GrDawnTexture(GrDawnGpu*, const GrSurfaceDesc&, const GrDawnImageInfo&, GrMipMapsStatus); |
| |
| GrDawnImageInfo fInfo; |
| dawn::TextureView fTextureView; |
| |
| typedef GrTexture INHERITED; |
| }; |
| |
| #endif |