.. | .. |
---|
15 | 15 | #define GET_GCD(n1, n2) \ |
---|
16 | 16 | ({ \ |
---|
17 | 17 | int i; \ |
---|
18 | | - int gcd = 0; \ |
---|
| 18 | + int gcd = 1; \ |
---|
19 | 19 | for (i = 1; i <= (n1) && i <= (n2); i++) { \ |
---|
20 | 20 | if ((n1) % i == 0 && (n2) % i == 0) \ |
---|
21 | 21 | gcd = i; \ |
---|
.. | .. |
---|
108 | 108 | int rd_mode, int format, int win_num) |
---|
109 | 109 | { |
---|
110 | 110 | int i; |
---|
111 | | - bool matched = false; |
---|
| 111 | + const uint32_t *formats; |
---|
| 112 | + uint32_t format_count; |
---|
112 | 113 | |
---|
113 | | - if (rd_mode == RGA_RASTER_MODE) { |
---|
114 | | - for (i = 0; i < data->win[win_num].num_of_raster_formats; i++) { |
---|
115 | | - if (format == data->win[win_num].raster_formats[i]) { |
---|
116 | | - matched = true; |
---|
117 | | - break; |
---|
118 | | - } |
---|
119 | | - } |
---|
120 | | - } else if (rd_mode == RGA_FBC_MODE) { |
---|
121 | | - for (i = 0; i < data->win[win_num].num_of_fbc_formats; i++) { |
---|
122 | | - if (format == data->win[win_num].fbc_formats[i]) { |
---|
123 | | - matched = true; |
---|
124 | | - break; |
---|
125 | | - } |
---|
126 | | - } |
---|
127 | | - } else if (rd_mode == RGA_TILE_MODE) { |
---|
128 | | - for (i = 0; i < data->win[win_num].num_of_tile_formats; i++) { |
---|
129 | | - if (format == data->win[win_num].tile_formats[i]) { |
---|
130 | | - matched = true; |
---|
131 | | - break; |
---|
132 | | - } |
---|
133 | | - } |
---|
| 114 | + switch (rd_mode) { |
---|
| 115 | + case RGA_RASTER_MODE: |
---|
| 116 | + formats = data->win[win_num].formats[RGA_RASTER_INDEX]; |
---|
| 117 | + format_count = data->win[win_num].formats_count[RGA_RASTER_INDEX]; |
---|
| 118 | + break; |
---|
| 119 | + case RGA_FBC_MODE: |
---|
| 120 | + formats = data->win[win_num].formats[RGA_AFBC16x16_INDEX]; |
---|
| 121 | + format_count = data->win[win_num].formats_count[RGA_AFBC16x16_INDEX]; |
---|
| 122 | + break; |
---|
| 123 | + case RGA_TILE_MODE: |
---|
| 124 | + formats = data->win[win_num].formats[RGA_TILE8x8_INDEX]; |
---|
| 125 | + format_count = data->win[win_num].formats_count[RGA_TILE8x8_INDEX]; |
---|
| 126 | + break; |
---|
| 127 | + default: |
---|
| 128 | + return false; |
---|
134 | 129 | } |
---|
135 | 130 | |
---|
136 | | - return matched; |
---|
| 131 | + if (formats == NULL || format_count == 0) |
---|
| 132 | + return false; |
---|
| 133 | + |
---|
| 134 | + for (i = 0; i < format_count; i++) |
---|
| 135 | + if (format == formats[i]) |
---|
| 136 | + return true; |
---|
| 137 | + |
---|
| 138 | + return false; |
---|
137 | 139 | } |
---|
138 | 140 | |
---|
139 | 141 | static bool rga_check_align(uint32_t byte_stride_align, uint32_t format, uint16_t w_stride) |
---|