Store the shader bytecode in ShaderExecutable to pass it to CreateInputLayout.

TRAC #22191
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1535 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index a5813cc..3dd1612 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -683,8 +683,10 @@
         {"TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0}
     };
 
+    ShaderExecutable *vertexExecutable = programBinary->getVertexExecutable();
+
     ID3D11InputLayout *inputLayout = NULL;
-    result = mDevice->CreateInputLayout(inputElementDescriptions, 1, NULL /*FIXME: vertex shader blob */, 0 /* FIXME: vertex shader size */, &inputLayout);
+    result = mDevice->CreateInputLayout(inputElementDescriptions, 1, vertexExecutable->getFunction(), vertexExecutable->getLength(), &inputLayout);
     ASSERT(SUCCEEDED(result));
     
     mDeviceContext->IASetInputLayout(inputLayout);
@@ -1178,7 +1180,7 @@
     return NULL;
 }
 
-ShaderExecutable *Renderer11::loadExecutable(const DWORD *function, size_t length, GLenum type, void *data)
+ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length, GLenum type, void *data)
 {
     ShaderExecutable11 *executable = NULL;
 
@@ -1192,7 +1194,7 @@
 
             if (vshader)
             {
-                executable = new ShaderExecutable11(vshader);
+                executable = new ShaderExecutable11(function, length, vshader);
             }
         }
         break;
@@ -1204,7 +1206,7 @@
 
             if (pshader)
             {
-                executable = new ShaderExecutable11(pshader);
+                executable = new ShaderExecutable11(function, length, pshader);
             }
         }
         break;