bool glsm_ctl(enum glsm_state_ctl state, void *data) { static bool imm_vbo_enable = false; switch (state) { case GLSM_CTL_IS_FRAMEBUFFER_LOCKED: return glsm_fb_lock(NULL); case GLSM_CTL_IMM_VBO_DRAW: if (imm_vbo_draw == NULL || !imm_vbo_enable) return false; imm_vbo_draw(NULL); break; case GLSM_CTL_IMM_VBO_DISABLE: if (imm_vbo_disable == NULL || !imm_vbo_enable) return false; imm_vbo_disable(NULL); break; case GLSM_CTL_IS_IMM_VBO: return imm_vbo_enable; case GLSM_CTL_SET_IMM_VBO: imm_vbo_enable = true; break; case GLSM_CTL_UNSET_IMM_VBO: imm_vbo_enable = false; break; case GLSM_CTL_PROC_ADDRESS_GET: { glsm_ctx_proc_address_t *proc = (glsm_ctx_proc_address_t*)data; if (!hw_render.get_proc_address) return false; proc->addr = hw_render.get_proc_address; } break; case GLSM_CTL_STATE_CONTEXT_RESET: rglgen_resolve_symbols(hw_render.get_proc_address); break; case GLSM_CTL_STATE_CONTEXT_INIT: return glsm_state_ctx_init(data); case GLSM_CTL_STATE_SETUP: glsm_state_setup(); break; case GLSM_CTL_STATE_UNBIND: glsm_state_unbind(); break; case GLSM_CTL_STATE_BIND: glsm_state_bind(); break; case GLSM_CTL_NONE: default: break; } return true; }
bool glsm_ctl(enum glsm_state_ctl state, void *data) { switch (state) { case GLSM_CTL_IMM_VBO_DRAW: return false; case GLSM_CTL_IMM_VBO_DISABLE: return false; case GLSM_CTL_IS_IMM_VBO: return false; case GLSM_CTL_SET_IMM_VBO: break; case GLSM_CTL_UNSET_IMM_VBO: break; case GLSM_CTL_PROC_ADDRESS_GET: { glsm_ctx_proc_address_t *proc = (glsm_ctx_proc_address_t*)data; if (!hw_render.get_proc_address) return false; proc->addr = hw_render.get_proc_address; } break; case GLSM_CTL_STATE_CONTEXT_RESET: rglgen_resolve_symbols(hw_render.get_proc_address); break; case GLSM_CTL_STATE_CONTEXT_DESTROY: glsm_state_ctx_destroy(data); break; case GLSM_CTL_STATE_CONTEXT_INIT: return glsm_state_ctx_init(data); case GLSM_CTL_STATE_SETUP: glsm_state_setup(); break; case GLSM_CTL_STATE_UNBIND: glsm_state_unbind(); break; case GLSM_CTL_STATE_BIND: glsm_state_bind(); break; case GLSM_CTL_NONE: default: break; } return true; }