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 LoadLA8ToRGBA4(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 LoadLA8ToRGBA8(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 LoadLA8ToBGRA8(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 LoadLA32FToRGBA32F(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 LoadLA16FToRGBA16F(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 LoadRGB8ToBGR565(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 LoadRGB565ToBGR565(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 LoadRGB8ToBGRX8(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 LoadRG8ToBGRX8(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 LoadR8ToBGRX8(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 LoadR5G6B5ToBGRA8(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 LoadR5G6B5ToRGBA8(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 LoadRGBA8ToBGRA8(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 LoadRGBA8ToBGRA4(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 LoadRGBA8ToRGBA4(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 LoadRGBA4ToARGB4(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 LoadRGBA4ToRGBA4(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 LoadRGBA4ToBGRA8(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 LoadRGBA4ToRGBA8(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 LoadBGRA4ToBGRA8(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 LoadRGBA8ToBGR5A1(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 LoadRGBA8ToRGB5A1(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 LoadRGB10A2ToBGR5A1(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 LoadRGB10A2ToRGB5A1(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 LoadRGB10A2ToRGB565(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 LoadRGB5A1ToRGB5A1(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 LoadRGB5A1ToBGR5A1(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 LoadRGB5A1ToA1RGB5(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 LoadRGB5A1ToBGRA8(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 LoadRGB5A1ToRGBA8(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 LoadBGR5A1ToBGRA8(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 void LoadRGB10A2ToRGB8(const ImageLoadContext &context, 460 size_t width, 461 size_t height, 462 size_t depth, 463 const uint8_t *input, 464 size_t inputRowPitch, 465 size_t inputDepthPitch, 466 uint8_t *output, 467 size_t outputRowPitch, 468 size_t outputDepthPitch); 469 470 void LoadRGB10A2ToRGBA8(const ImageLoadContext &context, 471 size_t width, 472 size_t height, 473 size_t depth, 474 const uint8_t *input, 475 size_t inputRowPitch, 476 size_t inputDepthPitch, 477 uint8_t *output, 478 size_t outputRowPitch, 479 size_t outputDepthPitch); 480 481 void LoadRGB10A2ToRGB10X2(const ImageLoadContext &context, 482 size_t width, 483 size_t height, 484 size_t depth, 485 const uint8_t *input, 486 size_t inputRowPitch, 487 size_t inputDepthPitch, 488 uint8_t *output, 489 size_t outputRowPitch, 490 size_t outputDepthPitch); 491 492 void LoadBGR10A2ToRGB10A2(const ImageLoadContext &context, 493 size_t width, 494 size_t height, 495 size_t depth, 496 const uint8_t *input, 497 size_t inputRowPitch, 498 size_t inputDepthPitch, 499 uint8_t *output, 500 size_t outputRowPitch, 501 size_t outputDepthPitch); 502 503 void LoadRGB16FToRGB9E5(const ImageLoadContext &context, 504 size_t width, 505 size_t height, 506 size_t depth, 507 const uint8_t *input, 508 size_t inputRowPitch, 509 size_t inputDepthPitch, 510 uint8_t *output, 511 size_t outputRowPitch, 512 size_t outputDepthPitch); 513 514 void LoadRGB32FToRGB9E5(const ImageLoadContext &context, 515 size_t width, 516 size_t height, 517 size_t depth, 518 const uint8_t *input, 519 size_t inputRowPitch, 520 size_t inputDepthPitch, 521 uint8_t *output, 522 size_t outputRowPitch, 523 size_t outputDepthPitch); 524 525 void LoadRGB16FToRG11B10F(const ImageLoadContext &context, 526 size_t width, 527 size_t height, 528 size_t depth, 529 const uint8_t *input, 530 size_t inputRowPitch, 531 size_t inputDepthPitch, 532 uint8_t *output, 533 size_t outputRowPitch, 534 size_t outputDepthPitch); 535 536 void LoadRGB32FToRG11B10F(const ImageLoadContext &context, 537 size_t width, 538 size_t height, 539 size_t depth, 540 const uint8_t *input, 541 size_t inputRowPitch, 542 size_t inputDepthPitch, 543 uint8_t *output, 544 size_t outputRowPitch, 545 size_t outputDepthPitch); 546 547 void LoadD24S8ToS8D24(const ImageLoadContext &context, 548 size_t width, 549 size_t height, 550 size_t depth, 551 const uint8_t *input, 552 size_t inputRowPitch, 553 size_t inputDepthPitch, 554 uint8_t *output, 555 size_t outputRowPitch, 556 size_t outputDepthPitch); 557 558 void LoadD24S8ToD32FS8X24(const ImageLoadContext &context, 559 size_t width, 560 size_t height, 561 size_t depth, 562 const uint8_t *input, 563 size_t inputRowPitch, 564 size_t inputDepthPitch, 565 uint8_t *output, 566 size_t outputRowPitch, 567 size_t outputDepthPitch); 568 569 void LoadD24S8ToD32F(const ImageLoadContext &context, 570 size_t width, 571 size_t height, 572 size_t depth, 573 const uint8_t *input, 574 size_t inputRowPitch, 575 size_t inputDepthPitch, 576 uint8_t *output, 577 size_t outputRowPitch, 578 size_t outputDepthPitch); 579 580 void LoadD32ToD32FX32(const ImageLoadContext &context, 581 size_t width, 582 size_t height, 583 size_t depth, 584 const uint8_t *input, 585 size_t inputRowPitch, 586 size_t inputDepthPitch, 587 uint8_t *output, 588 size_t outputRowPitch, 589 size_t outputDepthPitch); 590 591 void LoadD32ToD32F(const ImageLoadContext &context, 592 size_t width, 593 size_t height, 594 size_t depth, 595 const uint8_t *input, 596 size_t inputRowPitch, 597 size_t inputDepthPitch, 598 uint8_t *output, 599 size_t outputRowPitch, 600 size_t outputDepthPitch); 601 602 void LoadD32FToD32F(const ImageLoadContext &context, 603 size_t width, 604 size_t height, 605 size_t depth, 606 const uint8_t *input, 607 size_t inputRowPitch, 608 size_t inputDepthPitch, 609 uint8_t *output, 610 size_t outputRowPitch, 611 size_t outputDepthPitch); 612 613 void LoadD32FS8X24ToS8D24(const ImageLoadContext &context, 614 size_t width, 615 size_t height, 616 size_t depth, 617 const uint8_t *input, 618 size_t inputRowPitch, 619 size_t inputDepthPitch, 620 uint8_t *output, 621 size_t outputRowPitch, 622 size_t outputDepthPitch); 623 624 void LoadX24S8ToS8(const ImageLoadContext &context, 625 size_t width, 626 size_t height, 627 size_t depth, 628 const uint8_t *input, 629 size_t inputRowPitch, 630 size_t inputDepthPitch, 631 uint8_t *output, 632 size_t outputRowPitch, 633 size_t outputDepthPitch); 634 635 void LoadX32S8ToS8(const ImageLoadContext &context, 636 size_t width, 637 size_t height, 638 size_t depth, 639 const uint8_t *input, 640 size_t inputRowPitch, 641 size_t inputDepthPitch, 642 uint8_t *output, 643 size_t outputRowPitch, 644 size_t outputDepthPitch); 645 646 void LoadD32FS8X24ToD32F(const ImageLoadContext &context, 647 size_t width, 648 size_t height, 649 size_t depth, 650 const uint8_t *input, 651 size_t inputRowPitch, 652 size_t inputDepthPitch, 653 uint8_t *output, 654 size_t outputRowPitch, 655 size_t outputDepthPitch); 656 657 void LoadD32FS8X24ToD32FS8X24(const ImageLoadContext &context, 658 size_t width, 659 size_t height, 660 size_t depth, 661 const uint8_t *input, 662 size_t inputRowPitch, 663 size_t inputDepthPitch, 664 uint8_t *output, 665 size_t outputRowPitch, 666 size_t outputDepthPitch); 667 668 template <typename type, size_t componentCount> 669 inline void LoadToNative(const ImageLoadContext &context, 670 size_t width, 671 size_t height, 672 size_t depth, 673 const uint8_t *input, 674 size_t inputRowPitch, 675 size_t inputDepthPitch, 676 uint8_t *output, 677 size_t outputRowPitch, 678 size_t outputDepthPitch); 679 680 template <typename type, uint32_t fourthComponentBits> 681 inline void LoadToNative3To4(const ImageLoadContext &context, 682 size_t width, 683 size_t height, 684 size_t depth, 685 const uint8_t *input, 686 size_t inputRowPitch, 687 size_t inputDepthPitch, 688 uint8_t *output, 689 size_t outputRowPitch, 690 size_t outputDepthPitch); 691 692 template <size_t componentCount> 693 inline void Load32FTo16F(const ImageLoadContext &context, 694 size_t width, 695 size_t height, 696 size_t depth, 697 const uint8_t *input, 698 size_t inputRowPitch, 699 size_t inputDepthPitch, 700 uint8_t *output, 701 size_t outputRowPitch, 702 size_t outputDepthPitch); 703 704 void LoadD16ToD32F(const ImageLoadContext &context, 705 size_t width, 706 size_t height, 707 size_t depth, 708 const uint8_t *input, 709 size_t inputRowPitch, 710 size_t inputDepthPitch, 711 uint8_t *output, 712 size_t outputRowPitch, 713 size_t outputDepthPitch); 714 715 void LoadS8ToS8X24(const ImageLoadContext &context, 716 size_t width, 717 size_t height, 718 size_t depth, 719 const uint8_t *input, 720 size_t inputRowPitch, 721 size_t inputDepthPitch, 722 uint8_t *output, 723 size_t outputRowPitch, 724 size_t outputDepthPitch); 725 726 void LoadRGB32FToRGBA16F(const ImageLoadContext &context, 727 size_t width, 728 size_t height, 729 size_t depth, 730 const uint8_t *input, 731 size_t inputRowPitch, 732 size_t inputDepthPitch, 733 uint8_t *output, 734 size_t outputRowPitch, 735 size_t outputDepthPitch); 736 737 void LoadRGB32FToRGB16F(const ImageLoadContext &context, 738 size_t width, 739 size_t height, 740 size_t depth, 741 const uint8_t *input, 742 size_t inputRowPitch, 743 size_t inputDepthPitch, 744 uint8_t *output, 745 size_t outputRowPitch, 746 size_t outputDepthPitch); 747 748 template <size_t blockWidth, size_t blockHeight, size_t blockDepth, size_t blockSize> 749 inline void LoadCompressedToNative(const ImageLoadContext &context, 750 size_t width, 751 size_t height, 752 size_t depth, 753 const uint8_t *input, 754 size_t inputRowPitch, 755 size_t inputDepthPitch, 756 uint8_t *output, 757 size_t outputRowPitch, 758 size_t outputDepthPitch); 759 760 void LoadR32ToR16(const ImageLoadContext &context, 761 size_t width, 762 size_t height, 763 size_t depth, 764 const uint8_t *input, 765 size_t inputRowPitch, 766 size_t inputDepthPitch, 767 uint8_t *output, 768 size_t outputRowPitch, 769 size_t outputDepthPitch); 770 771 template <typename type, 772 uint32_t firstBits, 773 uint32_t secondBits, 774 uint32_t thirdBits, 775 uint32_t fourthBits> 776 inline void Initialize4ComponentData(const ImageLoadContext &context, 777 size_t width, 778 size_t height, 779 size_t depth, 780 uint8_t *output, 781 size_t outputRowPitch, 782 size_t outputDepthPitch); 783 784 void LoadD32ToX8D24(const ImageLoadContext &context, 785 size_t width, 786 size_t height, 787 size_t depth, 788 const uint8_t *input, 789 size_t inputRowPitch, 790 size_t inputDepthPitch, 791 uint8_t *output, 792 size_t outputRowPitch, 793 size_t outputDepthPitch); 794 795 void LoadETC1RGB8ToRGBA8(const ImageLoadContext &context, 796 size_t width, 797 size_t height, 798 size_t depth, 799 const uint8_t *input, 800 size_t inputRowPitch, 801 size_t inputDepthPitch, 802 uint8_t *output, 803 size_t outputRowPitch, 804 size_t outputDepthPitch); 805 806 void LoadASTCToRGBA8Inner(const ImageLoadContext &context, 807 size_t width, 808 size_t height, 809 size_t depth, 810 uint32_t blockWidth, 811 uint32_t blockHeight, 812 const uint8_t *input, 813 size_t inputRowPitch, 814 size_t inputDepthPitch, 815 uint8_t *output, 816 size_t outputRowPitch, 817 size_t outputDepthPitch); 818 819 template <size_t blockWidth, size_t blockHeight> 820 inline void LoadASTCToRGBA8(const ImageLoadContext &context, 821 size_t width, 822 size_t height, 823 size_t depth, 824 const uint8_t *input, 825 size_t inputRowPitch, 826 size_t inputDepthPitch, 827 uint8_t *output, 828 size_t outputRowPitch, 829 size_t outputDepthPitch); 830 831 void LoadETC1RGB8ToBC1(const ImageLoadContext &context, 832 size_t width, 833 size_t height, 834 size_t depth, 835 const uint8_t *input, 836 size_t inputRowPitch, 837 size_t inputDepthPitch, 838 uint8_t *output, 839 size_t outputRowPitch, 840 size_t outputDepthPitch); 841 842 void LoadEACR11ToR8(const ImageLoadContext &context, 843 size_t width, 844 size_t height, 845 size_t depth, 846 const uint8_t *input, 847 size_t inputRowPitch, 848 size_t inputDepthPitch, 849 uint8_t *output, 850 size_t outputRowPitch, 851 size_t outputDepthPitch); 852 853 void LoadEACR11SToR8(const ImageLoadContext &context, 854 size_t width, 855 size_t height, 856 size_t depth, 857 const uint8_t *input, 858 size_t inputRowPitch, 859 size_t inputDepthPitch, 860 uint8_t *output, 861 size_t outputRowPitch, 862 size_t outputDepthPitch); 863 864 void LoadEACRG11ToRG8(const ImageLoadContext &context, 865 size_t width, 866 size_t height, 867 size_t depth, 868 const uint8_t *input, 869 size_t inputRowPitch, 870 size_t inputDepthPitch, 871 uint8_t *output, 872 size_t outputRowPitch, 873 size_t outputDepthPitch); 874 875 void LoadEACRG11SToRG8(const ImageLoadContext &context, 876 size_t width, 877 size_t height, 878 size_t depth, 879 const uint8_t *input, 880 size_t inputRowPitch, 881 size_t inputDepthPitch, 882 uint8_t *output, 883 size_t outputRowPitch, 884 size_t outputDepthPitch); 885 886 void LoadEACR11ToR16(const ImageLoadContext &context, 887 size_t width, 888 size_t height, 889 size_t depth, 890 const uint8_t *input, 891 size_t inputRowPitch, 892 size_t inputDepthPitch, 893 uint8_t *output, 894 size_t outputRowPitch, 895 size_t outputDepthPitch); 896 897 void LoadEACR11SToR16(const ImageLoadContext &context, 898 size_t width, 899 size_t height, 900 size_t depth, 901 const uint8_t *input, 902 size_t inputRowPitch, 903 size_t inputDepthPitch, 904 uint8_t *output, 905 size_t outputRowPitch, 906 size_t outputDepthPitch); 907 908 void LoadEACRG11ToRG16(const ImageLoadContext &context, 909 size_t width, 910 size_t height, 911 size_t depth, 912 const uint8_t *input, 913 size_t inputRowPitch, 914 size_t inputDepthPitch, 915 uint8_t *output, 916 size_t outputRowPitch, 917 size_t outputDepthPitch); 918 919 void LoadEACRG11SToRG16(const ImageLoadContext &context, 920 size_t width, 921 size_t height, 922 size_t depth, 923 const uint8_t *input, 924 size_t inputRowPitch, 925 size_t inputDepthPitch, 926 uint8_t *output, 927 size_t outputRowPitch, 928 size_t outputDepthPitch); 929 930 void LoadEACR11ToR16F(const ImageLoadContext &context, 931 size_t width, 932 size_t height, 933 size_t depth, 934 const uint8_t *input, 935 size_t inputRowPitch, 936 size_t inputDepthPitch, 937 uint8_t *output, 938 size_t outputRowPitch, 939 size_t outputDepthPitch); 940 941 void LoadEACR11SToR16F(const ImageLoadContext &context, 942 size_t width, 943 size_t height, 944 size_t depth, 945 const uint8_t *input, 946 size_t inputRowPitch, 947 size_t inputDepthPitch, 948 uint8_t *output, 949 size_t outputRowPitch, 950 size_t outputDepthPitch); 951 952 void LoadEACRG11ToRG16F(const ImageLoadContext &context, 953 size_t width, 954 size_t height, 955 size_t depth, 956 const uint8_t *input, 957 size_t inputRowPitch, 958 size_t inputDepthPitch, 959 uint8_t *output, 960 size_t outputRowPitch, 961 size_t outputDepthPitch); 962 963 void LoadEACRG11SToRG16F(const ImageLoadContext &context, 964 size_t width, 965 size_t height, 966 size_t depth, 967 const uint8_t *input, 968 size_t inputRowPitch, 969 size_t inputDepthPitch, 970 uint8_t *output, 971 size_t outputRowPitch, 972 size_t outputDepthPitch); 973 974 void LoadETC2RGB8ToRGBA8(const ImageLoadContext &context, 975 size_t width, 976 size_t height, 977 size_t depth, 978 const uint8_t *input, 979 size_t inputRowPitch, 980 size_t inputDepthPitch, 981 uint8_t *output, 982 size_t outputRowPitch, 983 size_t outputDepthPitch); 984 985 void LoadETC2RGB8ToBC1(const ImageLoadContext &context, 986 size_t width, 987 size_t height, 988 size_t depth, 989 const uint8_t *input, 990 size_t inputRowPitch, 991 size_t inputDepthPitch, 992 uint8_t *output, 993 size_t outputRowPitch, 994 size_t outputDepthPitch); 995 996 void LoadETC2SRGB8ToRGBA8(const ImageLoadContext &context, 997 size_t width, 998 size_t height, 999 size_t depth, 1000 const uint8_t *input, 1001 size_t inputRowPitch, 1002 size_t inputDepthPitch, 1003 uint8_t *output, 1004 size_t outputRowPitch, 1005 size_t outputDepthPitch); 1006 1007 void LoadETC2SRGB8ToBC1(const ImageLoadContext &context, 1008 size_t width, 1009 size_t height, 1010 size_t depth, 1011 const uint8_t *input, 1012 size_t inputRowPitch, 1013 size_t inputDepthPitch, 1014 uint8_t *output, 1015 size_t outputRowPitch, 1016 size_t outputDepthPitch); 1017 1018 void LoadETC2RGB8A1ToRGBA8(const ImageLoadContext &context, 1019 size_t width, 1020 size_t height, 1021 size_t depth, 1022 const uint8_t *input, 1023 size_t inputRowPitch, 1024 size_t inputDepthPitch, 1025 uint8_t *output, 1026 size_t outputRowPitch, 1027 size_t outputDepthPitch); 1028 1029 void LoadETC2RGB8A1ToBC1(const ImageLoadContext &context, 1030 size_t width, 1031 size_t height, 1032 size_t depth, 1033 const uint8_t *input, 1034 size_t inputRowPitch, 1035 size_t inputDepthPitch, 1036 uint8_t *output, 1037 size_t outputRowPitch, 1038 size_t outputDepthPitch); 1039 1040 void LoadETC2SRGB8A1ToRGBA8(const ImageLoadContext &context, 1041 size_t width, 1042 size_t height, 1043 size_t depth, 1044 const uint8_t *input, 1045 size_t inputRowPitch, 1046 size_t inputDepthPitch, 1047 uint8_t *output, 1048 size_t outputRowPitch, 1049 size_t outputDepthPitch); 1050 1051 void LoadETC2SRGB8A1ToBC1(const ImageLoadContext &context, 1052 size_t width, 1053 size_t height, 1054 size_t depth, 1055 const uint8_t *input, 1056 size_t inputRowPitch, 1057 size_t inputDepthPitch, 1058 uint8_t *output, 1059 size_t outputRowPitch, 1060 size_t outputDepthPitch); 1061 1062 void LoadETC2RGBA8ToBC3(const ImageLoadContext &context, 1063 size_t width, 1064 size_t height, 1065 size_t depth, 1066 const uint8_t *input, 1067 size_t inputRowPitch, 1068 size_t inputDepthPitch, 1069 uint8_t *output, 1070 size_t outputRowPitch, 1071 size_t outputDepthPitch); 1072 1073 void LoadETC2SRGBA8ToBC3(const ImageLoadContext &context, 1074 size_t width, 1075 size_t height, 1076 size_t depth, 1077 const uint8_t *input, 1078 size_t inputRowPitch, 1079 size_t inputDepthPitch, 1080 uint8_t *output, 1081 size_t outputRowPitch, 1082 size_t outputDepthPitch); 1083 1084 void LoadEACR11ToBC4(const ImageLoadContext &context, 1085 size_t width, 1086 size_t height, 1087 size_t depth, 1088 const uint8_t *input, 1089 size_t inputRowPitch, 1090 size_t inputDepthPitch, 1091 uint8_t *output, 1092 size_t outputRowPitch, 1093 size_t outputDepthPitch); 1094 1095 void LoadEACR11SToBC4(const ImageLoadContext &context, 1096 size_t width, 1097 size_t height, 1098 size_t depth, 1099 const uint8_t *input, 1100 size_t inputRowPitch, 1101 size_t inputDepthPitch, 1102 uint8_t *output, 1103 size_t outputRowPitch, 1104 size_t outputDepthPitch); 1105 1106 void LoadEACRG11ToBC5(const ImageLoadContext &context, 1107 size_t width, 1108 size_t height, 1109 size_t depth, 1110 const uint8_t *input, 1111 size_t inputRowPitch, 1112 size_t inputDepthPitch, 1113 uint8_t *output, 1114 size_t outputRowPitch, 1115 size_t outputDepthPitch); 1116 1117 void LoadEACRG11SToBC5(const ImageLoadContext &context, 1118 size_t width, 1119 size_t height, 1120 size_t depth, 1121 const uint8_t *input, 1122 size_t inputRowPitch, 1123 size_t inputDepthPitch, 1124 uint8_t *output, 1125 size_t outputRowPitch, 1126 size_t outputDepthPitch); 1127 1128 void LoadETC2RGBA8ToRGBA8(const ImageLoadContext &context, 1129 size_t width, 1130 size_t height, 1131 size_t depth, 1132 const uint8_t *input, 1133 size_t inputRowPitch, 1134 size_t inputDepthPitch, 1135 uint8_t *output, 1136 size_t outputRowPitch, 1137 size_t outputDepthPitch); 1138 1139 void LoadETC2SRGBA8ToSRGBA8(const ImageLoadContext &context, 1140 size_t width, 1141 size_t height, 1142 size_t depth, 1143 const uint8_t *input, 1144 size_t inputRowPitch, 1145 size_t inputDepthPitch, 1146 uint8_t *output, 1147 size_t outputRowPitch, 1148 size_t outputDepthPitch); 1149 1150 void LoadYuvToNative(const ImageLoadContext &context, 1151 size_t width, 1152 size_t height, 1153 size_t depth, 1154 const uint8_t *input, 1155 size_t inputRowPitch, 1156 size_t inputDepthPitch, 1157 uint8_t *output, 1158 size_t outputRowPitch, 1159 size_t outputDepthPitch); 1160 1161 void LoadPalettedToRGBA8Impl(const ImageLoadContext &context, 1162 size_t width, 1163 size_t height, 1164 size_t depth, 1165 uint32_t indexBits, 1166 uint32_t redBlueBits, 1167 uint32_t greenBits, 1168 uint32_t alphaBits, 1169 const uint8_t *input, 1170 size_t inputRowPitch, 1171 size_t inputDepthPitch, 1172 uint8_t *output, 1173 size_t outputRowPitch, 1174 size_t outputDepthPitch); 1175 1176 template <uint32_t indexBits, uint32_t redBlueBits, uint32_t greenBits, uint32_t alphaBits> 1177 inline void LoadPalettedToRGBA8(const ImageLoadContext &context, 1178 size_t width, 1179 size_t height, 1180 size_t depth, 1181 const uint8_t *input, 1182 size_t inputRowPitch, 1183 size_t inputDepthPitch, 1184 uint8_t *output, 1185 size_t outputRowPitch, 1186 size_t outputDepthPitch); 1187 1188 } // namespace angle 1189 1190 #include "loadimage.inc" 1191 1192 #endif // IMAGEUTIL_LOADIMAGE_H_ 1193