<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 18. juli 2018 22:12, David Riley
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAASgrz1OpDayzyUbvG07mHUZRmWb9+yxjGgFLBK=Hyb67+YgFQ@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div dir="ltr">On Wed, Jul 18, 2018 at 1:10 PM Po-Hsien Wang
<<a href="mailto:pwang@chromium.org"
moz-do-not-send="true">pwang@chromium.org</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Shouldn't <span
style="font-size:small;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">have_gl_conditiona</span><span
style="font-size:small;text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">l_render
deps on !gles? </span></div>
</blockquote>
<div><br>
</div>
<div>To expand on this, the change as posted still fails for
me with the same fuzzing input, but adding a !gles check to
the have_gl_conditional_render assignment fixed the failure
in question.</div>
</div>
</div>
</blockquote>
<br>
Oh, are you saying gl_ver is the OpenGL ES version in the GLES case?
If so, you are of course right, and I think we have a lot more
code-paths to update...<br>
<br>
<blockquote type="cite"
cite="mid:CAASgrz1OpDayzyUbvG07mHUZRmWb9+yxjGgFLBK=Hyb67+YgFQ@mail.gmail.com">
<div dir="ltr">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex"><br>
<div class="gmail_quote">
<div dir="ltr">On Wed, Jul 18, 2018 at 1:04 AM Erik
Faye-Lund <<a
href="mailto:erik.faye-lund@collabora.com"
target="_blank" moz-do-not-send="true">erik.faye-lund@collabora.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Otherwise, it'd be
possible to generate evil commands from a rouge<br>
guest-driver that can crash the VM.<br>
<br>
This is a bit trickier than the previous one, because we
were already<br>
mixing calls to the OpenGL 3.0 version and the
GL_NV_conditional_render<br>
version, which indicates that this was previously only
safe if *both*<br>
were supported, that is OpenGL 3.0 *with*
GL_NV_conditional_render. Now<br>
this code should match the caps we generate, which
shouldn't give any<br>
percieved feature-regressions or gl-versions supported.<br>
<br>
Signed-off-by: Erik Faye-Lund <<a
href="mailto:erik.faye-lund@collabora.com"
target="_blank" moz-do-not-send="true">erik.faye-lund@collabora.com</a>><br>
---<br>
So this is a little bit tric<br>
<br>
src/vrend_renderer.c | 30
++++++++++++++++++++++++------<br>
1 file changed, 24 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c<br>
index 564807a..f34a58f 100644<br>
--- a/src/vrend_renderer.c<br>
+++ b/src/vrend_renderer.c<br>
@@ -109,6 +109,8 @@ struct global_renderer_state {<br>
bool have_ms_scaled_blit;<br>
bool have_nv_prim_restart;<br>
bool have_gl_prim_restart;<br>
+ bool have_gl_conditional_render;<br>
+ bool have_nv_conditional_render;<br>
bool have_bit_encoding;<br>
bool have_gles31_vertex_attrib_binding;<br>
bool have_tf2;<br>
@@ -4523,6 +4525,10 @@ int vrend_renderer_init(struct
vrend_if_cbs *cbs, uint32_t flags)<br>
vrend_state.have_gl_prim_restart = true;<br>
else if
(epoxy_has_gl_extension("GL_NV_primitive_restart"))<br>
vrend_state.have_nv_prim_restart = true;<br>
+ if (gl_ver >= 30)<br>
+ vrend_state.have_gl_conditional_render = true;<br>
+ else if
(epoxy_has_gl_extension("GL_NV_conditional_render"))<br>
+ vrend_state.have_nv_conditional_render = true;<br>
if (gl_ver >= 40 || (gles && gl_ver >=
30) ||<br>
epoxy_has_gl_extension("GL_ARB_transform_feedback2")) {<br>
vrend_state.have_tf2 = true;<br>
@@ -7008,11 +7014,18 @@ static void
vrend_pause_render_condition(struct vrend_context *ctx,
bool pause)<br>
{<br>
if (pause) {<br>
if (ctx->sub->cond_render_q_id)<br>
- glEndConditionalRenderNV();<br>
+ if (vrend_state.have_gl_conditional_render)<br>
+ glEndConditionalRender();<br>
+ else if
(vrend_state.have_nv_conditional_render)<br>
+ glEndConditionalRenderNV();<br>
} else {<br>
if (ctx->sub->cond_render_q_id)<br>
-
glBeginConditionalRender(ctx->sub->cond_render_q_id,<br>
-
ctx->sub->cond_render_gl_mode);<br>
+ if (vrend_state.have_gl_conditional_render)<br>
+
glBeginConditionalRender(ctx->sub->cond_render_q_id,<br>
+
ctx->sub->cond_render_gl_mode);<br>
+ else if
(vrend_state.have_nv_conditional_render)<br>
+
glBeginConditionalRenderNV(ctx->sub->cond_render_q_id,<br>
+
ctx->sub->cond_render_gl_mode);<br>
}<br>
}<br>
<br>
@@ -7025,7 +7038,10 @@ void
vrend_render_condition(struct vrend_context *ctx,<br>
GLenum glmode = 0;<br>
<br>
if (handle == 0) {<br>
- glEndConditionalRenderNV();<br>
+ if (vrend_state.have_gl_conditional_render)<br>
+ glEndConditionalRender();<br>
+ else if (vrend_state.have_nv_conditional_render)<br>
+ glEndConditionalRenderNV();<br>
ctx->sub->cond_render_q_id = 0;<br>
ctx->sub->cond_render_gl_mode = 0;<br>
return;<br>
@@ -7054,8 +7070,10 @@ void
vrend_render_condition(struct vrend_context *ctx,<br>
<br>
ctx->sub->cond_render_q_id = q->id;<br>
ctx->sub->cond_render_gl_mode = glmode;<br>
- glBeginConditionalRender(q->id, glmode);<br>
-<br>
+ if (vrend_state.have_gl_conditional_render)<br>
+ glBeginConditionalRender(q->id, glmode);<br>
+ if (vrend_state.have_nv_conditional_render)<br>
+ glBeginConditionalRenderNV(q->id, glmode);<br>
}<br>
<br>
int vrend_create_so_target(struct vrend_context *ctx,<br>
-- <br>
2.18.0.rc2<br>
<br>
</blockquote>
</div>
_______________________________________________<br>
virglrenderer-devel mailing list<br>
<a href="mailto:virglrenderer-devel@lists.freedesktop.org"
target="_blank" moz-do-not-send="true">virglrenderer-devel@lists.freedesktop.org</a><br>
<a
href="https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel</a><br>
</blockquote>
</div>
</div>
<!--'"--><br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
virglrenderer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:virglrenderer-devel@lists.freedesktop.org">virglrenderer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel">https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel</a>
</pre>
</blockquote>
<br>
</body>
</html>