r600g: Generalize the pipe_add_vertex_attrib() functions.

This allows them to be used for VS or PS buffer resources as well.
This commit is contained in:
Henri Verbeet 2011-02-07 15:22:07 +01:00
parent b9fd1a1e4b
commit 5c59eebfae
4 changed files with 20 additions and 28 deletions

View File

@ -1492,11 +1492,10 @@ void *evergreen_create_db_flush_dsa(struct r600_pipe_context *rctx)
return rstate;
}
void evergreen_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
unsigned index,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride)
void evergreen_pipe_set_buffer_resource(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride)
{
r600_pipe_state_add_reg(rstate, R_030000_RESOURCE0_WORD0,
offset, 0xFFFFFFFF, rbuffer->bo);
@ -1519,5 +1518,4 @@ void evergreen_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_03001C_RESOURCE0_WORD7,
0xC0000000, 0xFFFFFFFF, NULL);
evergreen_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, index);
}

View File

@ -168,11 +168,10 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader
void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader);
void *evergreen_create_db_flush_dsa(struct r600_pipe_context *rctx);
void evergreen_polygon_offset_update(struct r600_pipe_context *rctx);
void evergreen_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
unsigned index,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride);
void evergreen_pipe_set_buffer_resource(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride);
/* r600_blit.c */
void r600_init_blit_functions(struct r600_pipe_context *rctx);
@ -208,11 +207,10 @@ void r600_spi_update(struct r600_pipe_context *rctx);
void r600_init_config(struct r600_pipe_context *rctx);
void *r600_create_db_flush_dsa(struct r600_pipe_context *rctx);
void r600_polygon_offset_update(struct r600_pipe_context *rctx);
void r600_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
unsigned index,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride);
void r600_pipe_set_buffer_resource(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride);
/* r600_helper.h */
int r600_conv_pipe_prim(unsigned pprim, unsigned *prim);

View File

@ -1218,11 +1218,10 @@ void *r600_create_db_flush_dsa(struct r600_pipe_context *rctx)
return rstate;
}
void r600_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
unsigned index,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride)
void r600_pipe_set_buffer_resource(struct r600_pipe_context *rctx,
struct r600_pipe_state *rstate,
struct r600_resource *rbuffer,
unsigned offset, unsigned stride)
{
r600_pipe_state_add_reg(rstate, R_038000_RESOURCE0_WORD0,
offset, 0xFFFFFFFF, rbuffer->bo);
@ -1239,5 +1238,4 @@ void r600_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
0x00000000, 0xFFFFFFFF, NULL);
r600_pipe_state_add_reg(rstate, R_038018_RESOURCE0_WORD6,
0xC0000000, 0xFFFFFFFF, NULL);
r600_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, index);
}

View File

@ -398,13 +398,11 @@ static void r600_vertex_buffer_update(struct r600_pipe_context *rctx)
offset += vertex_buffer->buffer_offset + r600_bo_offset(rbuffer->bo);
if (rctx->family >= CHIP_CEDAR) {
evergreen_pipe_add_vertex_attrib(rctx, rstate, i,
rbuffer, offset,
vertex_buffer->stride);
evergreen_pipe_set_buffer_resource(rctx, rstate, rbuffer, offset, vertex_buffer->stride);
evergreen_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, i);
} else {
r600_pipe_add_vertex_attrib(rctx, rstate, i,
rbuffer, offset,
vertex_buffer->stride);
r600_pipe_set_buffer_resource(rctx, rstate, rbuffer, offset, vertex_buffer->stride);
r600_context_pipe_state_set_fs_resource(&rctx->ctx, rstate, i);
}
}
}