1 /****************************************************************************
2 **
3 ** Copyright (C) 2013 Imagination Technologies Limited, www.imgtec.com
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39
40 #include <private/qdrawhelper_p.h>
41 #include <private/qdrawhelper_mips_dsp_p.h>
42 #include <private/qpaintengine_raster_p.h>
43
44 QT_BEGIN_NAMESPACE
45
qt_memfill32(quint32 * dest,quint32 color,qsizetype count)46 void qt_memfill32(quint32 *dest, quint32 color, qsizetype count)
47 {
48 qt_memfill32_asm_mips_dsp(dest, color, count);
49 }
50
qt_blend_argb32_on_argb32_mips_dsp(uchar * destPixels,int dbpl,const uchar * srcPixels,int sbpl,int w,int h,int const_alpha)51 void qt_blend_argb32_on_argb32_mips_dsp(uchar *destPixels, int dbpl,
52 const uchar *srcPixels, int sbpl,
53 int w, int h,
54 int const_alpha)
55
56 {
57 #ifdef QT_DEBUG_DRAW
58 fprintf(stdout,
59 "qt_blend_argb32_on_argb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
60 destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
61 fflush(stdout);
62 #endif
63
64 const uint *src = (const uint *) srcPixels;
65 uint *dst = (uint *) destPixels;
66 if (const_alpha == 256) {
67 for (int y=0; y<h; ++y) {
68 qt_blend_argb32_on_argb32_const_alpha_256_mips_dsp_asm(dst, src, w);
69 dst = (quint32 *)(((uchar *) dst) + dbpl);
70 src = (const quint32 *)(((const uchar *) src) + sbpl);
71 }
72 } else if (const_alpha != 0) {
73 const_alpha = (const_alpha * 255) >> 8;
74 for (int y=0; y<h; ++y) {
75 if (h%2 > 0) {
76 uint s = BYTE_MUL(src[0], const_alpha);
77 dst[0] = s + BYTE_MUL(dst[0], qAlpha(~s));
78 h--;
79 dst++;
80 src++;
81 }
82 qt_blend_argb32_on_argb32_mips_dsp_asm_x2(dst, src, h, const_alpha);
83 dst = (quint32 *)(((uchar *) dst) + dbpl);
84 src = (const quint32 *)(((const uchar *) src) + sbpl);
85 }
86 }
87 }
88
qt_blend_rgb32_on_rgb32_mips_dsp(uchar * destPixels,int dbpl,const uchar * srcPixels,int sbpl,int w,int h,int const_alpha)89 void qt_blend_rgb32_on_rgb32_mips_dsp(uchar *destPixels, int dbpl,
90 const uchar *srcPixels, int sbpl,
91 int w, int h,
92 int const_alpha)
93 {
94 #ifdef QT_DEBUG_DRAW
95 fprintf(stdout,
96 "qt_blend_rgb32_on_rgb32: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n",
97 destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
98 fflush(stdout);
99 #endif
100
101 if (const_alpha != 256) {
102 qt_blend_argb32_on_argb32_mips_dsp(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
103 return;
104 }
105
106 const uint *src = (const uint *) srcPixels;
107 uint *dst = (uint *) destPixels;
108 int len = w * 4;
109 for (int y=0; y<h; ++y) {
110 memcpy(dst, src, len);
111 dst = (quint32 *)(((uchar *) dst) + dbpl);
112 src = (const quint32 *)(((const uchar *) src) + sbpl);
113 }
114 }
115
116 #if defined(__MIPS_DSPR2__)
qt_blend_rgb16_on_rgb16_mips_dspr2(uchar * destPixels,int dbpl,const uchar * srcPixels,int sbpl,int w,int h,int const_alpha)117 void qt_blend_rgb16_on_rgb16_mips_dspr2(uchar *destPixels, int dbpl,
118 const uchar *srcPixels, int sbpl,
119 int w, int h,
120 int const_alpha)
121 {
122 if (const_alpha == 256) {
123 if (w < 256) {
124 const quint16 *src = (const quint16*) srcPixels;
125 quint16 *dst = (quint16*) destPixels;
126 for (int y = 0; y < h; ++y) {
127 qt_blend_rgb16_on_rgb16_const_alpha_256_mips_dsp_asm(dst, src, w);
128 dst = (quint16*) (((uchar*) dst) + dbpl);
129 src = (quint16*) (((uchar*) src) + sbpl);
130 }
131 }
132 else {
133 int length = w << 1;
134 while (h--) {
135 memcpy(destPixels, srcPixels, length);
136 destPixels += dbpl;
137 srcPixels += sbpl;
138 }
139 }
140 }
141 else if (const_alpha != 0) {
142 const quint16 *src = (const quint16*) srcPixels;
143 quint16 *dst = (quint16*) destPixels;
144 for (int y = 0; y < h; ++y) {
145 qt_blend_rgb16_on_rgb16_mips_dspr2_asm(dst, src, w, const_alpha);
146 dst = (quint16*) (((uchar*) dst) + dbpl);
147 src = (quint16*) (((uchar*) src) + sbpl);
148 }
149 }
150 }
151 #else
qt_blend_rgb16_on_rgb16_mips_dsp(uchar * destPixels,int dbpl,const uchar * srcPixels,int sbpl,int w,int h,int const_alpha)152 void qt_blend_rgb16_on_rgb16_mips_dsp(uchar *destPixels, int dbpl,
153 const uchar *srcPixels, int sbpl,
154 int w, int h,
155 int const_alpha)
156 {
157 if (const_alpha == 256) {
158 if (w < 256) {
159 const quint16 *src = (const quint16*) srcPixels;
160 quint16 *dst = (quint16*) destPixels;
161 for (int y = 0; y < h; ++y) {
162 qt_blend_rgb16_on_rgb16_const_alpha_256_mips_dsp_asm(dst, src, w);
163 dst = (quint16*) (((uchar*) dst) + dbpl);
164 src = (quint16*) (((uchar*) src) + sbpl);
165 }
166 }
167 else {
168 int length = w << 1;
169 while (h--) {
170 memcpy(destPixels, srcPixels, length);
171 destPixels += dbpl;
172 srcPixels += sbpl;
173 }
174 }
175 }
176 else if (const_alpha != 0) {
177 const quint16 *src = (const quint16*) srcPixels;
178 quint16 *dst = (quint16*) destPixels;
179 for (int y = 0; y < h; ++y) {
180 qt_blend_rgb16_on_rgb16_mips_dsp_asm(dst, src, w, const_alpha);
181 dst = (quint16*) (((uchar*) dst) + dbpl);
182 src = (quint16*) (((uchar*) src) + sbpl);
183 }
184 }
185 }
186 #endif
187
comp_func_Source_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)188 void comp_func_Source_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
189 {
190 if (const_alpha == 255) {
191 ::memcpy(dest, src, length * sizeof(uint));
192 } else {
193 int ialpha = 255 - const_alpha;
194 if (length%2 > 0) {
195 dest[0] = INTERPOLATE_PIXEL_255(src[0], const_alpha, dest[0], ialpha);
196 length--;
197 dest++;
198 src++;
199 }
200 comp_func_Source_dsp_asm_x2(dest, src, length, const_alpha);
201 }
202 }
203
qt_destFetchARGB32_mips_dsp(uint * buffer,QRasterBuffer * rasterBuffer,int x,int y,int length)204 uint * QT_FASTCALL qt_destFetchARGB32_mips_dsp(uint *buffer,
205 QRasterBuffer *rasterBuffer,
206 int x, int y, int length)
207 {
208 const uint *data = (const uint *)rasterBuffer->scanLine(y) + x;
209 buffer = destfetchARGB32_asm_mips_dsp(buffer, data, length);
210 return buffer;
211 }
212
qt_destStoreARGB32_mips_dsp(QRasterBuffer * rasterBuffer,int x,int y,const uint * buffer,int length)213 void QT_FASTCALL qt_destStoreARGB32_mips_dsp(QRasterBuffer *rasterBuffer, int x, int y,
214 const uint *buffer, int length)
215 {
216 uint *data = (uint *)rasterBuffer->scanLine(y) + x;
217 qt_destStoreARGB32_asm_mips_dsp(data, buffer, length);
218 }
219
comp_func_solid_SourceOver_mips_dsp(uint * dest,int length,uint color,uint const_alpha)220 void QT_FASTCALL comp_func_solid_SourceOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
221 {
222 if (const_alpha != 255)
223 color = BYTE_MUL(color, const_alpha);
224 if (length%2 > 0) {
225 dest[0] = color + BYTE_MUL(dest[0], qAlpha(~color));
226 length--;
227 dest++;
228 }
229 comp_func_solid_Source_dsp_asm_x2(dest, length, color, qAlpha(~color));
230 }
231
comp_func_solid_DestinationOver_mips_dsp(uint * dest,int length,uint color,uint const_alpha)232 void QT_FASTCALL comp_func_solid_DestinationOver_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
233 {
234 if (const_alpha != 255)
235 color = BYTE_MUL(color, const_alpha);
236 if (length%2 > 0) {
237 uint d = dest[0];
238 dest[0] = d + BYTE_MUL(color, qAlpha(~d));
239 length--;
240 dest++;
241 }
242 comp_func_solid_DestinationOver_dsp_asm_x2(dest, length, color);
243 }
244
comp_func_DestinationOver_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)245 void QT_FASTCALL comp_func_DestinationOver_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
246 {
247 if (length%2 > 0) {
248 if (const_alpha == 255) {
249 uint d = dest[0];
250 dest[0] = d + BYTE_MUL(src[0], qAlpha(~d));
251 } else {
252 uint d = dest[0];
253 uint s = BYTE_MUL(src[0], const_alpha);
254 dest[0] = d + BYTE_MUL(s, qAlpha(~d));
255 }
256 length--;
257 dest++;
258 src++;
259 }
260 comp_func_DestinationOver_dsp_asm_x2(dest, src, length, const_alpha);
261 }
262
comp_func_solid_SourceIn_mips_dsp(uint * dest,int length,uint color,uint const_alpha)263 void QT_FASTCALL comp_func_solid_SourceIn_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
264 {
265 if (length%2 > 0) {
266 if (const_alpha == 255) {
267 dest[0] = BYTE_MUL(color, qAlpha(dest[0]));
268 } else {
269 uint tmp_color = BYTE_MUL(color, const_alpha);
270 uint cia = 255 - const_alpha;
271 uint d = dest[0];
272 dest[0] = INTERPOLATE_PIXEL_255(tmp_color, qAlpha(d), d, cia);
273 }
274 length--;
275 dest++;
276 }
277 comp_func_solid_SourceIn_dsp_asm_x2(dest, length, color, const_alpha);
278 }
279
comp_func_SourceIn_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)280 void QT_FASTCALL comp_func_SourceIn_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
281 {
282 if (length%2 > 0) {
283 if (const_alpha == 255) {
284 dest[0] = BYTE_MUL(src[0], qAlpha(dest[0]));
285 } else {
286 uint cia = 255 - const_alpha;
287 uint d = dest[0];
288 uint s = BYTE_MUL(src[0], const_alpha);
289 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(d), d, cia);
290 }
291 length--;
292 dest++;
293 src++;
294 }
295 comp_func_SourceIn_dsp_asm_x2(dest, src, length, const_alpha);
296 }
297
comp_func_solid_DestinationIn_mips_dsp(uint * dest,int length,uint color,uint const_alpha)298 void QT_FASTCALL comp_func_solid_DestinationIn_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
299 {
300 uint a = qAlpha(color);
301 if (const_alpha != 255) {
302 a = BYTE_MUL(a, const_alpha) + 255 - const_alpha;
303 }
304 if (length%2 > 0) {
305 dest[0] = BYTE_MUL(dest[0], a);
306 length--;
307 dest++;
308 }
309 comp_func_solid_DestinationIn_dsp_asm_x2(dest, length, a);
310 }
311
comp_func_DestinationIn_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)312 void QT_FASTCALL comp_func_DestinationIn_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
313 {
314 if (length%2 > 0) {
315 if (const_alpha == 255) {
316 dest[0] = BYTE_MUL(dest[0], qAlpha(src[0]));
317 } else {
318 int cia = 255 - const_alpha;
319 uint a = BYTE_MUL(qAlpha(src[0]), const_alpha) + cia;
320 dest[0] = BYTE_MUL(dest[0], a);
321 }
322 length--;
323 src++;
324 dest++;
325 }
326 comp_func_DestinationIn_dsp_asm_x2(dest, src, length, const_alpha);
327 }
328
comp_func_solid_DestinationOut_mips_dsp(uint * dest,int length,uint color,uint const_alpha)329 void QT_FASTCALL comp_func_solid_DestinationOut_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
330 {
331 uint a = qAlpha(~color);
332 if (const_alpha != 255) {
333 a = BYTE_MUL(a, const_alpha) + 255 - const_alpha;
334 }
335 if (length%2 > 0) {
336 dest[0] = BYTE_MUL(dest[0], a);
337 length--;
338 dest++;
339 }
340 comp_func_solid_DestinationIn_dsp_asm_x2(dest, length, a);
341 }
342
comp_func_DestinationOut_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)343 void QT_FASTCALL comp_func_DestinationOut_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
344 {
345 if (length%2 > 0) {
346 if (const_alpha == 255) {
347 dest[0] = BYTE_MUL(dest[0], qAlpha(~src[0]));
348 } else {
349 int cia = 255 - const_alpha;
350 uint sia = BYTE_MUL(qAlpha(~src[0]), const_alpha) + cia;
351 dest[0] = BYTE_MUL(dest[0], sia);
352 }
353 length--;
354 dest++;
355 src++;
356 }
357 comp_func_DestinationOut_dsp_asm_x2(dest, src, length, const_alpha);
358 }
359
comp_func_solid_SourceAtop_mips_dsp(uint * dest,int length,uint color,uint const_alpha)360 void QT_FASTCALL comp_func_solid_SourceAtop_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
361 {
362 if (const_alpha != 255) {
363 color = BYTE_MUL(color, const_alpha);
364 }
365 uint sia = qAlpha(~color);
366 if (length%2 > 0) {
367 dest[0] = INTERPOLATE_PIXEL_255(color, qAlpha(dest[0]), dest[0], sia);
368 length--;
369 dest++;
370 }
371 comp_func_solid_SourceAtop_dsp_asm_x2(dest, length, color, sia);
372 }
373
comp_func_SourceAtop_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)374 void QT_FASTCALL comp_func_SourceAtop_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
375 {
376 if (length%2 > 0) {
377 if (const_alpha == 255) {
378 uint s = src[0];
379 uint d = dest[0];
380 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(d), d, qAlpha(~s));
381 } else {
382 uint s = BYTE_MUL(src[0], const_alpha);
383 uint d = dest[0];
384 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(d), d, qAlpha(~s));
385 }
386 length--;
387 dest++;
388 src++;
389 }
390 comp_func_SourceAtop_dsp_asm_x2(dest, src, length, const_alpha);
391 }
392
393
comp_func_solid_DestinationAtop_mips_dsp(uint * dest,int length,uint color,uint const_alpha)394 void QT_FASTCALL comp_func_solid_DestinationAtop_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
395 {
396 uint a = qAlpha(color);
397 if (const_alpha != 255) {
398 color = BYTE_MUL(color, const_alpha);
399 a = qAlpha(color) + 255 - const_alpha;
400 }
401 if (length%2 > 0) {
402 uint d = dest[0];
403 dest[0] = INTERPOLATE_PIXEL_255(d, a, color, qAlpha(~d));
404 length--;
405 dest++;
406 }
407 comp_func_solid_DestinationAtop_dsp_asm_x2(dest, length, color, a);
408 }
409
comp_func_DestinationAtop_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)410 void QT_FASTCALL comp_func_DestinationAtop_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
411 {
412 if (length%2 > 0) {
413 if (const_alpha == 255) {
414 uint s = src[0];
415 uint d = dest[0];
416 dest[0] = INTERPOLATE_PIXEL_255(d, qAlpha(s), s, qAlpha(~d));
417 } else {
418 int cia = 255 - const_alpha;
419 uint s = BYTE_MUL(src[0], const_alpha);
420 uint d = dest[0];
421 uint a = qAlpha(s) + cia;
422 dest[0] = INTERPOLATE_PIXEL_255(d, a, s, qAlpha(~d));
423 }
424 length--;
425 dest++;
426 src++;
427 }
428 comp_func_DestinationAtop_dsp_asm_x2(dest, src, length, const_alpha);
429 }
430
comp_func_solid_XOR_mips_dsp(uint * dest,int length,uint color,uint const_alpha)431 void QT_FASTCALL comp_func_solid_XOR_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
432 {
433 if (const_alpha != 255)
434 color = BYTE_MUL(color, const_alpha);
435 uint sia = qAlpha(~color);
436
437 if (length%2 > 0) {
438 uint d = dest[0];
439 dest[0] = INTERPOLATE_PIXEL_255(color, qAlpha(~d), d, sia);
440 length--;
441 dest++;
442 }
443 comp_func_solid_XOR_dsp_asm_x2(dest, length, color, sia);
444 }
445
comp_func_XOR_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)446 void QT_FASTCALL comp_func_XOR_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
447 {
448 if (length%2 > 0) {
449 if (const_alpha == 255) {
450 uint d = dest[0];
451 uint s = src[0];
452 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(~d), d, qAlpha(~s));
453 } else {
454 uint d = dest[0];
455 uint s = BYTE_MUL(src[0], const_alpha);
456 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(~d), d, qAlpha(~s));
457 }
458 length--;
459 dest++;
460 src++;
461 }
462 comp_func_XOR_dsp_asm_x2(dest, src, length, const_alpha);
463 }
464
comp_func_solid_SourceOut_mips_dsp(uint * dest,int length,uint color,uint const_alpha)465 void QT_FASTCALL comp_func_solid_SourceOut_mips_dsp(uint *dest, int length, uint color, uint const_alpha)
466 {
467 if (length%2 > 0) {
468 if (const_alpha == 255) {
469 dest[0] = BYTE_MUL(color, qAlpha(~dest[0]));
470 } else {
471 uint tmp_color = BYTE_MUL(color, const_alpha);
472 int cia = 255 - const_alpha;
473 uint d = dest[0];
474 dest[0] = INTERPOLATE_PIXEL_255(tmp_color, qAlpha(~d), d, cia);
475 }
476 length--;
477 dest++;
478 }
479 comp_func_solid_SourceOut_dsp_asm_x2(dest, length, color, const_alpha);
480 }
481
comp_func_SourceOut_mips_dsp(uint * dest,const uint * src,int length,uint const_alpha)482 void QT_FASTCALL comp_func_SourceOut_mips_dsp(uint *dest, const uint *src, int length, uint const_alpha)
483 {
484 if (length%2 > 0) {
485 if (const_alpha == 255) {
486 dest[0] = BYTE_MUL(src[0], qAlpha(~dest[0]));
487 } else {
488 int cia = 255 - const_alpha;
489 uint s = BYTE_MUL(src[0], const_alpha);
490 uint d = dest[0];
491 dest[0] = INTERPOLATE_PIXEL_255(s, qAlpha(~d), d, cia);
492 }
493 length--;
494 dest++;
495 src++;
496 }
497 comp_func_SourceOut_dsp_asm_x2(dest, src, length, const_alpha);
498 }
499
qt_fetchUntransformed_888_mips_dsp(uint * buffer,const Operator *,const QSpanData * data,int y,int x,int length)500 const uint * QT_FASTCALL qt_fetchUntransformed_888_mips_dsp (uint *buffer, const Operator *, const QSpanData *data,
501 int y, int x, int length)
502 {
503 const uchar *line = data->texture.scanLine(y) + x * 3;
504 fetchUntransformed_888_asm_mips_dsp(buffer, line, length);
505 return buffer;
506 }
507
qt_fetchUntransformed_444_mips_dsp(uint * buffer,const Operator *,const QSpanData * data,int y,int x,int length)508 const uint * QT_FASTCALL qt_fetchUntransformed_444_mips_dsp (uint *buffer, const Operator *, const QSpanData *data,
509 int y, int x, int length)
510 {
511 const uchar *line = data->texture.scanLine(y) + x * 2;
512 fetchUntransformed_444_asm_mips_dsp(buffer, line, length);
513 return buffer;
514 }
515
qt_fetchUntransformed_argb8565_premultiplied_mips_dsp(uint * buffer,const Operator *,const QSpanData * data,int y,int x,int length)516 const uint * QT_FASTCALL qt_fetchUntransformed_argb8565_premultiplied_mips_dsp (uint *buffer, const Operator *, const QSpanData *data,
517 int y, int x, int length)
518 {
519 const uchar *line = data->texture.scanLine(y) + x * 3;
520 fetchUntransformed_argb8565_premultiplied_asm_mips_dsp(buffer, line, length);
521 return buffer;
522 }
523
524 #if defined(__MIPS_DSPR2__)
525 extern "C" void qConvertRgb16To32_asm_mips_dspr2(quint32 *dest, const quint16 *src, int length);
526
qt_fetchUntransformedRGB16_mips_dspr2(uint * buffer,const Operator *,const QSpanData * data,int y,int x,int length)527 const uint *QT_FASTCALL qt_fetchUntransformedRGB16_mips_dspr2(uint *buffer, const Operator *,
528 const QSpanData *data, int y, int x,
529 int length)
530 {
531 const quint16 *scanLine = (const quint16 *)data->texture.scanLine(y) + x;
532 qConvertRgb16To32_asm_mips_dspr2(buffer, scanLine, length);
533 return buffer;
534 }
535 #endif
536
537 QT_END_NAMESPACE
538