434 {
435
438
441 if (matSize1 < 2) {
442 continue;
443 }
444
447 if (vecLength2 < 1) {
448 continue;
449 }
450
451
452 const Uniform expectations[] = {{
"a", type1}, {
"b", type2}};
454 mgr.write(expectations[0],
kFloats);
455 mgr.write(expectations[1],
kFloats);
457
458
459 const
size_t elementSize1 =
element_size(layout, type1);
460 const
size_t elementSize2 =
element_size(layout, type2);
461 if (elementSize1 == elementSize2) {
462
463
464
465
466
467 static constexpr const char* kExpectedLayout[2][5][5] = {
468
469 {
470 { "", "", "", "", "" },
471 { "", "", "", "", "" },
472 { "", "AAaaAAaaB___", "AAaaAAaaBB__", "AAaaAAaaBBBb", "AAaaAAaaBBBB" },
473 { "",
474 "AAAaAAAaAAAaB___",
475 "AAAaAAAaAAAaBB__",
476 "AAAaAAAaAAAaBBBb",
477 "AAAaAAAaAAAaBBBB" },
478 { "",
479 "AAAAAAAAAAAAAAAAB___",
480 "AAAAAAAAAAAAAAAABB__",
481 "AAAAAAAAAAAAAAAABBBb",
482 "AAAAAAAAAAAAAAAABBBB" },
483 },
484
485 {
486 { "", "", "", "", "" },
487 { "", "", "", "", "" },
488 { "", "AAAAB_", "AAAABB", "AAAABBBb", "AAAABBBB" },
489 { "",
490 "AAAaAAAaAAAaB___",
491 "AAAaAAAaAAAaBB__",
492 "AAAaAAAaAAAaBBBb",
493 "AAAaAAAaAAAaBBBB" },
494 { "",
495 "AAAAAAAAAAAAAAAAB___",
496 "AAAAAAAAAAAAAAAABB__",
497 "AAAAAAAAAAAAAAAABBBb",
498 "AAAAAAAAAAAAAAAABBBB" },
499 },
500 };
501 int layoutIdx = static_cast<int>(layout != Layout::kStd140);
502 const size_t size = strlen(kExpectedLayout[layoutIdx][matSize1][vecLength2]) *
503 elementSize1;
506 "Layout: %s - Types: %s, %s matrix-vector padding test failed",
509 } else if (elementSize1 == 2 && elementSize2 == 4) {
510
511
512
513
514
515 static constexpr const char* kExpectedLayout[5][5] = {
516 { "", "", "", "", "" },
517 { "", "", "", "", "" },
518 { "", "AAAABB", "AAAABBBB", "AAAA____BBBBBBbb", "AAAA____BBBBBBBB" },
519 { "",
520 "AAAaAAAaAAAaBB__",
521 "AAAaAAAaAAAaBBBB",
522 "AAAaAAAaAAAa____BBBBBBbb",
523 "AAAaAAAaAAAa____BBBBBBBB" },
524 { "",
525 "AAAAAAAAAAAAAAAABB__",
526 "AAAAAAAAAAAAAAAABBBB",
527 "AAAAAAAAAAAAAAAABBBBBBbb",
528 "AAAAAAAAAAAAAAAABBBBBBBB" },
529 };
530 const size_t size = strlen(kExpectedLayout[matSize1][vecLength2]) * 2;
533 "Layout: %s - Types: %s, %s matrix-vector padding test failed",
536 } else if (elementSize1 == 4 && elementSize2 == 2) {
537
538
539
540
541
542 static constexpr const char* kExpectedLayout[5][5] = {
543 { "", "", "", "", "" },
544 { "", "", "", "", "" },
545 { "", "AAAAAAAAB___", "AAAAAAAABB__", "AAAAAAAABBBb", "AAAAAAAABBBB" },
546 { "",
547 "AAAAAAaaAAAAAAaaAAAAAAaaB_______",
548 "AAAAAAaaAAAAAAaaAAAAAAaaBB______",
549 "AAAAAAaaAAAAAAaaAAAAAAaaBBBb____",
550 "AAAAAAaaAAAAAAaaAAAAAAaaBBBB____" },
551 { "",
552 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB_______",
553 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB______",
554 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBb____",
555 "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBB____" },
556 };
557 const size_t size = strlen(kExpectedLayout[matSize1][vecLength2]) * 2;
560 "Layout: %s - Types: %s, %s matrix-vector padding test failed",
563 }
564 mgr.reset();
565 }
566 }
567 }
568}