Coverage Report

Created: 2024-09-14 07:19

/src/skia/src/gpu/ganesh/glsl/GrGLSLVertexGeoBuilder.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 2017 Google Inc.
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 GrGLSLVertexGeoBuilder_DEFINED
9
#define GrGLSLVertexGeoBuilder_DEFINED
10
11
#include "include/core/SkString.h"
12
#include "src/core/SkSLTypeShared.h"
13
#include "src/gpu/ganesh/GrGeometryProcessor.h"
14
#include "src/gpu/ganesh/glsl/GrGLSLShaderBuilder.h"
15
16
class GrGLSLProgramBuilder;
17
18
/**
19
 * Base class for vertex shader builder. This is the stage that computes input geometry for the
20
 * rasterizer.
21
 */
22
class GrGLSLVertexGeoBuilder : public GrGLSLShaderBuilder {
23
public:
24
    // Copies the given text verbatim to the function definitions section. Does not mangle the name.
25
    // 'functionDefinition' should be a fully valid SkSL function, complete with return type, name,
26
    // arguments, braces, and a body.
27
0
    void insertFunction(const char* functionDefinition) {
28
0
        this->functions().append(functionDefinition);
29
0
    }
30
    using GrGLSLShaderBuilder::functions;
31
    using GrGLSLShaderBuilder::code;
32
33
protected:
34
0
    GrGLSLVertexGeoBuilder(GrGLSLProgramBuilder* program) : INHERITED(program) {}
35
36
0
    void emitNormalizedSkPosition(const char* devPos, SkSLType devPosType = SkSLType::kFloat2) {
37
0
        this->emitNormalizedSkPosition(&this->code(), devPos, devPosType);
38
0
    }
39
40
    void emitNormalizedSkPosition(SkString* out, const char* devPos,
41
                                  SkSLType devPosType = SkSLType::kFloat2);
42
43
    friend class GrGeometryProcessor::ProgramImpl;
44
45
    using INHERITED = GrGLSLShaderBuilder;
46
};
47
48
49
class GrGLSLVertexBuilder : public GrGLSLVertexGeoBuilder {
50
public:
51
0
    GrGLSLVertexBuilder(GrGLSLProgramBuilder* program) : INHERITED(program) {}
52
53
private:
54
    void onFinalize() override;
55
56
    friend class GrGLProgramBuilder;
57
58
    using INHERITED = GrGLSLVertexGeoBuilder;
59
};
60
61
#endif