[virglrenderer-devel] [PATCH] vrend: Enable vertex_attrib_binding also on Hosts with GLES >= 3.1
Gert Wollny
gert.wollny at collabora.com
Mon May 21 15:46:14 UTC 2018
On GLES >= 3.1 the functionality that is currently relevant for attribute
binding in virglrenderer is available. by enabling this functionality the new
code path vrend_draw_bind_vertex_binding is used.
Fixes:
dEQP-GLES3.functional.clipping.point.wide_point_z_clip
dEQP-GLES3.functional.clipping.point.wide_point_z_clip_viewport_center
dEQP-GLES3.functional.clipping.point.wide_point_z_clip_viewport_corner
On an Intel Kabylake host this also fixes:
dEQP-GLES3.functional.clipping.point.wide_point_clip
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner
but it should be noted that these three tests expect that also points with a
centre outside the clip volume will be partially drawn when they overlap with
the clip volume because of being "wide". The OpenGL standard defines that these
points should be clipped completely.
GLES 3.1 does not completely implement GL_ARB_vertex_attrib_binding, so it may
become necessary to add another flag that would indicate that only GLES style
vertex_attrib_binding is available if virglrenderer would want to use this
additional functionality. Namely
VertexAttribLPointer
is not available, and a few query constants are missing from GLES 3.1 with
respect to the extension.
Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
---
PS: obviously the bug in vrend_draw_bind_vertex_legacy that made these tests
fail is still there. If someone wants to investigate: The point size is not
properly set.
src/vrend_renderer.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
index 8cd9109..464560e 100644
--- a/src/vrend_renderer.c
+++ b/src/vrend_renderer.c
@@ -4203,7 +4203,8 @@ int vrend_renderer_init(struct vrend_if_cbs *cbs, uint32_t flags)
if (epoxy_has_gl_extension("GL_MESA_pack_invert"))
vrend_state.have_mesa_invert = true;
- if (gl_ver >= 43 || epoxy_has_gl_extension("GL_ARB_vertex_attrib_binding"))
+ if (gl_ver >= 43 || (gles && gl_ver >= 31) ||
+ epoxy_has_gl_extension("GL_ARB_vertex_attrib_binding"))
vrend_state.have_vertex_attrib_binding = true;
if (gl_ver >= 33 || epoxy_has_gl_extension("GL_ARB_sampler_objects"))
vrend_state.have_samplers = true;
--
2.17.0
More information about the virglrenderer-devel
mailing list