summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasiliy Ulyanov <v.ulyanov@samsung.com>2015-06-09 19:06:21 +0300
committerjinhyung.jo <jinhyung.jo@samsung.com>2015-08-04 17:28:16 +0900
commit914510abddda54197bc86247ea1805c16bcb2a19 (patch)
tree3060ca9c7ccdba1b63d96f1a5255622b842f8327
parent05c8e349471708a054f8450b78300c72a0c57536 (diff)
downloademulator-yagl-914510abddda54197bc86247ea1805c16bcb2a19.tar.gz
emulator-yagl-914510abddda54197bc86247ea1805c16bcb2a19.tar.bz2
emulator-yagl-914510abddda54197bc86247ea1805c16bcb2a19.zip
YaGL: Add program link status check
According to the OGLES2.0 spec: void UseProgram(uint program); If program has not been successfully linked, the error INVALID_OPERATION is generated and the current rendering state is not modified. Change-Id: I481a494c210e76ee4db319ae569d3491ade1d35a Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
-rw-r--r--GLESv2/yagl_gles2_calls.c5
-rw-r--r--GLESv2/yagl_gles2_program.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/GLESv2/yagl_gles2_calls.c b/GLESv2/yagl_gles2_calls.c
index 67ce9f0..6d4bb24 100644
--- a/GLESv2/yagl_gles2_calls.c
+++ b/GLESv2/yagl_gles2_calls.c
@@ -2064,6 +2064,11 @@ YAGL_API void glUseProgram(GLuint program)
YAGL_SET_ERR(GL_INVALID_OPERATION);
goto out;
}
+
+ if (!program_obj->linked) {
+ YAGL_SET_ERR(GL_INVALID_OPERATION);
+ goto out;
+ }
}
if (!ctx->pre_use_program(ctx, program_obj)) {
diff --git a/GLESv2/yagl_gles2_program.c b/GLESv2/yagl_gles2_program.c
index 3609955..e5dd335 100644
--- a/GLESv2/yagl_gles2_program.c
+++ b/GLESv2/yagl_gles2_program.c
@@ -327,7 +327,7 @@ void yagl_gles2_program_link(struct yagl_gles2_program *program)
sizeof(params)/sizeof(params[0]),
NULL);
- program->linked = 1;
+ program->linked = params[0];
program->link_status = params[0];
program->info_log_length = params[1];