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

Unified Diff: src/gpu/gl/GrGLEffect.h

Issue 582963002: Solo gp (Closed) Base URL: https://skia.googlesource.com/skia.git@no_peb
Patch Set: fix Created 6 years, 3 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
Index: src/gpu/gl/GrGLEffect.h
diff --git a/src/gpu/gl/GrGLEffect.h b/src/gpu/gl/GrGLEffect.h
deleted file mode 100644
index 61e3ed8e534f55655a9a056ccf0402f3aebafc5e..0000000000000000000000000000000000000000
--- a/src/gpu/gl/GrGLEffect.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrGLEffect_DEFINED
-#define GrGLEffect_DEFINED
-
-#include "GrBackendEffectFactory.h"
-#include "GrGLProgramEffects.h"
-#include "GrGLShaderVar.h"
-#include "GrGLSL.h"
-
-class GrGLShaderBuilder;
-
-/** @file
- This file contains specializations for OpenGL of the shader stages declared in
- include/gpu/GrEffect.h. Objects of type GrGLEffect are responsible for emitting the
- GLSL code that implements a GrEffect and for uploading uniforms at draw time. If they don't
- always emit the same GLSL code, they must have a function:
- static inline void GenKey(const GrEffect&, const GrGLCaps&, GrEffectKeyBuilder*)
- that is used to implement a program cache. When two GrEffects produce the same key this means
- that their GrGLEffects would emit the same GLSL code.
-
- The GrGLEffect subclass must also have a constructor of the form:
- EffectSubclass::EffectSubclass(const GrBackendEffectFactory&, const GrEffect&)
-
- These objects are created by the factory object returned by the GrEffect::getFactory().
-*/
-
-class GrGLTexture;
-class GrGLGeometryProcessor;
-
-class GrGLEffect {
-public:
- typedef GrGLProgramDataManager::UniformHandle UniformHandle;
-
- /**
- * Passed to GrGLEffects so they can add transformed coordinates to their shader code.
- */
- typedef GrShaderVar TransformedCoords;
- typedef SkTArray<GrShaderVar> TransformedCoordsArray;
-
- /**
- * Passed to GrGLEffects so they can add texture reads to their shader code.
- */
- class TextureSampler {
- public:
- TextureSampler(UniformHandle uniform, const GrTextureAccess& access)
- : fSamplerUniform(uniform)
- , fConfigComponentMask(GrPixelConfigComponentMask(access.getTexture()->config())) {
- SkASSERT(0 != fConfigComponentMask);
- memcpy(fSwizzle, access.getSwizzle(), 5);
- }
-
- // bitfield of GrColorComponentFlags present in the texture's config.
- uint32_t configComponentMask() const { return fConfigComponentMask; }
- // this is .abcd
- const char* swizzle() const { return fSwizzle; }
-
- private:
- UniformHandle fSamplerUniform;
- uint32_t fConfigComponentMask;
- char fSwizzle[5];
-
- friend class GrGLShaderBuilder;
- };
-
- typedef SkTArray<TextureSampler> TextureSamplerArray;
-
- GrGLEffect(const GrBackendEffectFactory& factory)
- : fFactory(factory)
- , fIsVertexEffect(false) {
- }
-
- virtual ~GrGLEffect() {}
-
- /** Called when the program stage should insert its code into the shaders. The code in each
- shader will be in its own block ({}) and so locally scoped names will not collide across
- stages.
-
- @param builder Interface used to emit code in the shaders.
- @param effect The effect that generated this program stage.
- @param key The key that was computed by GenKey() from the generating GrEffect.
- @param outputColor A predefined vec4 in the FS in which the stage should place its output
- color (or coverage).
- @param inputColor A vec4 that holds the input color to the stage in the FS. This may be
- NULL in which case the implied input is solid white (all ones).
- TODO: Better system for communicating optimization info (e.g. input
- color is solid white, trans black, known to be opaque, etc.) that allows
- the effect to communicate back similar known info about its output.
- @param samplers One entry for each GrTextureAccess of the GrEffect that generated the
- GrGLEffect. These can be passed to the builder to emit texture
- reads in the generated code.
- */
- virtual void emitCode(GrGLProgramBuilder* builder,
- const GrEffect& effect,
- const GrEffectKey& key,
- const char* outputColor,
- const char* inputColor,
- const TransformedCoordsArray& coords,
- const TextureSamplerArray& samplers) = 0;
-
- /** A GrGLEffect instance can be reused with any GrEffect that produces the same stage
- key; this function reads data from a GrEffect and uploads any uniform variables required
- by the shaders created in emitCode(). The GrEffect is
- guaranteed to be of the same type that created this GrGLEffect and to have an identical
- effect key as the one that created this GrGLEffect. Effects that use local coords have
- to consider whether the GrEffectStage's coord change matrix should be used. When explicit
- local coordinates are used it can be ignored. */
- virtual void setData(const GrGLProgramDataManager&, const GrEffect&) {}
-
- const char* name() const { return fFactory.name(); }
-
- static void GenKey(const GrEffect&, const GrGLCaps&, GrEffectKeyBuilder*) {}
-
- /** Used by the system when generating shader code, to see if this effect can be downcasted to
- the internal GrGLGeometryProcessor type */
- bool isVertexEffect() const { return fIsVertexEffect; }
-
-protected:
- const GrBackendEffectFactory& fFactory;
-
-private:
- friend class GrGLGeometryProcessor; // to set fIsVertexEffect
-
- bool fIsVertexEffect;
-};
-
-#endif

Powered by Google App Engine
This is Rietveld 408576698