Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
DawnGraphicsPipeline.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 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_DawnGraphicsPipeline_DEFINED
9#define skgpu_graphite_DawnGraphicsPipeline_DEFINED
10
12#include "include/core/SkSpan.h"
17
18#include "webgpu/webgpu_cpp.h" // NO_G3_REWRITE
19
20class SkUniform;
21
22namespace SkSL {
23 class Compiler;
24}
25namespace skgpu {
26struct BlendInfo;
27}
28
29namespace skgpu::graphite {
30
31class Attribute;
32class Context;
33class GraphicsPipelineDesc;
34class DawnResourceProvider;
35class DawnSharedContext;
36struct DepthStencilSettings;
37struct RenderPassDesc;
38class RuntimeEffectDictionary;
39
41public:
42 inline static constexpr unsigned int kUniformBufferBindGroupIndex = 0;
43 inline static constexpr unsigned int kTextureBindGroupIndex = 1;
44 inline static constexpr unsigned int kBindGroupCount = 2;
45
46 inline static constexpr unsigned int kIntrinsicUniformBufferIndex = 0;
47 inline static constexpr unsigned int kRenderStepUniformBufferIndex = 1;
48 inline static constexpr unsigned int kPaintUniformBufferIndex = 2;
49 inline static constexpr unsigned int kNumUniformBuffers = 3;
50
51 inline static constexpr unsigned int kVertexBufferIndex = 0;
52 inline static constexpr unsigned int kInstanceBufferIndex = 1;
53 inline static constexpr unsigned int kNumVertexBuffers = 2;
54
56 DawnResourceProvider* resourceProvider,
57 const RuntimeEffectDictionary* runtimeDict,
58 const GraphicsPipelineDesc& pipelineDesc,
59 const RenderPassDesc& renderPassDesc);
60
62
63 uint32_t stencilReferenceValue() const { return fStencilReferenceValue; }
64 PrimitiveType primitiveType() const { return fPrimitiveType; }
65 bool hasStepUniforms() const { return fHasStepUniforms; }
66 bool hasPaintUniforms() const { return fHasPaintUniforms; }
67 int numTexturesAndSamplers() const { return fNumFragmentTexturesAndSamplers; }
68 const wgpu::RenderPipeline& dawnRenderPipeline() const;
69
70 using BindGroupLayouts = std::array<wgpu::BindGroupLayout, kBindGroupCount>;
71 const BindGroupLayouts& dawnGroupLayouts() const { return fGroupLayouts; }
72
73private:
74 using AsyncPipelineCreation = DawnAsyncResult<wgpu::RenderPipeline>;
75
77 PipelineInfo* pipelineInfo,
78 std::unique_ptr<AsyncPipelineCreation> pipelineCreationInfo,
79 BindGroupLayouts groupLayouts,
81 uint32_t refValue,
82 bool hasStepUniforms,
84 int numFragmentTexturesAndSamplers);
85
86 void freeGpuData() override;
87
88 std::unique_ptr<AsyncPipelineCreation> fAsyncPipelineCreation;
89 BindGroupLayouts fGroupLayouts;
90 const PrimitiveType fPrimitiveType;
91 const uint32_t fStencilReferenceValue;
92 const bool fHasStepUniforms;
93 const bool fHasPaintUniforms;
94 const int fNumFragmentTexturesAndSamplers;
95};
96
97} // namespace skgpu::graphite
98
99#endif // skgpu_graphite_DawnGraphicsPipeline_DEFINED
static constexpr unsigned int kUniformBufferBindGroupIndex
static constexpr unsigned int kTextureBindGroupIndex
static constexpr unsigned int kRenderStepUniformBufferIndex
std::array< wgpu::BindGroupLayout, kBindGroupCount > BindGroupLayouts
const wgpu::RenderPipeline & dawnRenderPipeline() const
static constexpr unsigned int kPaintUniformBufferIndex
static constexpr unsigned int kBindGroupCount
static constexpr unsigned int kInstanceBufferIndex
const BindGroupLayouts & dawnGroupLayouts() const
static constexpr unsigned int kNumUniformBuffers
static sk_sp< DawnGraphicsPipeline > Make(const DawnSharedContext *sharedContext, DawnResourceProvider *resourceProvider, const RuntimeEffectDictionary *runtimeDict, const GraphicsPipelineDesc &pipelineDesc, const RenderPassDesc &renderPassDesc)
static constexpr unsigned int kNumVertexBuffers
static constexpr unsigned int kVertexBufferIndex
static constexpr unsigned int kIntrinsicUniformBufferIndex
const SharedContext * sharedContext() const
Definition Resource.h:187