Moves applyShaders to Renderer

TRAC #22154

Signed-off-by: Geoff Lang
Signed-off-by: Daniel Koch

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1482 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index aac149b..c365599 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1873,15 +1873,10 @@
 
     if (programBinary->getSerial() != mAppliedProgramBinarySerial)
     {
-        IDirect3DVertexShader9 *vertexShader = programBinary->getVertexShader();
-        IDirect3DPixelShader9 *pixelShader = programBinary->getPixelShader();
-
-        mDevice->SetPixelShader(pixelShader);
-        mDevice->SetVertexShader(vertexShader);
-        programBinary->dirtyAllUniforms();
+        mRenderer->applyShaders(programBinary);
         mAppliedProgramBinarySerial = programBinary->getSerial();
     }
-
+    
     programBinary->applyUniforms();
 }
 
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index 3da14e1..09b66ca 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -92,6 +92,7 @@
                              gl::ProgramBinary *currentProgram, bool forceSetUniforms) = 0;
 
     virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer) = 0;
+    virtual void applyShaders(gl::ProgramBinary *programBinary) = 0;
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw) = 0;
 
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 0bc1990..3ab97fc 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -405,6 +405,12 @@
     return GL_OUT_OF_MEMORY;
 }
 
+void Renderer11::applyShaders(gl::ProgramBinary *programBinary)
+{
+    // TODO
+    UNIMPLEMENTED();
+}
+
 void Renderer11::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
                        gl::Framebuffer *frameBuffer)
 {
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 719ecfc..1b640bb 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -64,6 +64,7 @@
                              gl::ProgramBinary *currentProgram, bool forceSetUniforms);
 
     virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer);
+    virtual void applyShaders(gl::ProgramBinary *programBinary);
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw);
 
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index e675fa2..749b361 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -1109,6 +1109,16 @@
     return mVertexDeclarationCache.applyDeclaration(mDevice, attributes, programBinary, instances, repeatDraw);
 }
 
+void Renderer9::applyShaders(gl::ProgramBinary *programBinary)
+{
+    IDirect3DVertexShader9 *vertexShader = programBinary->getVertexShader();
+    IDirect3DPixelShader9 *pixelShader = programBinary->getPixelShader();
+
+    mDevice->SetPixelShader(pixelShader);
+    mDevice->SetVertexShader(vertexShader);
+    programBinary->dirtyAllUniforms();
+}
+
 void Renderer9::clear(GLbitfield mask, const gl::Color &colorClear, float depthClear, int stencilClear,
                       gl::Framebuffer *frameBuffer)
 {
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index c6d1285..dc11b42 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -127,6 +127,7 @@
                              gl::ProgramBinary *currentProgram, bool forceSetUniforms);
 
     virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer);
+    virtual void applyShaders(gl::ProgramBinary *programBinary);
 
     virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances, GLsizei *repeatDraw);