skia2/include/gpu/GrBackendDrawableInfo.h
Greg Daniel 9ed1a2cd71 Add ability for an SkDevice to handle the drawing of an SkDrawable.
If supported, an Sk*Device can take charge of handling of an SkDrawable.
The specific use case right now will be to use this to execute Vulkan
specific SkDrawable's that need to know information about our Vulkan state
and objects at the time the SkDrawable is executed. If a device does not
support the SkDrawable we fall back to the cavans version like we did
previously.

BUG=skia:

Change-Id: I821fa600a80ff645412f296be36990ef390ae0a9
Reviewed-on: https://skia-review.googlesource.com/c/7740
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-10-19 15:21:54 +00:00

45 lines
1.1 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 GrBackendDrawableInfo_DEFINED
#define GrBackendDrawableInfo_DEFINED
#include "GrTypes.h"
#include "vk/GrVkTypes.h"
class SK_API GrBackendDrawableInfo {
public:
// Creates an invalid backend drawable info.
GrBackendDrawableInfo() : fIsValid(false) {}
GrBackendDrawableInfo(const GrVkDrawableInfo& info)
: fIsValid(true)
, fBackend(GrBackendApi::kVulkan)
, fVkInfo(info) {}
// Returns true if the backend texture has been initialized.
bool isValid() const { return fIsValid; }
GrBackendApi backend() const { return fBackend; }
bool getVkDrawableInfo(GrVkDrawableInfo* outInfo) const {
if (this->isValid() && GrBackendApi::kVulkan == fBackend) {
*outInfo = fVkInfo;
return true;
}
return false;
}
private:
bool fIsValid;
GrBackendApi fBackend;
GrVkDrawableInfo fVkInfo;
};
#endif