[Mesa-dev] i965/blorp: Use flat vertex inputs instead of uniforms

Topi Pohjolainen topi.pohjolainen at intel.com
Thu Jun 23 19:16:56 UTC 2016


In addition to the actual vertex coordinates blorp will get another
vertex input buffer providing the constants that are until now
provided as uniforms. This will remove the need to configure push
constants and their allocation in the pipeline.

First three patches refactor the vertex data setup for blorp. The
existing logic in blorp already supports all gens (gen6-gen9). I
chose to change the core upload logic accordingly and simply use that
for blorp.

Patches 5-8 pack the constants in blorp programs into vec4s. By
default compiler puts input variables two full hardware registers
apart. Having them in vec4s drops the need to repack them.

Last four patches take actual advantage of the change by dropping
unnecessary pipeline reconfiguration.

CC: Kenneth Graunke <kenneth at whitecape.org>
CC: Jason Ekstrand <jason at jlekstrand.net>

Topi Pohjolainen (18):
  i965/draw: Expose vertex buffer state setup
  i965: Unify vertex buffer setup
  i965/blorp: Split vertex data and element setup
  i965/blorp: Use core vertex buffer state setup
  i965/blorp: Rename push constants to inputs
  i965/blorp: Share input slot between pixel kill and blend/scaled
  i965/blorp: Load tranformation coordinates as vec4
  i965/blorp: Drop LOAD_UNIFORM macro
  i965/blorp: Store input read mask
  i965/blorp: Add support for flat input buffer
  i965/blorp: Tell vertex fetcher about flat inputs
  i965/blorp: Prepare for more than two vertex attributes
  i965/blorp: Use flat inputs instead of uniforms
  i965/blorp: Remove support for push constants
  i965/urb: Allow blorp to record current settings
  i965/blorp: Fix the size requirement for vertex elements
  i965/blorp/gen7+: Stop trashing push constant allocation
  i965/blorp/gen7+: Do not trigger push constant space reconfig

 src/mesa/drivers/dri/i965/brw_blorp.c         |  18 +-
 src/mesa/drivers/dri/i965/brw_blorp.h         |  81 ++++++---
 src/mesa/drivers/dri/i965/brw_blorp_blit.cpp  | 135 +++++++++------
 src/mesa/drivers/dri/i965/brw_blorp_clear.cpp |  15 +-
 src/mesa/drivers/dri/i965/brw_context.h       |  12 +-
 src/mesa/drivers/dri/i965/brw_draw.h          |  13 ++
 src/mesa/drivers/dri/i965/brw_draw_upload.c   |  74 +++++---
 src/mesa/drivers/dri/i965/gen6_blorp.c        | 240 +++++++++++++-------------
 src/mesa/drivers/dri/i965/gen7_blorp.c        | 153 ++++------------
 src/mesa/drivers/dri/i965/gen7_urb.c          |  93 +++++-----
 src/mesa/drivers/dri/i965/gen8_blorp.c        |  86 ++-------
 src/mesa/drivers/dri/i965/gen8_draw_upload.c  |  41 ++---
 12 files changed, 448 insertions(+), 513 deletions(-)

-- 
2.5.5



More information about the mesa-dev mailing list