mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 01:00:10 +01:00
only fetch as much vertex data as needed
This commit is contained in:
parent
d55c4ec9d2
commit
54090bd841
3 changed files with 9 additions and 5 deletions
|
|
@ -76,7 +76,7 @@ struct cell_command_clear_tiles
|
|||
struct cell_command_render
|
||||
{
|
||||
uint prim_type;
|
||||
uint num_verts;
|
||||
uint num_verts, num_attribs;
|
||||
float xmin, ymin, xmax, ymax;
|
||||
void *vertex_data;
|
||||
} ALIGN16_ATTRIB;
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ cell_flush_prim_buffer(struct cell_context *cell)
|
|||
struct cell_command_render *render = &cell_global.command[i].render;
|
||||
render->prim_type = PIPE_PRIM_TRIANGLES;
|
||||
render->num_verts = cell->prim_buffer.num_verts;
|
||||
render->num_attribs = CELL_MAX_ATTRIBS;
|
||||
render->xmin = cell->prim_buffer.xmin;
|
||||
render->ymin = cell->prim_buffer.ymin;
|
||||
render->xmax = cell->prim_buffer.xmax;
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ render(const struct cell_command_render *render)
|
|||
const uint num_tiles = fb.width_tiles * fb.height_tiles;
|
||||
struct cell_prim_buffer prim_buffer ALIGN16_ATTRIB;
|
||||
int tag = DefaultTag;
|
||||
uint i, j;
|
||||
uint i, j, vertex_bytes;
|
||||
|
||||
/*
|
||||
printf("SPU %u: RENDER buffer dst=%p src=%p size=%d\n",
|
||||
|
|
@ -155,10 +155,13 @@ render(const struct cell_command_render *render)
|
|||
ASSERT_ALIGN16(render->vertex_data);
|
||||
ASSERT_ALIGN16(&prim_buffer);
|
||||
|
||||
/* how much vertex data */
|
||||
vertex_bytes = render->num_verts * render->num_attribs * 4 * sizeof(float);
|
||||
|
||||
/* get vertex data from main memory */
|
||||
mfc_get(&prim_buffer, /* dest */
|
||||
(unsigned int) render->vertex_data, /* src */
|
||||
sizeof(prim_buffer), /* bytes */
|
||||
vertex_bytes, /* size */
|
||||
tag,
|
||||
0, /* tid */
|
||||
0 /* rid */);
|
||||
|
|
@ -166,8 +169,8 @@ render(const struct cell_command_render *render)
|
|||
|
||||
/* loop over tiles */
|
||||
for (i = init.id; i < num_tiles; i += init.num_spus) {
|
||||
uint tx = i % fb.width_tiles;
|
||||
uint ty = i / fb.width_tiles;
|
||||
const uint tx = i % fb.width_tiles;
|
||||
const uint ty = i / fb.width_tiles;
|
||||
|
||||
get_tile(&fb, tx, ty, (uint *) tile, DefaultTag);
|
||||
wait_on_mask(1 << DefaultTag); /* XXX temporary */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue