summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTopi Pohjolainen <topi.pohjolainen@intel.com>2016-05-15 09:48:58 +0300
committerTopi Pohjolainen <topi.pohjolainen@intel.com>2016-07-04 08:37:44 +0300
commitf2c472fcb330c42126e36789c6a2e6e8d96f45db (patch)
tree1fce44a3777268a5015488d96331b8ad2f7deb66
parent4f7e68799f8693e01bfe191f7c2420087145f087 (diff)
i965/blorp: Use core vertex buffer state setup
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
-rw-r--r--src/mesa/drivers/dri/i965/gen6_blorp.c62
1 files changed, 14 insertions, 48 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.c b/src/mesa/drivers/dri/i965/gen6_blorp.c
index e9340df084c6..eb11156dd850 100644
--- a/src/mesa/drivers/dri/i965/gen6_blorp.c
+++ b/src/mesa/drivers/dri/i965/gen6_blorp.c
@@ -30,52 +30,8 @@
#include "brw_state.h"
#include "brw_blorp.h"
-
-static void
-gen6_blorp_emit_vertex_buffer_state(struct brw_context *brw,
- unsigned num_elems,
- unsigned vbo_size,
- uint32_t vertex_offset)
-{
- /* 3DSTATE_VERTEX_BUFFERS */
- const int num_buffers = 1;
- const int batch_length = 1 + 4 * num_buffers;
-
- uint32_t dw0 = GEN6_VB0_ACCESS_VERTEXDATA |
- (num_elems * sizeof(float)) << BRW_VB0_PITCH_SHIFT;
-
- if (brw->gen >= 7)
- dw0 |= GEN7_VB0_ADDRESS_MODIFYENABLE;
-
- switch (brw->gen) {
- case 7:
- dw0 |= GEN7_MOCS_L3 << 16;
- break;
- case 8:
- dw0 |= BDW_MOCS_WB << 16;
- break;
- case 9:
- dw0 |= SKL_MOCS_WB << 16;
- break;
- }
-
- BEGIN_BATCH(batch_length);
- OUT_BATCH((_3DSTATE_VERTEX_BUFFERS << 16) | (batch_length - 2));
- OUT_BATCH(dw0);
- if (brw->gen >= 8) {
- OUT_RELOC64(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0, vertex_offset);
- OUT_BATCH(vbo_size);
- } else {
- /* start address */
- OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
- vertex_offset);
- /* end address */
- OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_VERTEX, 0,
- vertex_offset + vbo_size - 1);
- OUT_BATCH(0);
- }
- ADVANCE_BATCH();
-}
+#include "vbo/vbo.h"
+#include "brw_draw.h"
static void
gen6_blorp_emit_vertex_data(struct brw_context *brw,
@@ -131,9 +87,19 @@ gen6_blorp_emit_vertex_data(struct brw_context *brw,
&vertex_offset);
memcpy(vertex_data, vertices, sizeof(vertices));
+ /* 3DSTATE_VERTEX_BUFFERS */
+ const int num_buffers = 1;
+ const int batch_length = 1 + 4 * num_buffers;
+
+ BEGIN_BATCH(batch_length);
+ OUT_BATCH((_3DSTATE_VERTEX_BUFFERS << 16) | (batch_length - 2));
+
const unsigned blorp_num_vue_elems = 2;
- gen6_blorp_emit_vertex_buffer_state(brw, blorp_num_vue_elems,
- sizeof(vertices), vertex_offset);
+ const unsigned stride = blorp_num_vue_elems * sizeof(float);
+ EMIT_VERTEX_BUFFER_STATE(brw, 0 /* buffer_nr */, brw->batch.bo,
+ vertex_offset, vertex_offset + sizeof(vertices),
+ stride, 0 /* steprate */);
+ ADVANCE_BATCH();
}
void