blob: c419f6edebfcb558fc6494bb7e917cacaf78df51 [file] [log] [blame] [edit]
/*
* Copyright 2021 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/gpu/graphite/GraphicsPipeline.h"
#include "src/gpu/graphite/ContextUtils.h"
#include "src/gpu/graphite/Renderer.h"
#include "src/gpu/graphite/ShaderInfo.h"
#include "src/utils/SkShaderUtils.h"
namespace skgpu::graphite {
GraphicsPipeline::GraphicsPipeline(const SharedContext* sharedContext,
const PipelineInfo& pipelineInfo)
: Resource(sharedContext,
Ownership::kOwned,
skgpu::Budgeted::kYes,
/*gpuMemorySize=*/0)
, fPipelineInfo(pipelineInfo) {}
GraphicsPipeline::~GraphicsPipeline() = default;
GraphicsPipeline::PipelineInfo::PipelineInfo(
const ShaderInfo& shaderInfo,
SkEnumBitMask<PipelineCreationFlags> pipelineCreationFlags)
: fDstReadReq(shaderInfo.dstReadRequirement())
, fNumFragTexturesAndSamplers(shaderInfo.numFragmentTexturesAndSamplers())
, fHasPaintUniforms(shaderInfo.hasPaintUniforms())
, fHasStepUniforms(shaderInfo.hasStepUniforms())
, fHasGradientBuffer(shaderInfo.hasGradientBuffer()) {
#if defined(GPU_TEST_UTILS)
fSkSLVertexShader = SkShaderUtils::PrettyPrint(shaderInfo.vertexSkSL());
fSkSLFragmentShader = SkShaderUtils::PrettyPrint(shaderInfo.fragmentSkSL());
fLabel = shaderInfo.fsLabel();
#endif
#if SK_HISTOGRAMS_ENABLED
fFromPrecompile =
SkToBool(pipelineCreationFlags & PipelineCreationFlags::kForPrecompilation);
#endif
}
} // namespace skgpu::graphite