<div dir="ltr"><div>1: Ack, thx.<br></div><div>2: u_upload_alloc can fail, i.e. set output param *ptr to NULL, for 2 reasons: alloc fails or map fails. For both there are already a fprintf/stderr, i.e., in radeon_create_bo and radeon_bo_do_map .</div><div>It looks to me that in src/gallium/drivers/ it is a common usage to just avoid to crash by doing a silent check. But it defers the fprintf to where the error comes from, i.e. libdrm calls.</div><div><br></div><div>Also I think that if drmCommandWriteRead returns -ENOMEM it should be translated to _mesa_error_no_memory(__func__<wbr>); at some point. But it seems it is not possible to use _mesa_error_no_memory in mesa/src/gallium/winsys (though it is possible from gallium/state_trackers/glx). And it would require to be in the gl context's thread to call it.</div><div><br></div><div>Regards</div><div>Julien</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 24 March 2017 at 11:19, Nicolai Hähnle <span dir="ltr"><<a href="mailto:nhaehnle@gmail.com" target="_blank">nhaehnle@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I generally like the patches in the series, thanks for that. Two points though:<br>
<br>
1. The order of patches in series is usually general code before driver code, i.e. the st/cb_bitmap should come first.<br>
<br>
2. I don't like having silent errors, as that could be confusing. In places where the error isn't propagated to the application (as it really should be...), I think we should have an fprintf to stderr.<br>
<br>
Cheers,<br>
Nicolai<span class=""><br>
<br>
On 24.03.2017 12:08, Julien Isorce wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Like done in si_state_draw.c::si_draw_vbo<br>
<br>
Signed-off-by: Julien Isorce <<a href="mailto:jisorce@oblong.com" target="_blank">jisorce@oblong.com</a>><br>
---<br>
 src/gallium/drivers/r600/<wbr>r600_state_common.c | 4 ++++<br>
 1 file changed, 4 insertions(+)<br>
<br>
diff --git a/src/gallium/drivers/r600/r60<wbr>0_state_common.c b/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
index 6f8279f..cedeb74 100644<br>
--- a/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
+++ b/src/gallium/drivers/r600/r60<wbr>0_state_common.c<br>
@@ -1746,6 +1746,10 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info<br>
<br>
                        u_upload_alloc(ctx->stream_upl<wbr>oader, start, count * 2,<br>
                                        256, &out_offset, &out_buffer, &ptr);<br>
+                       if (unlikely(!ptr)) {<br>
+                               pipe_resource_reference(&ib.b<wbr>uffer, NULL);<br>
+                               return;<br>
+                       }<br>
<br>
                        util_shorten_ubyte_elts_to_use<wbr>rptr(<br>
                                                &rctx->b.b, &ib, 0, 0, ib.offset + start, count, ptr);<br>
<br>
</blockquote>
<br>
<br>
-- <br></span>
Lerne, wie die Welt wirklich ist,<br>
Aber vergiss niemals, wie sie sein sollte.<br>
</blockquote></div><br></div>