| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * Copyright 2013 Google Inc. |    2  * Copyright 2013 Google Inc. | 
|    3  * |    3  * | 
|    4  * Use of this source code is governed by a BSD-style license that can be |    4  * Use of this source code is governed by a BSD-style license that can be | 
|    5  * found in the LICENSE file. |    5  * found in the LICENSE file. | 
|    6  */ |    6  */ | 
|    7  |    7  | 
|    8 #ifndef GrGLPrimitiveProcessor_DEFINED |    8 #ifndef GrGLPrimitiveProcessor_DEFINED | 
|    9 #define GrGLPrimitiveProcessor_DEFINED |    9 #define GrGLPrimitiveProcessor_DEFINED | 
|   10  |   10  | 
|   11 #include "GrPrimitiveProcessor.h" |   11 #include "GrPrimitiveProcessor.h" | 
|   12 #include "GrGLProcessor.h" |   12 #include "GrGLProcessor.h" | 
|   13  |   13  | 
|   14 class GrBatchTracker; |   14 class GrBatchTracker; | 
|   15 class GrPrimitiveProcessor; |   15 class GrPrimitiveProcessor; | 
|   16 class GrGLGPBuilder; |   16 class GrGLGPBuilder; | 
|   17  |   17  | 
|   18 class GrGLPrimitiveProcessor { |   18 class GrGLPrimitiveProcessor { | 
|   19 public: |   19 public: | 
|   20     GrGLPrimitiveProcessor() : fViewMatrixName(NULL) { fViewMatrix = SkMatrix::I
     nvalidMatrix(); } |  | 
|   21     virtual ~GrGLPrimitiveProcessor() {} |   20     virtual ~GrGLPrimitiveProcessor() {} | 
|   22  |   21  | 
|   23     typedef GrGLProgramDataManager::UniformHandle UniformHandle; |   22     typedef GrGLProgramDataManager::UniformHandle UniformHandle; | 
|   24     typedef GrGLProcessor::TextureSamplerArray TextureSamplerArray; |   23     typedef GrGLProcessor::TextureSamplerArray TextureSamplerArray; | 
|   25  |   24  | 
|   26     typedef SkSTArray<2, const GrCoordTransform*, true> ProcCoords; |   25     typedef SkSTArray<2, const GrCoordTransform*, true> ProcCoords; | 
|   27     typedef SkSTArray<8, ProcCoords> TransformsIn; |   26     typedef SkSTArray<8, ProcCoords> TransformsIn; | 
|   28     typedef SkSTArray<8, GrGLProcessor::TransformedCoordsArray> TransformsOut; |   27     typedef SkSTArray<8, GrGLProcessor::TransformedCoordsArray> TransformsOut; | 
|   29  |   28  | 
|   30     struct EmitArgs { |   29     struct EmitArgs { | 
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   69         GrGLPrimitiveProcessor.  */ |   68         GrGLPrimitiveProcessor.  */ | 
|   70     virtual void setData(const GrGLProgramDataManager&, |   69     virtual void setData(const GrGLProgramDataManager&, | 
|   71                          const GrPrimitiveProcessor&, |   70                          const GrPrimitiveProcessor&, | 
|   72                          const GrBatchTracker&) = 0; |   71                          const GrBatchTracker&) = 0; | 
|   73  |   72  | 
|   74     static SkMatrix GetTransformMatrix(const SkMatrix& localMatrix, const GrCoor
     dTransform&); |   73     static SkMatrix GetTransformMatrix(const SkMatrix& localMatrix, const GrCoor
     dTransform&); | 
|   75  |   74  | 
|   76 protected: |   75 protected: | 
|   77     void setupUniformColor(GrGLGPBuilder* pb, const char* outputName, UniformHan
     dle* colorUniform); |   76     void setupUniformColor(GrGLGPBuilder* pb, const char* outputName, UniformHan
     dle* colorUniform); | 
|   78  |   77  | 
|   79     const char* uViewM() const { return fViewMatrixName; } |  | 
|   80  |  | 
|   81     /** a helper function to setup the uniform handle for the uniform view matri
     x */ |  | 
|   82     void addUniformViewMatrix(GrGLGPBuilder*); |  | 
|   83  |  | 
|   84  |  | 
|   85     /** a helper function to upload a uniform viewmatrix. |  | 
|   86      * TODO we can remove this function when we have deferred geometry in place |  | 
|   87      */ |  | 
|   88     void setUniformViewMatrix(const GrGLProgramDataManager&, |  | 
|   89                               const SkMatrix& viewMatrix); |  | 
|   90  |  | 
|   91     class ShaderVarHandle { |   78     class ShaderVarHandle { | 
|   92     public: |   79     public: | 
|   93         bool isValid() const { return fHandle > -1; } |   80         bool isValid() const { return fHandle > -1; } | 
|   94         ShaderVarHandle() : fHandle(-1) {} |   81         ShaderVarHandle() : fHandle(-1) {} | 
|   95         ShaderVarHandle(int value) : fHandle(value) { SkASSERT(this->isValid());
      } |   82         ShaderVarHandle(int value) : fHandle(value) { SkASSERT(this->isValid());
      } | 
|   96         int handle() const { SkASSERT(this->isValid()); return fHandle; } |   83         int handle() const { SkASSERT(this->isValid()); return fHandle; } | 
|   97         UniformHandle convertToUniformHandle() { |   84         UniformHandle convertToUniformHandle() { | 
|   98             SkASSERT(this->isValid()); |   85             SkASSERT(this->isValid()); | 
|   99             return GrGLProgramDataManager::UniformHandle::CreateFromUniformIndex
     (fHandle); |   86             return GrGLProgramDataManager::UniformHandle::CreateFromUniformIndex
     (fHandle); | 
|  100         } |   87         } | 
|  101  |   88  | 
|  102     private: |   89     private: | 
|  103         int fHandle; |   90         int fHandle; | 
|  104     }; |   91     }; | 
|  105  |   92  | 
|  106     struct Transform { |   93     struct Transform { | 
|  107         Transform() : fType(kVoid_GrSLType) { fCurrentValue = SkMatrix::InvalidM
     atrix(); } |   94         Transform() : fType(kVoid_GrSLType) { fCurrentValue = SkMatrix::InvalidM
     atrix(); } | 
|  108         ShaderVarHandle fHandle; |   95         ShaderVarHandle fHandle; | 
|  109         SkMatrix       fCurrentValue; |   96         SkMatrix       fCurrentValue; | 
|  110         GrSLType       fType; |   97         GrSLType       fType; | 
|  111     }; |   98     }; | 
|  112  |   99  | 
|  113     SkSTArray<8, SkSTArray<2, Transform, true> > fInstalledTransforms; |  100     SkSTArray<8, SkSTArray<2, Transform, true> > fInstalledTransforms; | 
|  114  |  | 
|  115 private: |  | 
|  116     UniformHandle fViewMatrixUniform; |  | 
|  117     SkMatrix fViewMatrix; |  | 
|  118     const char* fViewMatrixName; |  | 
|  119 }; |  101 }; | 
|  120  |  102  | 
|  121 #endif |  103 #endif | 
| OLD | NEW |