mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
i965/blorp: Skip re-emitting urb config whenever possible
Otherwise clearing with blorp will regress performance in some
synthetic test cases.
v2: Used vsize >= 2 instead of vsize > 0, and updated the comment.
Review by Ken in one of the earlier patches revealed this.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
7644e8ab68
commit
69dfb7b2b7
1 changed files with 15 additions and 0 deletions
|
|
@ -31,6 +31,18 @@
|
|||
|
||||
#include "brw_blorp.h"
|
||||
|
||||
static bool
|
||||
gen7_blorp_skip_urb_config(const struct brw_context *brw)
|
||||
{
|
||||
if (brw->ctx.NewDriverState & (BRW_NEW_CONTEXT | BRW_NEW_URB_SIZE))
|
||||
return false;
|
||||
|
||||
/* Vertex elements along with full VUE header take 96 bytes. As the size
|
||||
* is expressed in 64 bytes, one needs at least two times that, otherwise
|
||||
* the setup can be any valid configuration.
|
||||
*/
|
||||
return brw->urb.vsize >= 2;
|
||||
}
|
||||
|
||||
/* 3DSTATE_URB_VS
|
||||
* 3DSTATE_URB_HS
|
||||
|
|
@ -59,6 +71,9 @@ gen7_blorp_emit_urb_config(struct brw_context *brw)
|
|||
const unsigned vs_chunks =
|
||||
DIV_ROUND_UP(brw->urb.min_vs_entries * vs_size * 64, chunk_size_bytes);
|
||||
|
||||
if (gen7_blorp_skip_urb_config(brw))
|
||||
return;
|
||||
|
||||
gen7_emit_push_constant_state(brw,
|
||||
urb_size / 2 /* vs_size */,
|
||||
0 /* hs_size */,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue