| /* |
| * Copyright 2021 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef skgpu_graphite_ContextUtils_DEFINED |
| #define skgpu_graphite_ContextUtils_DEFINED |
| |
| #include "src/gpu/graphite/PaintParamsKey.h" |
| #include "src/gpu/graphite/PipelineDataCache.h" |
| |
| class SkColorInfo; |
| class SkM44; |
| |
| namespace skgpu::graphite { |
| |
| class DrawParams; |
| class GraphicsPipelineDesc; |
| class PaintParams; |
| class PipelineDataGatherer; |
| class Recorder; |
| class RenderStep; |
| class RuntimeEffectDictionary; |
| class UniquePaintParamsID; |
| |
| struct ResourceBindingRequirements; |
| |
| struct FragSkSLInfo { |
| std::string fSkSL; |
| BlendInfo fBlendInfo; |
| bool fRequiresLocalCoords = false; |
| int fNumTexturesAndSamplers = 0; |
| }; |
| |
| std::tuple<UniquePaintParamsID, const UniformDataBlock*, const TextureDataBlock*> |
| ExtractPaintData(Recorder*, |
| PipelineDataGatherer* gatherer, |
| PaintParamsKeyBuilder* builder, |
| const Layout layout, |
| const SkM44& local2Dev, |
| const PaintParams&, |
| const SkColorInfo& targetColorInfo); |
| |
| std::tuple<const UniformDataBlock*, const TextureDataBlock*> ExtractRenderStepData( |
| UniformDataCache* uniformDataCache, |
| TextureDataCache* textureDataCache, |
| PipelineDataGatherer* gatherer, |
| const Layout layout, |
| const RenderStep* step, |
| const DrawParams& params); |
| |
| std::string GetSkSLVS(const ResourceBindingRequirements&, |
| const RenderStep* step, |
| bool defineShadingSsboIndexVarying, |
| bool defineLocalCoordsVarying); |
| |
| FragSkSLInfo GetSkSLFS(const ResourceBindingRequirements&, |
| const ShaderCodeDictionary*, |
| const RuntimeEffectDictionary*, |
| const RenderStep* renderStep, |
| UniquePaintParamsID paintID, |
| bool useStorageBuffers); |
| |
| std::string EmitPaintParamsUniforms(int bufferID, |
| const char* name, |
| const Layout layout, |
| const std::vector<PaintParamsKey::BlockReader>&); |
| std::string EmitRenderStepUniforms(int bufferID, |
| const char* name, |
| const Layout layout, |
| SkSpan<const Uniform> uniforms); |
| std::string EmitPaintParamsStorageBuffer(int bufferID, |
| const char* bufferTypePrefix, |
| const char* bufferNamePrefix, |
| const std::vector<PaintParamsKey::BlockReader>& readers); |
| std::string EmitStorageBufferAccess(const char* bufferNamePrefix, |
| const char* ssboIndex, |
| const char* uniformName); |
| std::string EmitTexturesAndSamplers(const ResourceBindingRequirements&, |
| const std::vector<PaintParamsKey::BlockReader>&, |
| int* binding); |
| std::string EmitSamplerLayout(const ResourceBindingRequirements&, int* binding); |
| std::string EmitVaryings(const RenderStep* step, |
| const char* direction, |
| bool emitShadingSsboIndexVarying, |
| bool emitLocalCoordsVarying); |
| |
| } // namespace skgpu::graphite |
| |
| #endif // skgpu_graphite_ContextUtils_DEFINED |