From 80771ecaedcf90ac8fb9d39a7a450d1c4ed3f5ab Mon Sep 17 00:00:00 2001 From: Stephan Hilb Date: Fri, 7 Jan 2011 20:00:32 +0100 Subject: [PATCH] Revert "r600: add support for draw_elements_base_vertex" This reverts commit e62e5b0922b6554431234a8a71c7aec7cff91864. Conflicts: src/mesa/drivers/dri/r600/r600_context.c src/mesa/drivers/dri/r600/r700_chip.c src/mesa/drivers/dri/r600/r700_render.c --- src/mesa/drivers/dri/r600/r600_context.c | 2 - src/mesa/drivers/dri/r600/r700_chip.c | 14 +++++++++++ src/mesa/drivers/dri/r600/r700_render.c | 37 +++++++++--------------------- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 5f5a502..11c4591 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -79,7 +79,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_VERSION_2_0 #define need_GL_VERSION_2_1 -#define need_GL_ARB_draw_elements_base_vertex #define need_GL_ARB_occlusion_query #define need_GL_ARB_point_parameters #define need_GL_ARB_vertex_program @@ -148,7 +147,6 @@ static const struct dri_extension card_extensions[] = { {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_ARB_pixel_buffer_object", NULL}, - {"GL_ARB_draw_elements_base_vertex", GL_ARB_draw_elements_base_vertex_functions }, #if FEATURE_OES_EGL_image {"GL_OES_EGL_image", GL_OES_EGL_image_functions}, #endif diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c index 4ec2845..3640edf 100644 --- a/src/mesa/drivers/dri/r600/r700_chip.c +++ b/src/mesa/drivers/dri/r600/r700_chip.c @@ -254,6 +254,17 @@ static void r700SendVTXState(struct gl_context *ctx, struct radeon_state_atom *a if (context->radeon.tcl.aos_count == 0) return; + BEGIN_BATCH_NO_AUTOSTATE(6); + R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, 1)); + R600_OUT_BATCH(mmSQ_VTX_BASE_VTX_LOC - ASIC_CTL_CONST_BASE_INDEX); + R600_OUT_BATCH(0); + + R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, 1)); + R600_OUT_BATCH(mmSQ_VTX_START_INST_LOC - ASIC_CTL_CONST_BASE_INDEX); + R600_OUT_BATCH(0); + END_BATCH(); + COMMIT_BATCH(); + for(i=0; imesa_program->Base.InputsRead & (1 << i)) { @@ -1505,6 +1516,9 @@ static int check_vtx(struct gl_context *ctx, struct radeon_state_atom *atom) context_t *context = R700_CONTEXT(ctx); int count = context->radeon.tcl.aos_count * 18; + if (count) + count += 6; + radeon_print(RADEON_STATE, RADEON_TRACE, "%s %d\n", __func__, count); return count; } diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index bb14a23..6a44ca3 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -245,7 +245,7 @@ static int r700NumVerts(int num_verts, int prim) } static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, - int prim, GLint basevertex) + int prim) { context_t *context = R700_CONTEXT(ctx); BATCH_LOCALS(&context->radeon); @@ -283,7 +283,6 @@ static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, total_emit = 3 /* VGT_PRIMITIVE_TYPE */ + 2 /* VGT_INDEX_TYPE */ + 2 /* NUM_INSTANCES */ - + 4 /* VTX_BASE_VTX_LOC + VTX_START_INST_LOC */ + 5 + 2; /* DRAW_INDEX */ BEGIN_BATCH_NO_AUTOSTATE(total_emit); @@ -296,11 +295,6 @@ static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, // num instances R600_OUT_BATCH(CP_PACKET3(R600_IT_NUM_INSTANCES, 0)); R600_OUT_BATCH(1); - /* offset */ - R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, 2)); - R600_OUT_BATCH(mmSQ_VTX_BASE_VTX_LOC - ASIC_CTL_CONST_BASE_INDEX); - R600_OUT_BATCH(basevertex); //VTX_BASE_VTX_LOC - R600_OUT_BATCH(0); //VTX_START_INST_LOC // draw packet R600_OUT_BATCH(CP_PACKET3(R600_IT_DRAW_INDEX, 3)); R600_OUT_BATCH(context->ind_buf.bo_offset); @@ -371,7 +365,6 @@ static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start, total_emit += 3 /* VGT_PRIMITIVE_TYPE */ + 2 /* VGT_INDEX_TYPE */ + 2 /* NUM_INSTANCES */ - + 4 /* VTX_BASE_VTX_LOC + VTX_START_INST_LOC */ + 3; /* DRAW */ BEGIN_BATCH_NO_AUTOSTATE(total_emit); @@ -384,11 +377,6 @@ static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start, // num instances R600_OUT_BATCH(CP_PACKET3(R600_IT_NUM_INSTANCES, 0)); R600_OUT_BATCH(1); - /* offset */ - R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, 2)); - R600_OUT_BATCH(mmSQ_VTX_BASE_VTX_LOC - ASIC_CTL_CONST_BASE_INDEX); - R600_OUT_BATCH(0); //VTX_BASE_VTX_LOC - R600_OUT_BATCH(0); //VTX_START_INST_LOC // draw packet if(start == 0) { @@ -446,16 +434,16 @@ static GLuint r700PredictRenderSize(struct gl_context* ctx, dwords = PRE_EMIT_STATE_BUFSZ; if (ib) - dwords += nr_prims * 18; + dwords += nr_prims * 14; else { for (i = 0; i < nr_prims; ++i) { if (prim[i].start == 0) - dwords += 14; + dwords += 10; else if (prim[i].count > 0xffff) - dwords += prim[i].count + 14; + dwords += prim[i].count + 10; else - dwords += ((prim[i].count + 1) / 2) + 14; + dwords += ((prim[i].count + 1) / 2) + 10; } } @@ -937,8 +925,7 @@ static GLboolean r700TryDrawPrims(struct gl_context *ctx, r700RunRenderPrimitive(ctx, prim[i].start, prim[i].start + prim[i].count, - prim[i].mode, - prim[i].basevertex); + prim[i].mode); else r700RunRenderPrimitiveImmediate(ctx, prim[i].start, @@ -990,17 +977,15 @@ static void r700DrawPrims(struct gl_context *ctx, /* This check should get folded into just the places that * min/max index are really needed. */ - - if (!vbo_all_varyings_in_vbos(arrays)) { - if (!index_bounds_valid) + if (!index_bounds_valid) { vbo_get_minmax_index(ctx, prim, ib, &min_index, &max_index); - /* do we want to rebase, minimizes the - * amount of data to upload? */ - if (min_index) { + } + + if (min_index) { vbo_rebase_prims( ctx, arrays, prim, nr_prims, ib, min_index, max_index, r700DrawPrims ); return; - } } + /* Make an attempt at drawing */ retval = r700TryDrawPrims(ctx, arrays, prim, nr_prims, ib, min_index, max_index); -- 1.7.1