Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(618)

Unified Diff: src/gpu/gl/builders/GrGLFullProgramBuilder.h

Issue 611653002: Cleanup of shader building system (Closed) Base URL: https://skia.googlesource.com/skia.git@solo_gp
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp ('k') | src/gpu/gl/builders/GrGLFullProgramBuilder.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/builders/GrGLFullProgramBuilder.h
diff --git a/src/gpu/gl/builders/GrGLFullProgramBuilder.h b/src/gpu/gl/builders/GrGLFullProgramBuilder.h
deleted file mode 100644
index 0f3834187b9dbdf1ef0d9c77d8d8d584866ceb1a..0000000000000000000000000000000000000000
--- a/src/gpu/gl/builders/GrGLFullProgramBuilder.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright 2014 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrGLFullProgramBuilder_DEFINED
-#define GrGLFullProgramBuilder_DEFINED
-
-#include "GrGLProgramBuilder.h"
-#include "../GrGLGeometryProcessor.h"
-
-class GrGLVertexProgramEffects;
-
-class GrGLFullProgramBuilder : public GrGLProgramBuilder {
-public:
- GrGLFullProgramBuilder(GrGpuGL*, const GrOptDrawState&, const GrGLProgramDesc&);
-
- /** Add a varying variable to the current program to pass values between vertex and fragment
- shaders. If the last two parameters are non-NULL, they are filled in with the name
- generated. */
- void addVarying(GrSLType type,
- const char* name,
- const char** vsOutName = NULL,
- const char** fsInName = NULL,
- GrGLShaderVar::Precision fsPrecision=GrGLShaderVar::kDefault_Precision);
-
- /** Add a separable varying input variable to the current program.
- * A separable varying (fragment shader input) is a varying that can be used also when vertex
- * shaders are not used. With a vertex shader, the operation is same as with other
- * varyings. Without a vertex shader, such as with NV_path_rendering, GL APIs are used to
- * populate the variable. The APIs can refer to the variable through the returned handle.
- */
- VaryingHandle addSeparableVarying(GrSLType type,
- const char* name,
- const char** vsOutName,
- const char** fsInName);
-
- GrGLVertexShaderBuilder* getVertexShaderBuilder() { return &fVS; }
-
- /*
- * This non-virtual call will hide the parent call to prevent GPs from accessing fragment shader
- * functionality they shouldn't be using
- */
- GrGLProcessorFragmentShaderBuilder* getFragmentShaderBuilder() { return &fFS; }
-
-private:
- virtual void createAndEmitEffects(const GrGeometryStage* geometryProcessor,
- const GrFragmentStage* colorStages[],
- const GrFragmentStage* coverageStages[],
- GrGLSLExpr4* inputColor,
- GrGLSLExpr4* inputCoverage) SK_OVERRIDE;
-
- GrGLProgramEffects* onCreateAndEmitEffects(const GrFragmentStage* effectStages[],
- int effectCnt,
- const GrGLProgramDesc::EffectKeyProvider&,
- GrGLSLExpr4* inOutFSColor);
-
- class GrGLGeometryProcessorEmitter : public GrGLProgramBuilder::GrGLProcessorEmitterInterface {
- public:
- GrGLGeometryProcessorEmitter(GrGLFullProgramBuilder* builder)
- : fBuilder(builder)
- , fGeometryProcessor(NULL)
- , fGLGeometryProcessor(NULL) {}
- virtual ~GrGLGeometryProcessorEmitter() {}
- void set(const GrGeometryProcessor* gp) {
- SkASSERT(NULL == fGeometryProcessor);
- fGeometryProcessor = gp;
- }
- virtual GrGLProcessor* createGLInstance() {
- SkASSERT(fGeometryProcessor);
- SkASSERT(NULL == fGLGeometryProcessor);
- fGLGeometryProcessor =
- fGeometryProcessor->getFactory().createGLInstance(*fGeometryProcessor);
- return fGLGeometryProcessor;
- }
- virtual void emit(const GrProcessorKey& key,
- const char* outColor,
- const char* inColor,
- const GrGLProcessor::TransformedCoordsArray& coords,
- const GrGLProcessor::TextureSamplerArray& samplers) {
- SkASSERT(fGeometryProcessor);
- SkASSERT(fGLGeometryProcessor);
- fGLGeometryProcessor->emitCode(fBuilder, *fGeometryProcessor, key, outColor,
- inColor, coords, samplers);
- // this will not leak because it has already been used by createGLInstance
- fGLGeometryProcessor = NULL;
- fGeometryProcessor = NULL;
- }
- private:
- GrGLFullProgramBuilder* fBuilder;
- const GrGeometryProcessor* fGeometryProcessor;
- GrGLGeometryProcessor* fGLGeometryProcessor;
- };
-
- virtual void emitEffect(const GrProcessorStage& stage,
- const GrProcessorKey& key,
- const char* outColor,
- const char* inColor,
- int stageIndex) SK_OVERRIDE;
-
- /**
- * Helper for emitEffect(). Emits code to implement an effect's coord transforms in the VS.
- * Varyings are added as an outputs of the VS and inputs to the FS. The varyings may be either a
- * vec2f or vec3f depending upon whether perspective interpolation is required or not. The names
- * of the varyings in the VS and FS as well their types are appended to the
- * TransformedCoordsArray* object, which is in turn passed to the effect's emitCode() function.
- */
- void emitTransforms(const GrProcessorStage& effectStage,
- GrGLProcessor::TransformedCoordsArray* outCoords);
-
- virtual bool compileAndAttachShaders(GrGLuint programId,
- SkTDArray<GrGLuint>* shaderIds) const SK_OVERRIDE;
-
- virtual void bindProgramLocations(GrGLuint programId) SK_OVERRIDE;
-
- virtual GrGLProgramEffects* getProgramEffects() SK_OVERRIDE { return fProgramEffects.get(); }
-
- typedef GrGLProgramDesc::EffectKeyProvider EffectKeyProvider;
-
- GrGLGeometryProcessorEmitter fGLGeometryProcessorEmitter;
- GrGLGeometryShaderBuilder fGS;
- GrGLVertexShaderBuilder fVS;
- SkAutoTDelete<GrGLVertexProgramEffects> fProgramEffects;
-
- typedef GrGLProgramBuilder INHERITED;
-};
-
-#endif
« no previous file with comments | « src/gpu/gl/builders/GrGLFragmentShaderBuilder.cpp ('k') | src/gpu/gl/builders/GrGLFullProgramBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698