summaryrefslogtreecommitdiff
path: root/cogl/cogl-shader.c
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl-shader.c')
-rw-r--r--cogl/cogl-shader.c64
1 files changed, 24 insertions, 40 deletions
diff --git a/cogl/cogl-shader.c b/cogl/cogl-shader.c
index 7b474bfc..996676b8 100644
--- a/cogl/cogl-shader.c
+++ b/cogl/cogl-shader.c
@@ -36,22 +36,6 @@
#include <string.h>
-#ifdef HAVE_COGL_GL
-#define glCreateShader ctx->glCreateShader
-#define glGetShaderiv ctx->glGetShaderiv
-#define glGetShaderInfoLog ctx->glGetShaderInfoLog
-#define glCompileShader ctx->glCompileShader
-#define glShaderSource ctx->glShaderSource
-#define glDeleteShader ctx->glDeleteShader
-#define glProgramString ctx->glProgramString
-#define glBindProgram ctx->glBindProgram
-#define glDeletePrograms ctx->glDeletePrograms
-#define glGenPrograms ctx->glGenPrograms
-#define GET_CONTEXT _COGL_GET_CONTEXT
-#else
-#define GET_CONTEXT(CTXVAR,RETVAL) G_STMT_START { } G_STMT_END
-#endif
-
static void _cogl_shader_free (CoglShader *shader);
COGL_HANDLE_DEFINE (Shader, shader);
@@ -70,12 +54,12 @@ _cogl_shader_free (CoglShader *shader)
if (shader->language == COGL_SHADER_LANGUAGE_ARBFP)
{
if (shader->gl_handle)
- GE (glDeletePrograms (1, &shader->gl_handle));
+ GE (ctx, glDeletePrograms (1, &shader->gl_handle));
}
else
#endif
if (shader->gl_handle)
- GE (glDeleteShader (shader->gl_handle));
+ GE (ctx, glDeleteShader (shader->gl_handle));
#endif /* HAVE_COGL_GLES */
@@ -87,7 +71,7 @@ cogl_create_shader (CoglShaderType type)
{
CoglShader *shader;
- GET_CONTEXT (ctx, COGL_INVALID_HANDLE);
+ _COGL_GET_CONTEXT (ctx, COGL_INVALID_HANDLE);
switch (type)
{
@@ -122,13 +106,13 @@ delete_shader (CoglShader *shader)
if (shader->language == COGL_SHADER_LANGUAGE_ARBFP)
{
if (shader->gl_handle)
- GE (glDeletePrograms (1, &shader->gl_handle));
+ GE (ctx, glDeletePrograms (1, &shader->gl_handle));
}
else
#endif
{
if (shader->gl_handle)
- GE (glDeleteShader (shader->gl_handle));
+ GE (ctx, glDeleteShader (shader->gl_handle));
}
shader->gl_handle = 0;
@@ -211,7 +195,7 @@ _cogl_shader_set_source_with_boilerplate (GLuint shader_gl_handle,
char *tex_coord_declarations = NULL;
#endif
- GET_CONTEXT (ctx, NO_RETVAL);
+ _COGL_GET_CONTEXT (ctx, NO_RETVAL);
#ifdef HAVE_COGL_GLES2
if (cogl_features_available (COGL_FEATURE_TEXTURE_3D))
@@ -295,8 +279,8 @@ _cogl_shader_set_source_with_boilerplate (GLuint shader_gl_handle,
g_string_free (buf, TRUE);
}
- GE( glShaderSource (shader_gl_handle, count,
- (const char **) strings, lengths) );
+ GE( ctx, glShaderSource (shader_gl_handle, count,
+ (const char **) strings, lengths) );
#ifdef HAVE_COGL_GLES2
g_free (tex_coord_declarations);
@@ -325,30 +309,30 @@ _cogl_shader_compile_real (CoglHandle handle,
if (shader->gl_handle)
return;
- GE (glGenPrograms (1, &shader->gl_handle));
+ GE (ctx, glGenPrograms (1, &shader->gl_handle));
- GE (glBindProgram (GL_FRAGMENT_PROGRAM_ARB, shader->gl_handle));
+ GE (ctx, glBindProgram (GL_FRAGMENT_PROGRAM_ARB, shader->gl_handle));
if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_SHOW_SOURCE)))
g_message ("user ARBfp program:\n%s", shader->source);
#ifdef COGL_GL_DEBUG
- while ((gl_error = glGetError ()) != GL_NO_ERROR)
+ while ((gl_error = ctx->glGetError ()) != GL_NO_ERROR)
;
#endif
- glProgramString (GL_FRAGMENT_PROGRAM_ARB,
- GL_PROGRAM_FORMAT_ASCII_ARB,
- strlen (shader->source),
- shader->source);
+ ctx->glProgramString (GL_FRAGMENT_PROGRAM_ARB,
+ GL_PROGRAM_FORMAT_ASCII_ARB,
+ strlen (shader->source),
+ shader->source);
#ifdef COGL_GL_DEBUG
- gl_error = glGetError ();
+ gl_error = ctx->glGetError ();
if (gl_error != GL_NO_ERROR)
{
g_warning ("%s: GL error (%d): Failed to compile ARBfp:\n%s\n%s",
G_STRLOC,
gl_error,
shader->source,
- glGetString (GL_PROGRAM_ERROR_STRING_ARB));
+ ctx->glGetString (GL_PROGRAM_ERROR_STRING_ARB));
}
#endif
}
@@ -380,7 +364,7 @@ _cogl_shader_compile_real (CoglHandle handle,
break;
}
- shader->gl_handle = glCreateShader (gl_type);
+ shader->gl_handle = ctx->glCreateShader (gl_type);
_cogl_shader_set_source_with_boilerplate (shader->gl_handle,
gl_type,
@@ -389,7 +373,7 @@ _cogl_shader_compile_real (CoglHandle handle,
(const char **) &shader->source,
NULL);
- GE (glCompileShader (shader->gl_handle));
+ GE (ctx, glCompileShader (shader->gl_handle));
#ifdef HAVE_COGL_GLES2
shader->n_tex_coord_attribs = n_tex_coord_attribs;
@@ -420,7 +404,7 @@ cogl_shader_get_info_log (CoglHandle handle)
CoglShader *shader;
- GET_CONTEXT (ctx, NULL);
+ _COGL_GET_CONTEXT (ctx, NULL);
if (!cogl_is_shader (handle))
return NULL;
@@ -455,7 +439,7 @@ cogl_shader_get_info_log (CoglHandle handle)
if (!shader->gl_handle)
_cogl_shader_compile_real (handle, 4);
- glGetShaderInfoLog (shader->gl_handle, 511, &len, buffer);
+ ctx->glGetShaderInfoLog (shader->gl_handle, 511, &len, buffer);
buffer[len] = '\0';
return g_strdup (buffer);
}
@@ -468,7 +452,7 @@ cogl_shader_get_type (CoglHandle handle)
{
CoglShader *shader;
- GET_CONTEXT (ctx, COGL_SHADER_TYPE_VERTEX);
+ _COGL_GET_CONTEXT (ctx, COGL_SHADER_TYPE_VERTEX);
if (!cogl_is_shader (handle))
{
@@ -492,7 +476,7 @@ cogl_shader_is_compiled (CoglHandle handle)
GLint status;
CoglShader *shader;
- GET_CONTEXT (ctx, FALSE);
+ _COGL_GET_CONTEXT (ctx, FALSE);
if (!cogl_is_shader (handle))
return FALSE;
@@ -523,7 +507,7 @@ cogl_shader_is_compiled (CoglHandle handle)
if (!shader->gl_handle)
_cogl_shader_compile_real (handle, 4);
- GE (glGetShaderiv (shader->gl_handle, GL_COMPILE_STATUS, &status));
+ GE (ctx, glGetShaderiv (shader->gl_handle, GL_COMPILE_STATUS, &status));
if (status == GL_TRUE)
return TRUE;
else