diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_blorp.c | 62 |
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 e9340df084c..eb11156dd85 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 |