Mercurial > sdl-ios-xcode
comparison src/video/ps3/spulibs/spu_common.h @ 3257:94fb40a4a9a7
Merged Martin's code changes from Google Summer of Code 2009
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 07 Sep 2009 04:51:29 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
3256:83c87f2b2aab | 3257:94fb40a4a9a7 |
---|---|
1 /* | |
2 * SDL - Simple DirectMedia Layer | |
3 * CELL BE Support for PS3 Framebuffer | |
4 * Copyright (C) 2008, 2009 International Business Machines Corporation | |
5 * | |
6 * This library is free software; you can redistribute it and/or modify it | |
7 * under the terms of the GNU Lesser General Public License as published | |
8 * by the Free Software Foundation; either version 2.1 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This library is distributed in the hope that it will be useful, but | |
12 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 * Lesser General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU Lesser General Public | |
17 * License along with this library; if not, write to the Free Software | |
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 | |
19 * USA | |
20 * | |
21 * Martin Lowinski <lowinski [at] de [dot] ibm [ibm] com> | |
22 * Dirk Herrendoerfer <d.herrendoerfer [at] de [dot] ibm [dot] com> | |
23 * SPE code based on research by: | |
24 * Rene Becker | |
25 * Thimo Emmerich | |
26 */ | |
27 | |
28 /* Common definitions/makros for SPUs */ | |
29 | |
30 #ifndef _SPU_COMMON_H | |
31 #define _SPU_COMMON_H | |
32 | |
33 #include <stdio.h> | |
34 #include <stdint.h> | |
35 #include <string.h> | |
36 | |
37 /* Tag management */ | |
38 #define DMA_WAIT_TAG(_tag) \ | |
39 mfc_write_tag_mask(1<<(_tag)); \ | |
40 mfc_read_tag_status_all(); | |
41 | |
42 /* SPU mailbox messages */ | |
43 #define SPU_READY 0 | |
44 #define SPU_START 1 | |
45 #define SPU_FIN 2 | |
46 #define SPU_EXIT 3 | |
47 | |
48 /* Tags */ | |
49 #define RETR_BUF 0 | |
50 #define STR_BUF 1 | |
51 #define TAG_INIT 2 | |
52 | |
53 /* Buffersizes */ | |
54 #define MAX_HDTV_WIDTH 1920 | |
55 #define MAX_HDTV_HEIGHT 1080 | |
56 /* One stride of HDTV */ | |
57 #define BUFFER_SIZE 7680 | |
58 | |
59 /* fb_writer ppu/spu exchange parms */ | |
60 struct fb_writer_parms_t { | |
61 uint8_t *data; | |
62 uint8_t *center; | |
63 uint32_t out_line_stride; | |
64 uint32_t in_line_stride; | |
65 uint32_t bounded_input_height; | |
66 uint32_t bounded_input_width; | |
67 uint32_t fb_pixel_size; | |
68 | |
69 /* This padding is to fulfill the need for 16 byte alignment. On parm change, update! */ | |
70 char padding[4]; | |
71 } __attribute__((aligned(128))); | |
72 | |
73 /* yuv2rgb ppu/spu exchange parms */ | |
74 struct yuv2rgb_parms_t { | |
75 uint8_t* y_plane; | |
76 uint8_t* v_plane; | |
77 uint8_t* u_plane; | |
78 | |
79 uint8_t* dstBuffer; | |
80 | |
81 unsigned int src_pixel_width; | |
82 unsigned int src_pixel_height; | |
83 | |
84 /* This padding is to fulfill the need for 16 byte alignment. On parm change, update! */ | |
85 char padding[128 - ((4 * sizeof(uint8_t *) + 2 * sizeof(unsigned int)) & 0x7F)]; | |
86 } __attribute__((aligned(128))); | |
87 | |
88 /* bilin_scaler ppu/spu exchange parms */ | |
89 struct scale_parms_t { | |
90 uint8_t* y_plane; | |
91 uint8_t* v_plane; | |
92 uint8_t* u_plane; | |
93 | |
94 uint8_t* dstBuffer; | |
95 | |
96 unsigned int src_pixel_width; | |
97 unsigned int src_pixel_height; | |
98 | |
99 unsigned int dst_pixel_width; | |
100 unsigned int dst_pixel_height; | |
101 | |
102 /* This padding is to fulfill the need for 16 byte alignment. On parm change, update! */ | |
103 char padding[128 - ((4 * sizeof(uint8_t *) + 4 * sizeof(unsigned int)) & 0x7F)]; | |
104 } __attribute__((aligned(128))); | |
105 | |
106 #endif /* _SPU_COMMON_H */ | |
107 | |
108 |