INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
CURR_STATE_UPDATE(gl_current_program, 0, real_obj)
}
}
+ else if(current_ctx->gl_transform_feedback_active[0] == GL_TRUE &&
+ current_ctx->gl_transform_feedback_paused[0] == GL_FALSE) {
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
CURR_STATE_UPDATE(gl_read_buffer, 0, mode)
}
}
+ else if (current_ctx->gl_framebuffer_binding_read[0] && mode == GL_BACK) {
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
goto finish;
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_VALUE);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TRANSFORMFEEDBACK, id, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
CURR_STATE_UPDATE(gl_transform_feedback_binding, 0, real_obj)
}
}
+ else if(current_ctx->gl_transform_feedback_active[0] == GL_TRUE &&
+ current_ctx->gl_transform_feedback_paused[0] == GL_FALSE) {
+ _set_gl_error(GL_INVALID_OPERATION);
+ goto finish;
+ }
+
goto finish;
finish:
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
if (params == NULL ||
GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAMPIPELINE, pipeline, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAMPIPELINE, pipeline, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
void
fastpath_glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
{
- GLuint real_obj;
+ 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_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ if (GET_REAL_OBJ(GL_OBJECT_TYPE_PROGRAM, program, &real_program_obj) != 1) {
+ _set_gl_error(GL_INVALID_OPERATION);
+ 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_glUseProgramStages(pipeline, stages, real_obj);
+ _orig_fastpath_glUseProgramStages(real_pipeline_obj, stages, real_program_obj);
goto finish;
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_FRAMEBUFFER, framebuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_VALUE);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_VALUE);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_RENDERBUFFER, renderbuffer, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_VALUE);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1) {
- _set_gl_error(GL_OUT_OF_MEMORY);
+ _set_gl_error(GL_INVALID_VALUE);
goto finish;
}
INIT_FASTPATH_GL_FUNC();
if (n < 0) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
if (n == 0) goto finish;
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
_orig_fastpath_glTexBuffer(target, internalformat, real_obj);
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_BUFFER, buffer, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
_orig_fastpath_glTexBufferRange(target, internalformat, real_obj, offset, size);
INIT_FASTPATH_GL_FUNC();
if (GET_REAL_OBJ(GL_OBJECT_TYPE_SAMPLER, sampler, &real_obj) != 1) {
- _set_gl_error(GL_INVALID_VALUE);
+ _set_gl_error(GL_INVALID_OPERATION);
goto finish;
}
_orig_fastpath_glGetSamplerParameterIiv(real_obj, pname, params);