diff options
author | Vasiliy Ulyanov <v.ulyanov@samsung.com> | 2015-06-09 19:06:21 +0300 |
---|---|---|
committer | jinhyung.jo <jinhyung.jo@samsung.com> | 2015-08-04 17:28:16 +0900 |
commit | 914510abddda54197bc86247ea1805c16bcb2a19 (patch) | |
tree | 3060ca9c7ccdba1b63d96f1a5255622b842f8327 | |
parent | 05c8e349471708a054f8450b78300c72a0c57536 (diff) | |
download | emulator-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.c | 5 | ||||
-rw-r--r-- | GLESv2/yagl_gles2_program.c | 2 |
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]; |