<div dir="ltr"><div>Seems reasonable to me.  I would say we should set it in Vulkan too except that the only way you can get a buffer size of 0 is invalid usage so meh.<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 8, 2017 at 7:47 PM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">According to the Broadwell VERTEX_BUFFER_STATE documentation,<br>
<br>
   "VERTEX_BUFFER_STATE.Null Vertex Buffer must be set when the<br>
    VERTEX_BUFFER_STATE.Buffer Size is 0x0.<br>
---<br>
 src/intel/blorp/blorp_genX_<wbr>exec.h             | 2 ++<br>
 src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c | 5 ++++-<br>
 2 files changed, 6 insertions(+), 1 deletion(-)<br>
<br>
I'm not sure why anyone would ever /use/ a vertex buffer of size 0,<br>
but...easy enough to follow the required programming...<br>
<br>
diff --git a/src/intel/blorp/blorp_genX_<wbr>exec.h b/src/intel/blorp/blorp_genX_<wbr>exec.h<br>
index 53892620986..e3fb6d9ae5f 100644<br>
--- a/src/intel/blorp/blorp_genX_<wbr>exec.h<br>
+++ b/src/intel/blorp/blorp_genX_<wbr>exec.h<br>
@@ -280,6 +280,7 @@ blorp_emit_vertex_buffers(<wbr>struct blorp_batch *batch,<br>
    vb[0].BufferAccessType = VERTEXDATA;<br>
    vb[0].EndAddress = vb[0].BufferStartingAddress;<br>
    vb[0].EndAddress.offset += size - 1;<br>
+   vb[0].NullVertexBuffer = size == 0;<br>
 #elif GEN_GEN == 4<br>
    vb[0].BufferAccessType = VERTEXDATA;<br>
    vb[0].MaxIndex = 2;<br>
@@ -301,6 +302,7 @@ blorp_emit_vertex_buffers(<wbr>struct blorp_batch *batch,<br>
    vb[1].BufferAccessType = INSTANCEDATA;<br>
    vb[1].EndAddress = vb[1].BufferStartingAddress;<br>
    vb[1].EndAddress.offset += size - 1;<br>
+   vb[1].NullVertexBuffer = size == 0;<br>
 #elif GEN_GEN == 4<br>
    vb[1].BufferAccessType = INSTANCEDATA;<br>
    vb[1].MaxIndex = 0;<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
index ecf5a9ae68d..7fe1f12d5ed 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>genX_state_upload.c<br>
@@ -317,12 +317,14 @@ genX(emit_vertex_buffer_state)<wbr>(struct brw_context *brw,<br>
                                unsigned stride,<br>
                                unsigned step_rate)<br>
 {<br>
+   UNUSED unsigned size = end_offset - start_offset;<br>
+<br>
    struct GENX(VERTEX_BUFFER_STATE) buf_state = {<br>
       .VertexBufferIndex = buffer_nr,<br>
       .BufferPitch = stride,<br>
       .BufferStartingAddress = ro_bo(bo, start_offset),<br>
 #if GEN_GEN >= 8<br>
-      .BufferSize = end_offset - start_offset,<br>
+      .BufferSize = size,<br>
 #endif<br>
<br>
 #if GEN_GEN >= 7<br>
@@ -334,6 +336,7 @@ genX(emit_vertex_buffer_state)<wbr>(struct brw_context *brw,<br>
       .InstanceDataStepRate = step_rate,<br>
 #if GEN_GEN >= 5<br>
       .EndAddress = ro_bo(bo, end_offset - 1),<br>
+      .NullVertexBuffer = size == 0,<br>
 #endif<br>
 #endif<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2.14.2<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>