• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2013 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // loadimage.h: Defines image loading functions
8 
9 #ifndef IMAGEUTIL_LOADIMAGE_H_
10 #define IMAGEUTIL_LOADIMAGE_H_
11 
12 #include <stddef.h>
13 #include <stdint.h>
14 #include <memory>
15 
16 namespace angle
17 {
18 class WorkerThreadPool;
19 struct ImageLoadContext
20 {
21     // Satisfy chromium-style
22     ImageLoadContext();
23     ~ImageLoadContext();
24     ImageLoadContext(const ImageLoadContext &other);
25 
26     // Passed to Load* functions as the context
27     std::shared_ptr<WorkerThreadPool> singleThreadPool;
28     std::shared_ptr<WorkerThreadPool> multiThreadPool;
29 };
30 
31 void LoadA8ToRGBA8(const ImageLoadContext &context,
32                    size_t width,
33                    size_t height,
34                    size_t depth,
35                    const uint8_t *input,
36                    size_t inputRowPitch,
37                    size_t inputDepthPitch,
38                    uint8_t *output,
39                    size_t outputRowPitch,
40                    size_t outputDepthPitch);
41 
42 void LoadA8ToBGRA8(const ImageLoadContext &context,
43                    size_t width,
44                    size_t height,
45                    size_t depth,
46                    const uint8_t *input,
47                    size_t inputRowPitch,
48                    size_t inputDepthPitch,
49                    uint8_t *output,
50                    size_t outputRowPitch,
51                    size_t outputDepthPitch);
52 
53 void LoadA32FToRGBA32F(const ImageLoadContext &context,
54                        size_t width,
55                        size_t height,
56                        size_t depth,
57                        const uint8_t *input,
58                        size_t inputRowPitch,
59                        size_t inputDepthPitch,
60                        uint8_t *output,
61                        size_t outputRowPitch,
62                        size_t outputDepthPitch);
63 
64 void LoadA16FToRGBA16F(const ImageLoadContext &context,
65                        size_t width,
66                        size_t height,
67                        size_t depth,
68                        const uint8_t *input,
69                        size_t inputRowPitch,
70                        size_t inputDepthPitch,
71                        uint8_t *output,
72                        size_t outputRowPitch,
73                        size_t outputDepthPitch);
74 
75 void LoadL8ToRGBA8(const ImageLoadContext &context,
76                    size_t width,
77                    size_t height,
78                    size_t depth,
79                    const uint8_t *input,
80                    size_t inputRowPitch,
81                    size_t inputDepthPitch,
82                    uint8_t *output,
83                    size_t outputRowPitch,
84                    size_t outputDepthPitch);
85 
86 void LoadL8ToBGRA8(const ImageLoadContext &context,
87                    size_t width,
88                    size_t height,
89                    size_t depth,
90                    const uint8_t *input,
91                    size_t inputRowPitch,
92                    size_t inputDepthPitch,
93                    uint8_t *output,
94                    size_t outputRowPitch,
95                    size_t outputDepthPitch);
96 
97 void LoadL32FToRGBA32F(const ImageLoadContext &context,
98                        size_t width,
99                        size_t height,
100                        size_t depth,
101                        const uint8_t *input,
102                        size_t inputRowPitch,
103                        size_t inputDepthPitch,
104                        uint8_t *output,
105                        size_t outputRowPitch,
106                        size_t outputDepthPitch);
107 
108 void LoadL16FToRGBA16F(const ImageLoadContext &context,
109                        size_t width,
110                        size_t height,
111                        size_t depth,
112                        const uint8_t *input,
113                        size_t inputRowPitch,
114                        size_t inputDepthPitch,
115                        uint8_t *output,
116                        size_t outputRowPitch,
117                        size_t outputDepthPitch);
118 
119 void LoadLA8ToRGBA8(const ImageLoadContext &context,
120                     size_t width,
121                     size_t height,
122                     size_t depth,
123                     const uint8_t *input,
124                     size_t inputRowPitch,
125                     size_t inputDepthPitch,
126                     uint8_t *output,
127                     size_t outputRowPitch,
128                     size_t outputDepthPitch);
129 
130 void LoadLA8ToBGRA8(const ImageLoadContext &context,
131                     size_t width,
132                     size_t height,
133                     size_t depth,
134                     const uint8_t *input,
135                     size_t inputRowPitch,
136                     size_t inputDepthPitch,
137                     uint8_t *output,
138                     size_t outputRowPitch,
139                     size_t outputDepthPitch);
140 
141 void LoadLA32FToRGBA32F(const ImageLoadContext &context,
142                         size_t width,
143                         size_t height,
144                         size_t depth,
145                         const uint8_t *input,
146                         size_t inputRowPitch,
147                         size_t inputDepthPitch,
148                         uint8_t *output,
149                         size_t outputRowPitch,
150                         size_t outputDepthPitch);
151 
152 void LoadLA16FToRGBA16F(const ImageLoadContext &context,
153                         size_t width,
154                         size_t height,
155                         size_t depth,
156                         const uint8_t *input,
157                         size_t inputRowPitch,
158                         size_t inputDepthPitch,
159                         uint8_t *output,
160                         size_t outputRowPitch,
161                         size_t outputDepthPitch);
162 
163 void LoadRGB8ToBGR565(const ImageLoadContext &context,
164                       size_t width,
165                       size_t height,
166                       size_t depth,
167                       const uint8_t *input,
168                       size_t inputRowPitch,
169                       size_t inputDepthPitch,
170                       uint8_t *output,
171                       size_t outputRowPitch,
172                       size_t outputDepthPitch);
173 
174 void LoadRGB565ToBGR565(const ImageLoadContext &context,
175                         size_t width,
176                         size_t height,
177                         size_t depth,
178                         const uint8_t *input,
179                         size_t inputRowPitch,
180                         size_t inputDepthPitch,
181                         uint8_t *output,
182                         size_t outputRowPitch,
183                         size_t outputDepthPitch);
184 
185 void LoadRGB8ToBGRX8(const ImageLoadContext &context,
186                      size_t width,
187                      size_t height,
188                      size_t depth,
189                      const uint8_t *input,
190                      size_t inputRowPitch,
191                      size_t inputDepthPitch,
192                      uint8_t *output,
193                      size_t outputRowPitch,
194                      size_t outputDepthPitch);
195 
196 void LoadRG8ToBGRX8(const ImageLoadContext &context,
197                     size_t width,
198                     size_t height,
199                     size_t depth,
200                     const uint8_t *input,
201                     size_t inputRowPitch,
202                     size_t inputDepthPitch,
203                     uint8_t *output,
204                     size_t outputRowPitch,
205                     size_t outputDepthPitch);
206 
207 void LoadR8ToBGRX8(const ImageLoadContext &context,
208                    size_t width,
209                    size_t height,
210                    size_t depth,
211                    const uint8_t *input,
212                    size_t inputRowPitch,
213                    size_t inputDepthPitch,
214                    uint8_t *output,
215                    size_t outputRowPitch,
216                    size_t outputDepthPitch);
217 
218 void LoadR5G6B5ToBGRA8(const ImageLoadContext &context,
219                        size_t width,
220                        size_t height,
221                        size_t depth,
222                        const uint8_t *input,
223                        size_t inputRowPitch,
224                        size_t inputDepthPitch,
225                        uint8_t *output,
226                        size_t outputRowPitch,
227                        size_t outputDepthPitch);
228 
229 void LoadR5G6B5ToRGBA8(const ImageLoadContext &context,
230                        size_t width,
231                        size_t height,
232                        size_t depth,
233                        const uint8_t *input,
234                        size_t inputRowPitch,
235                        size_t inputDepthPitch,
236                        uint8_t *output,
237                        size_t outputRowPitch,
238                        size_t outputDepthPitch);
239 
240 void LoadRGBA8ToBGRA8(const ImageLoadContext &context,
241                       size_t width,
242                       size_t height,
243                       size_t depth,
244                       const uint8_t *input,
245                       size_t inputRowPitch,
246                       size_t inputDepthPitch,
247                       uint8_t *output,
248                       size_t outputRowPitch,
249                       size_t outputDepthPitch);
250 
251 void LoadRGBA8ToBGRA4(const ImageLoadContext &context,
252                       size_t width,
253                       size_t height,
254                       size_t depth,
255                       const uint8_t *input,
256                       size_t inputRowPitch,
257                       size_t inputDepthPitch,
258                       uint8_t *output,
259                       size_t outputRowPitch,
260                       size_t outputDepthPitch);
261 
262 void LoadRGBA8ToRGBA4(const ImageLoadContext &context,
263                       size_t width,
264                       size_t height,
265                       size_t depth,
266                       const uint8_t *input,
267                       size_t inputRowPitch,
268                       size_t inputDepthPitch,
269                       uint8_t *output,
270                       size_t outputRowPitch,
271                       size_t outputDepthPitch);
272 
273 void LoadRGBA4ToARGB4(const ImageLoadContext &context,
274                       size_t width,
275                       size_t height,
276                       size_t depth,
277                       const uint8_t *input,
278                       size_t inputRowPitch,
279                       size_t inputDepthPitch,
280                       uint8_t *output,
281                       size_t outputRowPitch,
282                       size_t outputDepthPitch);
283 
284 void LoadRGBA4ToRGBA4(const ImageLoadContext &context,
285                       size_t width,
286                       size_t height,
287                       size_t depth,
288                       const uint8_t *input,
289                       size_t inputRowPitch,
290                       size_t inputDepthPitch,
291                       uint8_t *output,
292                       size_t outputRowPitch,
293                       size_t outputDepthPitch);
294 
295 void LoadRGBA4ToBGRA8(const ImageLoadContext &context,
296                       size_t width,
297                       size_t height,
298                       size_t depth,
299                       const uint8_t *input,
300                       size_t inputRowPitch,
301                       size_t inputDepthPitch,
302                       uint8_t *output,
303                       size_t outputRowPitch,
304                       size_t outputDepthPitch);
305 
306 void LoadRGBA4ToRGBA8(const ImageLoadContext &context,
307                       size_t width,
308                       size_t height,
309                       size_t depth,
310                       const uint8_t *input,
311                       size_t inputRowPitch,
312                       size_t inputDepthPitch,
313                       uint8_t *output,
314                       size_t outputRowPitch,
315                       size_t outputDepthPitch);
316 
317 void LoadBGRA4ToBGRA8(const ImageLoadContext &context,
318                       size_t width,
319                       size_t height,
320                       size_t depth,
321                       const uint8_t *input,
322                       size_t inputRowPitch,
323                       size_t inputDepthPitch,
324                       uint8_t *output,
325                       size_t outputRowPitch,
326                       size_t outputDepthPitch);
327 
328 void LoadRGBA8ToBGR5A1(const ImageLoadContext &context,
329                        size_t width,
330                        size_t height,
331                        size_t depth,
332                        const uint8_t *input,
333                        size_t inputRowPitch,
334                        size_t inputDepthPitch,
335                        uint8_t *output,
336                        size_t outputRowPitch,
337                        size_t outputDepthPitch);
338 
339 void LoadRGBA8ToRGB5A1(const ImageLoadContext &context,
340                        size_t width,
341                        size_t height,
342                        size_t depth,
343                        const uint8_t *input,
344                        size_t inputRowPitch,
345                        size_t inputDepthPitch,
346                        uint8_t *output,
347                        size_t outputRowPitch,
348                        size_t outputDepthPitch);
349 
350 void LoadRGB10A2ToBGR5A1(const ImageLoadContext &context,
351                          size_t width,
352                          size_t height,
353                          size_t depth,
354                          const uint8_t *input,
355                          size_t inputRowPitch,
356                          size_t inputDepthPitch,
357                          uint8_t *output,
358                          size_t outputRowPitch,
359                          size_t outputDepthPitch);
360 
361 void LoadRGB10A2ToRGB5A1(const ImageLoadContext &context,
362                          size_t width,
363                          size_t height,
364                          size_t depth,
365                          const uint8_t *input,
366                          size_t inputRowPitch,
367                          size_t inputDepthPitch,
368                          uint8_t *output,
369                          size_t outputRowPitch,
370                          size_t outputDepthPitch);
371 
372 void LoadRGB5A1ToRGB5A1(const ImageLoadContext &context,
373                         size_t width,
374                         size_t height,
375                         size_t depth,
376                         const uint8_t *input,
377                         size_t inputRowPitch,
378                         size_t inputDepthPitch,
379                         uint8_t *output,
380                         size_t outputRowPitch,
381                         size_t outputDepthPitch);
382 
383 void LoadRGB5A1ToBGR5A1(const ImageLoadContext &context,
384                         size_t width,
385                         size_t height,
386                         size_t depth,
387                         const uint8_t *input,
388                         size_t inputRowPitch,
389                         size_t inputDepthPitch,
390                         uint8_t *output,
391                         size_t outputRowPitch,
392                         size_t outputDepthPitch);
393 
394 void LoadRGB5A1ToA1RGB5(const ImageLoadContext &context,
395                         size_t width,
396                         size_t height,
397                         size_t depth,
398                         const uint8_t *input,
399                         size_t inputRowPitch,
400                         size_t inputDepthPitch,
401                         uint8_t *output,
402                         size_t outputRowPitch,
403                         size_t outputDepthPitch);
404 
405 void LoadRGB5A1ToBGRA8(const ImageLoadContext &context,
406                        size_t width,
407                        size_t height,
408                        size_t depth,
409                        const uint8_t *input,
410                        size_t inputRowPitch,
411                        size_t inputDepthPitch,
412                        uint8_t *output,
413                        size_t outputRowPitch,
414                        size_t outputDepthPitch);
415 
416 void LoadRGB5A1ToRGBA8(const ImageLoadContext &context,
417                        size_t width,
418                        size_t height,
419                        size_t depth,
420                        const uint8_t *input,
421                        size_t inputRowPitch,
422                        size_t inputDepthPitch,
423                        uint8_t *output,
424                        size_t outputRowPitch,
425                        size_t outputDepthPitch);
426 
427 void LoadBGR5A1ToBGRA8(const ImageLoadContext &context,
428                        size_t width,
429                        size_t height,
430                        size_t depth,
431                        const uint8_t *input,
432                        size_t inputRowPitch,
433                        size_t inputDepthPitch,
434                        uint8_t *output,
435                        size_t outputRowPitch,
436                        size_t outputDepthPitch);
437 
438 void LoadRGB10A2ToRGBA8(const ImageLoadContext &context,
439                         size_t width,
440                         size_t height,
441                         size_t depth,
442                         const uint8_t *input,
443                         size_t inputRowPitch,
444                         size_t inputDepthPitch,
445                         uint8_t *output,
446                         size_t outputRowPitch,
447                         size_t outputDepthPitch);
448 
449 void LoadRGB10A2ToRGB10X2(const ImageLoadContext &context,
450                           size_t width,
451                           size_t height,
452                           size_t depth,
453                           const uint8_t *input,
454                           size_t inputRowPitch,
455                           size_t inputDepthPitch,
456                           uint8_t *output,
457                           size_t outputRowPitch,
458                           size_t outputDepthPitch);
459 
460 void LoadRGB16FToRGB9E5(const ImageLoadContext &context,
461                         size_t width,
462                         size_t height,
463                         size_t depth,
464                         const uint8_t *input,
465                         size_t inputRowPitch,
466                         size_t inputDepthPitch,
467                         uint8_t *output,
468                         size_t outputRowPitch,
469                         size_t outputDepthPitch);
470 
471 void LoadRGB32FToRGB9E5(const ImageLoadContext &context,
472                         size_t width,
473                         size_t height,
474                         size_t depth,
475                         const uint8_t *input,
476                         size_t inputRowPitch,
477                         size_t inputDepthPitch,
478                         uint8_t *output,
479                         size_t outputRowPitch,
480                         size_t outputDepthPitch);
481 
482 void LoadRGB16FToRG11B10F(const ImageLoadContext &context,
483                           size_t width,
484                           size_t height,
485                           size_t depth,
486                           const uint8_t *input,
487                           size_t inputRowPitch,
488                           size_t inputDepthPitch,
489                           uint8_t *output,
490                           size_t outputRowPitch,
491                           size_t outputDepthPitch);
492 
493 void LoadRGB32FToRG11B10F(const ImageLoadContext &context,
494                           size_t width,
495                           size_t height,
496                           size_t depth,
497                           const uint8_t *input,
498                           size_t inputRowPitch,
499                           size_t inputDepthPitch,
500                           uint8_t *output,
501                           size_t outputRowPitch,
502                           size_t outputDepthPitch);
503 
504 void LoadD24S8ToS8D24(const ImageLoadContext &context,
505                       size_t width,
506                       size_t height,
507                       size_t depth,
508                       const uint8_t *input,
509                       size_t inputRowPitch,
510                       size_t inputDepthPitch,
511                       uint8_t *output,
512                       size_t outputRowPitch,
513                       size_t outputDepthPitch);
514 
515 void LoadD24S8ToD32FS8X24(const ImageLoadContext &context,
516                           size_t width,
517                           size_t height,
518                           size_t depth,
519                           const uint8_t *input,
520                           size_t inputRowPitch,
521                           size_t inputDepthPitch,
522                           uint8_t *output,
523                           size_t outputRowPitch,
524                           size_t outputDepthPitch);
525 
526 void LoadD24S8ToD32F(const ImageLoadContext &context,
527                      size_t width,
528                      size_t height,
529                      size_t depth,
530                      const uint8_t *input,
531                      size_t inputRowPitch,
532                      size_t inputDepthPitch,
533                      uint8_t *output,
534                      size_t outputRowPitch,
535                      size_t outputDepthPitch);
536 
537 void LoadD32ToD32FX32(const ImageLoadContext &context,
538                       size_t width,
539                       size_t height,
540                       size_t depth,
541                       const uint8_t *input,
542                       size_t inputRowPitch,
543                       size_t inputDepthPitch,
544                       uint8_t *output,
545                       size_t outputRowPitch,
546                       size_t outputDepthPitch);
547 
548 void LoadD32ToD32F(const ImageLoadContext &context,
549                    size_t width,
550                    size_t height,
551                    size_t depth,
552                    const uint8_t *input,
553                    size_t inputRowPitch,
554                    size_t inputDepthPitch,
555                    uint8_t *output,
556                    size_t outputRowPitch,
557                    size_t outputDepthPitch);
558 
559 void LoadD32FToD32F(const ImageLoadContext &context,
560                     size_t width,
561                     size_t height,
562                     size_t depth,
563                     const uint8_t *input,
564                     size_t inputRowPitch,
565                     size_t inputDepthPitch,
566                     uint8_t *output,
567                     size_t outputRowPitch,
568                     size_t outputDepthPitch);
569 
570 void LoadD32FS8X24ToS8D24(const ImageLoadContext &context,
571                           size_t width,
572                           size_t height,
573                           size_t depth,
574                           const uint8_t *input,
575                           size_t inputRowPitch,
576                           size_t inputDepthPitch,
577                           uint8_t *output,
578                           size_t outputRowPitch,
579                           size_t outputDepthPitch);
580 
581 void LoadX24S8ToS8(const ImageLoadContext &context,
582                    size_t width,
583                    size_t height,
584                    size_t depth,
585                    const uint8_t *input,
586                    size_t inputRowPitch,
587                    size_t inputDepthPitch,
588                    uint8_t *output,
589                    size_t outputRowPitch,
590                    size_t outputDepthPitch);
591 
592 void LoadX32S8ToS8(const ImageLoadContext &context,
593                    size_t width,
594                    size_t height,
595                    size_t depth,
596                    const uint8_t *input,
597                    size_t inputRowPitch,
598                    size_t inputDepthPitch,
599                    uint8_t *output,
600                    size_t outputRowPitch,
601                    size_t outputDepthPitch);
602 
603 void LoadD32FS8X24ToD32F(const ImageLoadContext &context,
604                          size_t width,
605                          size_t height,
606                          size_t depth,
607                          const uint8_t *input,
608                          size_t inputRowPitch,
609                          size_t inputDepthPitch,
610                          uint8_t *output,
611                          size_t outputRowPitch,
612                          size_t outputDepthPitch);
613 
614 void LoadD32FS8X24ToD32FS8X24(const ImageLoadContext &context,
615                               size_t width,
616                               size_t height,
617                               size_t depth,
618                               const uint8_t *input,
619                               size_t inputRowPitch,
620                               size_t inputDepthPitch,
621                               uint8_t *output,
622                               size_t outputRowPitch,
623                               size_t outputDepthPitch);
624 
625 template <typename type, size_t componentCount>
626 inline void LoadToNative(const ImageLoadContext &context,
627                          size_t width,
628                          size_t height,
629                          size_t depth,
630                          const uint8_t *input,
631                          size_t inputRowPitch,
632                          size_t inputDepthPitch,
633                          uint8_t *output,
634                          size_t outputRowPitch,
635                          size_t outputDepthPitch);
636 
637 template <typename type, uint32_t fourthComponentBits>
638 inline void LoadToNative3To4(const ImageLoadContext &context,
639                              size_t width,
640                              size_t height,
641                              size_t depth,
642                              const uint8_t *input,
643                              size_t inputRowPitch,
644                              size_t inputDepthPitch,
645                              uint8_t *output,
646                              size_t outputRowPitch,
647                              size_t outputDepthPitch);
648 
649 template <size_t componentCount>
650 inline void Load32FTo16F(const ImageLoadContext &context,
651                          size_t width,
652                          size_t height,
653                          size_t depth,
654                          const uint8_t *input,
655                          size_t inputRowPitch,
656                          size_t inputDepthPitch,
657                          uint8_t *output,
658                          size_t outputRowPitch,
659                          size_t outputDepthPitch);
660 
661 void LoadD16ToD32F(const ImageLoadContext &context,
662                    size_t width,
663                    size_t height,
664                    size_t depth,
665                    const uint8_t *input,
666                    size_t inputRowPitch,
667                    size_t inputDepthPitch,
668                    uint8_t *output,
669                    size_t outputRowPitch,
670                    size_t outputDepthPitch);
671 
672 void LoadS8ToS8X24(const ImageLoadContext &context,
673                    size_t width,
674                    size_t height,
675                    size_t depth,
676                    const uint8_t *input,
677                    size_t inputRowPitch,
678                    size_t inputDepthPitch,
679                    uint8_t *output,
680                    size_t outputRowPitch,
681                    size_t outputDepthPitch);
682 
683 void LoadRGB32FToRGBA16F(const ImageLoadContext &context,
684                          size_t width,
685                          size_t height,
686                          size_t depth,
687                          const uint8_t *input,
688                          size_t inputRowPitch,
689                          size_t inputDepthPitch,
690                          uint8_t *output,
691                          size_t outputRowPitch,
692                          size_t outputDepthPitch);
693 
694 void LoadRGB32FToRGB16F(const ImageLoadContext &context,
695                         size_t width,
696                         size_t height,
697                         size_t depth,
698                         const uint8_t *input,
699                         size_t inputRowPitch,
700                         size_t inputDepthPitch,
701                         uint8_t *output,
702                         size_t outputRowPitch,
703                         size_t outputDepthPitch);
704 
705 template <size_t blockWidth, size_t blockHeight, size_t blockDepth, size_t blockSize>
706 inline void LoadCompressedToNative(const ImageLoadContext &context,
707                                    size_t width,
708                                    size_t height,
709                                    size_t depth,
710                                    const uint8_t *input,
711                                    size_t inputRowPitch,
712                                    size_t inputDepthPitch,
713                                    uint8_t *output,
714                                    size_t outputRowPitch,
715                                    size_t outputDepthPitch);
716 
717 void LoadR32ToR16(const ImageLoadContext &context,
718                   size_t width,
719                   size_t height,
720                   size_t depth,
721                   const uint8_t *input,
722                   size_t inputRowPitch,
723                   size_t inputDepthPitch,
724                   uint8_t *output,
725                   size_t outputRowPitch,
726                   size_t outputDepthPitch);
727 
728 template <typename type,
729           uint32_t firstBits,
730           uint32_t secondBits,
731           uint32_t thirdBits,
732           uint32_t fourthBits>
733 inline void Initialize4ComponentData(const ImageLoadContext &context,
734                                      size_t width,
735                                      size_t height,
736                                      size_t depth,
737                                      uint8_t *output,
738                                      size_t outputRowPitch,
739                                      size_t outputDepthPitch);
740 
741 void LoadD32ToX8D24(const ImageLoadContext &context,
742                     size_t width,
743                     size_t height,
744                     size_t depth,
745                     const uint8_t *input,
746                     size_t inputRowPitch,
747                     size_t inputDepthPitch,
748                     uint8_t *output,
749                     size_t outputRowPitch,
750                     size_t outputDepthPitch);
751 
752 void LoadETC1RGB8ToRGBA8(const ImageLoadContext &context,
753                          size_t width,
754                          size_t height,
755                          size_t depth,
756                          const uint8_t *input,
757                          size_t inputRowPitch,
758                          size_t inputDepthPitch,
759                          uint8_t *output,
760                          size_t outputRowPitch,
761                          size_t outputDepthPitch);
762 
763 void LoadASTCToRGBA8Inner(const ImageLoadContext &context,
764                           size_t width,
765                           size_t height,
766                           size_t depth,
767                           uint32_t blockWidth,
768                           uint32_t blockHeight,
769                           const uint8_t *input,
770                           size_t inputRowPitch,
771                           size_t inputDepthPitch,
772                           uint8_t *output,
773                           size_t outputRowPitch,
774                           size_t outputDepthPitch);
775 
776 template <size_t blockWidth, size_t blockHeight>
777 inline void LoadASTCToRGBA8(const ImageLoadContext &context,
778                             size_t width,
779                             size_t height,
780                             size_t depth,
781                             const uint8_t *input,
782                             size_t inputRowPitch,
783                             size_t inputDepthPitch,
784                             uint8_t *output,
785                             size_t outputRowPitch,
786                             size_t outputDepthPitch);
787 
788 void LoadETC1RGB8ToBC1(const ImageLoadContext &context,
789                        size_t width,
790                        size_t height,
791                        size_t depth,
792                        const uint8_t *input,
793                        size_t inputRowPitch,
794                        size_t inputDepthPitch,
795                        uint8_t *output,
796                        size_t outputRowPitch,
797                        size_t outputDepthPitch);
798 
799 void LoadEACR11ToR8(const ImageLoadContext &context,
800                     size_t width,
801                     size_t height,
802                     size_t depth,
803                     const uint8_t *input,
804                     size_t inputRowPitch,
805                     size_t inputDepthPitch,
806                     uint8_t *output,
807                     size_t outputRowPitch,
808                     size_t outputDepthPitch);
809 
810 void LoadEACR11SToR8(const ImageLoadContext &context,
811                      size_t width,
812                      size_t height,
813                      size_t depth,
814                      const uint8_t *input,
815                      size_t inputRowPitch,
816                      size_t inputDepthPitch,
817                      uint8_t *output,
818                      size_t outputRowPitch,
819                      size_t outputDepthPitch);
820 
821 void LoadEACRG11ToRG8(const ImageLoadContext &context,
822                       size_t width,
823                       size_t height,
824                       size_t depth,
825                       const uint8_t *input,
826                       size_t inputRowPitch,
827                       size_t inputDepthPitch,
828                       uint8_t *output,
829                       size_t outputRowPitch,
830                       size_t outputDepthPitch);
831 
832 void LoadEACRG11SToRG8(const ImageLoadContext &context,
833                        size_t width,
834                        size_t height,
835                        size_t depth,
836                        const uint8_t *input,
837                        size_t inputRowPitch,
838                        size_t inputDepthPitch,
839                        uint8_t *output,
840                        size_t outputRowPitch,
841                        size_t outputDepthPitch);
842 
843 void LoadEACR11ToR16(const ImageLoadContext &context,
844                      size_t width,
845                      size_t height,
846                      size_t depth,
847                      const uint8_t *input,
848                      size_t inputRowPitch,
849                      size_t inputDepthPitch,
850                      uint8_t *output,
851                      size_t outputRowPitch,
852                      size_t outputDepthPitch);
853 
854 void LoadEACR11SToR16(const ImageLoadContext &context,
855                       size_t width,
856                       size_t height,
857                       size_t depth,
858                       const uint8_t *input,
859                       size_t inputRowPitch,
860                       size_t inputDepthPitch,
861                       uint8_t *output,
862                       size_t outputRowPitch,
863                       size_t outputDepthPitch);
864 
865 void LoadEACRG11ToRG16(const ImageLoadContext &context,
866                        size_t width,
867                        size_t height,
868                        size_t depth,
869                        const uint8_t *input,
870                        size_t inputRowPitch,
871                        size_t inputDepthPitch,
872                        uint8_t *output,
873                        size_t outputRowPitch,
874                        size_t outputDepthPitch);
875 
876 void LoadEACRG11SToRG16(const ImageLoadContext &context,
877                         size_t width,
878                         size_t height,
879                         size_t depth,
880                         const uint8_t *input,
881                         size_t inputRowPitch,
882                         size_t inputDepthPitch,
883                         uint8_t *output,
884                         size_t outputRowPitch,
885                         size_t outputDepthPitch);
886 
887 void LoadEACR11ToR16F(const ImageLoadContext &context,
888                       size_t width,
889                       size_t height,
890                       size_t depth,
891                       const uint8_t *input,
892                       size_t inputRowPitch,
893                       size_t inputDepthPitch,
894                       uint8_t *output,
895                       size_t outputRowPitch,
896                       size_t outputDepthPitch);
897 
898 void LoadEACR11SToR16F(const ImageLoadContext &context,
899                        size_t width,
900                        size_t height,
901                        size_t depth,
902                        const uint8_t *input,
903                        size_t inputRowPitch,
904                        size_t inputDepthPitch,
905                        uint8_t *output,
906                        size_t outputRowPitch,
907                        size_t outputDepthPitch);
908 
909 void LoadEACRG11ToRG16F(const ImageLoadContext &context,
910                         size_t width,
911                         size_t height,
912                         size_t depth,
913                         const uint8_t *input,
914                         size_t inputRowPitch,
915                         size_t inputDepthPitch,
916                         uint8_t *output,
917                         size_t outputRowPitch,
918                         size_t outputDepthPitch);
919 
920 void LoadEACRG11SToRG16F(const ImageLoadContext &context,
921                          size_t width,
922                          size_t height,
923                          size_t depth,
924                          const uint8_t *input,
925                          size_t inputRowPitch,
926                          size_t inputDepthPitch,
927                          uint8_t *output,
928                          size_t outputRowPitch,
929                          size_t outputDepthPitch);
930 
931 void LoadETC2RGB8ToRGBA8(const ImageLoadContext &context,
932                          size_t width,
933                          size_t height,
934                          size_t depth,
935                          const uint8_t *input,
936                          size_t inputRowPitch,
937                          size_t inputDepthPitch,
938                          uint8_t *output,
939                          size_t outputRowPitch,
940                          size_t outputDepthPitch);
941 
942 void LoadETC2RGB8ToBC1(const ImageLoadContext &context,
943                        size_t width,
944                        size_t height,
945                        size_t depth,
946                        const uint8_t *input,
947                        size_t inputRowPitch,
948                        size_t inputDepthPitch,
949                        uint8_t *output,
950                        size_t outputRowPitch,
951                        size_t outputDepthPitch);
952 
953 void LoadETC2SRGB8ToRGBA8(const ImageLoadContext &context,
954                           size_t width,
955                           size_t height,
956                           size_t depth,
957                           const uint8_t *input,
958                           size_t inputRowPitch,
959                           size_t inputDepthPitch,
960                           uint8_t *output,
961                           size_t outputRowPitch,
962                           size_t outputDepthPitch);
963 
964 void LoadETC2SRGB8ToBC1(const ImageLoadContext &context,
965                         size_t width,
966                         size_t height,
967                         size_t depth,
968                         const uint8_t *input,
969                         size_t inputRowPitch,
970                         size_t inputDepthPitch,
971                         uint8_t *output,
972                         size_t outputRowPitch,
973                         size_t outputDepthPitch);
974 
975 void LoadETC2RGB8A1ToRGBA8(const ImageLoadContext &context,
976                            size_t width,
977                            size_t height,
978                            size_t depth,
979                            const uint8_t *input,
980                            size_t inputRowPitch,
981                            size_t inputDepthPitch,
982                            uint8_t *output,
983                            size_t outputRowPitch,
984                            size_t outputDepthPitch);
985 
986 void LoadETC2RGB8A1ToBC1(const ImageLoadContext &context,
987                          size_t width,
988                          size_t height,
989                          size_t depth,
990                          const uint8_t *input,
991                          size_t inputRowPitch,
992                          size_t inputDepthPitch,
993                          uint8_t *output,
994                          size_t outputRowPitch,
995                          size_t outputDepthPitch);
996 
997 void LoadETC2SRGB8A1ToRGBA8(const ImageLoadContext &context,
998                             size_t width,
999                             size_t height,
1000                             size_t depth,
1001                             const uint8_t *input,
1002                             size_t inputRowPitch,
1003                             size_t inputDepthPitch,
1004                             uint8_t *output,
1005                             size_t outputRowPitch,
1006                             size_t outputDepthPitch);
1007 
1008 void LoadETC2SRGB8A1ToBC1(const ImageLoadContext &context,
1009                           size_t width,
1010                           size_t height,
1011                           size_t depth,
1012                           const uint8_t *input,
1013                           size_t inputRowPitch,
1014                           size_t inputDepthPitch,
1015                           uint8_t *output,
1016                           size_t outputRowPitch,
1017                           size_t outputDepthPitch);
1018 
1019 void LoadETC2RGBA8ToRGBA8(const ImageLoadContext &context,
1020                           size_t width,
1021                           size_t height,
1022                           size_t depth,
1023                           const uint8_t *input,
1024                           size_t inputRowPitch,
1025                           size_t inputDepthPitch,
1026                           uint8_t *output,
1027                           size_t outputRowPitch,
1028                           size_t outputDepthPitch);
1029 
1030 void LoadETC2SRGBA8ToSRGBA8(const ImageLoadContext &context,
1031                             size_t width,
1032                             size_t height,
1033                             size_t depth,
1034                             const uint8_t *input,
1035                             size_t inputRowPitch,
1036                             size_t inputDepthPitch,
1037                             uint8_t *output,
1038                             size_t outputRowPitch,
1039                             size_t outputDepthPitch);
1040 
1041 void LoadYuvToNative(const ImageLoadContext &context,
1042                      size_t width,
1043                      size_t height,
1044                      size_t depth,
1045                      const uint8_t *input,
1046                      size_t inputRowPitch,
1047                      size_t inputDepthPitch,
1048                      uint8_t *output,
1049                      size_t outputRowPitch,
1050                      size_t outputDepthPitch);
1051 
1052 void LoadPalettedToRGBA8Impl(const ImageLoadContext &context,
1053                              size_t width,
1054                              size_t height,
1055                              size_t depth,
1056                              uint32_t indexBits,
1057                              uint32_t redBlueBits,
1058                              uint32_t greenBits,
1059                              uint32_t alphaBits,
1060                              const uint8_t *input,
1061                              size_t inputRowPitch,
1062                              size_t inputDepthPitch,
1063                              uint8_t *output,
1064                              size_t outputRowPitch,
1065                              size_t outputDepthPitch);
1066 
1067 template <uint32_t indexBits, uint32_t redBlueBits, uint32_t greenBits, uint32_t alphaBits>
1068 inline void LoadPalettedToRGBA8(const ImageLoadContext &context,
1069                                 size_t width,
1070                                 size_t height,
1071                                 size_t depth,
1072                                 const uint8_t *input,
1073                                 size_t inputRowPitch,
1074                                 size_t inputDepthPitch,
1075                                 uint8_t *output,
1076                                 size_t outputRowPitch,
1077                                 size_t outputDepthPitch);
1078 
1079 }  // namespace angle
1080 
1081 #include "loadimage.inc"
1082 
1083 #endif  // IMAGEUTIL_LOADIMAGE_H_
1084