1 /**************************************************************************
3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
35 get_tile(uint tx
, uint ty
, tile_t
*tile
, int tag
, int zBuf
)
37 const uint offset
= ty
* spu
.fb
.width_tiles
+ tx
;
38 const uint bytesPerTile
= TILE_SIZE
* TILE_SIZE
* (zBuf
? spu
.fb
.zsize
: 4);
39 const ubyte
*src
= zBuf
? spu
.fb
.depth_start
: spu
.fb
.color_start
;
41 src
+= offset
* bytesPerTile
;
43 ASSERT(tx
< spu
.fb
.width_tiles
);
44 ASSERT(ty
< spu
.fb
.height_tiles
);
47 printf("get_tile: dest: %p src: 0x%x size: %d\n",
48 tile, (unsigned int) src, bytesPerTile);
50 mfc_get(tile
->ui
, /* dest in local memory */
51 (unsigned int) src
, /* src in main memory */
60 put_tile(uint tx
, uint ty
, const tile_t
*tile
, int tag
, int zBuf
)
62 const uint offset
= ty
* spu
.fb
.width_tiles
+ tx
;
63 const uint bytesPerTile
= TILE_SIZE
* TILE_SIZE
* (zBuf
? spu
.fb
.zsize
: 4);
64 ubyte
*dst
= zBuf
? spu
.fb
.depth_start
: spu
.fb
.color_start
;
66 dst
+= offset
* bytesPerTile
;
68 ASSERT(tx
< spu
.fb
.width_tiles
);
69 ASSERT(ty
< spu
.fb
.height_tiles
);
72 printf("SPU %u: put_tile: src: %p dst: 0x%x size: %d\n",
74 tile, (unsigned int) dst, bytesPerTile);
76 mfc_put((void *) tile
->ui
, /* src in local memory */
77 (unsigned int) dst
, /* dst in main memory */