| Index: src/gpu/glsl/GrGLSLProgramDesc.h
|
| diff --git a/src/gpu/glsl/GrGLSLProgramDesc.h b/src/gpu/glsl/GrGLSLProgramDesc.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..149817988549422935afa0bf827bbb01e9bcb7ab
|
| --- /dev/null
|
| +++ b/src/gpu/glsl/GrGLSLProgramDesc.h
|
| @@ -0,0 +1,63 @@
|
| +/*
|
| +* Copyright 2016 Google Inc.
|
| +*
|
| +* Use of this source code is governed by a BSD-style license that can be
|
| +* found in the LICENSE file.
|
| +*/
|
| +
|
| +#ifndef GrGLSLProgramDesc_DEFINED
|
| +#define GrGLSLProgramDesc_DEFINED
|
| +
|
| +#include "GrColor.h"
|
| +#include "GrProgramDesc.h"
|
| +#include "GrGpu.h"
|
| +#include "GrTypesPriv.h"
|
| +
|
| +class GrGLSLProgramDescBuilder;
|
| +
|
| +class GrGLSLProgramDesc : public GrProgramDesc {
|
| + friend class GrGLSLProgramDescBuilder;
|
| +};
|
| +
|
| +/**
|
| +* This class can be used to build a GrProgramDesc. It also provides helpers for accessing
|
| +* GL specific info in the header.
|
| +*/
|
| +class GrGLSLProgramDescBuilder {
|
| +public:
|
| + typedef GrProgramDesc::KeyHeader KeyHeader;
|
| + // The key, stored in fKey, is composed of five parts(first 2 are defined in the key itself):
|
| + // 1. uint32_t for total key length.
|
| + // 2. uint32_t for a checksum.
|
| + // 3. Header struct defined above.
|
| + // 4. Backend-specific information including per-processor keys and their key lengths.
|
| + // Each processor's key is a variable length array of uint32_t.
|
| + enum {
|
| + // Part 3.
|
| + kHeaderOffset = GrGLSLProgramDesc::kHeaderOffset,
|
| + kHeaderSize = SkAlign4(sizeof(KeyHeader)),
|
| + // Part 4.
|
| + // This is the offset into the backenend specific part of the key, which includes
|
| + // per-processor keys.
|
| + kProcessorKeysOffset = kHeaderOffset + kHeaderSize,
|
| + };
|
| +
|
| + /**
|
| + * Builds a GLSL specific program descriptor
|
| + *
|
| + * @param GrPrimitiveProcessor The geometry
|
| + * @param GrPipeline The optimized drawstate. The descriptor will represent a program
|
| + * which this optstate can use to draw with. The optstate contains
|
| + * general draw information, as well as the specific color, geometry,
|
| + * and coverage stages which will be used to generate the GL Program for
|
| + * this optstate.
|
| + * @param GrGLSLCaps Capabilities of the GLSL backend.
|
| + * @param GrProgramDesc The built and finalized descriptor
|
| + **/
|
| + static bool Build(GrProgramDesc*,
|
| + const GrPrimitiveProcessor&,
|
| + const GrPipeline&,
|
| + const GrGLSLCaps&);
|
| +};
|
| +
|
| +#endif
|
|
|