Provide a pass-through mechanic for the new ES3 Query methods to use the old ES2 query extension.
We will need to add the new transform feedback queries in a later patch.
TRAC #23347
Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Authored-by: Jamie Madill
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 3fd5b59..e872131 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -8637,8 +8637,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGenQueries
- UNIMPLEMENTED();
+ glGenQueriesEXT(n, ids);
}
}
catch(std::bad_alloc&)
@@ -8662,8 +8661,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glDeleteQueries
- UNIMPLEMENTED();
+ glDeleteQueriesEXT(n, ids);
}
}
catch(std::bad_alloc&)
@@ -8687,8 +8685,8 @@
return gl::error(GL_INVALID_OPERATION, GL_FALSE);
}
- // glIsQuery
- UNIMPLEMENTED();
+ // TODO: XFB queries
+ return glIsQueryEXT(id);
}
}
catch(std::bad_alloc&)
@@ -8714,8 +8712,30 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glBeginQuery
- UNIMPLEMENTED();
+ switch (target)
+ {
+ case GL_ANY_SAMPLES_PASSED:
+ case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:
+ case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
+ break;
+ default:
+ return gl::error(GL_INVALID_ENUM);
+ }
+
+ if (id == 0)
+ {
+ return gl::error(GL_INVALID_OPERATION);
+ }
+
+ if (target == GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN)
+ {
+ // TODO: XFB queries
+ UNIMPLEMENTED();
+ }
+ else
+ {
+ context->beginQuery(target, id);
+ }
}
}
catch(std::bad_alloc&)
@@ -8739,8 +8759,15 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glEndQuery
- UNIMPLEMENTED();
+ if (target == GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN)
+ {
+ // TODO: XFB queries
+ UNIMPLEMENTED();
+ }
+ else
+ {
+ glEndQueryEXT(target);
+ }
}
}
catch(std::bad_alloc&)
@@ -8764,8 +8791,15 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGetQueryiv
- UNIMPLEMENTED();
+ if (target == GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN)
+ {
+ // TODO: XFB queries
+ UNIMPLEMENTED();
+ }
+ else
+ {
+ glGetQueryivEXT(target, pname, params);
+ }
}
}
catch(std::bad_alloc&)
@@ -8789,8 +8823,8 @@
return gl::error(GL_INVALID_OPERATION);
}
- // glGetQueryObjectuiv
- UNIMPLEMENTED();
+ // TODO: XFB queries
+ glGetQueryObjectuivEXT(id, pname, params);
}
}
catch(std::bad_alloc&)