mirror of
https://github.com/thead-yocto-mirror/skia
synced 2026-07-08 17:14:50 +02:00
51 lines
1.6 KiB
C++
51 lines
1.6 KiB
C++
/*
|
|
* Copyright 2018 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef GrVkTypesPriv_DEFINED
|
|
#define GrVkTypesPriv_DEFINED
|
|
|
|
#include "include/core/SkRefCnt.h"
|
|
#include "include/gpu/vk/GrVkTypes.h"
|
|
|
|
class GrVkImageLayout;
|
|
|
|
// This struct is to used to store the the actual information about the vulkan backend image on the
|
|
// GrBackendTexture and GrBackendRenderTarget. When a client calls getVkImageInfo on a
|
|
// GrBackendTexture/RenderTarget, we use the GrVkBackendSurfaceInfo to create a snapshot
|
|
// GrVkImgeInfo object. Internally, this uses a ref count GrVkImageLayout object to track the
|
|
// current VkImageLayout which can be shared with an internal GrVkImage so that layout updates can
|
|
// be seen by all users of the image.
|
|
struct GrVkBackendSurfaceInfo {
|
|
GrVkBackendSurfaceInfo(GrVkImageInfo info, GrVkImageLayout* layout)
|
|
: fImageInfo(info), fLayout(layout) {}
|
|
|
|
void cleanup();
|
|
|
|
GrVkBackendSurfaceInfo& operator=(const GrVkBackendSurfaceInfo&) = delete;
|
|
|
|
// Assigns the passed in GrVkBackendSurfaceInfo to this object. if isValid is true we will also
|
|
// attempt to unref the old fLayout on this object.
|
|
void assign(const GrVkBackendSurfaceInfo&, bool isValid);
|
|
|
|
void setImageLayout(VkImageLayout layout);
|
|
|
|
sk_sp<GrVkImageLayout> getGrVkImageLayout() const;
|
|
|
|
GrVkImageInfo snapImageInfo() const;
|
|
|
|
bool isProtected() const { return fImageInfo.fProtected == GrProtected::kYes; }
|
|
#if GR_TEST_UTILS
|
|
bool operator==(const GrVkBackendSurfaceInfo& that) const;
|
|
#endif
|
|
|
|
private:
|
|
GrVkImageInfo fImageInfo;
|
|
GrVkImageLayout* fLayout;
|
|
};
|
|
|
|
#endif
|