diff options
author | Topi Pohjolainen <topi.pohjolainen@intel.com> | 2016-05-15 09:42:39 +0300 |
---|---|---|
committer | Topi Pohjolainen <topi.pohjolainen@intel.com> | 2016-07-04 08:33:41 +0300 |
commit | 575c8cbb540323a8a3065b8b16db378ff763b2e6 (patch) | |
tree | d9fc8b30959582af625a9fbd96dcf92ec257e536 /src/mesa/drivers/dri/i965/gen8_draw_upload.c | |
parent | bdab945edde9d54dbd57659bae5fa5519a4be21f (diff) | |
download | external_mesa3d-575c8cbb540323a8a3065b8b16db378ff763b2e6.zip external_mesa3d-575c8cbb540323a8a3065b8b16db378ff763b2e6.tar.gz external_mesa3d-575c8cbb540323a8a3065b8b16db378ff763b2e6.tar.bz2 |
i965: Unify vertex buffer setup
On gen >= 8 one doesn't provide ending address but number of bytes
available. This is relative to the given offset.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen8_draw_upload.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen8_draw_upload.c | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/mesa/drivers/dri/i965/gen8_draw_upload.c b/src/mesa/drivers/dri/i965/gen8_draw_upload.c index 5b3f673..d2c7853 100644 --- a/src/mesa/drivers/dri/i965/gen8_draw_upload.c +++ b/src/mesa/drivers/dri/i965/gen8_draw_upload.c @@ -52,7 +52,6 @@ static void gen8_emit_vertices(struct brw_context *brw) { struct gl_context *ctx = &brw->ctx; - uint32_t mocs_wb = brw->gen >= 9 ? SKL_MOCS_WB : BDW_MOCS_WB; bool uses_edge_flag; brw_prepare_vertices(brw); @@ -141,35 +140,29 @@ gen8_emit_vertices(struct brw_context *brw) BEGIN_BATCH(1 + 4 * nr_buffers); OUT_BATCH((_3DSTATE_VERTEX_BUFFERS << 16) | (4 * nr_buffers - 1)); for (unsigned i = 0; i < brw->vb.nr_buffers; i++) { - struct brw_vertex_buffer *buffer = &brw->vb.buffers[i]; - uint32_t dw0 = 0; - - dw0 |= i << GEN6_VB0_INDEX_SHIFT; - dw0 |= GEN7_VB0_ADDRESS_MODIFYENABLE; - dw0 |= buffer->stride << BRW_VB0_PITCH_SHIFT; - dw0 |= mocs_wb << 16; - - OUT_BATCH(dw0); - OUT_RELOC64(buffer->bo, I915_GEM_DOMAIN_VERTEX, 0, buffer->offset); - OUT_BATCH(buffer->size); + const struct brw_vertex_buffer *buffer = &brw->vb.buffers[i]; + EMIT_VERTEX_BUFFER_STATE(brw, i, buffer->bo, + buffer->offset, + buffer->offset + buffer->size, + buffer->stride, 0 /* unused */); } if (uses_draw_params) { - OUT_BATCH(brw->vb.nr_buffers << GEN6_VB0_INDEX_SHIFT | - GEN7_VB0_ADDRESS_MODIFYENABLE | - mocs_wb << 16); - OUT_RELOC64(brw->draw.draw_params_bo, I915_GEM_DOMAIN_VERTEX, 0, - brw->draw.draw_params_offset); - OUT_BATCH(brw->draw.draw_params_bo->size); + EMIT_VERTEX_BUFFER_STATE(brw, brw->vb.nr_buffers, + brw->draw.draw_params_bo, + brw->draw.draw_params_offset, + brw->draw.draw_params_bo->size, + 0 /* stride */, + 0 /* unused */); } if (brw->vs.prog_data->uses_drawid) { - OUT_BATCH((brw->vb.nr_buffers + 1) << GEN6_VB0_INDEX_SHIFT | - GEN7_VB0_ADDRESS_MODIFYENABLE | - mocs_wb << 16); - OUT_RELOC64(brw->draw.draw_id_bo, I915_GEM_DOMAIN_VERTEX, 0, - brw->draw.draw_id_offset); - OUT_BATCH(brw->draw.draw_id_bo->size); + EMIT_VERTEX_BUFFER_STATE(brw, brw->vb.nr_buffers + 1, + brw->draw.draw_id_bo, + brw->draw.draw_id_offset, + brw->draw.draw_id_bo->size, + 0 /* stride */, + 0 /* unused */); } ADVANCE_BATCH(); } |