C++程序  |  62行  |  1.77 KB

/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef GrVkTexture_DEFINED
#define GrVkTexture_DEFINED

#include "GrGpu.h"
#include "GrTexture.h"
#include "GrVkImage.h"

class GrVkGpu;
class GrVkImageView;

class GrVkTexture : public GrTexture, public virtual GrVkImage {
public:
    static GrVkTexture* CreateNewTexture(GrVkGpu*, const GrSurfaceDesc&,
                                         GrGpuResource::LifeCycle,
                                         const GrVkImage::ImageDesc&);
                                          

    static GrVkTexture* CreateWrappedTexture(GrVkGpu*, const GrSurfaceDesc&,
                                             GrGpuResource::LifeCycle,
                                             VkFormat, const GrVkImage::Resource*);

    ~GrVkTexture() override;

    GrBackendObject getTextureHandle() const override;

    void textureParamsModified() override {}

    const GrVkImageView* textureView() const { return fTextureView; }

protected:
    enum Derived { kDerived };

    GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, GrGpuResource::LifeCycle,
                const GrVkImage::Resource*, const GrVkImageView* imageView);

    GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, GrGpuResource::LifeCycle,
                const GrVkImage::Resource*, const GrVkImageView* imageView, Derived);

    static GrVkTexture* Create(GrVkGpu*, const GrSurfaceDesc&,
                               GrGpuResource::LifeCycle, VkFormat,
                               const GrVkImage::Resource* texImpl);

    GrVkGpu* getVkGpu() const; 

    void onAbandon() override;
    void onRelease() override;

private:
    const GrVkImageView* fTextureView;

    typedef GrTexture INHERITED;
};

#endif