vrend,features: Add feature for timer queries

On GLES GL_EXT_disjoint_timer_query provides this functionality, so we
should make use of it.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
macos/master
Gert Wollny 6 years ago committed by Gert Wollny
parent 4617b9ae46
commit 718f338a3e
  1. 8
      src/vrend_renderer.c

@ -144,6 +144,7 @@ enum features_id
feat_texture_srgb_decode,
feat_texture_storage,
feat_texture_view,
feat_timer_query,
feat_transform_feedback,
feat_transform_feedback2,
feat_transform_feedback3,
@ -223,6 +224,7 @@ static const struct {
FEAT(texture_srgb_decode, UNAVAIL, UNAVAIL, "GL_EXT_texture_sRGB_decode" ),
FEAT(texture_storage, 42, 30, "GL_ARB_texture_storage" ),
FEAT(texture_view, 43, UNAVAIL, "GL_ARB_texture_view" ),
FEAT(timer_query, 33, UNAVAIL, "GL_ARB_timer_query", "GL_EXT_disjoint_timer_query"),
FEAT(transform_feedback, 30, 30, "GL_EXT_transform_feedback" ),
FEAT(transform_feedback2, 40, 30, "GL_ARB_transform_feedback2" ),
FEAT(transform_feedback3, 40, UNAVAIL, "GL_ARB_transform_feedback3" ),
@ -7924,9 +7926,13 @@ int vrend_create_query(struct vrend_context *ctx, uint32_t handle,
q->gltype = GL_ANY_SAMPLES_PASSED;
break;
case PIPE_QUERY_TIMESTAMP:
if (!has_feature(feat_timer_query))
return EINVAL;
q->gltype = GL_TIMESTAMP;
break;
case PIPE_QUERY_TIME_ELAPSED:
if (!has_feature(feat_timer_query))
return EINVAL;
q->gltype = GL_TIME_ELAPSED;
break;
case PIPE_QUERY_PRIMITIVES_GENERATED:
@ -8010,7 +8016,7 @@ int vrend_end_query(struct vrend_context *ctx, uint32_t handle)
return EINVAL;
if (vrend_is_timer_query(q->gltype)) {
if (vrend_state.use_gles && q->gltype == GL_TIMESTAMP) {
if (q->gltype == GL_TIMESTAMP && !has_feature(feat_timer_query)) {
report_gles_warn(ctx, GLES_WARN_TIMESTAMP);
} else if (q->gltype == GL_TIMESTAMP) {
glQueryCounter(q->id, q->gltype);

Loading…
Cancel
Save