Add a new internal enum for shader type, instead of re-using GL enums.

TRAC #22412 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Author: Jamie Madill git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1783 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 962d4be9
...@@ -1652,7 +1652,7 @@ bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length) ...@@ -1652,7 +1652,7 @@ bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length)
ptr += vertexShaderSize; ptr += vertexShaderSize;
mPixelExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(pixelShaderFunction), mPixelExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(pixelShaderFunction),
pixelShaderSize, GL_FRAGMENT_SHADER); pixelShaderSize, rx::SHADER_PIXEL);
if (!mPixelExecutable) if (!mPixelExecutable)
{ {
infoLog.append("Could not create pixel shader."); infoLog.append("Could not create pixel shader.");
...@@ -1660,7 +1660,7 @@ bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length) ...@@ -1660,7 +1660,7 @@ bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length)
} }
mVertexExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(vertexShaderFunction), mVertexExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(vertexShaderFunction),
vertexShaderSize, GL_VERTEX_SHADER); vertexShaderSize, rx::SHADER_VERTEX);
if (!mVertexExecutable) if (!mVertexExecutable)
{ {
infoLog.append("Could not create vertex shader."); infoLog.append("Could not create vertex shader.");
...@@ -1807,8 +1807,8 @@ bool ProgramBinary::link(InfoLog &infoLog, const AttributeBindings &attributeBin ...@@ -1807,8 +1807,8 @@ bool ProgramBinary::link(InfoLog &infoLog, const AttributeBindings &attributeBin
} }
bool success = true; bool success = true;
mVertexExecutable = mRenderer->compileToExecutable(infoLog, vertexHLSL.c_str(), GL_VERTEX_SHADER); mVertexExecutable = mRenderer->compileToExecutable(infoLog, vertexHLSL.c_str(), rx::SHADER_VERTEX);
mPixelExecutable = mRenderer->compileToExecutable(infoLog, pixelHLSL.c_str(), GL_FRAGMENT_SHADER); mPixelExecutable = mRenderer->compileToExecutable(infoLog, pixelHLSL.c_str(), rx::SHADER_PIXEL);
if (!mVertexExecutable || !mPixelExecutable) if (!mVertexExecutable || !mPixelExecutable)
{ {
......
...@@ -80,6 +80,12 @@ struct dx_PixelConstants ...@@ -80,6 +80,12 @@ struct dx_PixelConstants
float depthFront[4]; float depthFront[4];
}; };
enum ShaderType
{
SHADER_VERTEX,
SHADER_PIXEL
};
class Renderer class Renderer
{ {
public: public:
...@@ -187,8 +193,8 @@ class Renderer ...@@ -187,8 +193,8 @@ class Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) = 0; virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) = 0;
// Shader operations // Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type) = 0; virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type) = 0;
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type) = 0; virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type) = 0;
// Image operations // Image operations
virtual Image *createImage() = 0; virtual Image *createImage() = 0;
......
...@@ -2376,13 +2376,13 @@ RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum forma ...@@ -2376,13 +2376,13 @@ RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum forma
return renderTarget; return renderTarget;
} }
ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length, GLenum type) ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length, rx::ShaderType type)
{ {
ShaderExecutable11 *executable = NULL; ShaderExecutable11 *executable = NULL;
switch (type) switch (type)
{ {
case GL_VERTEX_SHADER: case rx::SHADER_VERTEX:
{ {
ID3D11VertexShader *vshader = NULL; ID3D11VertexShader *vshader = NULL;
HRESULT result = mDevice->CreateVertexShader(function, length, NULL, &vshader); HRESULT result = mDevice->CreateVertexShader(function, length, NULL, &vshader);
...@@ -2394,7 +2394,7 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length ...@@ -2394,7 +2394,7 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length
} }
} }
break; break;
case GL_FRAGMENT_SHADER: case rx::SHADER_PIXEL:
{ {
ID3D11PixelShader *pshader = NULL; ID3D11PixelShader *pshader = NULL;
HRESULT result = mDevice->CreatePixelShader(function, length, NULL, &pshader); HRESULT result = mDevice->CreatePixelShader(function, length, NULL, &pshader);
...@@ -2414,16 +2414,16 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length ...@@ -2414,16 +2414,16 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length
return executable; return executable;
} }
ShaderExecutable *Renderer11::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type) ShaderExecutable *Renderer11::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type)
{ {
const char *profile = NULL; const char *profile = NULL;
switch (type) switch (type)
{ {
case GL_VERTEX_SHADER: case rx::SHADER_VERTEX:
profile = "vs_4_0"; profile = "vs_4_0";
break; break;
case GL_FRAGMENT_SHADER: case rx::SHADER_PIXEL:
profile = "ps_4_0"; profile = "ps_4_0";
break; break;
default: default:
......
...@@ -150,8 +150,8 @@ class Renderer11 : public Renderer ...@@ -150,8 +150,8 @@ class Renderer11 : public Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth); virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth);
// Shader operations // Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type); virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type); virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type);
// Image operations // Image operations
virtual Image *createImage(); virtual Image *createImage();
......
...@@ -2981,13 +2981,13 @@ RenderTarget *Renderer9::createRenderTarget(int width, int height, GLenum format ...@@ -2981,13 +2981,13 @@ RenderTarget *Renderer9::createRenderTarget(int width, int height, GLenum format
return renderTarget; return renderTarget;
} }
ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length, GLenum type) ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length, rx::ShaderType type)
{ {
ShaderExecutable9 *executable = NULL; ShaderExecutable9 *executable = NULL;
switch (type) switch (type)
{ {
case GL_VERTEX_SHADER: case rx::SHADER_VERTEX:
{ {
IDirect3DVertexShader9 *vshader = createVertexShader((DWORD*)function, length); IDirect3DVertexShader9 *vshader = createVertexShader((DWORD*)function, length);
if (vshader) if (vshader)
...@@ -2996,7 +2996,7 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length, ...@@ -2996,7 +2996,7 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length,
} }
} }
break; break;
case GL_FRAGMENT_SHADER: case rx::SHADER_PIXEL:
{ {
IDirect3DPixelShader9 *pshader = createPixelShader((DWORD*)function, length); IDirect3DPixelShader9 *pshader = createPixelShader((DWORD*)function, length);
if (pshader) if (pshader)
...@@ -3013,16 +3013,16 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length, ...@@ -3013,16 +3013,16 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length,
return executable; return executable;
} }
ShaderExecutable *Renderer9::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type) ShaderExecutable *Renderer9::compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type)
{ {
const char *profile = NULL; const char *profile = NULL;
switch (type) switch (type)
{ {
case GL_VERTEX_SHADER: case rx::SHADER_VERTEX:
profile = getMajorShaderModel() >= 3 ? "vs_3_0" : "vs_2_0"; profile = getMajorShaderModel() >= 3 ? "vs_3_0" : "vs_2_0";
break; break;
case GL_FRAGMENT_SHADER: case rx::SHADER_PIXEL:
profile = getMajorShaderModel() >= 3 ? "ps_3_0" : "ps_2_0"; profile = getMajorShaderModel() >= 3 ? "ps_3_0" : "ps_2_0";
break; break;
default: default:
......
...@@ -180,8 +180,8 @@ class Renderer9 : public Renderer ...@@ -180,8 +180,8 @@ class Renderer9 : public Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth); virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth);
// Shader operations // Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type); virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type); virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type);
// Image operations // Image operations
virtual Image *createImage(); virtual Image *createImage();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment