_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glSampleCoveragex(GLclampx value, GLboolean invert)
+static void
+_fp_glSampleCoveragex(GLclampx value, GLboolean invert, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (CURR_STATE_COMPARE(gl_sample_coverage_value, 0, value) ||
CURR_STATE_COMPARE(gl_sample_coverage_invert, 0, invert)) {
- IF_GL_SUCCESS(_orig_fastpath_glSampleCoveragex(value, invert)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glSampleCoveragex(value, invert);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glSampleCoveragexOES(value, invert);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_misc_flag1 |=
_MISC_FLAG1_BIT_gl_sample_coverage_value |
_MISC_FLAG1_BIT_gl_sample_coverage_invert;
- CURR_STATE_UPDATE(gl_sample_coverage_value, 0, value);
- CURR_STATE_UPDATE(gl_sample_coverage_invert, 0, invert);
+ CURR_STATE_UPDATE(gl_sample_coverage_value, 0, value)
+ CURR_STATE_UPDATE(gl_sample_coverage_invert, 0, invert)
}
}
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glSampleCoveragex(GLclampx value, GLboolean invert)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glSampleCoveragex(value, invert, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glFramebufferTexture2D(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level)
+static void
+_fp_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget,
+ GLuint texture, GLint level, GLsizei samples, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glFramebufferTexture2D(target, attachment, textarget, real_obj,
- level);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glFramebufferTexture2D(target, attachment, textarget, real_obj, level);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glFramebufferTexture2DOES(target, attachment, textarget, real_obj, level);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glFramebufferTexture2DMultisampleEXT(target, attachment,
+ textarget, real_obj, level, samples);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glFramebufferTexture2D(GLenum target, GLenum attachment,
+ GLenum textarget, GLuint texture, GLint level)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glFramebufferTexture2D(target, attachment, textarget,
+ texture, level, 0, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment,
GLenum textarget, GLuint texture, GLint level, GLsizei samples)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
-
- _orig_fastpath_glFramebufferTexture2DMultisampleEXT(target, attachment,
- textarget, real_obj, level, samples);
- goto finish;
+ _fp_glFramebufferTexture2D(target, attachment, textarget,
+ texture, level, samples, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment,
- GLenum pname, GLint *params)
+static void
+_fp_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment,
+ GLenum pname, GLint *params, FASTPATH_FUNC_TYPE ftype)
{
GLint real_obj, fa_type;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
switch (pname) {
case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
params[0] = 0;
- _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
&real_obj);
- _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment,
+ _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &fa_type);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
+ pname, &real_obj);
+ _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &fa_type);
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
switch (fa_type) {
case GL_TEXTURE:
if (GET_GLUE_OBJ(GL_OBJECT_TYPE_TEXTURE, real_obj, (GLuint *)params) != 1) {
}
break;
default:
- _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
params);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
+ pname, params);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
break;
}
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment,
+ GLenum pname, GLint* params)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
+ params, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glGenFramebuffers(GLsizei n, GLuint *framebuffers)
+static void
+_fp_glGenFramebuffers(GLsizei n, GLuint *framebuffers, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- IF_GL_SUCCESS(_orig_fastpath_glGenFramebuffers(n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGenFramebuffers(n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGenFramebuffersOES(n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < n; i++) {
framebuffers[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
GL_OBJECT_TYPE_FRAMEBUFFER, objid_array[i]);
free(objid_array);
objid_array = NULL;
}
- _COREGL_FASTPATH_FUNC_END();
}
void
-fastpath_glBindFramebuffer(GLenum target, GLuint framebuffer)
+fastpath_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGenFramebuffers(n, framebuffers, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glBindFramebuffer(GLenum target, GLuint framebuffer, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
#define STATE_PROC(gl_state, flagid, flagbit) \
{ \
if(real_obj == 0) { \
- IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj)) { \
+ _get_gl_error(); \
+ if (ftype == FASTPATH_FUNC_TYPE_STANDARD) \
+ _orig_fastpath_glBindFramebuffer(target, real_obj); \
+ else if (ftype == FASTPATH_FUNC_TYPE_OES) \
+ _orig_fastpath_glBindFramebufferOES(target, real_obj); \
+ if (_get_gl_error() == GL_NO_ERROR){ \
current_ctx->flagid &= (~flagbit##_##gl_state); \
CURR_STATE_CLEAR(gl_state, 0); \
} \
}\
else if CURR_STATE_COMPARE(gl_state, 0, real_obj) { \
- IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj)) { \
+ _get_gl_error(); \
+ if (ftype == FASTPATH_FUNC_TYPE_STANDARD) \
+ _orig_fastpath_glBindFramebuffer(target, real_obj); \
+ else if (ftype == FASTPATH_FUNC_TYPE_OES) \
+ _orig_fastpath_glBindFramebufferOES(target, real_obj); \
+ if (_get_gl_error() == GL_NO_ERROR){ \
if (real_obj == 0) \
current_ctx->flagid &= (~flagbit##_##gl_state); \
else \
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glBindFramebuffer(GLenum target, GLuint framebuffer)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBindFramebuffer(target, framebuffer, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-GLboolean
-fastpath_glIsFramebuffer(GLuint framebuffer)
+static GLboolean
+_fp_glIsFramebuffer(GLuint framebuffer, FASTPATH_FUNC_TYPE ftype)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
goto finish;
}
- ret = _orig_fastpath_glIsFramebuffer(real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ ret = _orig_fastpath_glIsFramebuffer(real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ ret = _orig_fastpath_glIsFramebufferOES(real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return ret;
+}
+
+GLboolean
+fastpath_glIsFramebuffer(GLuint framebuffer)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ ret = _fp_glIsFramebuffer(framebuffer, FASTPATH_FUNC_TYPE_STANDARD);
_COREGL_FASTPATH_FUNC_END();
+
return ret;
}
-void
-fastpath_glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
+static void
+_fp_glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array[real_n++] = real_objid;
}
- IF_GL_SUCCESS(_orig_fastpath_glDeleteFramebuffers(real_n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glDeleteFramebuffers(real_n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glDeleteFramebuffersOES(real_n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < real_n; i++) {
General_Trace_List *current = NULL;
current = current_ctx->ostate.shared->using_gctxs;
free(objid_array);
objid_array = NULL;
}
- _COREGL_FASTPATH_FUNC_END();
}
void
-fastpath_glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
+fastpath_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDeleteFramebuffers(n, framebuffers, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glGenRenderbuffers(GLsizei n, GLuint *renderbuffers, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- IF_GL_SUCCESS(_orig_fastpath_glGenRenderbuffers(n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGenRenderbuffers(n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGenRenderbuffersOES(n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < n; i++) {
renderbuffers[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
GL_OBJECT_TYPE_RENDERBUFFER, objid_array[i]);
free(objid_array);
objid_array = NULL;
}
- _COREGL_FASTPATH_FUNC_END();
}
-
void
-fastpath_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+fastpath_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGenRenderbuffers(n, renderbuffers, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glBindRenderbuffer(GLenum target, GLuint renderbuffer, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
if (target == GL_RENDERBUFFER) {
if CURR_STATE_COMPARE(gl_renderbuffer_binding, 0, real_obj) {
- IF_GL_SUCCESS(_orig_fastpath_glBindRenderbuffer(target, real_obj)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glBindRenderbuffer(target, real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glBindRenderbufferOES(target, real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
if (real_obj == 0)
current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_renderbuffer_binding);
else
current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_renderbuffer_binding;
+
CURR_STATE_UPDATE(gl_renderbuffer_binding, 0, real_obj)
}
}
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBindRenderbuffer(target, renderbuffer, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glFramebufferRenderbuffer(GLenum target, GLenum attachment,
- GLenum renderbuffertarget, GLuint renderbuffer)
+static void
+_fp_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget,
+ GLuint renderbuffer, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glFramebufferRenderbuffer(target, attachment, renderbuffertarget,
- real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glFramebufferRenderbuffer(target, attachment, renderbuffertarget,
+ real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glFramebufferRenderbufferOES(target, attachment,
+ renderbuffertarget, real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glFramebufferRenderbuffer(GLenum target, GLenum attachment,
+ GLenum renderbuffertarget, GLuint renderbuffer)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glFramebufferRenderbuffer(target, attachment, renderbuffertarget,
+ renderbuffer, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-GLboolean
-fastpath_glIsRenderbuffer(GLuint renderbuffer)
+static GLboolean
+_fp_glIsRenderbuffer(GLuint renderbuffer, FASTPATH_FUNC_TYPE ftype)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
goto finish;
}
- ret = _orig_fastpath_glIsRenderbuffer(real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ ret = _orig_fastpath_glIsRenderbuffer(real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ ret = _orig_fastpath_glIsRenderbufferOES(real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return ret;
+}
+
+GLboolean
+fastpath_glIsRenderbuffer(GLuint renderbuffer)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ ret = _fp_glIsRenderbuffer(renderbuffer, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
return ret;
+
}
-void
-fastpath_glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers)
+static void
+_fp_glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array[real_n++] = real_objid;
}
- IF_GL_SUCCESS(_orig_fastpath_glDeleteRenderbuffers(real_n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glDeleteRenderbuffers(real_n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glDeleteRenderbuffersOES(real_n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < real_n; i++) {
General_Trace_List *current = NULL;
current = current_ctx->ostate.shared->using_gctxs;
free(objid_array);
objid_array = NULL;
}
+}
+
+void
+fastpath_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDeleteRenderbuffers(n, renderbuffers, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glActiveShaderProgramEXT(GLuint pipeline, GLuint program)
+static void
+_fp_glActiveShaderProgram(GLuint pipeline, GLuint program, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_program_obj;
GLuint real_pipeline_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_program_obj) != 1) {
goto finish;
}
- _orig_fastpath_glActiveShaderProgramEXT(real_pipeline_obj, real_program_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glActiveShaderProgram(real_pipeline_obj, real_program_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glActiveShaderProgramEXT(real_pipeline_obj, real_program_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
-fastpath_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value)
+fastpath_glActiveShaderProgramEXT(GLuint pipeline, GLuint program)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glActiveShaderProgram(pipeline, program, FASTPATH_FUNC_TYPE_EXT);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glProgramParameteri(GLuint program, GLenum pname, GLint value,
+ FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glProgramParameteriEXT(real_obj, pname, value);
-
- goto finish;
-
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glProgramParameteri(real_obj, pname, value);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glProgramParameteriEXT(real_obj, pname, value);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+
+ goto finish;
+
finish:
+ return;
+}
+
+void
+fastpath_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glProgramParameteri(program, pname, value, FASTPATH_FUNC_TYPE_EXT);
+
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glProgramUniform1iEXT(GLuint program, GLint location, GLint x)
+static void
+_fp_glProgramUniformi(GLuint program, GLint location, int count, GLint *v,
+ FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glProgramUniform1iEXT(real_obj, location, x);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ switch(count) {
+ case 1:
+ _orig_fastpath_glProgramUniform1i(real_obj, location, *v);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2i(real_obj, location, v[0], v[1]);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3i(real_obj, location, v[0], v[1], v[2]);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4i(real_obj, location, v[0], v[1], v[2], v[3]);
+ break;
+ }
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ switch(count) {
+ case 1:
+ _orig_fastpath_glProgramUniform1iEXT(real_obj, location, *v);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2iEXT(real_obj, location, v[0], v[1]);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3iEXT(real_obj, location, v[0], v[1], v[2]);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4iEXT(real_obj, location, v[0], v[1], v[2], v[3]);
+ break;
+ }
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
+void
+fastpath_glProgramUniform1iEXT(GLuint program, GLint location, GLint x)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glProgramUniformi(program, location, 1, &x, FASTPATH_FUNC_TYPE_EXT);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
void
fastpath_glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y)
{
- GLuint real_obj;
+ GLint v[2];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform2iEXT(real_obj, location, x, y);
+ v[0] = x, v[1] = y;
+ _fp_glProgramUniformi(program, location, 2, v, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y,
GLint z)
{
- GLuint real_obj;
+ GLint v[3];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform3iEXT(real_obj, location, x, y, z);
+ v[0] = x, v[1] = y, v[2] = z;
+ _fp_glProgramUniformi(program, location, 3, v, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y,
GLint z, GLint w)
{
- GLuint real_obj;
+ GLint v[4];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform4iEXT(real_obj, location, x, y, z, w);
+ v[0] = x, v[1] = y, v[2] = z, v[3] = w;
+ _fp_glProgramUniformi(program, location, 4, v, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x)
+static void
+_fp_glProgramUniformf(GLuint program, GLint location, int count, GLfloat *v, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glProgramUniform1fEXT(real_obj, location, x);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ switch (count) {
+ case 1:
+ _orig_fastpath_glProgramUniform1f(real_obj, location, *v);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2f(real_obj, location, v[0], v[1]);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3f(real_obj, location, v[0], v[1], v[2]);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4f(real_obj, location, v[0], v[1], v[2], v[3]);
+ break;
+ }
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ switch(count) {
+ case 1:
+ _orig_fastpath_glProgramUniform1fEXT(real_obj, location, *v);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2fEXT(real_obj, location, v[0], v[1]);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3fEXT(real_obj, location, v[0], v[1], v[2]);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4fEXT(real_obj, location, v[0], v[1], v[2], v[3]);
+ break;
+ }
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
+void
+fastpath_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glProgramUniformf(program, location, 1, &x, FASTPATH_FUNC_TYPE_EXT);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
void
fastpath_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x,
GLfloat y)
{
- GLuint real_obj;
+ GLfloat v[2];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform2fEXT(real_obj, location, x, y);
- goto finish;
+ v[0] = x, v[1] = y;
+ _fp_glProgramUniformf(program, location, 2, v, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x,
GLfloat y, GLfloat z)
{
- GLuint real_obj;
+ GLfloat v[3];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
+ v[0] = x, v[1] = y, v[2] = z;
+ _fp_glProgramUniformf(program, location, 3, v, FASTPATH_FUNC_TYPE_EXT);
- _orig_fastpath_glProgramUniform3fEXT(real_obj, location, x, y, z);
-
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-
void
fastpath_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x,
GLfloat y, GLfloat z, GLfloat w)
{
- GLuint real_obj;
+ GLfloat v[4];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform4fEXT(real_obj, location, x, y, z, w);
- goto finish;
+ v[0] = x, v[1] = y, v[2] = z, v[3] = w;
+ _fp_glProgramUniformf(program, location, 4, v, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count,
- const GLint *value)
+static void
+_fp_glProgramUniformiv(GLuint program, GLint location, GLsizei count,
+ const GLint *value, GLint vertor, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glProgramUniform1ivEXT(real_obj, location, count, value);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ switch (vertor) {
+ case 1:
+ _orig_fastpath_glProgramUniform1iv(real_obj, location, count, value);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2iv(real_obj, location, count, value);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3iv(real_obj, location, count, value);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4iv(real_obj, location, count, value);
+ break;
+ }
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ switch (vertor) {
+ case 1:
+ _orig_fastpath_glProgramUniform1ivEXT(real_obj, location, count, value);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2ivEXT(real_obj, location, count, value);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3ivEXT(real_obj, location, count, value);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4ivEXT(real_obj, location, count, value);
+ break;
+ }
+ break;
+ default:
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count,
+ const GLint *value)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glProgramUniformiv(program, location, count, value,
+ 1, FASTPATH_FUNC_TYPE_EXT);
+
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform2ivEXT(real_obj, location, count, value);
- goto finish;
+ _fp_glProgramUniformiv(program, location, count, value,
+ 2, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform3ivEXT(real_obj, location, count, value);
- goto finish;
+ _fp_glProgramUniformiv(program, location, count, value,
+ 3, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glProgramUniformiv(program, location, count, value,
+ 4, FASTPATH_FUNC_TYPE_EXT);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+
+static void
+_fp_glProgramUniformfv(GLuint program, GLint location, GLsizei count,
+ const GLfloat *value, GLint vertor, FASTPATH_FUNC_TYPE ftype)
+{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glProgramUniform4ivEXT(real_obj, location, count, value);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ switch (vertor) {
+ case 1:
+ _orig_fastpath_glProgramUniform1fv(real_obj, location, count, value);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2fv(real_obj, location, count, value);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3fv(real_obj, location, count, value);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4fv(real_obj, location, count, value);
+ break;
+ }
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ switch (vertor) {
+ case 1:
+ _orig_fastpath_glProgramUniform1fvEXT(real_obj, location, count, value);
+ break;
+ case 2:
+ _orig_fastpath_glProgramUniform2fvEXT(real_obj, location, count, value);
+ break;
+ case 3:
+ _orig_fastpath_glProgramUniform3fvEXT(real_obj, location, count, value);
+ break;
+ case 4:
+ _orig_fastpath_glProgramUniform4fvEXT(real_obj, location, count, value);
+ break;
+ }
+ break;
+ default:
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
-
void
fastpath_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform1fvEXT(real_obj, location, count, value);
- goto finish;
+ _fp_glProgramUniformfv(program, location, count, value,
+ 1, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform2fvEXT(real_obj, location, count, value);
- goto finish;
+ _fp_glProgramUniformfv(program, location, count, value,
+ 2, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform3fvEXT(real_obj, location, count, value);
- goto finish;
+ _fp_glProgramUniformfv(program, location, count, value,
+ 3, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform4fvEXT(real_obj, location, count, value);
-
- goto finish;
+ _fp_glProgramUniformfv(program, location, count, value,
+ 4, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glBlendEquation(GLenum mode)
+static void
+_fp_glBlendEquation(GLenum mode, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
- IF_GL_SUCCESS(_orig_fastpath_glBlendEquation(mode)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glBlendEquation(mode);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glBlendEquationOES(mode);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_blend_flag |=
_BLEND_FLAG_BIT_gl_blend_equation_rgb |
_BLEND_FLAG_BIT_gl_blend_equation_alpha;
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
-fastpath_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+fastpath_glBlendEquation(GLenum mode)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBlendEquation(mode, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha, FASTPATH_FUNC_TYPE ftype)
+{
+ DEFINE_FASTPAH_GL_FUNC();
INIT_FASTPATH_GL_FUNC();
if (CURR_STATE_COMPARE(gl_blend_equation_rgb, 0, modeRGB) ||
CURR_STATE_COMPARE(gl_blend_equation_alpha, 0, modeAlpha)) {
- IF_GL_SUCCESS(_orig_fastpath_glBlendEquationSeparate(modeRGB, modeAlpha)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glBlendEquationSeparate(modeRGB, modeAlpha);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glBlendEquationSeparateOES(modeRGB, modeAlpha);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_blend_flag |=
_BLEND_FLAG_BIT_gl_blend_equation_rgb |
_BLEND_FLAG_BIT_gl_blend_equation_alpha;
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBlendEquationSeparate(modeRGB, modeAlpha, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
- GLenum dstAlpha)
+static void
+_fp_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
+ GLenum dstAlpha, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (CURR_STATE_COMPARE(gl_blend_src_rgb, 0, srcRGB) ||
CURR_STATE_COMPARE(gl_blend_dst_rgb, 0, dstRGB) ||
CURR_STATE_COMPARE(gl_blend_src_alpha, 0, srcAlpha) ||
CURR_STATE_COMPARE(gl_blend_dst_alpha, 0, dstAlpha)) {
- IF_GL_SUCCESS(_orig_fastpath_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha,
- dstAlpha)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_blend_flag |=
_BLEND_FLAG_BIT_gl_blend_src_rgb |
_BLEND_FLAG_BIT_gl_blend_src_alpha |
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
+ GLenum dstAlpha)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glClearDepthf(GLclampf depth)
+static void
+_fp_glClearDepthf(GLclampf depth, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if CURR_STATE_COMPARE(gl_depth_clear_value, 0, depth) {
- IF_GL_SUCCESS(_orig_fastpath_glClearDepthf(depth)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glClearDepthf(depth);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glClearDepthfOES(depth);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_clear_value;
CURR_STATE_UPDATE(gl_depth_clear_value, 0, depth)
}
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glClearDepthf(GLclampf depth)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glClearDepthf(depth, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glColorMaski(GLuint buf, GLboolean r, GLboolean g, GLboolean b,
- GLboolean a)
+static void
+_fp_glColorMaski(GLuint buf, GLboolean r, GLboolean g, GLboolean b,
+ GLboolean a, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (CURR_STATE_COMPARE(gl_color_writemask, 0 + 4 * buf, r) ||
CURR_STATE_COMPARE(gl_color_writemask, 1 + 4 * buf, g) ||
CURR_STATE_COMPARE(gl_color_writemask, 2 + 4 * buf, b) ||
CURR_STATE_COMPARE(gl_color_writemask, 3 + 4 * buf, a)) {
- IF_GL_SUCCESS(_orig_fastpath_glColorMaski(buf, r, g, b, a)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glColorMaski(buf, r, g, b, a);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glColorMaskiOES(buf, r, g, b, a);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_color_writemask;
CURR_STATE_UPDATE(gl_color_writemask, 0 + 4 * buf, r)
CURR_STATE_UPDATE(gl_color_writemask, 1 + 4 * buf, g)
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glColorMaski(GLuint buf, GLboolean r, GLboolean g, GLboolean b,
+ GLboolean a)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glColorMaski(buf, r, g, b, a, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glColorMaskiOES(GLuint buf, GLboolean r, GLboolean g, GLboolean b,
GLboolean a)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (CURR_STATE_COMPARE(gl_color_writemask, 0 + 4 * buf, r) ||
- CURR_STATE_COMPARE(gl_color_writemask, 1 + 4 * buf, g) ||
- CURR_STATE_COMPARE(gl_color_writemask, 2 + 4 * buf, b) ||
- CURR_STATE_COMPARE(gl_color_writemask, 3 + 4 * buf, a)) {
- IF_GL_SUCCESS(_orig_fastpath_glColorMaskiOES(buf, r, g, b, a)) {
- current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_color_writemask;
- CURR_STATE_UPDATE(gl_color_writemask, 0 + 4 * buf, r)
- CURR_STATE_UPDATE(gl_color_writemask, 1 + 4 * buf, g)
- CURR_STATE_UPDATE(gl_color_writemask, 2 + 4 * buf, b)
- CURR_STATE_UPDATE(gl_color_writemask, 3 + 4 * buf, a)
- }
- }
- goto finish;
+ _fp_glColorMaski(buf, r, g, b, a, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glDepthRangef(GLclampf zNear, GLclampf zFar)
+static void
+_fp_glDepthRangef(GLclampf zNear, GLclampf zFar, FASTPATH_FUNC_TYPE ftype)
{
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (CURR_STATE_COMPARE(gl_depth_range, 0, zNear) ||
CURR_STATE_COMPARE(gl_depth_range, 1, zFar)) {
- IF_GL_SUCCESS(_orig_fastpath_glDepthRangef(zNear, zFar)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glDepthRangef(zNear, zFar);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glDepthRangefOES(zNear, zFar);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_range;
CURR_STATE_UPDATE(gl_depth_range, 0, zNear)
CURR_STATE_UPDATE(gl_depth_range, 1, zFar)
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glDepthRangef(GLclampf zNear, GLclampf zFar)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDepthRangef(zNear, zFar, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
/* ES 3.0 PASS (SUPPORT) */
-void
-fastpath_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei *length,
- GLenum *binaryFormat, void *binary)
+static void
+_fp_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei *length,
+ GLenum *binaryFormat, void *binary, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glGetProgramBinary(real_obj, bufsize, length, binaryFormat,
- binary);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetProgramBinary(real_obj, bufsize, length, binaryFormat, binary);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGetProgramBinaryOES(real_obj, bufsize, length, binaryFormat, binary);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei *length,
+ GLenum *binaryFormat, void *binary)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetProgramBinary(program, bufsize, length, binaryFormat,
+ binary, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glGetProgramBinaryOES(GLuint program, GLsizei bufsize, GLsizei *length,
GLenum *binaryFormat, void *binary)
{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetProgramBinary(program, bufsize, length, binaryFormat,
+ binary, FASTPATH_FUNC_TYPE_OES);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary,
+ GLint length, FASTPATH_FUNC_TYPE ftype)
+{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glGetProgramBinaryOES(real_obj, bufsize, length, binaryFormat,
- binary);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glProgramBinary(real_obj, binaryFormat, binary, length);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glProgramBinaryOES(real_obj, binaryFormat, binary, length);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
-
void
fastpath_glProgramBinary(GLuint program, GLenum binaryFormat,
const void *binary, GLint length)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramBinary(real_obj, binaryFormat, binary, length);
-
- goto finish;
+ _fp_glProgramBinary(program, binaryFormat, binary, length, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramBinaryOES(GLuint program, GLenum binaryFormat,
const void *binary, GLint length)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramBinaryOES(real_obj, binaryFormat, binary, length);
-
- goto finish;
+ _fp_glProgramBinary(program, binaryFormat, binary, length, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
}
-void
-fastpath_glGenQueries(GLsizei n, GLuint *ids)
+static void
+_fp_glGenQueries(GLsizei n, GLuint *ids, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- IF_GL_SUCCESS(_orig_fastpath_glGenQueries(n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGenQueries(n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glGenQueriesEXT(n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < n; i++) {
ids[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
GL_OBJECT_TYPE_QUERY, objid_array[i]);
free(objid_array);
objid_array = NULL;
}
+}
+
+void
+fastpath_glGenQueries(GLsizei n, GLuint* ids)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGenQueries(n, ids, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glDeleteQueries(GLsizei n, const GLuint *ids)
+static void
+_fp_glDeleteQueries(GLsizei n, const GLuint *ids, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
+ int real_n = 0;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
if (objid_array == NULL) goto finish;
- {
- int real_n = 0;
- for (i = 0; i < n; i++) {
- int real_objid = _COREGL_INT_INIT_VALUE;
- if (ids[i] == 0) continue;
+ for (i = 0; i < n; i++) {
+ GLuint real_obj;
+ if (ids[i] == 0)
+ continue;
- real_objid = fastpath_ostate_get_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_QUERY, ids[i]);
- if (real_objid == 0) continue;
+ if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, ids[i], &real_obj) != 1)
+ continue;
- AST(fastpath_ostate_remove_object(¤t_ctx->ostate, GL_OBJECT_TYPE_QUERY,
- ids[i]) == 1);
- objid_array[real_n++] = real_objid;
- }
+ AST(fastpath_ostate_remove_object(¤t_ctx->ostate, GL_OBJECT_TYPE_QUERY,
+ ids[i]) == 1);
+ objid_array[real_n++] = real_obj;
+ }
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
_orig_fastpath_glDeleteQueries(real_n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glDeleteQueriesEXT(real_n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
}
goto finish;
free(objid_array);
objid_array = NULL;
}
+}
+
+void
+fastpath_glDeleteQueries(GLsizei n, const GLuint* ids)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDeleteQueries(n, ids, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-GLboolean
-fastpath_glIsQuery(GLuint id)
+static GLboolean
+_fp_glIsQuery(GLuint id, FASTPATH_FUNC_TYPE ftype)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
goto finish;
}
- ret = _orig_fastpath_glIsQuery(real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ ret = _orig_fastpath_glIsQuery(real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ ret = _orig_fastpath_glIsQueryEXT(real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
return ret;
}
+GLboolean
+fastpath_glIsQuery(GLuint id)
+{
+ GLboolean ret = GL_FALSE;
-void
-fastpath_glBeginQuery(GLenum target, GLuint id)
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ ret = _fp_glIsQuery(id, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+ return ret;
+}
+
+
+static void
+_fp_glBeginQuery(GLenum target, GLuint id, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glBeginQuery(target, real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glBeginQuery(target, real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glBeginQueryEXT(target, real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glBeginQuery(GLenum target, GLuint id)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBeginQuery(target, id, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glGetQueryiv(GLenum target, GLenum pname, GLint *params)
+static void
+_fp_glGetQueryiv(GLenum target, GLenum pname, GLint *params, FASTPATH_FUNC_TYPE ftype)
{
GLuint glue_obj_id = _COREGL_INT_INIT_VALUE;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
- _orig_fastpath_glGetQueryiv(target, pname, params);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetQueryiv(target, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glGetQueryivEXT(target, pname, params);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
switch (pname) {
case GL_CURRENT_QUERY:
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
-
void
-fastpath_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
+fastpath_glGetQueryiv(GLenum target, GLenum pname, GLint* params)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetQueryiv(target, pname, params, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glGetQueryObjectuiv(real_obj, pname, params);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetQueryObjectuiv(real_obj, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glGetQueryObjectuivEXT(real_obj, pname, params);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetQueryObjectuiv(id, pname, params, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glGenVertexArrays(GLsizei n, GLuint *arrays)
+static void
+_fp_glGenVertexArrays(GLsizei n, GLuint *arrays, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- IF_GL_SUCCESS(_orig_fastpath_glGenVertexArrays(n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGenVertexArrays(n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGenVertexArraysOES(n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < n; i++) {
arrays[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
GL_OBJECT_TYPE_VERTEXARRAY, objid_array[i]);
free(objid_array);
objid_array = NULL;
}
+}
+
+void
+fastpath_glGenVertexArrays(GLsizei n, GLuint* arrays)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGenVertexArrays(n, arrays, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glBindVertexArray(GLuint array)
+static void
+_fp_glBindVertexArray(GLuint array, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
int i;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, array, &real_obj) != 1) {
goto finish;
}
+#define ORIG_FASTPATH_FUNC() \
+ switch (ftype) { \
+ case FASTPATH_FUNC_TYPE_STANDARD: \
+ _orig_fastpath_glBindVertexArray(real_obj); \
+ break; \
+ case FASTPATH_FUNC_TYPE_OES: \
+ _orig_fastpath_glBindVertexArrayOES(real_obj); \
+ break; \
+ default: \
+ _set_gl_error(GL_INVALID_OPERATION); \
+ goto finish; \
+ }
+
if (real_obj == 0) {
- IF_GL_SUCCESS(_orig_fastpath_glBindVertexArray(real_obj)) {
+ IF_GL_SUCCESS(ORIG_FASTPATH_FUNC()) {
current_ctx->_misc_flag3 &= ~(_MISC_FLAG3_BIT_gl_vertex_array_binding);
CURR_STATE_CLEAR(gl_vertex_array_binding, 0)
for (i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
}
} else if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
- IF_GL_SUCCESS(_orig_fastpath_glBindVertexArray(real_obj)) {
+ IF_GL_SUCCESS(ORIG_FASTPATH_FUNC()) {
current_ctx->_misc_flag3 |= _MISC_FLAG3_BIT_gl_vertex_array_binding;
CURR_STATE_UPDATE(gl_vertex_array_binding, 0, real_obj)
for (i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
goto finish;
finish:
+#undef ORIG_FASTPATH_FUNC
+ return;
+}
+
+void
+fastpath_glBindVertexArray(GLuint array)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glBindVertexArray(array, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
-GLboolean
-fastpath_glIsVertexArray(GLuint array)
+static GLboolean
+_fp_glIsVertexArray(GLuint array, FASTPATH_FUNC_TYPE ftype)
{
GLboolean ret = GL_FALSE;
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, array, &real_obj) != 1) {
goto finish;
}
- ret = _orig_fastpath_glIsVertexArray(real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ ret = _orig_fastpath_glIsVertexArray(real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ ret = _orig_fastpath_glIsVertexArrayOES(real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return ret;
+}
+
+GLboolean
+fastpath_glIsVertexArray(GLuint array)
+{
+ GLboolean ret = GL_FALSE;
+
+ _COREGL_FASTPATH_FUNC_BEGIN();
+ ret = _fp_glIsVertexArray(array, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
return ret;
}
-void
-fastpath_glDeleteVertexArrays(GLsizei n, const GLuint *arrays)
+static void
+_fp_glDeleteVertexArrays(GLsizei n, const GLuint *arrays, FASTPATH_FUNC_TYPE ftype)
{
int i;
GLuint *objid_array = NULL;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
int real_n = 0;
for (i = 0; i < n; i++) {
- int real_objid = _COREGL_INT_INIT_VALUE;
- if (arrays[i] == 0) continue;
+ GLuint real_objid;
- real_objid = fastpath_ostate_get_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_VERTEXARRAY, arrays[i]);
- if (real_objid == 0) continue;
+ if (arrays[i] == 0)
+ continue;
+
+ if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, arrays[i], &real_objid) != 1)
+ continue;
AST(fastpath_ostate_remove_object(¤t_ctx->ostate,
GL_OBJECT_TYPE_VERTEXARRAY, arrays[i]) == 1);
objid_array[real_n++] = real_objid;
}
- IF_GL_SUCCESS(_orig_fastpath_glDeleteVertexArrays(real_n, objid_array)) {
+ _get_gl_error();
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glDeleteVertexArrays(real_n, objid_array);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glDeleteVertexArraysOES(real_n, objid_array);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+ if (_get_gl_error() == GL_NO_ERROR) {
for (i = 0; i < real_n; i++) {
General_Trace_List *current = NULL;
current = current_ctx->ostate.shared->using_gctxs;
free(objid_array);
objid_array = NULL;
}
+}
+
+void
+fastpath_glDeleteVertexArrays(GLsizei n, const GLuint* arrays)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDeleteVertexArrays(n, arrays, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
fastpath_glProgramParameteri(GLuint program, GLenum pname, GLint value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramParameteri(real_obj, pname, value);
- goto finish;
+ _fp_glProgramParameteri(program, pname, value, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glActiveShaderProgram(GLuint pipeline, GLuint program)
{
- GLuint real_program_obj;
- GLuint real_pipeline_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_program_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAMPIPELINE, pipeline,
- &real_pipeline_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glActiveShaderProgram(real_pipeline_obj, real_program_obj);
+ _fp_glActiveShaderProgram(pipeline, program, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform1iv(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform1iv(real_obj, location, count, value);
+ _fp_glProgramUniformiv(program, location, count, value,
+ 1, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform2iv(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform2iv(real_obj, location, count, value);
+ _fp_glProgramUniformiv(program, location, count, value,
+ 2, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3iv(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform3iv(real_obj, location, count, value);
+ _fp_glProgramUniformiv(program, location, count, value,
+ 3, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4iv(GLuint program, GLint location, GLsizei count,
const GLint *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform4iv(real_obj, location, count, value);
+ _fp_glProgramUniformiv(program, location, count, value,
+ 4, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform1fv(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform1fv(real_obj, location, count, value);
+ _fp_glProgramUniformfv(program, location, count, value,
+ 1, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform2fv(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform2fv(real_obj, location, count, value);
+ _fp_glProgramUniformfv(program, location, count, value,
+ 2, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3fv(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform3fv(real_obj, location, count, value);
+ _fp_glProgramUniformfv(program, location, count, value,
+ 3, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4fv(GLuint program, GLint location, GLsizei count,
const GLfloat *value)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform4fv(real_obj, location, count, value);
+ _fp_glProgramUniformfv(program, location, count, value,
+ 4, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glProgramUniform1i(GLuint program, GLint location, GLint x)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform1i(real_obj, location, x);
+ _fp_glProgramUniformi(program, location, 1, &x, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glProgramUniform2i(GLuint program, GLint location, GLint x, GLint y)
{
- GLuint real_obj;
+ GLint v[2];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform2i(real_obj, location, x, y);
- goto finish;
+ v[0] = x, v[1] = y;
+ _fp_glProgramUniformi(program, location, 2, v, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3i(GLuint program, GLint location, GLint x, GLint y,
GLint z)
{
- GLuint real_obj;
+ GLint v[3];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform3i(real_obj, location, x, y, z);
-
- goto finish;
+ v[0] = x, v[1] = y, v[2] = z;
+ _fp_glProgramUniformi(program, location, 3, v, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4i(GLuint program, GLint location, GLint x, GLint y,
GLint z, GLint w)
{
- GLuint real_obj;
+ GLint v[4];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform4i(real_obj, location, x, y, z, w);
- goto finish;
+ v[0] = x, v[1] = y, v[2] = z, v[3] = w;
+ _fp_glProgramUniformi(program, location, 4, v, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glProgramUniform1f(GLuint program, GLint location, GLfloat x)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
+ _fp_glProgramUniformf(program, location, 1, &x, FASTPATH_FUNC_TYPE_STANDARD);
- _orig_fastpath_glProgramUniform1f(real_obj, location, x);
-
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform2f(GLuint program, GLint location, GLfloat x,
GLfloat y)
{
- GLuint real_obj;
+ GLfloat v[2];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform2f(real_obj, location, x, y);
+ v[0] = x, v[1] = y;
+ _fp_glProgramUniformf(program, location, 2, v, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform3f(GLuint program, GLint location, GLfloat x,
GLfloat y, GLfloat z)
{
- GLuint real_obj;
+ GLfloat v[3];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glProgramUniform3f(real_obj, location, x, y, z);
- goto finish;
+ v[0] = x, v[1] = y, v[2] = z;
+ _fp_glProgramUniformf(program, location, 3, v, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glProgramUniform4f(GLuint program, GLint location, GLfloat x,
GLfloat y, GLfloat z, GLfloat w)
{
- GLuint real_obj;
+ GLfloat v[4];
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glProgramUniform4f(real_obj, location, x, y, z, w);
-
- goto finish;
+ v[0] = x, v[1] = y, v[2] = z, v[3] = w;
+ _fp_glProgramUniformf(program, location, 4, v, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glBindFramebufferOES(GLenum target, GLuint framebuffer)
{
- GLuint real_obj;
+ _COREGL_FASTPATH_FUNC_BEGIN();
- DEFINE_FASTPAH_GL_FUNC();
+ _fp_glBindFramebuffer(target, framebuffer, FASTPATH_FUNC_TYPE_OES);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+void
+fastpath_glBindRenderbufferOES(GLenum target, GLuint renderbuffer)
+{
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
+ _fp_glBindRenderbuffer(target, renderbuffer, FASTPATH_FUNC_TYPE_OES);
-#define STATE_PROC(gl_state, flagid, flagbit) \
- { \
- if(real_obj == 0) { \
- IF_GL_SUCCESS(_orig_fastpath_glBindFramebufferOES(target, real_obj)) { \
- current_ctx->flagid &= (~flagbit##_##gl_state); \
- CURR_STATE_CLEAR(gl_state, 0); \
- } \
- }\
- else if CURR_STATE_COMPARE(gl_state, 0, real_obj) { \
- IF_GL_SUCCESS(_orig_fastpath_glBindFramebufferOES(target, real_obj)) { \
- if (real_obj == 0) \
- current_ctx->flagid &= (~flagbit##_##gl_state); \
- else \
- current_ctx->flagid |= flagbit##_##gl_state; \
- CURR_STATE_UPDATE(gl_state, 0, real_obj) \
- if((target == GL_FRAMEBUFFER || target == GL_READ_FRAMEBUFFER) && \
- current_ctx->gl_framebuffer_binding_read_used) \
- CURR_STATE_CLEAR(gl_read_buffer, 0) \
- } \
- } \
- }
+ _COREGL_FASTPATH_FUNC_END();
+}
- switch (target) {
- case GL_FRAMEBUFFER:
- if (current_ctx->gl_framebuffer_binding_read_used &&
- current_ctx->gl_framebuffer_binding_draw_used) {
- STATE_PROC(gl_framebuffer_binding_read, _bind_flag1, _BIND_FLAG1_BIT)
- STATE_PROC(gl_framebuffer_binding_draw, _bind_flag1, _BIND_FLAG1_BIT)
- } else
- STATE_PROC(gl_framebuffer_binding, _bind_flag1, _BIND_FLAG1_BIT)
- break;
- case GL_READ_FRAMEBUFFER:
- if (current_ctx->gl_framebuffer_binding_read_used) {
- STATE_PROC(gl_framebuffer_binding_read, _bind_flag1, _BIND_FLAG1_BIT)
- }
- break;
- case GL_DRAW_FRAMEBUFFER:
- if (current_ctx->gl_framebuffer_binding_draw_used) {
- STATE_PROC(gl_framebuffer_binding_draw, _bind_flag1, _BIND_FLAG1_BIT)
- }
- break;
- default:
- _set_gl_error(GL_INVALID_ENUM);
- goto finish;
- }
+void
+fastpath_glDeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
-#undef STATE_PROC
+ _fp_glDeleteFramebuffers(n, framebuffers, FASTPATH_FUNC_TYPE_OES);
- goto finish;
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+void
+fastpath_glDeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDeleteRenderbuffers(n, renderbuffers, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
-fastpath_glBindRenderbufferOES(GLenum target, GLuint renderbuffer)
+fastpath_glDepthRangefOES(GLclampf zNear, GLclampf zFar)
{
- GLuint real_obj;
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glDepthRangef(zNear, zFar, FASTPATH_FUNC_TYPE_OES);
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+void
+fastpath_glDepthRangexOES(GLclampx zNear, GLclampx zFar)
+{
DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- if (target == GL_RENDERBUFFER) {
- if CURR_STATE_COMPARE(gl_renderbuffer_binding, 0, real_obj) {
- IF_GL_SUCCESS(_orig_fastpath_glBindRenderbufferOES(target, real_obj)) {
- if (real_obj == 0)
- current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_renderbuffer_binding);
- else
- current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_renderbuffer_binding;
-
- CURR_STATE_UPDATE(gl_renderbuffer_binding, 0, real_obj)
- }
+ if (CURR_STATE_COMPARE(gl_depth_range, 0, zNear) ||
+ CURR_STATE_COMPARE(gl_depth_range, 1, zFar)) {
+ IF_GL_SUCCESS(_orig_fastpath_glDepthRangexOES(zNear, zFar)) {
+ current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_range;
+ CURR_STATE_UPDATE(gl_depth_range, 0, zNear)
+ CURR_STATE_UPDATE(gl_depth_range, 1, zFar)
}
- } else {
- _set_gl_error(GL_INVALID_ENUM);
- goto finish;
}
-
goto finish;
finish:
}
void
-fastpath_glDeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers)
+fastpath_glFramebufferRenderbufferOES(GLenum target, GLenum attachment,
+ GLenum renderbuffertarget, GLuint renderbuffer)
{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (framebuffers == NULL) goto finish;
+ _fp_glFramebufferRenderbuffer(target, attachment, renderbuffertarget,
+ renderbuffer, FASTPATH_FUNC_TYPE_OES);
- AST(current_ctx->ostate.shared != NULL);
+ _COREGL_FASTPATH_FUNC_END();
+}
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- if (objid_array == NULL) goto finish;
- {
- int real_n = 0;
+void
+fastpath_glFramebufferTexture2DOES(GLenum target, GLenum attachment,
+ GLenum textarget, GLuint texture, GLint level)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
- for (i = 0; i < n; i++) {
- int real_objid = _COREGL_INT_INIT_VALUE;
- if (framebuffers[i] == 0) continue;
+ _fp_glFramebufferTexture2D(target, attachment, textarget,
+ texture, level, 0, FASTPATH_FUNC_TYPE_OES);
- real_objid = fastpath_ostate_get_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]);
- if (real_objid == 0) continue;
+ _COREGL_FASTPATH_FUNC_END();
+}
- AST(fastpath_ostate_remove_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_FRAMEBUFFER, framebuffers[i]) == 1);
- objid_array[real_n++] = real_objid;
- }
+void
+fastpath_glGenFramebuffersOES(GLsizei n, GLuint *framebuffers)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
- IF_GL_SUCCESS(_orig_fastpath_glDeleteFramebuffersOES(real_n, objid_array)) {
- for (i = 0; i < real_n; i++) {
- General_Trace_List *current = NULL;
- current = current_ctx->ostate.shared->using_gctxs;
+ _fp_glGenFramebuffers(n, framebuffers, FASTPATH_FUNC_TYPE_OES);
- while (current != NULL) {
- GLGlueContext *cur_gctx = (GLGlueContext *)current->value;
-
- if (cur_gctx->initialized == 1) {
- if (cur_gctx->gl_framebuffer_binding[0] == objid_array[i]) {
- cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding);
- CURR_STATE_CLEAR(gl_framebuffer_binding, 0)
- }
- if (cur_gctx->gl_framebuffer_binding_read[0] == objid_array[i]) {
- cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_read);
- CURR_STATE_CLEAR(gl_framebuffer_binding_read, 0)
- }
- if (cur_gctx->gl_framebuffer_binding_draw[0] == objid_array[i]) {
- cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_draw);
- CURR_STATE_CLEAR(gl_framebuffer_binding_draw, 0)
- }
- }
- current = current->next;
- }
- }
- }
- }
-
- goto finish;
-
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glDeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers)
-{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (renderbuffers == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- if (objid_array == NULL) goto finish;
- {
- int real_n = 0;
-
- for (i = 0; i < n; i++) {
- int real_objid = _COREGL_INT_INIT_VALUE;
- if (renderbuffers[i] == 0) continue;
-
- real_objid = fastpath_ostate_get_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]);
- if (real_objid == 0) continue;
-
- AST(fastpath_ostate_remove_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_RENDERBUFFER, renderbuffers[i]) == 1);
- objid_array[real_n++] = real_objid;
- }
-
- IF_GL_SUCCESS(_orig_fastpath_glDeleteRenderbuffersOES(real_n, objid_array)) {
- for (i = 0; i < real_n; i++) {
- General_Trace_List *current = NULL;
- current = current_ctx->ostate.shared->using_gctxs;
-
- while (current != NULL) {
- GLGlueContext *cur_gctx = (GLGlueContext *)current->value;
-
- if (cur_gctx->initialized == 1) {
- if (cur_gctx->gl_renderbuffer_binding[0] == objid_array[i]) {
- cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_renderbuffer_binding);
- CURR_STATE_CLEAR(gl_renderbuffer_binding, 0)
- }
- }
- current = current->next;
- }
- }
- }
- }
-
- goto finish;
-
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glDepthRangefOES(GLclampf zNear, GLclampf zFar)
-{
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (CURR_STATE_COMPARE(gl_depth_range, 0, zNear) ||
- CURR_STATE_COMPARE(gl_depth_range, 1, zFar)) {
- IF_GL_SUCCESS(_orig_fastpath_glDepthRangefOES(zNear, zFar)) {
- current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_range;
- CURR_STATE_UPDATE(gl_depth_range, 0, zNear)
- CURR_STATE_UPDATE(gl_depth_range, 1, zFar)
- }
- }
- goto finish;
-
-finish:
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glDepthRangexOES(GLclampx zNear, GLclampx zFar)
-{
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (CURR_STATE_COMPARE(gl_depth_range, 0, zNear) ||
- CURR_STATE_COMPARE(gl_depth_range, 1, zFar)) {
- IF_GL_SUCCESS(_orig_fastpath_glDepthRangexOES(zNear, zFar)) {
- current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_range;
- CURR_STATE_UPDATE(gl_depth_range, 0, zNear)
- CURR_STATE_UPDATE(gl_depth_range, 1, zFar)
- }
- }
- goto finish;
-
-finish:
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glFramebufferRenderbufferOES(GLenum target, GLenum attachment,
- GLenum renderbuffertarget, GLuint renderbuffer)
-{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glFramebufferRenderbufferOES(target, attachment,
- renderbuffertarget, real_obj);
-
- goto finish;
-
-finish:
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glFramebufferTexture2DOES(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level)
-{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
-
- _orig_fastpath_glFramebufferTexture2DOES(target, attachment, textarget,
- real_obj, level);
-
- goto finish;
-
-finish:
- _COREGL_FASTPATH_FUNC_END();
-}
-
-void
-fastpath_glGenFramebuffersOES(GLsizei n, GLuint *framebuffers)
-{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (framebuffers == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
-
- IF_GL_SUCCESS(_orig_fastpath_glGenFramebuffersOES(n, objid_array)) {
- for (i = 0; i < n; i++) {
- framebuffers[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_FRAMEBUFFER, objid_array[i]);
- }
- }
-
- goto finish;
-
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGenRenderbuffersOES(GLsizei n, GLuint *renderbuffers)
{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (renderbuffers == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
-
- IF_GL_SUCCESS(_orig_fastpath_glGenRenderbuffersOES(n, objid_array)) {
- for (i = 0; i < n; i++) {
- renderbuffers[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_RENDERBUFFER, objid_array[i]);
- }
- }
- goto finish;
+ _fp_glGenRenderbuffers(n, renderbuffers, FASTPATH_FUNC_TYPE_OES);
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glGetFramebufferAttachmentParameterivOES(GLenum target,
GLenum attachment, GLenum pname, GLint *params)
{
- GLint real_obj, fa_type;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- switch (pname) {
- case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
- params[0] = 0;
- _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
- pname, &real_obj);
- _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
- GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &fa_type);
- switch (fa_type) {
- case GL_TEXTURE:
- if (GET_GLUE_OBJ(GL_OBJECT_TYPE_TEXTURE, real_obj, (GLuint *)params) != 1) {
- params[0] = 0;
- goto finish;
- }
- break;
- case GL_RENDERBUFFER:
- if (GET_GLUE_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, real_obj,
- (GLuint *)params) != 1) {
- params[0] = 0;
- goto finish;
- }
- break;
- }
- break;
- default:
- _orig_fastpath_glGetFramebufferAttachmentParameterivOES(target, attachment,
- pname, params);
- break;
- }
- goto finish;
+ _fp_glGetFramebufferAttachmentParameteriv(target, attachment, pname,
+ params, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glGetQueryObjectuivEXT(real_obj, pname, params);
+ _fp_glGetQueryObjectuiv(id, pname, params, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params)
{
- GLuint glue_obj_id = _COREGL_INT_INIT_VALUE;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- _orig_fastpath_glGetQueryivEXT(target, pname, params);
-
- switch (pname) {
- case GL_CURRENT_QUERY:
- if (params[0] != 0) {
- AST(GET_GLUE_OBJ(GL_OBJECT_TYPE_QUERY, params[0], &glue_obj_id) == 1);
- params[0] = glue_obj_id;
- }
- break;
- }
+ _fp_glGetQueryiv(target, pname, params, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glBeginQueryEXT(GLenum target, GLuint id)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
- // TODO : Begin - Context Switch
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
-
- _orig_fastpath_glBeginQueryEXT(target, real_obj);
- goto finish;
+ _fp_glBeginQuery(target, id, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glDeleteQueriesEXT(GLsizei n, const GLuint *ids)
{
- int i;
- GLuint *objid_array = NULL;
- int real_n = 0;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (ids == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- if (objid_array == NULL) goto finish;
-
- for (i = 0; i < n; i++) {
- GLuint real_obj;
- if (ids[i] == 0)
- continue;
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, ids[i], &real_obj) != 1)
- continue;
- AST(fastpath_ostate_remove_object(¤t_ctx->ostate, GL_OBJECT_TYPE_QUERY,
- ids[i]) == 1);
- objid_array[real_n++] = real_obj;
- }
-
- _orig_fastpath_glDeleteQueriesEXT(real_n, objid_array);
-
- goto finish;
+ _fp_glDeleteQueries(n, ids, FASTPATH_FUNC_TYPE_EXT);
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGenQueriesEXT(GLsizei n, GLuint *ids)
{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (ids == NULL) goto finish;
- AST(current_ctx->ostate.shared != NULL);
+ _fp_glGenQueries(n, ids, FASTPATH_FUNC_TYPE_EXT);
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
-
- IF_GL_SUCCESS(_orig_fastpath_glGenQueriesEXT(n, objid_array)) {
- for (i = 0; i < n; i++) {
- ids[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_QUERY, objid_array[i]);
- }
- }
-
- goto finish;
-
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glIsFramebufferOES(GLuint framebuffer)
{
GLboolean ret = GL_FALSE;
- GLuint real_obj;
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
- ret = GL_FALSE;
- goto finish;
- }
- ret = _orig_fastpath_glIsFramebufferOES(real_obj);
+ ret = _fp_glIsFramebuffer(framebuffer, FASTPATH_FUNC_TYPE_OES);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
return ret;
}
fastpath_glIsQueryEXT(GLuint id)
{
GLboolean ret = GL_FALSE;
- GLuint real_obj;
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_QUERY, id, &real_obj) != 1) {
- ret = GL_FALSE;
- goto finish;
- }
- ret = _orig_fastpath_glIsQueryEXT(real_obj);
+ ret = _fp_glIsQuery(id, FASTPATH_FUNC_TYPE_EXT);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
return ret;
}
fastpath_glIsRenderbufferOES(GLuint renderbuffer)
{
GLboolean ret = GL_FALSE;
- GLuint real_obj;
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- ret = GL_FALSE;
- goto finish;
- }
+ ret = _fp_glIsRenderbuffer(renderbuffer, FASTPATH_FUNC_TYPE_OES);
- ret = _orig_fastpath_glIsRenderbufferOES(real_obj);
-
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
return ret;
}
void
fastpath_glBlendEquationOES(GLenum mode)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- IF_GL_SUCCESS(_orig_fastpath_glBlendEquationOES(mode)) {
- current_ctx->_blend_flag |=
- _BLEND_FLAG_BIT_gl_blend_equation_rgb |
- _BLEND_FLAG_BIT_gl_blend_equation_alpha;
+ _fp_glBlendEquation(mode, FASTPATH_FUNC_TYPE_OES);
- _orig_fastpath_glGetIntegerv(GL_BLEND_EQUATION_RGB,
- (GLint *) (current_ctx->gl_blend_equation_rgb));
- _orig_fastpath_glGetIntegerv(GL_BLEND_EQUATION_ALPHA,
- (GLint *) (current_ctx->gl_blend_equation_alpha));
- }
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha)
-{
- DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (CURR_STATE_COMPARE(gl_blend_equation_rgb, 0, modeRGB) ||
- CURR_STATE_COMPARE(gl_blend_equation_alpha, 0, modeAlpha)) {
- IF_GL_SUCCESS(_orig_fastpath_glBlendEquationSeparateOES(modeRGB, modeAlpha)) {
- current_ctx->_blend_flag |=
- _BLEND_FLAG_BIT_gl_blend_equation_rgb |
- _BLEND_FLAG_BIT_gl_blend_equation_alpha;
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
- CURR_STATE_UPDATE(gl_blend_equation_rgb, 0, modeRGB)
- CURR_STATE_UPDATE(gl_blend_equation_alpha, 0, modeAlpha)
- }
- }
- goto finish;
+ _fp_glBlendEquationSeparate(modeRGB, modeAlpha, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
GLenum dstAlpha)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (CURR_STATE_COMPARE(gl_blend_src_rgb, 0, srcRGB) ||
- CURR_STATE_COMPARE(gl_blend_dst_rgb, 0, dstRGB) ||
- CURR_STATE_COMPARE(gl_blend_src_alpha, 0, srcAlpha) ||
- CURR_STATE_COMPARE(gl_blend_dst_alpha, 0, dstAlpha)) {
- IF_GL_SUCCESS(_orig_fastpath_glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha,
- dstAlpha)) {
- current_ctx->_blend_flag |=
- _BLEND_FLAG_BIT_gl_blend_src_rgb |
- _BLEND_FLAG_BIT_gl_blend_src_alpha |
- _BLEND_FLAG_BIT_gl_blend_dst_rgb |
- _BLEND_FLAG_BIT_gl_blend_dst_alpha;
- CURR_STATE_UPDATE(gl_blend_src_rgb, 0, srcRGB)
- CURR_STATE_UPDATE(gl_blend_dst_rgb, 0, dstRGB)
- CURR_STATE_UPDATE(gl_blend_src_alpha, 0, srcAlpha)
- CURR_STATE_UPDATE(gl_blend_dst_alpha, 0, dstAlpha)
- }
- }
- goto finish;
+ _fp_glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glSampleCoveragexOES(GLclampx value, GLboolean invert)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (CURR_STATE_COMPARE(gl_sample_coverage_value, 0, value) ||
- CURR_STATE_COMPARE(gl_sample_coverage_invert, 0, invert)) {
- IF_GL_SUCCESS(_orig_fastpath_glSampleCoveragexOES(value, invert)) {
- current_ctx->_misc_flag1 |=
- _MISC_FLAG1_BIT_gl_sample_coverage_value |
- _MISC_FLAG1_BIT_gl_sample_coverage_invert;
- CURR_STATE_UPDATE(gl_sample_coverage_value, 0, value)
- CURR_STATE_UPDATE(gl_sample_coverage_invert, 0, invert)
- }
- }
- goto finish;
+ _fp_glSampleCoveragex(value, invert, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGenVertexArraysOES(GLsizei n, GLuint *arrays)
{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- if (n == 0) goto finish;
- if (arrays == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
-
- IF_GL_SUCCESS(_orig_fastpath_glGenVertexArraysOES(n, objid_array)) {
- for (i = 0; i < n; i++) {
- arrays[i] = fastpath_ostate_create_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_VERTEXARRAY, objid_array[i]);
- }
- }
- goto finish;
+ _fp_glGenVertexArrays(n, arrays, FASTPATH_FUNC_TYPE_OES);
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glBindVertexArrayOES(GLuint array)
{
- GLuint real_obj;
- int i;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, array, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- if (real_obj == 0) {
- IF_GL_SUCCESS(_orig_fastpath_glBindVertexArrayOES(real_obj)) {
- current_ctx->_misc_flag3 &= ~(_MISC_FLAG3_BIT_gl_vertex_array_binding);
- CURR_STATE_CLEAR(gl_vertex_array_binding, 0)
- for (i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
- CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
- }
- } else if (CURR_STATE_COMPARE(gl_vertex_array_binding, 0, real_obj)) {
- IF_GL_SUCCESS(_orig_fastpath_glBindVertexArrayOES(real_obj)) {
- current_ctx->_misc_flag3 |= _MISC_FLAG3_BIT_gl_vertex_array_binding;
- CURR_STATE_UPDATE(gl_vertex_array_binding, 0, real_obj)
- for (i = 0; i < current_ctx->gl_vertex_attribs_num[0]; i++)
- CURR_STATE_CLEAR(gl_vertex_array_enabled, i)
- }
- }
- goto finish;
+ _fp_glBindVertexArray(array, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glIsVertexArrayOES(GLuint array)
{
GLboolean ret = GL_FALSE;
- GLuint real_obj;
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, array, &real_obj) != 1) {
- ret = GL_FALSE;
- goto finish;
- }
-
- ret = _orig_fastpath_glIsVertexArrayOES(real_obj);
- goto finish;
+ ret = _fp_glIsVertexArray(array, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
return ret;
}
void
fastpath_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
{
- int i;
- GLuint *objid_array = NULL;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (n == 0) goto finish;
- if (arrays == NULL) goto finish;
-
- AST(current_ctx->ostate.shared != NULL);
-
- objid_array = (GLuint *)calloc(1, sizeof(GLuint) * n);
- if (objid_array == NULL) goto finish;
- {
- int real_n = 0;
-
- for (i = 0; i < n; i++) {
- GLuint real_objid;
- if (arrays[i] == 0)
- continue;
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_VERTEXARRAY, arrays[i], &real_objid) != 1)
- continue;
-
- AST(fastpath_ostate_remove_object(¤t_ctx->ostate,
- GL_OBJECT_TYPE_VERTEXARRAY, arrays[i]) == 1);
- objid_array[real_n++] = real_objid;
- }
-
- IF_GL_SUCCESS(_orig_fastpath_glDeleteVertexArraysOES(real_n, objid_array)) {
- for (i = 0; i < real_n; i++) {
- General_Trace_List *current = NULL;
- current = current_ctx->ostate.shared->using_gctxs;
-
- while (current != NULL) {
- GLGlueContext *cur_gctx = (GLGlueContext *)current->value;
-
- if (cur_gctx->initialized == 1) {
- if (cur_gctx->gl_vertex_array_binding[0] == objid_array[i])
- cur_gctx->gl_vertex_array_binding[0] = 0;
- }
- current = current->next;
- }
- }
- }
- }
-
- goto finish;
+ _fp_glDeleteVertexArrays(n, arrays, FASTPATH_FUNC_TYPE_OES);
-finish:
- if (objid_array != NULL) {
- free(objid_array);
- objid_array = NULL;
- }
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glClearDepthfOES(GLclampf depth)
{
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if CURR_STATE_COMPARE(gl_depth_clear_value, 0, depth) {
- IF_GL_SUCCESS(_orig_fastpath_glClearDepthfOES(depth)) {
- current_ctx->_clear_flag2 |= _CLEAR_FLAG2_BIT_gl_depth_clear_value;
- CURR_STATE_UPDATE(gl_depth_clear_value, 0, depth)
- }
- }
- goto finish;
+ _fp_glClearDepthf(depth, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
+static void
+_fp_glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glTexBuffer(target, internalformat, real_obj);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glTexBuffer(target, internalformat, real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glTexBufferOES(target, internalformat, real_obj);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glTexBufferEXT(target, internalformat, real_obj);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glTexBuffer(target, internalformat, buffer, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glTexBufferOES(GLenum target, GLenum internalformat, GLuint buffer)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glTexBufferOES(target, internalformat, real_obj);
+ _fp_glTexBuffer(target, internalformat, buffer, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer,
- GLintptr offset, GLsizeiptr size)
+static void
+_fp_glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer,
+ GLintptr offset, GLsizeiptr size, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glTexBufferRange(target, internalformat, real_obj, offset, size);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glTexBufferRange(target, internalformat, real_obj, offset, size);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glTexBufferRangeOES(target, internalformat, real_obj, offset, size);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glTexBufferRangeEXT(target, internalformat, real_obj, offset, size);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer,
+ GLintptr offset, GLsizeiptr size)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glTexBufferRange(target, internalformat, buffer, offset, size, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
goto finish;
}
- _orig_fastpath_glGetnUniformuiv(real_obj, location, bufSize, params);
+ _orig_fastpath_glGetnUniformuiv(real_obj, location, bufSize, params);
+
+ goto finish;
+
+finish:
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glSamplerParameterIiv(GLuint sampler, GLenum pname,
+ const GLint *param, FASTPATH_FUNC_TYPE ftype)
+{
+ GLuint real_obj;
+
+ DEFINE_FASTPAH_GL_FUNC();
+ INIT_FASTPATH_GL_FUNC();
+
+ if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_VALUE);
+ goto finish;
+ }
+
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glSamplerParameterIiv(real_obj, pname, param);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glSamplerParameterIivOES(real_obj, pname, param);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glSamplerParameterIivEXT(real_obj, pname, param);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+
+ goto finish;
+
+finish:
+ return;
+}
+
+void
+fastpath_glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint* param)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
- goto finish;
+ _fp_glSamplerParameterIiv(sampler, pname, param, FASTPATH_FUNC_TYPE_STANDARD);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *param)
+static void
+_fp_glSamplerParameterIuiv(GLuint sampler, GLenum pname,
+ const GLuint *param, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glSamplerParameterIiv(real_obj, pname, param);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glSamplerParameterIuiv(real_obj, pname, param);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glSamplerParameterIuivOES(real_obj, pname, param);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glSamplerParameterIuivEXT(real_obj, pname, param);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
fastpath_glSamplerParameterIuiv(GLuint sampler, GLenum pname,
const GLuint *param)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glSamplerParameterIuiv(real_obj, pname, param);
+ _fp_glSamplerParameterIuiv(sampler, pname, param, FASTPATH_FUNC_TYPE_STANDARD);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
-void
-fastpath_glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
+static void
+_fp_glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params,
+ FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glGetSamplerParameterIiv(real_obj, pname, params);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetSamplerParameterIiv(real_obj, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGetSamplerParameterIivOES(real_obj, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glGetSamplerParameterIivEXT(real_obj, pname, params);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
-fastpath_glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
+fastpath_glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint* params)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetSamplerParameterIiv(sampler, pname, params, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params,
+ FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glGetSamplerParameterIuiv(real_obj, pname, params);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glGetSamplerParameterIuiv(real_obj, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glGetSamplerParameterIuivOES(real_obj, pname, params);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glGetSamplerParameterIuivEXT(real_obj, pname, params);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
- _COREGL_FASTPATH_FUNC_END();
+ return;
}
void
-fastpath_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture,
- GLint level)
+fastpath_glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint* params)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glGetSamplerParameterIuiv(sampler, pname, params, FASTPATH_FUNC_TYPE_STANDARD);
+
+ _COREGL_FASTPATH_FUNC_END();
+}
+
+static void
+_fp_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture,
+ GLint level, FASTPATH_FUNC_TYPE ftype)
{
GLuint real_obj;
DEFINE_FASTPAH_GL_FUNC();
- _COREGL_FASTPATH_FUNC_BEGIN();
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
goto finish;
}
- _orig_fastpath_glFramebufferTexture(target, attachment, real_obj, level);
+ switch (ftype) {
+ case FASTPATH_FUNC_TYPE_STANDARD:
+ _orig_fastpath_glFramebufferTexture(target, attachment, real_obj, level);
+ break;
+ case FASTPATH_FUNC_TYPE_OES:
+ _orig_fastpath_glFramebufferTextureOES(target, attachment, real_obj, level);
+ break;
+ case FASTPATH_FUNC_TYPE_EXT:
+ _orig_fastpath_glFramebufferTextureEXT(target, attachment, real_obj, level);
+ break;
+ default:
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
finish:
+ return;
+}
+
+void
+fastpath_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture,
+ GLint level)
+{
+ _COREGL_FASTPATH_FUNC_BEGIN();
+
+ _fp_glFramebufferTexture(target, attachment, texture, level, FASTPATH_FUNC_TYPE_STANDARD);
+
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glFramebufferTextureOES(GLenum target, GLenum attachment,
GLuint texture, GLint level)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glFramebufferTextureOES(target, attachment, real_obj, level);
-
- goto finish;
+ _fp_glFramebufferTexture(target, attachment, texture, level, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
+
void
fastpath_glTexBufferRangeOES(GLenum target, GLenum internalformat,
GLuint buffer, GLintptr offset, GLsizeiptr size)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
-
- _orig_fastpath_glTexBufferRangeOES(target, internalformat, real_obj, offset,
- size);
- goto finish;
+ _fp_glTexBufferRange(target, internalformat, buffer, offset, size, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
+
void
fastpath_glGetSamplerParameterIivOES(GLuint sampler, GLenum pname,
GLint *params)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glGetSamplerParameterIivOES(real_obj, pname, params);
+ _fp_glGetSamplerParameterIiv(sampler, pname, params, FASTPATH_FUNC_TYPE_OES);
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
+
void
fastpath_glSamplerParameterIivOES(GLuint sampler, GLenum pname,
const GLint *param)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
-
- _orig_fastpath_glSamplerParameterIivOES(real_obj, pname, param);
- goto finish;
+ _fp_glSamplerParameterIiv(sampler, pname, param, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
fastpath_glGetSamplerParameterIuivOES(GLuint sampler, GLenum pname,
GLuint *params)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
+ _fp_glGetSamplerParameterIuiv(sampler, pname, params, FASTPATH_FUNC_TYPE_OES);
- _orig_fastpath_glGetSamplerParameterIuivOES(real_obj, pname, params);
-
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
+
void
fastpath_glSamplerParameterIuivOES(GLuint sampler, GLenum pname,
const GLuint *param)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glSamplerParameterIuivOES(real_obj, pname, param);
-
- goto finish;
+ _fp_glSamplerParameterIuiv(sampler, pname, param, FASTPATH_FUNC_TYPE_OES);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGetSamplerParameterIivEXT(GLuint sampler, GLenum pname,
GLint *params)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glGetSamplerParameterIivEXT(real_obj, pname, params);
-
- goto finish;
+ _fp_glGetSamplerParameterIiv(sampler, pname, params, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glGetSamplerParameterIuivEXT(GLuint sampler, GLenum pname,
GLuint *params)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glGetSamplerParameterIuivEXT(real_obj, pname, params);
-
- goto finish;
+ _fp_glGetSamplerParameterIuiv(sampler, pname, params, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glSamplerParameterIivEXT(GLuint sampler, GLenum pname,
const GLint *param)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
- _orig_fastpath_glSamplerParameterIivEXT(real_obj, pname, param);
-
- goto finish;
+ _fp_glSamplerParameterIiv(sampler, pname, param, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glFramebufferTextureEXT(GLenum target, GLenum attachment,
GLuint texture, GLint level)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- _orig_fastpath_glFramebufferTextureEXT(target, attachment, real_obj, level);
-
- goto finish;
+ _fp_glFramebufferTexture(target, attachment, texture, level, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glTexBufferRangeEXT(GLenum target, GLenum internalformat,
GLuint buffer, GLintptr offset, GLsizeiptr size)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (target != GL_TEXTURE_BUFFER_EXT) {
- _set_gl_error(GL_INVALID_ENUM);
- goto finish;
- }
- if (offset < 0 || size <= 0) {
- _set_gl_error(GL_INVALID_VALUE);
- goto finish;
- }
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
+ _fp_glTexBufferRange(target, internalformat, buffer, offset, size, FASTPATH_FUNC_TYPE_EXT);
- _orig_fastpath_glTexBufferRangeEXT(target, internalformat, real_obj, offset,
- size);
-
- goto finish;
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glSamplerParameterIuivEXT(GLuint sampler, GLenum pname,
const GLuint *param)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
-
- _orig_fastpath_glSamplerParameterIuivEXT(real_obj, pname, param);
- goto finish;
+ _fp_glSamplerParameterIuiv(sampler, pname, param, FASTPATH_FUNC_TYPE_EXT);
-finish:
_COREGL_FASTPATH_FUNC_END();
}
void
fastpath_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer)
{
- GLuint real_obj;
-
- DEFINE_FASTPAH_GL_FUNC();
_COREGL_FASTPATH_FUNC_BEGIN();
- INIT_FASTPATH_GL_FUNC();
- if (target != GL_TEXTURE_BUFFER_EXT)
- _set_gl_error(GL_INVALID_ENUM);
-
- if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_OPERATION);
- goto finish;
- }
+ _fp_glTexBuffer(target, internalformat, buffer, FASTPATH_FUNC_TYPE_EXT);
- _orig_fastpath_glTexBufferEXT(target, internalformat, real_obj);
-
-finish:
_COREGL_FASTPATH_FUNC_END();
}