Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
ContextUtils.h
Go to the documentation of this file.
1/*
2 * Copyright 2021 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef skgpu_graphite_ContextUtils_DEFINED
9#define skgpu_graphite_ContextUtils_DEFINED
10
11#include "src/gpu/Blend.h"
14
15#include <optional>
16#include <tuple>
17
18class SkColorInfo;
19class SkM44;
20class SkPaint;
21
22namespace skgpu {
23class Swizzle;
24}
25
26namespace skgpu::graphite {
27
28class ComputeStep;
29enum class Coverage;
30class DrawParams;
31enum class DstReadRequirement;
32class GraphicsPipelineDesc;
33class PaintParams;
34class PipelineDataGatherer;
35class Recorder;
36struct RenderPassDesc;
37class RenderStep;
38class RuntimeEffectDictionary;
39class ShaderNode;
40class UniquePaintParamsID;
41
42struct ResourceBindingRequirements;
43
45 std::string fSkSL;
46
47 std::string fLabel;
48
50};
51
64
65std::tuple<UniquePaintParamsID, const UniformDataBlock*, const TextureDataBlock*>
67 PipelineDataGatherer* gatherer,
68 PaintParamsKeyBuilder* builder,
69 const Layout layout,
70 const SkM44& local2Dev,
71 const PaintParams&,
72 sk_sp<TextureProxy> dstTexture,
73 SkIPoint dstOffset,
74 const SkColorInfo& targetColorInfo);
75
76std::tuple<const UniformDataBlock*, const TextureDataBlock*> ExtractRenderStepData(
77 UniformDataCache* uniformDataCache,
78 TextureDataCache* textureDataCache,
79 PipelineDataGatherer* gatherer,
80 const Layout layout,
81 const RenderStep* step,
82 const DrawParams& params);
83
84DstReadRequirement GetDstReadRequirement(const Caps*, std::optional<SkBlendMode>, Coverage);
85
87 const RenderStep* step,
88 bool defineShadingSsboIndexVarying,
89 bool defineLocalCoordsVarying);
90
94 const RenderStep* renderStep,
95 UniquePaintParamsID paintID,
96 bool useStorageBuffers,
97 skgpu::Swizzle writeSwizzle);
98
99std::string GetPipelineLabel(const ShaderCodeDictionary*,
100 const RenderPassDesc& renderPassDesc,
101 const RenderStep* renderStep,
102 UniquePaintParamsID paintID);
103
104std::string BuildComputeSkSL(const Caps*, const ComputeStep*);
105
106std::string EmitPaintParamsUniforms(int bufferID,
107 const Layout layout,
109 int* numPaintUniforms,
110 int* paintUniformsTotalBytes,
111 bool* wrotePaintColor);
112std::string EmitRenderStepUniforms(int bufferID,
113 const Layout layout,
114 SkSpan<const Uniform> uniforms,
115 int* renderStepUniformsTotalBytes);
116std::string EmitPaintParamsStorageBuffer(int bufferID,
118 int* numPaintUniforms,
119 bool* wrotePaintColor);
120std::string EmitRenderStepStorageBuffer(int bufferID,
121 SkSpan<const Uniform> uniforms);
122std::string EmitUniformsFromStorageBuffer(const char* bufferNamePrefix,
123 const char* ssboIndex,
124 SkSpan<const Uniform> uniforms);
125std::string EmitStorageBufferAccess(const char* bufferNamePrefix,
126 const char* ssboIndex,
127 const char* uniformName);
130 int* binding);
131std::string EmitSamplerLayout(const ResourceBindingRequirements&, int* binding);
132std::string EmitVaryings(const RenderStep* step,
133 const char* direction,
134 bool emitSsboIndicesVarying,
135 bool emitLocalCoordsVarying);
136
137} // namespace skgpu::graphite
138
139#endif // skgpu_graphite_ContextUtils_DEFINED
static int step(int x, SkScalar min, SkScalar max)
Definition BlurTest.cpp:215
static bool ComputeStep(const SkPoint &a, const SkPoint &b, SkScalar radius, SkPoint *step)
Definition SkM44.h:150
const EmbeddedViewParams * params
VertSkSLInfo BuildVertexSkSL(const ResourceBindingRequirements &bindingReqs, const RenderStep *step, bool useStorageBuffers, bool defineLocalCoordsVarying)
std::string EmitPaintParamsUniforms(int bufferID, const Layout layout, SkSpan< const ShaderNode * > nodes, int *numUniforms, int *uniformsTotalBytes, bool *wrotePaintColor)
std::string BuildComputeSkSL(const Caps *caps, const ComputeStep *step)
std::string EmitStorageBufferAccess(const char *bufferNamePrefix, const char *ssboIndex, const char *uniformName)
DstReadRequirement GetDstReadRequirement(const Caps *caps, std::optional< SkBlendMode > blendMode, Coverage coverage)
std::string EmitTexturesAndSamplers(const ResourceBindingRequirements &bindingReqs, SkSpan< const ShaderNode * > nodes, int *binding)
FragSkSLInfo BuildFragmentSkSL(const Caps *caps, const ShaderCodeDictionary *dict, const RuntimeEffectDictionary *rteDict, const RenderStep *step, UniquePaintParamsID paintID, bool useStorageBuffers, skgpu::Swizzle writeSwizzle)
std::string GetPipelineLabel(const ShaderCodeDictionary *dict, const RenderPassDesc &renderPassDesc, const RenderStep *renderStep, UniquePaintParamsID paintID)
std::string EmitRenderStepStorageBuffer(int bufferID, SkSpan< const Uniform > uniforms)
std::string EmitRenderStepUniforms(int bufferID, const Layout layout, SkSpan< const Uniform > uniforms, int *renderStepUniformsTotalBytes)
std::tuple< UniquePaintParamsID, const UniformDataBlock *, const TextureDataBlock * > ExtractPaintData(Recorder *recorder, PipelineDataGatherer *gatherer, PaintParamsKeyBuilder *builder, const Layout layout, const SkM44 &local2Dev, const PaintParams &p, sk_sp< TextureProxy > dstTexture, SkIPoint dstOffset, const SkColorInfo &targetColorInfo)
std::string EmitVaryings(const RenderStep *step, const char *direction, bool emitSsboIndicesVarying, bool emitLocalCoordsVarying)
std::string EmitPaintParamsStorageBuffer(int bufferID, SkSpan< const ShaderNode * > nodes, int *numUniforms, bool *wrotePaintColor)
std::tuple< const UniformDataBlock *, const TextureDataBlock * > ExtractRenderStepData(UniformDataCache *uniformDataCache, TextureDataCache *textureDataCache, PipelineDataGatherer *gatherer, const Layout layout, const RenderStep *step, const DrawParams &params)
std::string EmitSamplerLayout(const ResourceBindingRequirements &bindingReqs, int *binding)
std::string EmitUniformsFromStorageBuffer(const char *bufferNamePrefix, const char *ssboIndex, SkSpan< const Uniform > uniforms)