[virglrenderer-devel] [PATCH 19/21] features: add transform_feedback feature
Gert Wollny
gert.wollny at collabora.com
Tue Jul 24 10:27:42 UTC 2018
Add this too for gles >= 3.0
Am Dienstag, den 24.07.2018, 13:39 +1000 schrieb Dave Airlie:
> From: Dave Airlie <airlied at redhat.com>
>
> This just stops us binding any transform feedback if we don't support
> it
> ---
> src/vrend_renderer.c | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
> index 16e66ed..8b924a4 100644
> --- a/src/vrend_renderer.c
> +++ b/src/vrend_renderer.c
> @@ -123,6 +123,7 @@ enum features_id
> feat_texture_multisample,
> feat_texture_storage,
> feat_texture_view,
> + feat_transform_feedback,
> feat_transform_feedback2,
> feat_transform_feedback3,
> feat_transform_feedback_overflow_query,
> @@ -172,6 +173,7 @@ static const struct {
> [feat_texture_multisample] = { 32, 30, {
> "GL_ARB_texture_multisample" } },
> [feat_texture_storage] = { 42, UNAVAIL, {
> "GL_ARB_texture_storage" } },
> [feat_texture_view] = { 43, UNAVAIL, { "GL_ARB_texture_view" } },
> + [feat_transform_feedback] = { 30, UNAVAIL, {
> "GL_EXT_transform_feedback" } },
This (and the one below) should also be be enabled for GLES 3.0.
> [feat_transform_feedback2] = { 40, UNAVAIL, {
> "GL_ARB_transform_feedback2" } },
> [feat_transform_feedback3] = { 40, UNAVAIL, {
> "GL_ARB_transform_feedback3" } },
> [feat_transform_feedback_overflow_query] = { 46, UNAVAIL, {
> "GL_ARB_transform_feedback_overflow_query" } },
> @@ -6318,6 +6320,9 @@ void vrend_set_streamout_targets(struct
> vrend_context *ctx,
> struct vrend_so_target *target;
> uint i;
>
> + if (!has_feature(feat_transform_feedback))
> + return;
> +
> if (num_targets) {
> bool found = false;
> struct vrend_streamout_object *obj;
> @@ -7732,15 +7737,15 @@ void vrend_renderer_fill_caps(uint32_t set,
> uint32_t version,
> }
>
> /* we need tf3 so we can do gallium skip buffers */
> - if (has_feature(feat_transform_feedback2)) {
> - caps->v1.bset.streamout_pause_resume = 1;
> - }
> + if (has_feature(feat_transform_feedback)) {
> + if (has_feature(feat_transform_feedback2))
> + caps->v1.bset.streamout_pause_resume = 1;
>
> - if (has_feature(feat_transform_feedback3)) {
> - glGetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_BUFFERS, &max);
> - caps->v1.max_streamout_buffers = max;
> - } else if (epoxy_has_gl_extension("GL_EXT_transform_feedback")) {
> - caps->v1.max_streamout_buffers = 4;
> + if (has_feature(feat_transform_feedback3)) {
> + glGetIntegerv(GL_MAX_TRANSFORM_FEEDBACK_BUFFERS, &max);
> + caps->v1.max_streamout_buffers = max;
> + } else
> + caps->v1.max_streamout_buffers = 4;
> }
>
> if (has_feature(feat_dual_src_blend)) {
More information about the virglrenderer-devel
mailing list