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