<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Reviewed-by: Tim Rowley <<a href="mailto:timothy.o.rowley@intel.com" class="">timothy.o.rowley@intel.com</a>>
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Jun 27, 2017, at 5:49 PM, Bruce Cherniak <<a href="mailto:bruce.cherniak@intel.com" class="">bruce.cherniak@intel.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Vertex buffer state doesn't need to be validated on every call,<br class="">
only on dirty _NEW_VERTEX or indexed draws.<br class="">
<br class="">
Unconditional validation was introduced as part of patch 330d0607ed6,<br class="">
"remove pipe_index_buffer and set_index_buffer", with the expectation<br class="">
we'd optimize later.<br class="">
---<br class="">
src/gallium/drivers/swr/swr_state.cpp | 9 +++++----<br class="">
1 file changed, 5 insertions(+), 4 deletions(-)<br class="">
<br class="">
diff --git a/src/gallium/drivers/swr/swr_state.cpp b/src/gallium/drivers/swr/swr_state.cpp<br class="">
index f65e642753..6dc06ed156 100644<br class="">
--- a/src/gallium/drivers/swr/swr_state.cpp<br class="">
+++ b/src/gallium/drivers/swr/swr_state.cpp<br class="">
@@ -1212,12 +1212,13 @@ swr_update_derived(struct pipe_context *pipe,<br class="">
      SwrSetViewports(ctx->swrContext, 1, vp, vpm);<br class="">
   }<br class="">
<br class="">
-   /* Set vertex & index buffers */<br class="">
-   /* (using draw info if called by swr_draw_vbo) */<br class="">
-   /* TODO: This is always true, because the index buffer comes from<br class="">
+   /* Set vertex & index buffers<br class="">
+    * (using draw info if called by swr_draw_vbo)<br class="">
+    * If indexed draw, revalidate since index buffer comes from<br class="">
    * pipe_draw_info.<br class="">
    */<br class="">
-   if (1 || ctx->dirty & SWR_NEW_VERTEX) {<br class="">
+   if (ctx->dirty & SWR_NEW_VERTEX ||<br class="">
+      (p_draw_info && p_draw_info->index_size)) {<br class="">
      uint32_t scratch_total;<br class="">
      uint8_t *scratch = NULL;<br class="">
<br class="">
-- <br class="">
2.11.0<br class="">
<br class="">
_______________________________________________<br class="">
mesa-dev mailing list<br class="">
<a href="mailto:mesa-dev@lists.freedesktop.org" class="">mesa-dev@lists.freedesktop.org</a><br class="">
https://lists.freedesktop.org/mailman/listinfo/mesa-dev<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</body>
</html>