blorp: Pass the VB size to the VF cache workaround

Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
Jason Ekstrand
2019-11-25 12:42:42 -06:00
parent c142a40a92
commit a500a6b7f1
4 changed files with 10 additions and 6 deletions

View File

@@ -202,6 +202,7 @@ blorp_alloc_vertex_buffer(struct blorp_batch *blorp_batch,
static void
blorp_vf_invalidate_for_vb_48b_transitions(struct blorp_batch *blorp_batch,
const struct blorp_address *addrs,
UNUSED uint32_t *sizes,
unsigned num_vbs)
{
#if GEN_GEN < 11

View File

@@ -62,6 +62,7 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size,
static void
blorp_vf_invalidate_for_vb_48b_transitions(struct blorp_batch *batch,
const struct blorp_address *addrs,
uint32_t *sizes,
unsigned num_vbs);
#if GEN_GEN >= 8
@@ -344,15 +345,15 @@ blorp_emit_vertex_buffers(struct blorp_batch *batch,
memset(vb, 0, sizeof(vb));
struct blorp_address addrs[2] = {};
uint32_t size;
blorp_emit_vertex_data(batch, params, &addrs[0], &size);
blorp_fill_vertex_buffer_state(batch, vb, 0, addrs[0], size,
uint32_t sizes[2];
blorp_emit_vertex_data(batch, params, &addrs[0], &sizes[0]);
blorp_fill_vertex_buffer_state(batch, vb, 0, addrs[0], sizes[0],
3 * sizeof(float));
blorp_emit_input_varying_data(batch, params, &addrs[1], &size);
blorp_fill_vertex_buffer_state(batch, vb, 1, addrs[1], size, 0);
blorp_emit_input_varying_data(batch, params, &addrs[1], &sizes[1]);
blorp_fill_vertex_buffer_state(batch, vb, 1, addrs[1], sizes[1], 0);
blorp_vf_invalidate_for_vb_48b_transitions(batch, addrs, num_vbs);
blorp_vf_invalidate_for_vb_48b_transitions(batch, addrs, sizes, num_vbs);
const unsigned num_dwords = 1 + num_vbs * GENX(VERTEX_BUFFER_STATE_length);
uint32_t *dw = blorp_emitn(batch, GENX(3DSTATE_VERTEX_BUFFERS), num_dwords);

View File

@@ -167,6 +167,7 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size,
static void
blorp_vf_invalidate_for_vb_48b_transitions(struct blorp_batch *batch,
const struct blorp_address *addrs,
uint32_t *sizes,
unsigned num_vbs)
{
/* anv forces all vertex buffers into the low 4GB so there are never any

View File

@@ -207,6 +207,7 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size,
static void
blorp_vf_invalidate_for_vb_48b_transitions(struct blorp_batch *batch,
const struct blorp_address *addrs,
UNUSED uint32_t *sizes,
unsigned num_vbs)
{
#if GEN_GEN >= 8 && GEN_GEN < 11