YaGL: Fix hangling of GL_QUERY_RESULT flag
authorVasily Golubev <v.golubev@samsung.com>
Thu, 21 Aug 2014 11:24:50 +0000 (15:24 +0400)
committerjinhyung.jo <jinhyung.jo@samsung.com>
Thu, 21 May 2015 02:02:34 +0000 (11:02 +0900)
In the case of calling glGetQueryObjectuiv() with
GL_QUERY_RESULT flag we must wait while passed
samples counter will be available

Change-Id: Ieff4d40c475e7738a4028f1d49c0725be9ea6e8a
Signed-off-by: Vasily Golubev <v.golubev@samsung.com>
GLES_common/yagl_gles_calls.in
GLES_common/yagl_host_gles_calls.c
GLES_common/yagl_host_gles_calls.h
GLESv2/yagl_gles3_query.c

index 294bf87eaa68ed21e5922621f5e35037342db935..ce21c1faf0765bece2618b55cb8c2c52b32a9cea 100644 (file)
@@ -181,7 +181,7 @@ void glGetTransformFeedbackVaryings(GLuint program, GLsizei *sizes, GLenum *type
 void glGenQueries(const GLuint *ids)
 void glBeginQuery(GLenum target, GLuint id)
 void glEndQuery(GLenum target)
-GLboolean glGetQueryObjectuiv(GLuint id, GLuint &result)
+GLboolean glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint &result)
 # Samplers
 void glGenSamplers(const GLuint *samplers)
 void glBindSampler(GLuint unit, GLuint sampler)
index 2329760c6cba15f31695812248588a7e7c3487e8..0e606ab9c75e27e0309f1f89ceee4c4320c27b48 100644 (file)
@@ -2538,13 +2538,14 @@ void yagl_host_glEndQuery(GLenum target)
 /*
  * glGetQueryObjectuiv wrapper. id = 173
  */
-GLboolean yagl_host_glGetQueryObjectuiv(GLuint id, GLuint *result)
+GLboolean yagl_host_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *result)
 {
     struct yagl_transport *t = yagl_get_transport();
     GLboolean retval = 0;
 
-    yagl_transport_begin(t, yagl_api_id_gles, 173, 5 * 8, 5 * 8);
+    yagl_transport_begin(t, yagl_api_id_gles, 173, 6 * 8, 6 * 8);
     yagl_transport_put_out_GLuint(t, id);
+    yagl_transport_put_out_GLenum(t, pname);
     yagl_transport_put_in_GLuint(t, result);
     yagl_transport_put_in_GLboolean(t, &retval);
     yagl_transport_end(t);
index f2b876ef6db86c7bfe7142c36e8c5129b7ba6451..7d8ff0050d69e79776e9e8a24eb9fde870161e59 100644 (file)
@@ -870,7 +870,7 @@ void yagl_host_glEndQuery(GLenum target);
 /*
  * glGetQueryObjectuiv wrapper. id = 173
  */
-GLboolean yagl_host_glGetQueryObjectuiv(GLuint id, GLuint *result);
+GLboolean yagl_host_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *result);
 
 /*
  * glGenSamplers wrapper. id = 174
index cf87e629df9a8b1192ba965c6009db4c9d950bba..39fb898e90f622dba9ade9bcf6432147f8dd0da0 100644 (file)
 #include "yagl_state.h"
 #include "yagl_host_gles_calls.h"
 
-static void yagl_gles3_query_update_result(struct yagl_gles3_query *query)
+static void yagl_gles3_query_update_result(struct yagl_gles3_query *query, GLenum pname)
 {
     if (!query->result_available) {
         query->result_available =
-            yagl_host_glGetQueryObjectuiv(query->global_name, &query->result);
+            yagl_host_glGetQueryObjectuiv(query->global_name, pname, &query->result);
     }
 }
 
@@ -106,14 +106,14 @@ void yagl_gles3_query_end(struct yagl_gles3_query *query,
 
 int yagl_gles3_query_is_result_available(struct yagl_gles3_query *query)
 {
-    yagl_gles3_query_update_result(query);
+    yagl_gles3_query_update_result(query, GL_QUERY_RESULT_AVAILABLE);
 
     return query->result_available;
 }
 
 GLuint yagl_gles3_query_get_result(struct yagl_gles3_query *query)
 {
-    yagl_gles3_query_update_result(query);
+    yagl_gles3_query_update_result(query, GL_QUERY_RESULT);
 
     return query->result;
 }