Towards issue #106

Adds notion of texture multiple stages but currently just uses 1.


git-svn-id: http://skia.googlecode.com/svn/trunk@694 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrContext.cpp b/gpu/src/GrContext.cpp
index 942afa3..e5e378f 100644
--- a/gpu/src/GrContext.cpp
+++ b/gpu/src/GrContext.cpp
@@ -138,9 +138,9 @@
         if (NULL != texture) {

             GrGpu::AutoStateRestore asr(fGpu);

             fGpu->setRenderTarget(texture->asRenderTarget());

-            fGpu->setTexture(clampEntry->texture());

+            fGpu->setTexture(0, clampEntry->texture());

             fGpu->setStencilPass(GrGpu::kNone_StencilPass);

-            fGpu->setTextureMatrix(GrMatrix::I());

+            fGpu->setTextureMatrix(0, GrMatrix::I());

             fGpu->setViewMatrix(GrMatrix::I());

             fGpu->setAlpha(0xff);

             fGpu->setBlendFunc(GrGpu::kOne_BlendCoeff, GrGpu::kZero_BlendCoeff);

@@ -150,10 +150,10 @@
             GrSamplerState stretchSampler(GrSamplerState::kClamp_WrapMode,

                                           GrSamplerState::kClamp_WrapMode,

                                           sampler.isFilter());

-            fGpu->setSamplerState(stretchSampler);

+            fGpu->setSamplerState(0, stretchSampler);

 

             static const GrVertexLayout layout =

-                                GrDrawTarget::kSeparateTexCoord_VertexLayoutBit;

+                                GrDrawTarget::StageTexCoordVertexLayoutBit(0,0);

             GrDrawTarget::AutoReleaseGeometry arg(fGpu, layout, 4, 0);

 

             if (arg.succeeded()) {

@@ -303,7 +303,7 @@
 

 void GrContext::drawRect(const GrRect& rect, bool useTexture, GrScalar width) {

     GrVertexLayout layout = useTexture ?

-                            GrDrawTarget::kPositionAsTexCoord_VertexLayoutBit :

+                            GrDrawTarget::StagePosAsTexCoordVertexLayoutBit(0) :

                             0;

 

     static const int worstCaseVertCount = 10;

@@ -582,7 +582,7 @@
                                         tol);

     GrVertexLayout layout = 0;

     if (useTexture) {

-        layout = GrDrawTarget::kPositionAsTexCoord_VertexLayoutBit;

+        layout = GrDrawTarget::StagePosAsTexCoordVertexLayoutBit(0);

     }

     // add 4 to hold the bounding rect

     GrDrawTarget::AutoReleaseGeometry arg(fGpu, layout, maxPts + 4, 0);

@@ -808,14 +808,14 @@
     fGpu->setViewMatrix(matrix);

     matrix.setScale(GR_Scalar1 / texture->allocWidth(),

                     GR_Scalar1 / texture->allocHeight());

-    fGpu->setTextureMatrix(matrix);

+    fGpu->setTextureMatrix(0, matrix);

 

     fGpu->disableState(GrDrawTarget::kClip_StateBit);

     fGpu->setAlpha(0xFF);

     fGpu->setBlendFunc(GrDrawTarget::kOne_BlendCoeff,

                        GrDrawTarget::kZero_BlendCoeff);

-    fGpu->setTexture(texture);

-    fGpu->setSamplerState(GrSamplerState::ClampNoFilter());

+    fGpu->setTexture(0, texture);

+    fGpu->setSamplerState(0, GrSamplerState::ClampNoFilter());

 

     this->fillRect(GrRect(0, 0, GrIntToScalar(width), GrIntToScalar(height)),

                    true);

@@ -841,8 +841,8 @@
     return fGpu->createIndexBuffer(size, dynamic);

 }

 

-void GrContext::setTexture(GrTexture* texture) {

-    fGpu->setTexture(texture);

+void GrContext::setTexture(int stage, GrTexture* texture) {

+    fGpu->setTexture(stage, texture);

 }

 

 void GrContext::setRenderTarget(GrRenderTarget* target) {

@@ -858,12 +858,12 @@
     fGpu->setDefaultRenderTargetSize(width, height);

 }

 

-void GrContext::setSamplerState(const GrSamplerState& samplerState) {

-    fGpu->setSamplerState(samplerState);

+void GrContext::setSamplerState(int stage, const GrSamplerState& samplerState) {

+    fGpu->setSamplerState(stage, samplerState);

 }

 

-void GrContext::setTextureMatrix(const GrMatrix& m) {

-    fGpu->setTextureMatrix(m);

+void GrContext::setTextureMatrix(int stage, const GrMatrix& m) {

+    fGpu->setTextureMatrix(stage, m);

 }

 

 void GrContext::getViewMatrix(GrMatrix* m) const {