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

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

Issue 24853002: Make GPU coord transforms automatic (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: rebase Created 7 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
« no previous file with comments | « src/gpu/gl/GrGLEffect.cpp ('k') | src/gpu/gl/GrGLEffectMatrix.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/GrGLEffectMatrix.h
diff --git a/src/gpu/gl/GrGLEffectMatrix.h b/src/gpu/gl/GrGLEffectMatrix.h
deleted file mode 100644
index c5ac5f093a01888bc3641ce3f76a96814f6152d9..0000000000000000000000000000000000000000
--- a/src/gpu/gl/GrGLEffectMatrix.h
+++ /dev/null
@@ -1,118 +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 GrGLEffectMatrix_DEFINED
-#define GrGLEffectMatrix_DEFINED
-
-#include "GrGLEffect.h"
-#include "SkMatrix.h"
-
-class GrTexture;
-
-/**
- * This is a helper to implement a matrix in a GrGLEffect that operates on incoming coords in the
- * vertex shader and writes them to an attribute to be used in the fragment shader. When the input
- * coords in the vertex shader are local coordinates this class accounts for the coord change matrix
- * communicated via GrDrawEffect. The input coords may also be positions and in this case the coord
- * change matrix is ignored. The GrGLEffectMatrix will emit different code based on the type of
- * matrix and thus must contribute to the effect's key.
- *
- * This class cannot be used to apply a matrix to coordinates that come in the form of custom vertex
- * attributes.
- */
-class GrGLEffectMatrix {
-private:
- // We specialize the generated code for each of these matrix types.
- enum MatrixTypes {
- kIdentity_MatrixType = 0,
- kTrans_MatrixType = 1,
- kNoPersp_MatrixType = 2,
- kGeneral_MatrixType = 3,
- };
- // The key for is made up of a matrix type and a bit that indicates the source of the input
- // coords.
- enum {
- kMatrixTypeKeyBits = 2,
- kMatrixTypeKeyMask = (1 << kMatrixTypeKeyBits) - 1,
- kPositionCoords_Flag = (1 << kMatrixTypeKeyBits),
- kKeyBitsPrivate = kMatrixTypeKeyBits + 1,
- };
-
-public:
-
- typedef GrEffect::CoordsType CoordsType;
-
- typedef GrGLEffect::EffectKey EffectKey;
-
- /**
- * The matrix uses kKeyBits of the effect's EffectKey. A GrGLEffect may place these bits at an
- * arbitrary shift in its final key. However, when GrGLEffectMatrix::emitCode*() code is called
- * the relevant bits must be in the lower kKeyBits of the key parameter.
- */
- enum {
- kKeyBits = kKeyBitsPrivate,
- kKeyMask = (1 << kKeyBits) - 1,
- };
-
- GrGLEffectMatrix(CoordsType coordsType)
- : fCoordsType(coordsType) {
- fPrevMatrix = SkMatrix::InvalidMatrix();
- }
-
- /**
- * Generates the key for the portion of the code emitted by this class's emitCode() function.
- * Pass a texture to make GrGLEffectMatrix automatically adjust for the texture's origin. Pass
- * NULL when not using the EffectMatrix for a texture lookup, or if the GrGLEffect subclass
- * wants to handle origin adjustments in some other manner. The coords type param must match the
- * param that would be used to initialize GrGLEffectMatrix for the generating GrEffect.
- */
- static EffectKey GenKey(const SkMatrix& effectMatrix,
- const GrDrawEffect&,
- CoordsType,
- const GrTexture*);
-
- /**
- * Emits code to implement the matrix in the VS. A varying is added as an output of the VS and
- * input to the FS. The varying may be either a vec2f or vec3f depending upon whether
- * perspective interpolation is required or not. The names of the varying in the VS and FS are
- * are returned as output parameters and the type of the varying is the return value. The suffix
- * is an optional parameter that can be used to make all variables emitted by the object
- * unique within a stage. It is only necessary if multiple GrGLEffectMatrix objects are used by
- * a single GrGLEffect.
- */
- GrSLType emitCode(GrGLShaderBuilder*,
- EffectKey,
- SkString* fsCoordName, /* optional */
- SkString* vsCoordName = NULL,
- const char* suffix = NULL);
-
- /**
- * This is similar to emitCode except that it performs perspective division in the FS if the
- * texture coordinates have a w coordinate. The fsCoordName always refers to a vec2f.
- */
- void emitCodeMakeFSCoords2D(GrGLShaderBuilder*,
- EffectKey,
- SkString* fsCoordName, /* optional */
- SkString* vsVaryingName = NULL,
- GrSLType* vsVaryingType = NULL,
- const char* suffix = NULL);
- /**
- * Call from a GrGLEffect's subclass to update the texture matrix. The effectMatrix and texture
- * params should match those used with GenKey.
- */
- void setData(const GrGLUniformManager& uniformManager,
- const SkMatrix& effectMatrix,
- const GrDrawEffect& drawEffect,
- const GrTexture*);
-
- GrGLUniformManager::UniformHandle fUni;
- GrSLType fUniType;
- SkMatrix fPrevMatrix;
- CoordsType fCoordsType;
-};
-
-#endif
« no previous file with comments | « src/gpu/gl/GrGLEffect.cpp ('k') | src/gpu/gl/GrGLEffectMatrix.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698