46 size_t resourceBudget)
47 : fSharedContext(sharedContext)
50ResourceProvider::~ResourceProvider() {
70 TRACE_EVENT1(
"skia.shaders",
"createGraphicsPipeline",
"desc",
76 pipeline = globalCache->addGraphicsPipeline(pipelineKey, std::move(pipeline));
90 pipeline = globalCache->addComputePipeline(pipelineKey, std::move(pipeline));
109 return this->findOrCreateTextureWithKey(dimensions,
info,
key, budgeted);
179 sampler->setKey(
key);
187 std::string_view label) {
194 static_assert(
sizeof(uint32_t) == 4);
195 static const int kSizeKeyNum32DataCnt = (
sizeof(size_t) + 3) / 4;
196 static const int kKeyNum32DataCnt = kSizeKeyNum32DataCnt + 1;
199 SkASSERT(
static_cast<uint32_t
>(accessPattern) < (1u << 1));
202 builder[0] = (
static_cast<uint32_t
>(
type) << 0) |
203 (
static_cast<uint32_t
>(accessPattern) << 4);
205 for (
int i = 0; i < kSizeKeyNum32DataCnt; ++i) {
206 builder[i + 1] = (uint32_t) szKey;
210 if constexpr(kSizeKeyNum32DataCnt > 1) {
218 resource->setLabel(std::move(label));
232bool dimensions_are_valid(
const int maxTextureSize,
const SkISize& dimensions) {
234 dimensions.
width() > maxTextureSize ||
235 dimensions.
height() > maxTextureSize) {
236 SKGPU_LOG_W(
"Call to createBackendTexture has requested dimensions (%d, %d) larger than the"
237 " supported gpu max texture size: %d. Or the dimensions are empty.",
252#ifdef SK_BUILD_FOR_ANDROID
255 bool isProtectedContent,
257 bool fromAndroidWindow)
const {
268BackendTexture ResourceProvider::onCreateBackendTexture(
AHardwareBuffer*,
270 bool isProtectedContent,
272 bool fromAndroidWindow)
const {
281void ResourceProvider::freeGpuResources() {
289void ResourceProvider::purgeResourcesNotUsedSince(StdSteadyClock::time_point purgeTime) {
static int step(int x, SkScalar min, SkScalar max)
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
struct AHardwareBuffer AHardwareBuffer
#define SKGPU_LOG_W(fmt,...)
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)
#define TRACE_STR_COPY(str)
virtual GraphiteResourceKey makeSamplerKey(const SamplerDesc &samplerDesc) const
virtual UniqueKey makeGraphicsPipelineKey(const GraphicsPipelineDesc &, const RenderPassDesc &) const =0
virtual UniqueKey makeComputePipelineKey(const ComputePipelineDesc &) const =0
virtual void buildKeyForTexture(SkISize dimensions, const TextureInfo &, ResourceType, Shareable, GraphiteResourceKey *) const =0
int maxTextureSize() const
UniquePaintParamsID paintParamsID() const
uint32_t renderStepID() const
static ResourceType GenerateResourceType()
const RenderStep * lookup(uint32_t uniqueID) const
virtual sk_sp< Sampler > createSampler(const SamplerDesc &)=0
virtual BackendTexture onCreateBackendTexture(SkISize dimensions, const TextureInfo &)=0
virtual sk_sp< Buffer > createBuffer(size_t size, BufferType type, AccessPattern, std::string_view label)=0
virtual sk_sp< GraphicsPipeline > createGraphicsPipeline(const RuntimeEffectDictionary *, const GraphicsPipelineDesc &, const RenderPassDesc &)=0
virtual void onDeleteBackendTexture(const BackendTexture &)=0
virtual sk_sp< Texture > createTexture(SkISize, const TextureInfo &, skgpu::Budgeted)=0
sk_sp< ResourceCache > fResourceCache
SharedContext * fSharedContext
virtual sk_sp< ComputePipeline > createComputePipeline(const ComputePipelineDesc &)=0
const Caps * caps() const
GlobalCache * globalCache()
ShaderCodeDictionary * shaderCodeDictionary()
const RendererProvider * rendererProvider() const
static const uint8_t buffer[]
static std::string to_str(const SharedContext *ctx, const GraphicsPipelineDesc &gpDesc, const RenderPassDesc &rpDesc)
std::string GetPipelineLabel(const ShaderCodeDictionary *dict, const RenderPassDesc &renderPassDesc, const RenderStep *renderStep, UniquePaintParamsID paintID)
constexpr int32_t width() const
constexpr int32_t height() const
#define TRACE_EVENT1(category_group, name, arg1_name, arg1_val)