// Not sure about the version of the VAO binding
DEFINE_GL_GET(GL_VERTEX_ARRAY_BINDING, 0x0030, 0x99)
+DEFINE_GL_INDEXED_GET(GL_BLEND, 0x030, 0x99, GL_MAX_DRAW_BUFFERS)
+
// Start of version 3.1 -
DEFINE_GL_GET(GL_MAX_RECTANGLE_TEXTURE_SIZE, 0x0031, 0x99)
DEFINE_GL_GET(GL_MAX_TEXTURE_BUFFER_SIZE, 0x0031, 0x99)
{ "glGet", 'B', 1, "GL_DITHER", 0x0BD0},
{ "glGet", 'E', 1, "GL_BLEND_DST", 0x0BE0},
{ "glGet", 'E', 1, "GL_BLEND_SRC", 0x0BE1},
- { "glGet", 'B', 1, "GL_BLEND", 0x0BE2},
+ { "glGet,glGetI", 'B', 1, "GL_BLEND", 0x0BE2},
{ "glGet", 'E', 1, "GL_LOGIC_OP_MODE", 0x0BF0},
{ "glGet", 'B', 1, "GL_INDEX_LOGIC_OP", 0x0BF1},
{ "glGet", 'B', 1, "GL_COLOR_LOGIC_OP", 0x0BF2},
restore_buffer_binding(GL_UNIFORM_BUFFER_BINDING, GL_UNIFORM_BUFFER, remapper);
ADD_PROCESSED_STATE(GL_UNIFORM_BUFFER_BINDING, 0);
+ // Restore indexed blending state (we've already restored the global state, which sets all the indexed states)
+ for (uint i = 0; i < context_info.get_max_draw_buffers(); i++)
+ {
+ GLint enabled = 0;
+ if (get(GL_BLEND, i, &enabled, 1, true))
+ {
+ if (enabled)
+ {
+ GL_ENTRYPOINT(glEnablei)(GL_BLEND, i);
+ VOGL_CHECK_GL_ERROR;
+ }
+ else
+ {
+ GL_ENTRYPOINT(glDisablei)(GL_BLEND, i);
+ VOGL_CHECK_GL_ERROR;
+ }
+ }
+ }
+
// TODO: these GL4 guys have indexed and offset/size variants
restore_buffer_binding(GL_ATOMIC_COUNTER_BUFFER_BINDING, GL_ATOMIC_COUNTER_BUFFER, remapper);
ADD_PROCESSED_STATE(GL_ATOMIC_COUNTER_BUFFER_BINDING, 0);