{
COREGL_WRN("\E[40;31;1mNumber of texture unit is too big! (%d-%d)\E[0m\n", MAX_TEXTURE_UNITS, initial_ctx->gl_num_tex_units[0]);
}
+ if (initial_ctx->gl_num_transform_feedback_separate_attribs[0] > MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS)
+ {
+ COREGL_WRN("\E[40;31;1mNumber of transform feedback separate attrib is too big! (%d-%d)\E[0m\n", MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, initial_ctx->gl_num_transform_feedback_separate_attribs[0]);
+ }
+ if (initial_ctx->gl_num_uniform_buffer_bindings[0] > MAX_UNIFORM_BUFFER_BINDINGS)
+ {
+ COREGL_WRN("\E[40;31;1mNumber of uniform buffer binding is too big! (%d-%d)\E[0m\n", MAX_UNIFORM_BUFFER_BINDINGS, initial_ctx->gl_num_uniform_buffer_bindings[0]);
+ }
}
{
#endif // COREGL_USE_MODULE_TRACEPATH
//------------------//
- // _bind_flag
- flag = oldctx->_bind_flag | newctx->_bind_flag;
+ // _bind_flag1
+ flag = oldctx->_bind_flag1 | newctx->_bind_flag1;
if (flag)
{
STATE_COMPARE(gl_array_buffer_binding[0])
{
CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_ARRAY_BUFFER, newctx->gl_array_buffer_binding[0]))
}
- STATE_COMPARE(gl_copy_read_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_COPY_READ_BUFFER, newctx->gl_copy_read_buffer_binding[0]))
- }
- STATE_COMPARE(gl_copy_write_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_COPY_WRITE_BUFFER, newctx->gl_copy_write_buffer_binding[0]))
- }
STATE_COMPARE(gl_element_array_buffer_binding[0])
{
CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, newctx->gl_element_array_buffer_binding[0]))
}
- STATE_COMPARE(gl_pixel_pack_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_PIXEL_PACK_BUFFER, newctx->gl_pixel_pack_buffer_binding[0]))
- }
- STATE_COMPARE(gl_pixel_unpack_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_PIXEL_UNPACK_BUFFER, newctx->gl_pixel_unpack_buffer_binding[0]))
- }
- STATE_COMPARE(gl_transform_feedback_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, newctx->gl_transform_feedback_buffer_binding[0]))
- }
- STATE_COMPARE(gl_uniform_buffer_binding[0])
- {
- CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_UNIFORM_BUFFER, newctx->gl_uniform_buffer_binding[0]))
- }
+
if (newctx->gl_framebuffer_binding_read_used == 1)
{
STATE_COMPARE(gl_framebuffer_binding_read[0])
{
- CHECK_GL_ERROR(_orig_fastpath_glBindFramebuffer(GL_READ_FRAMEBUFFER_ANGLE, newctx->gl_framebuffer_binding_read[0]))
+ CHECK_GL_ERROR(_orig_fastpath_glBindFramebuffer(GL_READ_FRAMEBUFFER, newctx->gl_framebuffer_binding_read[0]))
}
STATE_COMPARE(gl_framebuffer_binding_draw[0])
{
- CHECK_GL_ERROR(_orig_fastpath_glBindFramebuffer(GL_DRAW_FRAMEBUFFER_ANGLE, newctx->gl_framebuffer_binding_draw[0]))
+ CHECK_GL_ERROR(_orig_fastpath_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, newctx->gl_framebuffer_binding_draw[0]))
}
}
else
}
}
+ //------------------//
+ // _bind_flag2
+ flag = oldctx->_bind_flag2 | newctx->_bind_flag2;
+ if (flag)
+ {
+ STATE_COMPARE(gl_copy_read_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_COPY_READ_BUFFER, newctx->gl_copy_read_buffer_binding[0]))
+ }
+ STATE_COMPARE(gl_copy_write_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_COPY_WRITE_BUFFER, newctx->gl_copy_write_buffer_binding[0]))
+ }
+ STATE_COMPARE(gl_pixel_pack_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_PIXEL_PACK_BUFFER, newctx->gl_pixel_pack_buffer_binding[0]))
+ }
+ STATE_COMPARE(gl_pixel_unpack_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_PIXEL_UNPACK_BUFFER, newctx->gl_pixel_unpack_buffer_binding[0]))
+ }
+ STATE_COMPARE(gl_transform_feedback_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, newctx->gl_transform_feedback_buffer_binding[0]))
+ }
+ STATE_COMPARE(gl_uniform_buffer_binding[0])
+ {
+ CHECK_GL_ERROR(_orig_fastpath_glBindBuffer(GL_UNIFORM_BUFFER, newctx->gl_uniform_buffer_binding[0]))
+ }
+ }
#ifdef COREGL_USE_MODULE_TRACEPATH
tracepath_api_trace_end("eglMakeCurrent(FP bind buffers)", trace_hint_bindbuffers, 0);
#endif // COREGL_USE_MODULE_TRACEPATH
- unsigned char _bind_flag;
-#define _BIND_FLAG_BIT_gl_array_buffer_binding FLAG_BIT_0
-#define _BIND_FLAG_BIT_gl_copy_read_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_copy_write_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_element_array_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_pixel_pack_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_pixel_unpack_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_transform_feedback_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_uniform_buffer_binding FLAG_BIT_1
-#define _BIND_FLAG_BIT_gl_framebuffer_binding FLAG_BIT_2
-#define _BIND_FLAG_BIT_gl_renderbuffer_binding FLAG_BIT_3
-#define _BIND_FLAG_BIT_gl_framebuffer_binding_read FLAG_BIT_4
-#define _BIND_FLAG_BIT_gl_framebuffer_binding_draw FLAG_BIT_5
+ unsigned char _bind_flag1;
+#define _BIND_FLAG1_BIT_gl_array_buffer_binding FLAG_BIT_0
+#define _BIND_FLAG1_BIT_gl_element_array_buffer_binding FLAG_BIT_1
+#define _BIND_FLAG1_BIT_gl_framebuffer_binding FLAG_BIT_2
+#define _BIND_FLAG1_BIT_gl_renderbuffer_binding FLAG_BIT_3
+#define _BIND_FLAG1_BIT_gl_framebuffer_binding_read FLAG_BIT_4
+#define _BIND_FLAG1_BIT_gl_framebuffer_binding_draw FLAG_BIT_5
+
+ unsigned char _bind_flag2;
+#define _BIND_FLAG2_BIT_gl_copy_read_buffer_binding FLAG_BIT_0
+#define _BIND_FLAG2_BIT_gl_copy_write_buffer_binding FLAG_BIT_1
+#define _BIND_FLAG2_BIT_gl_pixel_pack_buffer_binding FLAG_BIT_2
+#define _BIND_FLAG2_BIT_gl_pixel_unpack_buffer_binding FLAG_BIT_3
+#define _BIND_FLAG2_BIT_gl_transform_feedback_buffer_binding FLAG_BIT_4
+#define _BIND_FLAG2_BIT_gl_uniform_buffer_binding FLAG_BIT_5
unsigned char _enable_flag1;
#define _ENABLE_FLAG1_BIT_gl_blend FLAG_BIT_0
switch (target)
{
case GL_ARRAY_BUFFER:
- STATE_PROC(gl_array_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC(gl_array_buffer_binding, _bind_flag1, _BIND_FLAG1_BIT);
break;
case GL_COPY_READ_BUFFER:
- STATE_PROC_WITH_CHECK(gl_copy_read_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_copy_read_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_COPY_WRITE_BUFFER:
- STATE_PROC_WITH_CHECK(gl_copy_write_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_copy_write_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_ELEMENT_ARRAY_BUFFER:
- STATE_PROC(gl_element_array_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC(gl_element_array_buffer_binding, _bind_flag1, _BIND_FLAG1_BIT);
break;
case GL_PIXEL_PACK_BUFFER:
- STATE_PROC_WITH_CHECK(gl_pixel_pack_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_pixel_pack_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_PIXEL_UNPACK_BUFFER:
- STATE_PROC_WITH_CHECK(gl_pixel_unpack_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_pixel_unpack_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_TRANSFORM_FEEDBACK_BUFFER:
- STATE_PROC_WITH_CHECK(gl_transform_feedback_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_transform_feedback_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_UNIFORM_BUFFER:
- STATE_PROC_WITH_CHECK(gl_uniform_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC_WITH_CHECK(gl_uniform_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
default:
_set_gl_error(GL_INVALID_ENUM);
if (cur_gctx->gl_array_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_array_buffer_binding);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_array_buffer_binding);
cur_gctx->gl_array_buffer_binding[0] = 0;
}
if (cur_gctx->gl_copy_read_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_copy_read_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_copy_read_buffer_binding);
cur_gctx->gl_copy_read_buffer_binding[0] = 0;
}
if (cur_gctx->gl_copy_write_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_copy_write_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_copy_write_buffer_binding);
cur_gctx->gl_copy_write_buffer_binding[0] = 0;
}
if (cur_gctx->gl_element_array_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_element_array_buffer_binding);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_element_array_buffer_binding);
cur_gctx->gl_element_array_buffer_binding[0] = 0;
}
if (cur_gctx->gl_pixel_pack_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_pixel_pack_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_pixel_pack_buffer_binding);
cur_gctx->gl_pixel_pack_buffer_binding[0] = 0;
}
if (cur_gctx->gl_pixel_unpack_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_pixel_unpack_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_pixel_unpack_buffer_binding);
cur_gctx->gl_pixel_unpack_buffer_binding[0] = 0;
}
if (cur_gctx->gl_transform_feedback_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_transform_feedback_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_transform_feedback_buffer_binding);
cur_gctx->gl_transform_feedback_buffer_binding[0] = 0;
}
if (cur_gctx->gl_uniform_buffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_uniform_buffer_binding);
+ cur_gctx->_bind_flag2 &= (~_BIND_FLAG2_BIT_gl_uniform_buffer_binding);
cur_gctx->gl_uniform_buffer_binding[0] = 0;
}
IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_read);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_read);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_framebuffer_binding_read;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_framebuffer_binding_read;
current_ctx->gl_framebuffer_binding_read[0] = real_obj;
}
}
IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_draw);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_draw);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_framebuffer_binding_draw;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_framebuffer_binding_draw;
current_ctx->gl_framebuffer_binding_draw[0] = real_obj;
}
}
IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_framebuffer_binding;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_framebuffer_binding;
current_ctx->gl_framebuffer_binding[0] = real_obj;
}
}
IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_read);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_read);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_framebuffer_binding_read;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_framebuffer_binding_read;
current_ctx->gl_framebuffer_binding_read[0] = real_obj;
}
}
IF_GL_SUCCESS(_orig_fastpath_glBindFramebuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_draw);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_draw);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_framebuffer_binding_draw;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_framebuffer_binding_draw;
current_ctx->gl_framebuffer_binding_draw[0] = real_obj;
}
}
if (cur_gctx->gl_framebuffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding);
cur_gctx->gl_framebuffer_binding[0] = 0;
}
if (cur_gctx->gl_framebuffer_binding_read[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_read);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_read);
cur_gctx->gl_framebuffer_binding_read[0] = 0;
}
if (cur_gctx->gl_framebuffer_binding_draw[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_framebuffer_binding_draw);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_framebuffer_binding_draw);
cur_gctx->gl_framebuffer_binding_draw[0] = 0;
}
IF_GL_SUCCESS(_orig_fastpath_glBindRenderbuffer(target, real_obj))
{
if (real_obj == 0)
- current_ctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_renderbuffer_binding);
+ current_ctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_renderbuffer_binding);
else
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_gl_renderbuffer_binding;
+ current_ctx->_bind_flag1 |= _BIND_FLAG1_BIT_gl_renderbuffer_binding;
current_ctx->gl_renderbuffer_binding[0] = real_obj;
}
}
if (cur_gctx->gl_renderbuffer_binding[0] == objid_array[i])
{
- cur_gctx->_bind_flag &= (~_BIND_FLAG_BIT_gl_renderbuffer_binding);
+ cur_gctx->_bind_flag1 &= (~_BIND_FLAG1_BIT_gl_renderbuffer_binding);
cur_gctx->gl_renderbuffer_binding[0] = 0;
}
switch (target)
{
case GL_TRANSFORM_FEEDBACK_BUFFER:
- STATE_PROC(gl_transform_feedback_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC(gl_transform_feedback_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
case GL_UNIFORM_BUFFER:
- STATE_PROC(gl_uniform_buffer_binding, _bind_flag, _BIND_FLAG_BIT);
+ STATE_PROC(gl_uniform_buffer_binding, _bind_flag2, _BIND_FLAG2_BIT);
break;
default:
_set_gl_error(GL_INVALID_ENUM);
{ \
IF_GL_SUCCESS(_orig_fastpath_glBindBufferRange(target, index, real_obj, offset, size)) \
{ \
- current_ctx->_bind_flag |= _BIND_FLAG_BIT_##gl_state; \
+ current_ctx->_bind_flag2 |= _BIND_FLAG2_BIT_##gl_state; \
current_ctx->gl_state##_array[index] = real_obj; \
current_ctx->gl_state##_array_offset[index] = offset; \
current_ctx->gl_state##_array_size[index] = size; \