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)
ptr += vertexShaderSize;
mPixelExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(pixelShaderFunction),
pixelShaderSize, GL_FRAGMENT_SHADER);
pixelShaderSize, rx::SHADER_PIXEL);
if (!mPixelExecutable)
{
infoLog.append("Could not create pixel shader.");
......@@ -1660,7 +1660,7 @@ bool ProgramBinary::load(InfoLog &infoLog, const void *binary, GLsizei length)
}
mVertexExecutable = mRenderer->loadExecutable(reinterpret_cast<const DWORD*>(vertexShaderFunction),
vertexShaderSize, GL_VERTEX_SHADER);
vertexShaderSize, rx::SHADER_VERTEX);
if (!mVertexExecutable)
{
infoLog.append("Could not create vertex shader.");
......@@ -1807,8 +1807,8 @@ bool ProgramBinary::link(InfoLog &infoLog, const AttributeBindings &attributeBin
}
bool success = true;
mVertexExecutable = mRenderer->compileToExecutable(infoLog, vertexHLSL.c_str(), GL_VERTEX_SHADER);
mPixelExecutable = mRenderer->compileToExecutable(infoLog, pixelHLSL.c_str(), GL_FRAGMENT_SHADER);
mVertexExecutable = mRenderer->compileToExecutable(infoLog, vertexHLSL.c_str(), rx::SHADER_VERTEX);
mPixelExecutable = mRenderer->compileToExecutable(infoLog, pixelHLSL.c_str(), rx::SHADER_PIXEL);
if (!mVertexExecutable || !mPixelExecutable)
{
......
......@@ -80,6 +80,12 @@ struct dx_PixelConstants
float depthFront[4];
};
enum ShaderType
{
SHADER_VERTEX,
SHADER_PIXEL
};
class Renderer
{
public:
......@@ -187,8 +193,8 @@ class Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth) = 0;
// Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type) = 0;
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, 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, rx::ShaderType type) = 0;
// Image operations
virtual Image *createImage() = 0;
......
......@@ -2376,13 +2376,13 @@ RenderTarget *Renderer11::createRenderTarget(int width, int height, GLenum forma
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;
switch (type)
{
case GL_VERTEX_SHADER:
case rx::SHADER_VERTEX:
{
ID3D11VertexShader *vshader = NULL;
HRESULT result = mDevice->CreateVertexShader(function, length, NULL, &vshader);
......@@ -2394,7 +2394,7 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length
}
}
break;
case GL_FRAGMENT_SHADER:
case rx::SHADER_PIXEL:
{
ID3D11PixelShader *pshader = NULL;
HRESULT result = mDevice->CreatePixelShader(function, length, NULL, &pshader);
......@@ -2414,16 +2414,16 @@ ShaderExecutable *Renderer11::loadExecutable(const void *function, size_t length
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;
switch (type)
{
case GL_VERTEX_SHADER:
case rx::SHADER_VERTEX:
profile = "vs_4_0";
break;
case GL_FRAGMENT_SHADER:
case rx::SHADER_PIXEL:
profile = "ps_4_0";
break;
default:
......
......@@ -150,8 +150,8 @@ class Renderer11 : public Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth);
// Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type);
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type);
// Image operations
virtual Image *createImage();
......
......@@ -2981,13 +2981,13 @@ RenderTarget *Renderer9::createRenderTarget(int width, int height, GLenum format
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;
switch (type)
{
case GL_VERTEX_SHADER:
case rx::SHADER_VERTEX:
{
IDirect3DVertexShader9 *vshader = createVertexShader((DWORD*)function, length);
if (vshader)
......@@ -2996,7 +2996,7 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length,
}
}
break;
case GL_FRAGMENT_SHADER:
case rx::SHADER_PIXEL:
{
IDirect3DPixelShader9 *pshader = createPixelShader((DWORD*)function, length);
if (pshader)
......@@ -3013,16 +3013,16 @@ ShaderExecutable *Renderer9::loadExecutable(const void *function, size_t length,
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;
switch (type)
{
case GL_VERTEX_SHADER:
case rx::SHADER_VERTEX:
profile = getMajorShaderModel() >= 3 ? "vs_3_0" : "vs_2_0";
break;
case GL_FRAGMENT_SHADER:
case rx::SHADER_PIXEL:
profile = getMajorShaderModel() >= 3 ? "ps_3_0" : "ps_2_0";
break;
default:
......
......@@ -180,8 +180,8 @@ class Renderer9 : public Renderer
virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth);
// Shader operations
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, GLenum type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, GLenum type);
virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type);
virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type);
// Image operations
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