xref: /aosp_15_r20/external/skia/src/gpu/graphite/GraphicsPipeline.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2021 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/GraphicsPipeline.h"
9*c8dee2aaSAndroid Build Coastguard Worker 
10*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/ContextUtils.h"
11*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/Renderer.h"
12*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/ShaderInfo.h"
13*c8dee2aaSAndroid Build Coastguard Worker #include "src/utils/SkShaderUtils.h"
14*c8dee2aaSAndroid Build Coastguard Worker 
15*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite {
16*c8dee2aaSAndroid Build Coastguard Worker 
GraphicsPipeline(const SharedContext * sharedContext,const PipelineInfo & pipelineInfo)17*c8dee2aaSAndroid Build Coastguard Worker GraphicsPipeline::GraphicsPipeline(const SharedContext* sharedContext,
18*c8dee2aaSAndroid Build Coastguard Worker                                    const PipelineInfo& pipelineInfo)
19*c8dee2aaSAndroid Build Coastguard Worker         : Resource(sharedContext,
20*c8dee2aaSAndroid Build Coastguard Worker                    Ownership::kOwned,
21*c8dee2aaSAndroid Build Coastguard Worker                    skgpu::Budgeted::kYes,
22*c8dee2aaSAndroid Build Coastguard Worker                    /*gpuMemorySize=*/0)
23*c8dee2aaSAndroid Build Coastguard Worker         , fPipelineInfo(pipelineInfo) {}
24*c8dee2aaSAndroid Build Coastguard Worker 
25*c8dee2aaSAndroid Build Coastguard Worker GraphicsPipeline::~GraphicsPipeline() = default;
26*c8dee2aaSAndroid Build Coastguard Worker 
PipelineInfo(const ShaderInfo & shaderInfo,SkEnumBitMask<PipelineCreationFlags> pipelineCreationFlags)27*c8dee2aaSAndroid Build Coastguard Worker GraphicsPipeline::PipelineInfo::PipelineInfo(
28*c8dee2aaSAndroid Build Coastguard Worker             const ShaderInfo& shaderInfo,
29*c8dee2aaSAndroid Build Coastguard Worker             SkEnumBitMask<PipelineCreationFlags> pipelineCreationFlags)
30*c8dee2aaSAndroid Build Coastguard Worker         : fDstReadReq(shaderInfo.dstReadRequirement())
31*c8dee2aaSAndroid Build Coastguard Worker         , fNumFragTexturesAndSamplers(shaderInfo.numFragmentTexturesAndSamplers())
32*c8dee2aaSAndroid Build Coastguard Worker         , fHasPaintUniforms(shaderInfo.hasPaintUniforms())
33*c8dee2aaSAndroid Build Coastguard Worker         , fHasStepUniforms(shaderInfo.hasStepUniforms())
34*c8dee2aaSAndroid Build Coastguard Worker         , fHasGradientBuffer(shaderInfo.hasGradientBuffer()) {
35*c8dee2aaSAndroid Build Coastguard Worker #if defined(GPU_TEST_UTILS)
36*c8dee2aaSAndroid Build Coastguard Worker     fSkSLVertexShader = SkShaderUtils::PrettyPrint(shaderInfo.vertexSkSL());
37*c8dee2aaSAndroid Build Coastguard Worker     fSkSLFragmentShader = SkShaderUtils::PrettyPrint(shaderInfo.fragmentSkSL());
38*c8dee2aaSAndroid Build Coastguard Worker     fLabel = shaderInfo.fsLabel();
39*c8dee2aaSAndroid Build Coastguard Worker #endif
40*c8dee2aaSAndroid Build Coastguard Worker #if SK_HISTOGRAMS_ENABLED
41*c8dee2aaSAndroid Build Coastguard Worker     fFromPrecompile =
42*c8dee2aaSAndroid Build Coastguard Worker             SkToBool(pipelineCreationFlags & PipelineCreationFlags::kForPrecompilation);
43*c8dee2aaSAndroid Build Coastguard Worker #endif
44*c8dee2aaSAndroid Build Coastguard Worker }
45*c8dee2aaSAndroid Build Coastguard Worker 
46*c8dee2aaSAndroid Build Coastguard Worker }  // namespace skgpu::graphite
47