mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
cell: move really_clear_tiles()
This commit is contained in:
parent
bac5900a14
commit
a1189ea882
3 changed files with 41 additions and 40 deletions
|
|
@ -117,44 +117,6 @@ release_buffer(uint buffer)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* For tiles whose status is TILE_STATUS_CLEAR, write solid-filled
|
||||
* tiles back to the main framebuffer.
|
||||
*/
|
||||
static void
|
||||
really_clear_tiles(uint surfaceIndex)
|
||||
{
|
||||
const uint num_tiles = spu.fb.width_tiles * spu.fb.height_tiles;
|
||||
uint i;
|
||||
|
||||
if (surfaceIndex == 0) {
|
||||
clear_c_tile(&spu.ctile);
|
||||
|
||||
for (i = spu.init.id; i < num_tiles; i += spu.init.num_spus) {
|
||||
uint tx = i % spu.fb.width_tiles;
|
||||
uint ty = i / spu.fb.width_tiles;
|
||||
if (spu.ctile_status[ty][tx] == TILE_STATUS_CLEAR) {
|
||||
put_tile(tx, ty, &spu.ctile, TAG_SURFACE_CLEAR, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
clear_z_tile(&spu.ztile);
|
||||
|
||||
for (i = spu.init.id; i < num_tiles; i += spu.init.num_spus) {
|
||||
uint tx = i % spu.fb.width_tiles;
|
||||
uint ty = i / spu.fb.width_tiles;
|
||||
if (spu.ztile_status[ty][tx] == TILE_STATUS_CLEAR)
|
||||
put_tile(tx, ty, &spu.ctile, TAG_SURFACE_CLEAR, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
wait_on_mask(1 << TAG_SURFACE_CLEAR);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
cmd_clear_surface(const struct cell_command_clear_surface *clear)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -87,3 +87,40 @@ put_tile(uint tx, uint ty, const tile_t *tile, int tag, int zBuf)
|
|||
0 /* rid */);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* For tiles whose status is TILE_STATUS_CLEAR, write solid-filled
|
||||
* tiles back to the main framebuffer.
|
||||
*/
|
||||
void
|
||||
really_clear_tiles(uint surfaceIndex)
|
||||
{
|
||||
const uint num_tiles = spu.fb.width_tiles * spu.fb.height_tiles;
|
||||
uint i;
|
||||
|
||||
if (surfaceIndex == 0) {
|
||||
clear_c_tile(&spu.ctile);
|
||||
|
||||
for (i = spu.init.id; i < num_tiles; i += spu.init.num_spus) {
|
||||
uint tx = i % spu.fb.width_tiles;
|
||||
uint ty = i / spu.fb.width_tiles;
|
||||
if (spu.ctile_status[ty][tx] == TILE_STATUS_CLEAR) {
|
||||
put_tile(tx, ty, &spu.ctile, TAG_SURFACE_CLEAR, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
clear_z_tile(&spu.ztile);
|
||||
|
||||
for (i = spu.init.id; i < num_tiles; i += spu.init.num_spus) {
|
||||
uint tx = i % spu.fb.width_tiles;
|
||||
uint ty = i / spu.fb.width_tiles;
|
||||
if (spu.ztile_status[ty][tx] == TILE_STATUS_CLEAR)
|
||||
put_tile(tx, ty, &spu.ctile, TAG_SURFACE_CLEAR, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
wait_on_mask(1 << TAG_SURFACE_CLEAR);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,12 +36,14 @@
|
|||
|
||||
|
||||
|
||||
void
|
||||
extern void
|
||||
get_tile(uint tx, uint ty, tile_t *tile, int tag, int zBuf);
|
||||
|
||||
void
|
||||
extern void
|
||||
put_tile(uint tx, uint ty, const tile_t *tile, int tag, int zBuf);
|
||||
|
||||
extern void
|
||||
really_clear_tiles(uint surfaceIndex);
|
||||
|
||||
|
||||
static INLINE void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue