Cell: trivial clean-ups
[mesa.git] / src / gallium / drivers / cell / spu / spu_tile.c
1 /**************************************************************************
2 *
3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4 * All Rights Reserved.
5 *
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:
13 *
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
16 * of the Software.
17 *
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.
25 *
26 **************************************************************************/
27
28
29
30 #include "spu_tile.h"
31 #include "spu_main.h"
32
33
34 void
35 get_tile(uint tx, uint ty, tile_t *tile, int tag, int zBuf)
36 {
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;
40
41 src += offset * bytesPerTile;
42
43 ASSERT(tx < spu.fb.width_tiles);
44 ASSERT(ty < spu.fb.height_tiles);
45 ASSERT_ALIGN16(tile);
46 /*
47 printf("get_tile: dest: %p src: 0x%x size: %d\n",
48 tile, (unsigned int) src, bytesPerTile);
49 */
50 mfc_get(tile->ui, /* dest in local memory */
51 (unsigned int) src, /* src in main memory */
52 bytesPerTile,
53 tag,
54 0, /* tid */
55 0 /* rid */);
56 }
57
58
59 void
60 put_tile(uint tx, uint ty, const tile_t *tile, int tag, int zBuf)
61 {
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;
65
66 dst += offset * bytesPerTile;
67
68 ASSERT(tx < spu.fb.width_tiles);
69 ASSERT(ty < spu.fb.height_tiles);
70 ASSERT_ALIGN16(tile);
71 /*
72 printf("SPU %u: put_tile: src: %p dst: 0x%x size: %d\n",
73 spu.init.id,
74 tile, (unsigned int) dst, bytesPerTile);
75 */
76 mfc_put((void *) tile->ui, /* src in local memory */
77 (unsigned int) dst, /* dst in main memory */
78 bytesPerTile,
79 tag,
80 0, /* tid */
81 0 /* rid */);
82 }
83