From d722f4e01872d493797136ac538647ec6529677a Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 10 Mar 2023 19:34:43 -0800 Subject: [PATCH 1/2] Fix visual issues with heart --- impeller/fixtures/cubic_to_quads.comp | 2 +- impeller/fixtures/golden_heart.h | 498 +++++++++--------- impeller/fixtures/stroke.comp | 9 +- .../renderer/compute_subgroup_unittests.cc | 8 +- 4 files changed, 266 insertions(+), 251 deletions(-) diff --git a/impeller/fixtures/cubic_to_quads.comp b/impeller/fixtures/cubic_to_quads.comp index 723e2e3a280bd..9c84210ea6e54 100644 --- a/impeller/fixtures/cubic_to_quads.comp +++ b/impeller/fixtures/cubic_to_quads.comp @@ -49,7 +49,7 @@ void main() { CubicData cubic = cubics.data[ident]; - vec2 err_v = 3.0 * (cubic.cp2 - cubic.cp1) + cubic.p1 - cubic.p2; + vec2 err_v = (3.0 * cubic.cp2 - cubic.cp2) - (3.0 * cubic.cp1 - cubic.p1); float err = dot(err_v, err_v); float quad_count = max(1., ceil(pow(err * (1.0 / max_hypot2), 1. / 6.0))); diff --git a/impeller/fixtures/golden_heart.h b/impeller/fixtures/golden_heart.h index def3f465d4593..2343f41d450fb 100644 --- a/impeller/fixtures/golden_heart.h +++ b/impeller/fixtures/golden_heart.h @@ -39,22 +39,23 @@ std::vector golden_heart_quads = { {{99.5, 292.25}, {122.458, 313.146}, {148, 335.333}}, {{148, 335.333}, {173.542, 357.521}, {199.167, 383.75}}, {{199.167, 383.75}, {224.792, 409.979}, {248, 443}}, - {{248, 443}, {270.225, 410.208}, {295.519, 383.75}}, - {{295.519, 383.75}, {320.812, 357.292}, {346.481, 334.667}}, - {{346.481, 334.667}, {372.15, 312.042}, {395.5, 290.75}}, - {{395.5, 290.75}, {418.85, 269.458}, {437.185, 247}}, - {{437.185, 247}, {455.521, 224.542}, {466.148, 198.417}}, - {{466.148, 198.417}, {476.775, 172.292}, {477, 140}}, + {{248, 443}, {274.788, 403.76}, {305.608, 373.28}}, + {{305.608, 373.28}, {336.428, 342.8}, {366.624, 316.76}}, + {{366.624, 316.76}, {396.82, 290.72}, {421.736, 264.8}}, + {{421.736, 264.8}, {446.652, 238.88}, {461.632, 208.76}}, + {{461.632, 208.76}, {476.612, 178.64}, {477, 140}}, {{477, 140}, {476.836, 115.086}, {467.531, 93.4062}}, {{467.531, 93.4062}, {458.227, 71.7266}, {441.75, 55.25}}, {{441.75, 55.25}, {425.273, 38.7734}, {403.594, 29.4688}}, {{403.594, 29.4688}, {381.914, 20.1641}, {357, 20}}, - {{357, 20}, {332.843, 20.1389}, {311.63, 28.7778}}, - {{311.63, 28.7778}, {290.417, 37.4167}, {274.037, 52.8889}}, - {{274.037, 52.8889}, {257.657, 68.3611}, {248, 89}}, - {{248, 89}, {238.361, 68.3611}, {222.222, 52.8889}}, - {{222.222, 52.8889}, {206.083, 37.4167}, {185.111, 28.7778}}, - {{185.111, 28.7778}, {164.139, 20.1389}, {140, 20}}}; + {{357, 20}, {338.934, 20.0586}, {322.391, 25.0156}}, + {{322.391, 25.0156}, {305.848, 29.9727}, {291.625, 39.125}}, + {{291.625, 39.125}, {277.402, 48.2773}, {266.297, 60.9219}}, + {{266.297, 60.9219}, {255.191, 73.5664}, {248, 89}}, + {{248, 89}, {240.816, 73.5664}, {229.859, 60.9219}}, + {{229.859, 60.9219}, {218.902, 48.2773}, {204.875, 39.125}}, + {{204.875, 39.125}, {190.848, 29.9727}, {174.453, 25.0156}}, + {{174.453, 25.0156}, {158.059, 20.0586}, {140, 20}}}; // In local testing, CPU and GPU versions of the polyline algorithm // disagree on number of points, but both produce visually acceptable @@ -71,7 +72,7 @@ std::vector golden_heart_quads = { // easier storage and reading, but still precise enough to work visually. std::vector golden_heart_points = { {140, 20}, {131.765, 20.3023}, {123.672, 21.1078}, - {115.734, 22.4239}, {107.965, 24.2554}, {100.378, 26.6041}, + {115.734, 22.4238}, {107.965, 24.2553}, {100.378, 26.604}, {92.9844, 29.4688}, {85.9188, 32.7537}, {79.1253, 36.4472}, {72.615, 40.5481}, {66.3979, 45.0528}, {60.4823, 49.956}, {54.875, 55.25}, {49.6196, 60.8847}, {44.7551, 66.8194}, @@ -80,242 +81,247 @@ std::vector golden_heart_points = { {22.387, 116.001}, {21.0895, 123.861}, {20.296, 131.865}, {20, 140}, {20.2534, 149.197}, {20.906, 158.214}, {21.9689, 167.034}, {23.4519, 175.646}, {25.3637, 184.033}, - {27.7113, 192.183}, {30.5, 200.083}, {34.1384, 208.814}, - {38.2033, 217.323}, {42.6928, 225.603}, {47.6033, 233.646}, + {27.7113, 192.184}, {30.5, 200.083}, {34.1384, 208.814}, + {38.2033, 217.323}, {42.6928, 225.603}, {47.6032, 233.646}, {52.9299, 241.447}, {58.6667, 249}, {66.101, 257.978}, - {73.9106, 266.793}, {82.0865, 275.443}, {90.6194, 283.929}, + {73.9105, 266.793}, {82.0864, 275.443}, {90.6194, 283.929}, {99.5, 292.25}, {115.262, 306.476}, {131.433, 320.838}, - {148, 335.333}, {160.921, 346.811}, {173.757, 358.715}, - {186.506, 371.032}, {199.167, 383.75}, {207.755, 392.805}, - {216.163, 402.198}, {224.391, 411.923}, {232.439, 421.971}, - {240.309, 432.333}, {248, 443}, {255.407, 432.366}, - {263.018, 422.027}, {270.835, 411.988}, {278.857, 402.258}, - {287.085, 392.843}, {295.519, 383.75}, {308.072, 370.878}, - {320.75, 358.4}, {333.554, 346.326}, {346.481, 334.667}, - {363.181, 319.87}, {379.524, 305.229}, {395.5, 290.75}, - {404.531, 282.291}, {413.224, 273.686}, {421.57, 264.936}, - {429.56, 256.04}, {437.185, 247}, {443.055, 239.45}, - {448.516, 231.675}, {453.562, 223.678}, {458.186, 215.466}, - {462.382, 207.043}, {466.148, 198.417}, {469.016, 190.697}, - {471.436, 182.748}, {473.412, 174.582}, {474.949, 166.212}, - {476.053, 157.649}, {476.734, 148.908}, {477, 140}, - {476.697, 131.863}, {475.889, 123.857}, {474.571, 115.997}, - {472.739, 108.293}, {470.392, 100.759}, {467.531, 93.4062}, - {464.244, 86.3502}, {460.548, 79.5599}, {456.446, 73.0461}, - {451.942, 66.8181}, {447.041, 60.884}, {441.75, 55.25}, - {436.116, 49.9595}, {430.182, 45.0581}, {423.954, 40.5537}, - {417.44, 36.452}, {410.65, 32.7565}, {403.594, 29.4688}, - {396.241, 26.6084}, {388.707, 24.2609}, {381.004, 22.4286}, - {373.143, 21.1106}, {365.137, 20.3032}, {357, 20}, - {349.102, 20.2777}, {341.323, 21.0241}, {333.676, 22.2452}, - {326.171, 23.9443}, {318.819, 26.1224}, {311.63, 28.7778}, - {304.722, 31.8337}, {298.058, 35.2778}, {291.65, 39.1093}, - {285.505, 43.3251}, {279.632, 47.9205}, {274.037, 52.8889}, - {268.767, 58.1866}, {263.861, 63.7819}, {259.326, 69.6689}, - {255.169, 75.8403}, {251.393, 82.2873}, {248, 89}, - {244.622, 82.2933}, {240.874, 75.8498}, {236.755, 69.6796}, - {232.27, 63.7913}, {227.423, 58.1924}, {222.222, 52.8889}, - {216.709, 47.922}, {210.917, 43.3271}, {204.854, 39.1112}, - {198.525, 35.2793}, {191.941, 31.8344}, {185.111, 28.7778}, - {177.988, 26.1195}, {170.693, 23.9406}, {163.234, 22.242}, - {155.625, 21.0222}, {147.876, 20.277}, {140, 20}}; + {148, 335.333}, {160.921, 346.811}, {173.756, 358.715}, + {186.505, 371.032}, {199.167, 383.75}, {207.755, 392.805}, + {216.162, 402.199}, {224.39, 411.923}, {232.439, 421.971}, + {240.308, 432.333}, {248, 443}, {256.919, 430.332}, + {266.11, 418.068}, {275.573, 406.219}, {285.311, 394.798}, + {295.323, 383.815}, {305.608, 373.28}, {320.792, 358.497}, + {336.024, 344.14}, {351.302, 330.223}, {366.624, 316.76}, + {378.306, 306.514}, {389.668, 296.195}, {400.701, 285.803}, + {411.394, 275.337}, {421.736, 264.8}, {428.581, 257.389}, + {435.057, 249.775}, {441.156, 241.961}, {446.87, 233.949}, + {452.191, 225.742}, {457.113, 217.344}, {461.632, 208.76}, + {465.203, 200.969}, {468.296, 192.923}, {470.911, 184.634}, + {473.052, 176.115}, {474.723, 167.378}, {475.932, 158.437}, + {476.688, 149.306}, {477, 140}, {476.697, 131.863}, + {475.889, 123.858}, {474.571, 115.997}, {472.739, 108.293}, + {470.392, 100.759}, {467.531, 93.4062}, {464.244, 86.3502}, + {460.548, 79.56}, {456.446, 73.0462}, {451.942, 66.8182}, + {447.041, 60.884}, {441.75, 55.25}, {436.116, 49.9595}, + {430.182, 45.0581}, {423.954, 40.5537}, {417.44, 36.4519}, + {410.65, 32.7564}, {403.594, 29.4688}, {396.241, 26.6083}, + {388.707, 24.2609}, {381.004, 22.4285}, {373.143, 21.1106}, + {365.137, 20.3032}, {357, 20}, {349.883, 20.2166}, + {342.854, 20.8233}, {335.924, 21.8241}, {329.1, 23.2213}, + {322.391, 25.0156}, {315.89, 27.1579}, {309.555, 29.6407}, + {303.395, 32.464}, {297.417, 35.6264}, {291.625, 39.125}, + {286.069, 42.9193}, {280.753, 46.9996}, {275.682, 51.363}, + {270.862, 56.0054}, {266.297, 60.9219}, {262.009, 66.0936}, + {258.032, 71.4931}, {254.37, 77.115}, {251.025, 82.9529}, + {248, 89}, {244.986, 82.9569}, {241.662, 77.1209}, + {238.032, 71.4991}, {234.096, 66.0976}, {229.859, 60.9219}, + {225.358, 56.0078}, {220.604, 51.3663}, {215.602, 47.0027}, + {210.357, 42.9213}, {204.875, 39.125}, {199.159, 35.6259}, + {193.252, 32.4632}, {187.161, 29.6399}, {180.892, 27.1574}, + {174.453, 25.0156}, {167.791, 23.2197}, {161.006, 21.8222}, + {154.106, 20.822}, {147.101, 20.2161}, {140, 20}}; std::vector golden_heart_vertices = { - {139.95, 19.5025}, {140.05, 20.4975}, {131.715, 19.8048}, - {131.815, 20.7998}, {131.683, 19.809}, {131.847, 20.7956}, - {123.59, 20.6145}, {123.753, 21.601}, {123.557, 20.6211}, - {123.786, 21.5944}, {115.619, 21.9372}, {115.848, 22.9105}, - {115.586, 21.9462}, {115.882, 22.9015}, {107.817, 23.7777}, - {108.113, 24.733}, {107.784, 23.7891}, {108.146, 24.7215}, - {100.197, 26.1378}, {100.558, 27.0703}, {100.167, 26.1506}, - {100.589, 27.0574}, {92.7736, 29.0154}, {93.1952, 29.9221}, - {92.7456, 29.0295}, {93.2232, 29.908}, {85.68, 32.3144}, - {86.1576, 33.193}, {85.6523, 32.3306}, {86.1853, 33.1768}, - {78.8588, 36.0242}, {79.3918, 36.8703}, {78.8319, 36.0423}, - {79.4187, 36.8521}, {72.3216, 40.1432}, {72.9084, 40.9529}, - {72.2959, 40.1631}, {72.9341, 40.933}, {66.0788, 44.6679}, - {66.717, 45.4378}, {66.0546, 44.6893}, {66.7411, 45.4164}, - {60.139, 49.5924}, {60.8255, 50.3196}, {60.1166, 49.615}, - {60.8479, 50.297}, {54.5094, 54.909}, {55.2406, 55.591}, - {54.4883, 54.933}, {55.2617, 55.567}, {49.2329, 60.5677}, - {50.0063, 61.2016}, {49.2133, 60.5933}, {50.026, 61.176}, - {44.3488, 66.5281}, {45.1614, 67.1108}, {44.3308, 66.5549}, - {45.1794, 67.084}, {39.8648, 72.7832}, {40.7133, 73.3123}, - {39.8488, 72.8108}, {40.7293, 73.2847}, {35.7869, 79.3246}, - {36.6675, 79.7985}, {35.7729, 79.3526}, {36.6815, 79.7705}, - {32.1188, 86.1424}, {33.0273, 86.5603}, {32.1062, 86.1723}, - {33.0399, 86.5304}, {28.8613, 93.2272}, {29.795, 93.5853}, - {28.8502, 93.2595}, {29.8061, 93.553}, {26.0288, 100.615}, - {26.9847, 100.908}, {26.0199, 100.648}, {26.9935, 100.876}, - {23.7056, 108.183}, {24.6792, 108.411}, {23.6991, 108.215}, - {24.6857, 108.378}, {21.8937, 115.919}, {22.8804, 116.082}, - {21.8895, 115.951}, {22.8846, 116.05}, {20.592, 123.812}, - {21.5871, 123.91}, {20.5899, 123.843}, {21.5892, 123.879}, - {19.7964, 131.847}, {20.7957, 131.883}, {19.7962, 131.879}, - {20.7958, 131.851}, {19.5002, 140.014}, {20.4998, 139.986}, - {19.5013, 140.036}, {20.4987, 139.964}, {19.7547, 149.234}, - {20.7521, 149.161}, {19.757, 149.257}, {20.7498, 149.138}, - {20.4096, 158.273}, {21.4024, 158.154}, {20.4133, 158.299}, - {21.3987, 158.129}, {21.4761, 167.119}, {22.4616, 166.95}, - {21.4814, 167.146}, {22.4564, 166.923}, {22.9644, 175.757}, - {23.9394, 175.535}, {22.9715, 175.784}, {23.9324, 175.507}, - {24.8833, 184.172}, {25.8442, 183.895}, {24.8923, 184.2}, - {25.8352, 183.867}, {27.2398, 192.35}, {28.1828, 192.017}, - {27.2498, 192.376}, {28.1728, 191.991}, {30.0385, 200.276}, - {30.9615, 199.891}, {30.0488, 200.299}, {30.9512, 199.868}, - {33.6872, 209.03}, {34.5896, 208.599}, {33.6989, 209.053}, - {34.5779, 208.576}, {37.7638, 217.562}, {38.6429, 217.085}, - {37.7766, 217.584}, {38.6301, 217.063}, {42.266, 225.863}, - {43.1195, 225.342}, {42.2799, 225.885}, {43.1057, 225.321}, - {47.1903, 233.928}, {48.0162, 233.364}, {47.2051, 233.949}, - {48.0014, 233.344}, {52.5317, 241.749}, {53.3281, 241.144}, - {52.5448, 241.766}, {53.315, 241.128}, {58.2816, 249.319}, - {59.0518, 248.681}, {58.2924, 249.332}, {59.0409, 248.668}, - {65.7267, 258.309}, {66.4752, 257.646}, {65.7376, 258.321}, - {66.4644, 257.634}, {73.5471, 267.136}, {74.2739, 266.449}, - {73.558, 267.147}, {74.2631, 266.438}, {81.7338, 275.798}, - {82.439, 275.089}, {81.7445, 275.808}, {82.4283, 275.078}, - {90.2775, 284.294}, {90.9613, 283.564}, {90.2844, 284.3}, - {90.9544, 283.558}, {99.165, 292.621}, {99.835, 291.879}, - {99.168, 292.624}, {99.832, 291.876}, {114.93, 306.849}, - {115.594, 306.102}, {114.933, 306.852}, {115.591, 306.099}, - {131.104, 321.215}, {131.762, 320.462}, {131.101, 321.212}, - {131.765, 320.464}, {147.668, 335.707}, {148.332, 334.96}, - {147.66, 335.7}, {148.34, 334.967}, {160.581, 347.178}, - {161.261, 346.445}, {160.573, 347.171}, {161.268, 346.452}, - {173.409, 359.074}, {174.104, 358.355}, {173.402, 359.068}, - {174.111, 358.362}, {186.151, 371.385}, {186.86, 370.679}, - {186.143, 371.376}, {186.868, 370.688}, {198.804, 384.094}, - {199.529, 383.406}, {198.794, 384.084}, {199.539, 383.417}, - {207.382, 393.138}, {208.127, 392.471}, {207.373, 393.128}, - {208.136, 392.482}, {215.781, 402.522}, {216.544, 401.876}, - {215.772, 402.511}, {216.553, 401.886}, {224, 412.236}, - {224.781, 411.611}, {223.992, 412.226}, {224.789, 411.621}, - {232.041, 422.273}, {232.837, 421.668}, {232.033, 422.263}, - {232.844, 421.678}, {239.903, 432.625}, {240.714, 432.04}, - {240.719, 432.618}, {239.898, 432.047}, {248.41, 443.286}, - {247.59, 442.714}, {248.403, 443.296}, {247.597, 442.704}, - {255.809, 432.663}, {255.004, 432.07}, {255.801, 432.674}, - {255.012, 432.059}, {263.412, 422.334}, {262.623, 421.72}, - {263.404, 422.345}, {262.632, 421.709}, {271.22, 412.306}, - {270.448, 411.67}, {271.211, 412.317}, {270.458, 411.659}, - {279.233, 402.587}, {278.48, 401.929}, {279.223, 402.598}, - {278.49, 401.918}, {287.451, 393.183}, {286.718, 392.503}, - {287.442, 393.192}, {286.727, 392.494}, {295.876, 384.099}, - {295.161, 383.401}, {295.869, 384.106}, {295.168, 383.394}, - {308.423, 371.234}, {307.721, 370.522}, {308.415, 371.242}, - {307.729, 370.514}, {321.094, 358.764}, {320.408, 358.036}, - {321.086, 358.771}, {320.416, 358.029}, {333.889, 346.697}, - {333.219, 345.955}, {333.886, 346.7}, {333.222, 345.952}, - {346.813, 335.041}, {346.15, 334.292}, {346.815, 335.039}, - {346.148, 334.294}, {363.515, 320.242}, {362.848, 319.497}, - {363.517, 320.24}, {362.846, 319.499}, {379.86, 305.6}, - {379.189, 304.859}, {379.866, 305.594}, {379.183, 304.864}, - {395.842, 291.115}, {395.158, 290.385}, {395.852, 291.105}, - {395.148, 290.395}, {404.882, 282.647}, {404.179, 281.936}, - {404.892, 282.636}, {404.169, 281.946}, {413.586, 274.032}, - {412.862, 273.341}, {413.596, 274.021}, {412.852, 273.352}, - {421.942, 265.27}, {421.198, 264.602}, {421.952, 265.258}, - {421.188, 264.613}, {429.943, 256.362}, {429.178, 255.718}, - {429.955, 256.347}, {429.166, 255.733}, {437.58, 247.307}, - {436.79, 246.693}, {437.594, 247.287}, {436.776, 246.713}, - {443.464, 239.737}, {442.646, 239.163}, {443.478, 239.717}, - {442.632, 239.183}, {448.939, 231.941}, {448.094, 231.408}, - {448.952, 231.92}, {448.081, 231.429}, {453.998, 223.923}, - {453.126, 223.433}, {454.01, 223.901}, {453.115, 223.455}, - {458.633, 215.689}, {457.738, 215.243}, {458.644, 215.666}, - {457.727, 215.266}, {462.841, 207.243}, {461.924, 206.843}, - {462.851, 207.217}, {461.914, 206.869}, {466.617, 198.591}, - {465.679, 198.243}, {466.626, 198.562}, {465.67, 198.271}, - {469.494, 190.842}, {468.538, 190.551}, {469.502, 190.814}, - {468.53, 190.579}, {471.922, 182.865}, {470.951, 182.63}, - {471.928, 182.838}, {470.945, 182.657}, {473.904, 174.672}, - {472.921, 174.492}, {473.908, 174.646}, {472.917, 174.518}, - {475.445, 166.275}, {474.453, 166.147}, {475.448, 166.25}, - {474.451, 166.173}, {476.552, 157.688}, {475.555, 157.61}, - {476.553, 157.664}, {475.554, 157.634}, {477.234, 148.922}, - {476.234, 148.893}, {477.234, 148.889}, {476.234, 148.926}, - {477.5, 139.981}, {476.5, 140.019}, {477.497, 139.95}, - {476.503, 140.05}, {477.194, 131.813}, {476.199, 131.913}, - {477.19, 131.78}, {476.204, 131.946}, {476.383, 123.775}, - {475.396, 123.94}, {476.376, 123.742}, {475.403, 123.973}, - {475.058, 115.881}, {474.085, 116.112}, {475.049, 115.848}, - {474.094, 116.145}, {473.216, 108.144}, {472.262, 108.442}, - {473.205, 108.112}, {472.273, 108.474}, {470.858, 100.578}, - {469.926, 100.94}, {470.845, 100.548}, {469.938, 100.97}, - {467.984, 93.1951}, {467.078, 93.6174}, {467.97, 93.1672}, - {467.092, 93.6453}, {464.683, 86.1112}, {463.804, 86.5892}, - {464.667, 86.0838}, {463.821, 86.6167}, {460.971, 79.2935}, - {460.125, 79.8264}, {460.953, 79.267}, {460.143, 79.853}, - {456.851, 72.7531}, {456.041, 73.3392}, {456.832, 72.7278}, - {456.061, 73.3646}, {452.327, 66.4998}, {451.556, 67.1366}, - {452.306, 66.4759}, {451.577, 67.1604}, {447.405, 60.5417}, - {446.676, 61.2262}, {447.383, 60.5195}, {446.698, 61.2485}, - {442.092, 54.8855}, {441.408, 55.6145}, {442.068, 54.8645}, - {441.432, 55.6355}, {436.434, 49.5739}, {435.798, 50.345}, - {436.409, 49.5543}, {435.823, 50.3646}, {430.475, 44.653}, - {429.889, 45.4633}, {430.448, 44.635}, {429.915, 45.4812}, - {424.22, 40.1306}, {423.687, 40.9768}, {424.193, 40.1145}, - {423.715, 40.9929}, {417.679, 36.0127}, {417.201, 36.8911}, - {417.651, 35.9987}, {417.229, 36.9051}, {410.861, 32.3032}, - {410.439, 33.2096}, {410.831, 32.2904}, {410.469, 33.2224}, - {403.775, 29.0028}, {403.412, 29.9347}, {403.742, 28.9914}, - {403.445, 29.9461}, {396.39, 26.131}, {396.092, 27.0857}, - {396.357, 26.1219}, {396.125, 27.0948}, {388.823, 23.7744}, - {388.591, 24.7473}, {388.79, 23.7677}, {388.624, 24.754}, - {381.086, 21.9354}, {380.921, 22.9217}, {381.054, 21.9311}, - {380.953, 22.926}, {373.193, 20.6131}, {373.092, 21.608}, - {373.161, 20.6109}, {373.124, 21.6102}, {365.156, 19.8036}, - {365.118, 20.8029}, {365.119, 19.8035}, {365.154, 20.8029}, - {356.982, 19.5003}, {357.018, 20.4997}, {356.952, 19.5023}, - {357.048, 20.4977}, {349.054, 19.7799}, {349.15, 20.7754}, - {349.023, 19.7839}, {349.181, 20.7714}, {341.244, 20.5304}, - {341.402, 21.5179}, {341.213, 20.5365}, {341.434, 21.5118}, - {333.565, 21.7575}, {333.786, 22.7329}, {333.534, 21.7658}, - {333.818, 22.7246}, {326.028, 23.4649}, {326.312, 24.4237}, - {325.997, 23.4753}, {326.343, 24.4133}, {318.645, 25.6533}, - {318.991, 26.5914}, {318.616, 25.6651}, {319.02, 26.5796}, - {311.427, 28.3205}, {311.832, 29.235}, {311.4, 28.3336}, - {311.859, 29.2219}, {304.492, 31.3895}, {304.951, 32.2778}, - {304.465, 31.4045}, {304.978, 32.2628}, {297.801, 34.8487}, - {298.314, 35.707}, {297.775, 34.8655}, {298.341, 35.6901}, - {291.367, 38.697}, {291.932, 39.5216}, {291.341, 38.7155}, - {291.958, 39.5031}, {285.197, 42.9313}, {285.813, 43.7189}, - {285.173, 42.9512}, {285.837, 43.699}, {279.3, 47.5467}, - {279.964, 48.2944}, {279.278, 47.5679}, {279.987, 48.2732}, - {273.683, 52.5363}, {274.392, 53.2415}, {273.661, 52.5592}, - {274.413, 53.2185}, {268.391, 57.857}, {269.143, 58.5163}, - {268.371, 57.8815}, {269.163, 58.4917}, {263.465, 63.4768}, - {264.257, 64.087}, {263.446, 63.5026}, {264.276, 64.0613}, - {258.912, 69.3896}, {259.741, 69.9483}, {258.895, 69.4162}, - {259.758, 69.9216}, {254.738, 75.5876}, {255.601, 76.093}, - {254.723, 75.6147}, {255.615, 76.0659}, {250.947, 82.0618}, - {251.839, 82.5129}, {251.84, 82.0624}, {250.947, 82.5122}, - {248.447, 88.7751}, {247.553, 89.2249}, {248.432, 88.7486}, - {247.568, 89.2514}, {245.055, 82.0419}, {244.19, 82.5447}, - {245.038, 82.0157}, {244.207, 82.5709}, {241.29, 75.5723}, - {240.458, 76.1274}, {241.271, 75.5469}, {240.476, 76.1528}, - {237.153, 69.3766}, {236.357, 69.9825}, {237.133, 69.3523}, - {236.377, 70.0068}, {232.648, 63.464}, {231.892, 64.1185}, - {232.627, 63.4412}, {231.913, 64.1414}, {227.781, 57.8422}, - {227.067, 58.5424}, {227.758, 57.8209}, {227.089, 58.5638}, - {222.557, 52.5174}, {221.888, 53.2604}, {222.533, 52.4972}, - {221.911, 53.2806}, {217.02, 47.5303}, {216.398, 48.3137}, - {216.995, 47.5114}, {216.424, 48.3325}, {211.203, 42.9166}, - {210.632, 43.7376}, {211.176, 42.8994}, {210.659, 43.7548}, - {205.113, 38.6835}, {204.595, 39.5389}, {205.086, 38.6682}, - {204.622, 39.5542}, {198.757, 34.8362}, {198.294, 35.7223}, - {198.73, 34.8229}, {198.321, 35.7356}, {192.145, 31.378}, - {191.737, 32.2908}, {192.116, 31.3659}, {191.766, 32.3028}, - {185.286, 28.3093}, {184.936, 29.2462}, {185.254, 28.2987}, - {184.968, 29.2569}, {178.132, 25.6404}, {177.845, 26.5986}, - {178.1, 25.632}, {177.877, 26.607}, {170.804, 23.4531}, - {170.582, 24.4281}, {170.772, 23.4469}, {170.614, 24.4343}, - {163.313, 21.7483}, {163.155, 22.7357}, {163.282, 21.7443}, - {163.186, 22.7397}, {155.673, 20.5245}, {155.577, 21.5199}, - {155.642, 20.5225}, {155.607, 21.5219}, {147.893, 19.7773}, - {147.858, 20.7767}, {147.947, 19.782}, {147.805, 20.772}, - {140.071, 19.505}, {139.929, 20.495}, -}; + {139.982, 19.5003}, {140.018, 20.4997}, {131.747, 19.8026}, + {131.783, 20.802}, {131.715, 19.8048}, {131.815, 20.7998}, + {123.622, 20.6102}, {123.721, 21.6053}, {123.59, 20.6145}, + {123.753, 21.601}, {115.652, 21.9306}, {115.816, 22.9171}, + {115.619, 21.9372}, {115.848, 22.9105}, {107.85, 23.7687}, + {108.08, 24.742}, {107.817, 23.7777}, {108.113, 24.733}, + {100.23, 26.1264}, {100.526, 27.0817}, {100.197, 26.1378}, + {100.558, 27.0703}, {92.8037, 29.0025}, {93.165, 29.935}, + {92.7736, 29.0154}, {93.1952, 29.9221}, {85.708, 32.3003}, + {86.1296, 33.2071}, {85.68, 32.3144}, {86.1576, 33.193}, + {78.8865, 36.008}, {79.3641, 36.8865}, {78.8588, 36.0242}, + {79.3918, 36.8703}, {72.3485, 40.125}, {72.8815, 40.9711}, + {72.3216, 40.1432}, {72.9084, 40.9529}, {66.1045, 44.6479}, + {66.6913, 45.4577}, {66.0788, 44.6679}, {66.717, 45.4378}, + {60.1632, 49.5711}, {60.8014, 50.341}, {60.139, 49.5924}, + {60.8255, 50.3196}, {54.5317, 54.8864}, {55.2183, 55.6136}, + {54.5094, 54.909}, {55.2406, 55.591}, {49.254, 60.5436}, + {49.9853, 61.2257}, {49.2329, 60.5677}, {50.0063, 61.2016}, + {44.3684, 66.5025}, {45.1418, 67.1364}, {44.3488, 66.5281}, + {45.1614, 67.1108}, {39.8827, 72.7564}, {40.6954, 73.3391}, + {39.8648, 72.7832}, {40.7133, 73.3123}, {35.8029, 79.297}, + {36.6515, 79.8261}, {35.7869, 79.3246}, {36.6675, 79.7985}, + {32.1328, 86.1144}, {33.0134, 86.5883}, {32.1188, 86.1424}, + {33.0273, 86.5603}, {28.8739, 93.1973}, {29.7824, 93.6152}, + {28.8613, 93.2272}, {29.795, 93.5853}, {26.0399, 100.583}, + {26.9736, 100.941}, {26.0288, 100.615}, {26.9847, 100.908}, + {23.7144, 108.15}, {24.6704, 108.444}, {23.7056, 108.183}, + {24.6792, 108.411}, {21.9002, 115.886}, {22.8738, 116.115}, + {21.8937, 115.919}, {22.8804, 116.082}, {20.5962, 123.779}, + {21.5828, 123.942}, {20.592, 123.812}, {21.5871, 123.91}, + {19.7985, 131.816}, {20.7936, 131.914}, {19.7964, 131.847}, + {20.7957, 131.883}, {19.5003, 139.982}, {20.4997, 140.018}, + {19.5002, 140.014}, {20.4998, 139.986}, {19.7536, 149.211}, + {20.7532, 149.184}, {19.7547, 149.234}, {20.7521, 149.161}, + {20.4073, 158.25}, {21.4047, 158.178}, {20.4096, 158.273}, + {21.4024, 158.154}, {21.4725, 167.094}, {22.4653, 166.975}, + {21.4761, 167.119}, {22.4616, 166.95}, {22.9592, 175.73}, + {23.9447, 175.561}, {22.9644, 175.757}, {23.9394, 175.535}, + {24.8762, 184.144}, {25.8512, 183.922}, {24.8833, 184.172}, + {25.8442, 183.895}, {27.2309, 192.322}, {28.1918, 192.045}, + {27.2398, 192.35}, {28.1828, 192.017}, {30.0285, 200.25}, + {30.9715, 199.917}, {30.0385, 200.276}, {30.9615, 199.891}, + {33.6769, 209.007}, {34.5999, 208.622}, {33.6872, 209.03}, + {34.5896, 208.599}, {37.7522, 217.539}, {38.6545, 217.108}, + {37.7638, 217.562}, {38.6429, 217.085}, {42.2532, 225.841}, + {43.1323, 225.365}, {42.266, 225.863}, {43.1195, 225.342}, + {47.1765, 233.907}, {48.03, 233.386}, {47.1903, 233.928}, + {48.0162, 233.364}, {52.517, 241.729}, {53.3428, 241.165}, + {52.5317, 241.749}, {53.3281, 241.144}, {58.2685, 249.302}, + {59.0648, 248.698}, {58.2816, 249.319}, {59.0518, 248.681}, + {65.7159, 258.297}, {66.4861, 257.659}, {65.7267, 258.309}, + {66.4752, 257.646}, {73.5363, 267.124}, {74.2848, 266.461}, + {73.5471, 267.136}, {74.2739, 266.449}, {81.723, 275.787}, + {82.4498, 275.1}, {81.7338, 275.798}, {82.439, 275.089}, + {90.2668, 284.284}, {90.972, 283.575}, {90.2775, 284.294}, + {90.9613, 283.564}, {99.1581, 292.615}, {99.8419, 291.885}, + {99.165, 292.621}, {99.835, 291.879}, {114.927, 306.847}, + {115.597, 306.104}, {114.93, 306.849}, {115.594, 306.102}, + {131.101, 321.212}, {131.765, 320.464}, {131.104, 321.215}, + {131.762, 320.462}, {147.671, 335.71}, {148.329, 334.957}, + {147.668, 335.707}, {148.332, 334.96}, {160.589, 347.185}, + {161.253, 346.437}, {160.581, 347.178}, {161.261, 346.445}, + {173.416, 359.081}, {174.096, 358.348}, {173.409, 359.074}, + {174.104, 358.355}, {186.158, 371.391}, {186.853, 370.672}, + {186.151, 371.385}, {186.86, 370.679}, {198.812, 384.103}, + {199.521, 383.397}, {198.804, 384.094}, {199.529, 383.406}, + {207.392, 393.149}, {208.117, 392.461}, {207.382, 393.138}, + {208.127, 392.471}, {215.79, 402.532}, {216.535, 401.865}, + {215.781, 402.522}, {216.544, 401.876}, {224.009, 412.246}, + {224.772, 411.6}, {224, 412.236}, {224.781, 411.611}, + {232.049, 422.283}, {232.829, 421.658}, {232.041, 422.273}, + {232.837, 421.668}, {239.91, 432.635}, {240.707, 432.03}, + {239.903, 432.625}, {240.714, 432.04}, {247.594, 443.292}, + {248.406, 442.708}, {248.409, 443.288}, {247.591, 442.712}, + {257.328, 430.62}, {256.51, 430.044}, {257.319, 430.632}, + {256.519, 430.032}, {266.51, 418.368}, {265.709, 417.768}, + {266.5, 418.38}, {265.719, 417.756}, {275.964, 406.532}, + {275.183, 405.907}, {275.954, 406.544}, {275.193, 405.895}, + {285.692, 395.122}, {284.931, 394.474}, {285.681, 395.135}, + {284.942, 394.461}, {295.692, 384.151}, {294.953, 383.478}, + {295.681, 384.164}, {294.965, 383.465}, {305.966, 373.629}, + {305.25, 372.931}, {305.957, 373.638}, {305.259, 372.922}, + {321.141, 358.855}, {320.443, 358.138}, {321.135, 358.861}, + {320.449, 358.133}, {336.367, 344.504}, {335.681, 343.776}, + {336.361, 344.51}, {335.687, 343.77}, {351.639, 330.593}, + {350.965, 329.854}, {351.632, 330.599}, {350.972, 329.848}, + {366.954, 317.136}, {366.294, 316.384}, {366.954, 317.136}, + {366.294, 316.384}, {378.635, 306.89}, {377.976, 306.139}, + {378.642, 306.885}, {377.97, 306.144}, {390.004, 296.565}, + {389.332, 295.825}, {390.011, 296.559}, {389.325, 295.831}, + {401.044, 286.167}, {400.358, 285.439}, {401.05, 286.16}, + {400.351, 285.445}, {411.743, 275.695}, {411.044, 274.98}, + {411.75, 275.688}, {411.037, 274.987}, {422.093, 265.15}, + {421.379, 264.45}, {422.103, 265.139}, {421.369, 264.461}, + {428.948, 257.728}, {428.213, 257.05}, {428.962, 257.713}, + {428.2, 257.065}, {435.438, 250.099}, {434.676, 249.451}, + {435.451, 250.083}, {434.663, 249.468}, {441.55, 242.269}, + {440.762, 241.654}, {441.563, 242.252}, {440.749, 241.671}, + {447.277, 234.239}, {446.462, 233.659}, {447.289, 234.221}, + {446.45, 233.677}, {452.61, 226.014}, {451.771, 225.47}, + {452.622, 225.995}, {451.759, 225.489}, {457.545, 217.597}, + {456.682, 217.092}, {457.556, 217.577}, {456.671, 217.112}, + {462.074, 208.993}, {461.19, 208.527}, {462.087, 208.968}, + {461.177, 208.552}, {465.657, 201.177}, {464.748, 200.761}, + {465.669, 201.148}, {464.736, 200.79}, {468.762, 193.103}, + {467.829, 192.744}, {468.772, 193.074}, {467.819, 192.773}, + {471.388, 184.785}, {470.434, 184.484}, {471.396, 184.756}, + {470.426, 184.513}, {473.537, 176.237}, {472.567, 175.993}, + {473.543, 176.209}, {472.561, 176.021}, {475.214, 167.472}, + {474.232, 167.284}, {475.219, 167.445}, {474.228, 167.311}, + {476.428, 158.504}, {475.437, 158.37}, {476.431, 158.478}, + {475.434, 158.396}, {477.186, 149.348}, {476.19, 149.265}, + {477.188, 149.323}, {476.188, 149.29}, {477.5, 140.017}, + {476.5, 139.983}, {477.5, 139.981}, {476.5, 140.019}, + {477.196, 131.844}, {476.197, 131.882}, {477.194, 131.813}, + {476.199, 131.913}, {476.387, 123.807}, {475.392, 123.908}, + {476.383, 123.775}, {475.396, 123.94}, {475.065, 115.914}, + {474.078, 116.079}, {475.058, 115.881}, {474.085, 116.112}, + {473.226, 108.177}, {472.253, 108.409}, {473.216, 108.144}, + {472.262, 108.442}, {470.869, 100.61}, {469.914, 100.908}, + {470.858, 100.578}, {469.926, 100.94}, {467.997, 93.225}, + {467.065, 93.5875}, {467.984, 93.1951}, {467.078, 93.6174}, + {464.697, 86.1391}, {463.79, 86.5614}, {464.683, 86.1112}, + {463.804, 86.5892}, {460.987, 79.321}, {460.109, 79.799}, + {460.971, 79.2935}, {460.125, 79.8264}, {456.869, 72.7797}, + {456.023, 73.3126}, {456.851, 72.7531}, {456.041, 73.3392}, + {452.347, 66.5252}, {451.537, 67.1112}, {452.327, 66.4998}, + {451.556, 67.1366}, {447.426, 60.5656}, {446.655, 61.2024}, + {447.405, 60.5417}, {446.676, 61.2262}, {442.115, 54.9077}, + {441.385, 55.5923}, {442.092, 54.8855}, {441.408, 55.6145}, + {436.458, 49.595}, {435.774, 50.3239}, {436.434, 49.5739}, + {435.798, 50.345}, {430.5, 44.6726}, {429.863, 45.4436}, + {430.475, 44.653}, {429.889, 45.4633}, {424.247, 40.1486}, + {423.661, 40.9588}, {424.22, 40.1306}, {423.687, 40.9768}, + {417.706, 36.0288}, {417.174, 36.875}, {417.679, 36.0127}, + {417.201, 36.8911}, {410.889, 32.3172}, {410.411, 33.1956}, + {410.861, 32.3032}, {410.439, 33.2096}, {403.805, 29.0155}, + {403.383, 29.922}, {403.775, 29.0028}, {403.412, 29.9347}, + {396.422, 26.1423}, {396.06, 27.0743}, {396.39, 26.131}, + {396.092, 27.0857}, {388.856, 23.7835}, {388.558, 24.7382}, + {388.823, 23.7744}, {388.591, 24.7473}, {381.119, 21.9421}, + {380.888, 22.915}, {381.086, 21.9354}, {380.921, 22.9217}, + {373.225, 20.6175}, {373.06, 21.6037}, {373.193, 20.6131}, + {373.092, 21.608}, {365.187, 19.8057}, {365.087, 20.8007}, + {365.156, 19.8036}, {365.118, 20.8029}, {357.019, 19.5003}, + {356.981, 20.4997}, {356.985, 19.5002}, {357.015, 20.4998}, + {349.867, 19.7168}, {349.898, 20.7163}, {349.84, 19.7184}, + {349.926, 20.7147}, {342.811, 20.3251}, {342.897, 21.3214}, + {342.783, 20.3284}, {342.926, 21.3181}, {335.853, 21.3292}, + {335.996, 22.3189}, {335.824, 21.3342}, {336.025, 22.3139}, + {329, 22.7315}, {329.201, 23.7111}, {328.971, 22.7383}, + {329.229, 23.7043}, {322.261, 24.5326}, {322.52, 25.4987}, + {322.234, 24.5407}, {322.547, 25.4905}, {315.733, 26.683}, + {316.046, 27.6327}, {315.707, 26.6923}, {316.072, 27.6234}, + {309.373, 29.1752}, {309.738, 30.1062}, {309.347, 29.1862}, + {309.764, 30.0952}, {303.187, 32.0095}, {303.604, 32.9186}, + {303.162, 32.0221}, {303.629, 32.906}, {297.183, 35.1844}, + {297.65, 36.0684}, {297.158, 35.1984}, {297.675, 36.0544}, + {291.366, 38.697}, {291.884, 39.553}, {291.343, 38.7121}, + {291.907, 39.5379}, {285.787, 42.5064}, {286.351, 43.3322}, + {285.765, 42.5227}, {286.374, 43.316}, {280.449, 46.603}, + {281.057, 47.3962}, {280.427, 46.6206}, {281.079, 47.3786}, + {275.356, 50.984}, {276.008, 51.742}, {275.335, 51.0028}, + {276.029, 51.7231}, {270.515, 55.6453}, {271.209, 56.3655}, + {270.496, 55.6652}, {271.229, 56.3456}, {265.93, 60.5816}, + {266.663, 61.2621}, {265.912, 60.6028}, {266.682, 61.241}, + {261.624, 65.7745}, {262.394, 66.4128}, {261.607, 65.7971}, + {262.412, 66.3902}, {257.63, 71.1966}, {258.435, 71.7896}, + {257.613, 71.2202}, {258.451, 71.766}, {253.951, 76.842}, + {254.789, 77.3879}, {253.936, 76.8664}, {254.804, 77.3635}, + {250.591, 82.7044}, {251.459, 83.2015}, {250.578, 82.7292}, + {251.472, 83.1767}, {247.553, 88.7763}, {248.447, 89.2237}, + {248.447, 88.7768}, {247.553, 89.2232}, {245.433, 82.7337}, + {244.538, 83.1801}, {245.42, 82.7095}, {244.551, 83.2043}, + {242.097, 76.8735}, {241.228, 77.3683}, {242.082, 76.8497}, + {241.242, 77.3922}, {238.452, 71.2278}, {237.612, 71.7703}, + {238.436, 71.2047}, {237.628, 71.7935}, {234.5, 65.8032}, + {233.692, 66.3921}, {234.483, 65.7809}, {233.709, 66.4143}, + {230.246, 60.6052}, {229.472, 61.2386}, {230.228, 60.5841}, + {229.491, 61.2596}, {225.726, 55.67}, {224.989, 56.3455}, + {225.707, 55.65}, {225.008, 56.3655}, {220.953, 51.0085}, + {220.255, 51.724}, {220.933, 50.9895}, {220.275, 51.7431}, + {215.931, 46.6259}, {215.273, 47.3795}, {215.909, 46.6081}, + {215.295, 47.3973}, {210.664, 42.5267}, {210.05, 43.3159}, + {210.642, 42.5102}, {210.073, 43.3323}, {205.16, 38.7139}, + {204.59, 39.5361}, {205.136, 38.6986}, {204.614, 39.5514}, + {199.42, 35.1994}, {198.898, 36.0523}, {199.395, 35.1851}, + {198.923, 36.0667}, {193.488, 32.0224}, {193.016, 32.904}, + {193.462, 32.0096}, {193.042, 32.9169}, {187.371, 29.1863}, + {186.95, 30.0936}, {187.345, 29.175}, {186.977, 30.1048}, + {181.076, 26.6925}, {180.708, 27.6222}, {181.05, 26.6829}, + {180.734, 27.6318}, {174.611, 24.5412}, {174.295, 25.4901}, + {174.583, 24.5329}, {174.323, 25.4984}, {167.921, 22.7369}, + {167.661, 23.7025}, {167.892, 22.73}, {167.69, 23.7094}, + {161.107, 21.3325}, {160.905, 22.312}, {161.077, 21.3274}, + {160.934, 22.3171}, {154.178, 20.3272}, {154.035, 21.3169}, + {154.149, 20.3239}, {154.063, 21.3202}, {147.145, 19.718}, + {147.058, 20.7143}, {147.117, 19.7164}, {147.086, 20.7159}, + {140.015, 19.5002}, {139.985, 20.4998}, {140, 20}, + {140, 20}}; } // namespace testing } // namespace impeller diff --git a/impeller/fixtures/stroke.comp b/impeller/fixtures/stroke.comp index 5a48a29c61e1e..7f5453cd0cd62 100644 --- a/impeller/fixtures/stroke.comp +++ b/impeller/fixtures/stroke.comp @@ -47,10 +47,17 @@ void main() { atomicAdd(vertex_buffer_count.count, 4); - vec2 offset = compute_offset(ident); uint index = ident - 1; + vec2 offset = compute_offset(index); vertex_buffer.position[index * 4 + 0] = polyline.data[ident - 1] + offset; vertex_buffer.position[index * 4 + 1] = polyline.data[ident - 1] - offset; vertex_buffer.position[index * 4 + 2] = polyline.data[ident] + offset; vertex_buffer.position[index * 4 + 3] = polyline.data[ident] - offset; + + // TODO(dnfield): Implement other cap/join mechanisms. + if (ident == polyline.count - 1) { + vertex_buffer.position[index * 4 + 4] = vec2(140, 20); + vertex_buffer.position[index * 4 + 5] = vec2(140, 20); + atomicAdd(vertex_buffer_count.count, 2); + } } diff --git a/impeller/renderer/compute_subgroup_unittests.cc b/impeller/renderer/compute_subgroup_unittests.cc index 1b93ae66ec243..a3a28d44b2d26 100644 --- a/impeller/renderer/compute_subgroup_unittests.cc +++ b/impeller/renderer/compute_subgroup_unittests.cc @@ -136,7 +136,7 @@ TEST_P(ComputeTest, HeartCubicsToStrokeVertices) { pass->SetThreadGroupSize(ISize(1024, 1)); ComputeCommand cmd; - cmd.label = "Draw Stroke"; + cmd.label = "Compute Stroke"; cmd.pipeline = compute_pipeline; SS::Config config{.width = 1.0f, .cap = 1, .join = 1, .miter_limit = 4.0f}; @@ -185,7 +185,7 @@ TEST_P(ComputeTest, HeartCubicsToStrokeVertices) { auto* v_count = reinterpret_cast( vertex_buffer_count->AsBufferView().contents); EXPECT_EQ(v_count->count, golden_heart_vertices.size()); - for (size_t i = 0; i < golden_heart_vertices.size(); i += 1) { + for (size_t i = 0; i < v_count->count; i += 1) { EXPECT_LT(std::abs(golden_heart_vertices[i].x - v->position[i].x), 1e-3); EXPECT_LT(std::abs(golden_heart_vertices[i].y - v->position[i].y), 1e-3); } @@ -221,7 +221,9 @@ TEST_P(ComputeTest, HeartCubicsToStrokeVertices) { cmd.pipeline = renderer.GetSolidFillPipeline(options); - auto count = golden_heart_vertices.size(); + auto count = reinterpret_cast( + vertex_buffer_count->AsBufferView().contents) + ->count; auto& host_buffer = pass.GetTransientsBuffer(); std::vector indices(count); std::iota(std::begin(indices), std::end(indices), 0); From a9329b76c812747c7470a8337ca95b31a771bd75 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 10 Mar 2023 20:22:52 -0800 Subject: [PATCH 2/2] typo --- impeller/fixtures/cubic_to_quads.comp | 2 +- impeller/fixtures/golden_heart.h | 336 +++++++++--------- .../renderer/compute_subgroup_unittests.cc | 2 +- 3 files changed, 167 insertions(+), 173 deletions(-) diff --git a/impeller/fixtures/cubic_to_quads.comp b/impeller/fixtures/cubic_to_quads.comp index 9c84210ea6e54..4d83d1805d2c3 100644 --- a/impeller/fixtures/cubic_to_quads.comp +++ b/impeller/fixtures/cubic_to_quads.comp @@ -49,7 +49,7 @@ void main() { CubicData cubic = cubics.data[ident]; - vec2 err_v = (3.0 * cubic.cp2 - cubic.cp2) - (3.0 * cubic.cp1 - cubic.p1); + vec2 err_v = (3.0 * cubic.cp2 - cubic.p2) - (3.0 * cubic.cp1 - cubic.p1); float err = dot(err_v, err_v); float quad_count = max(1., ceil(pow(err * (1.0 / max_hypot2), 1. / 6.0))); diff --git a/impeller/fixtures/golden_heart.h b/impeller/fixtures/golden_heart.h index 2343f41d450fb..2325c1ea6ad0b 100644 --- a/impeller/fixtures/golden_heart.h +++ b/impeller/fixtures/golden_heart.h @@ -39,23 +39,22 @@ std::vector golden_heart_quads = { {{99.5, 292.25}, {122.458, 313.146}, {148, 335.333}}, {{148, 335.333}, {173.542, 357.521}, {199.167, 383.75}}, {{199.167, 383.75}, {224.792, 409.979}, {248, 443}}, - {{248, 443}, {274.788, 403.76}, {305.608, 373.28}}, - {{305.608, 373.28}, {336.428, 342.8}, {366.624, 316.76}}, - {{366.624, 316.76}, {396.82, 290.72}, {421.736, 264.8}}, - {{421.736, 264.8}, {446.652, 238.88}, {461.632, 208.76}}, - {{461.632, 208.76}, {476.612, 178.64}, {477, 140}}, + {{248, 443}, {270.225, 410.208}, {295.519, 383.75}}, + {{295.519, 383.75}, {320.812, 357.292}, {346.481, 334.667}}, + {{346.481, 334.667}, {372.15, 312.042}, {395.5, 290.75}}, + {{395.5, 290.75}, {418.85, 269.458}, {437.185, 247}}, + {{437.185, 247}, {455.521, 224.542}, {466.148, 198.417}}, + {{466.148, 198.417}, {476.775, 172.292}, {477, 140}}, {{477, 140}, {476.836, 115.086}, {467.531, 93.4062}}, {{467.531, 93.4062}, {458.227, 71.7266}, {441.75, 55.25}}, {{441.75, 55.25}, {425.273, 38.7734}, {403.594, 29.4688}}, {{403.594, 29.4688}, {381.914, 20.1641}, {357, 20}}, - {{357, 20}, {338.934, 20.0586}, {322.391, 25.0156}}, - {{322.391, 25.0156}, {305.848, 29.9727}, {291.625, 39.125}}, - {{291.625, 39.125}, {277.402, 48.2773}, {266.297, 60.9219}}, - {{266.297, 60.9219}, {255.191, 73.5664}, {248, 89}}, - {{248, 89}, {240.816, 73.5664}, {229.859, 60.9219}}, - {{229.859, 60.9219}, {218.902, 48.2773}, {204.875, 39.125}}, - {{204.875, 39.125}, {190.848, 29.9727}, {174.453, 25.0156}}, - {{174.453, 25.0156}, {158.059, 20.0586}, {140, 20}}}; + {{357, 20}, {332.843, 20.1389}, {311.63, 28.7778}}, + {{311.63, 28.7778}, {290.417, 37.4167}, {274.037, 52.8889}}, + {{274.037, 52.8889}, {257.657, 68.3611}, {248, 89}}, + {{248, 89}, {238.361, 68.3611}, {222.222, 52.8889}}, + {{222.222, 52.8889}, {206.083, 37.4167}, {185.111, 28.7778}}, + {{185.111, 28.7778}, {164.139, 20.1389}, {140, 20}}}; // In local testing, CPU and GPU versions of the polyline algorithm // disagree on number of points, but both produce visually acceptable @@ -89,38 +88,37 @@ std::vector golden_heart_points = { {148, 335.333}, {160.921, 346.811}, {173.756, 358.715}, {186.505, 371.032}, {199.167, 383.75}, {207.755, 392.805}, {216.162, 402.199}, {224.39, 411.923}, {232.439, 421.971}, - {240.308, 432.333}, {248, 443}, {256.919, 430.332}, - {266.11, 418.068}, {275.573, 406.219}, {285.311, 394.798}, - {295.323, 383.815}, {305.608, 373.28}, {320.792, 358.497}, - {336.024, 344.14}, {351.302, 330.223}, {366.624, 316.76}, - {378.306, 306.514}, {389.668, 296.195}, {400.701, 285.803}, - {411.394, 275.337}, {421.736, 264.8}, {428.581, 257.389}, - {435.057, 249.775}, {441.156, 241.961}, {446.87, 233.949}, - {452.191, 225.742}, {457.113, 217.344}, {461.632, 208.76}, - {465.203, 200.969}, {468.296, 192.923}, {470.911, 184.634}, - {473.052, 176.115}, {474.723, 167.378}, {475.932, 158.437}, - {476.688, 149.306}, {477, 140}, {476.697, 131.863}, - {475.889, 123.858}, {474.571, 115.997}, {472.739, 108.293}, - {470.392, 100.759}, {467.531, 93.4062}, {464.244, 86.3502}, - {460.548, 79.56}, {456.446, 73.0462}, {451.942, 66.8182}, - {447.041, 60.884}, {441.75, 55.25}, {436.116, 49.9595}, - {430.182, 45.0581}, {423.954, 40.5537}, {417.44, 36.4519}, - {410.65, 32.7564}, {403.594, 29.4688}, {396.241, 26.6083}, - {388.707, 24.2609}, {381.004, 22.4285}, {373.143, 21.1106}, - {365.137, 20.3032}, {357, 20}, {349.883, 20.2166}, - {342.854, 20.8233}, {335.924, 21.8241}, {329.1, 23.2213}, - {322.391, 25.0156}, {315.89, 27.1579}, {309.555, 29.6407}, - {303.395, 32.464}, {297.417, 35.6264}, {291.625, 39.125}, - {286.069, 42.9193}, {280.753, 46.9996}, {275.682, 51.363}, - {270.862, 56.0054}, {266.297, 60.9219}, {262.009, 66.0936}, - {258.032, 71.4931}, {254.37, 77.115}, {251.025, 82.9529}, - {248, 89}, {244.986, 82.9569}, {241.662, 77.1209}, - {238.032, 71.4991}, {234.096, 66.0976}, {229.859, 60.9219}, - {225.358, 56.0078}, {220.604, 51.3663}, {215.602, 47.0027}, - {210.357, 42.9213}, {204.875, 39.125}, {199.159, 35.6259}, - {193.252, 32.4632}, {187.161, 29.6399}, {180.892, 27.1574}, - {174.453, 25.0156}, {167.791, 23.2197}, {161.006, 21.8222}, - {154.106, 20.822}, {147.101, 20.2161}, {140, 20}}; + {240.308, 432.333}, {248, 443}, {255.407, 432.367}, + {263.018, 422.027}, {270.834, 411.988}, {278.856, 402.258}, + {287.084, 392.843}, {295.519, 383.75}, {308.072, 370.878}, + {320.751, 358.4}, {333.554, 346.326}, {346.481, 334.667}, + {363.181, 319.87}, {379.524, 305.229}, {395.5, 290.75}, + {404.531, 282.291}, {413.224, 273.686}, {421.57, 264.936}, + {429.56, 256.04}, {437.185, 247}, {443.055, 239.45}, + {448.516, 231.674}, {453.562, 223.678}, {458.186, 215.466}, + {462.382, 207.043}, {466.148, 198.417}, {469.016, 190.697}, + {471.437, 182.748}, {473.413, 174.582}, {474.949, 166.211}, + {476.054, 157.649}, {476.734, 148.908}, {477, 140}, + {476.697, 131.863}, {475.889, 123.858}, {474.571, 115.997}, + {472.739, 108.293}, {470.392, 100.759}, {467.531, 93.4062}, + {464.244, 86.3502}, {460.548, 79.56}, {456.446, 73.0462}, + {451.942, 66.8182}, {447.041, 60.884}, {441.75, 55.25}, + {436.116, 49.9595}, {430.182, 45.0581}, {423.954, 40.5537}, + {417.44, 36.4519}, {410.65, 32.7564}, {403.594, 29.4688}, + {396.241, 26.6083}, {388.707, 24.2609}, {381.004, 22.4285}, + {373.143, 21.1106}, {365.137, 20.3032}, {357, 20}, + {349.102, 20.2777}, {341.323, 21.0241}, {333.676, 22.2452}, + {326.17, 23.9443}, {318.818, 26.1223}, {311.63, 28.7778}, + {304.721, 31.8336}, {298.058, 35.2778}, {291.65, 39.1093}, + {285.505, 43.3251}, {279.632, 47.9205}, {274.037, 52.8889}, + {268.767, 58.1866}, {263.861, 63.7819}, {259.326, 69.6689}, + {255.169, 75.8403}, {251.393, 82.2873}, {248, 89}, + {244.622, 82.2933}, {240.874, 75.8498}, {236.755, 69.6796}, + {232.27, 63.7913}, {227.424, 58.1923}, {222.222, 52.8889}, + {216.709, 47.922}, {210.918, 43.3271}, {204.854, 39.1112}, + {198.525, 35.2792}, {191.941, 31.8344}, {185.111, 28.7778}, + {177.988, 26.1195}, {170.693, 23.9406}, {163.234, 22.242}, + {155.625, 21.0222}, {147.876, 20.277}, {140, 20}}; std::vector golden_heart_vertices = { {139.982, 19.5003}, {140.018, 20.4997}, {131.747, 19.8026}, @@ -196,132 +194,128 @@ std::vector golden_heart_vertices = { {232.049, 422.283}, {232.829, 421.658}, {232.041, 422.273}, {232.837, 421.668}, {239.91, 432.635}, {240.707, 432.03}, {239.903, 432.625}, {240.714, 432.04}, {247.594, 443.292}, - {248.406, 442.708}, {248.409, 443.288}, {247.591, 442.712}, - {257.328, 430.62}, {256.51, 430.044}, {257.319, 430.632}, - {256.519, 430.032}, {266.51, 418.368}, {265.709, 417.768}, - {266.5, 418.38}, {265.719, 417.756}, {275.964, 406.532}, - {275.183, 405.907}, {275.954, 406.544}, {275.193, 405.895}, - {285.692, 395.122}, {284.931, 394.474}, {285.681, 395.135}, - {284.942, 394.461}, {295.692, 384.151}, {294.953, 383.478}, - {295.681, 384.164}, {294.965, 383.465}, {305.966, 373.629}, - {305.25, 372.931}, {305.957, 373.638}, {305.259, 372.922}, - {321.141, 358.855}, {320.443, 358.138}, {321.135, 358.861}, - {320.449, 358.133}, {336.367, 344.504}, {335.681, 343.776}, - {336.361, 344.51}, {335.687, 343.77}, {351.639, 330.593}, - {350.965, 329.854}, {351.632, 330.599}, {350.972, 329.848}, - {366.954, 317.136}, {366.294, 316.384}, {366.954, 317.136}, - {366.294, 316.384}, {378.635, 306.89}, {377.976, 306.139}, - {378.642, 306.885}, {377.97, 306.144}, {390.004, 296.565}, - {389.332, 295.825}, {390.011, 296.559}, {389.325, 295.831}, - {401.044, 286.167}, {400.358, 285.439}, {401.05, 286.16}, - {400.351, 285.445}, {411.743, 275.695}, {411.044, 274.98}, - {411.75, 275.688}, {411.037, 274.987}, {422.093, 265.15}, - {421.379, 264.45}, {422.103, 265.139}, {421.369, 264.461}, - {428.948, 257.728}, {428.213, 257.05}, {428.962, 257.713}, - {428.2, 257.065}, {435.438, 250.099}, {434.676, 249.451}, - {435.451, 250.083}, {434.663, 249.468}, {441.55, 242.269}, - {440.762, 241.654}, {441.563, 242.252}, {440.749, 241.671}, - {447.277, 234.239}, {446.462, 233.659}, {447.289, 234.221}, - {446.45, 233.677}, {452.61, 226.014}, {451.771, 225.47}, - {452.622, 225.995}, {451.759, 225.489}, {457.545, 217.597}, - {456.682, 217.092}, {457.556, 217.577}, {456.671, 217.112}, - {462.074, 208.993}, {461.19, 208.527}, {462.087, 208.968}, - {461.177, 208.552}, {465.657, 201.177}, {464.748, 200.761}, - {465.669, 201.148}, {464.736, 200.79}, {468.762, 193.103}, - {467.829, 192.744}, {468.772, 193.074}, {467.819, 192.773}, - {471.388, 184.785}, {470.434, 184.484}, {471.396, 184.756}, - {470.426, 184.513}, {473.537, 176.237}, {472.567, 175.993}, - {473.543, 176.209}, {472.561, 176.021}, {475.214, 167.472}, - {474.232, 167.284}, {475.219, 167.445}, {474.228, 167.311}, - {476.428, 158.504}, {475.437, 158.37}, {476.431, 158.478}, - {475.434, 158.396}, {477.186, 149.348}, {476.19, 149.265}, - {477.188, 149.323}, {476.188, 149.29}, {477.5, 140.017}, - {476.5, 139.983}, {477.5, 139.981}, {476.5, 140.019}, - {477.196, 131.844}, {476.197, 131.882}, {477.194, 131.813}, - {476.199, 131.913}, {476.387, 123.807}, {475.392, 123.908}, - {476.383, 123.775}, {475.396, 123.94}, {475.065, 115.914}, - {474.078, 116.079}, {475.058, 115.881}, {474.085, 116.112}, - {473.226, 108.177}, {472.253, 108.409}, {473.216, 108.144}, - {472.262, 108.442}, {470.869, 100.61}, {469.914, 100.908}, - {470.858, 100.578}, {469.926, 100.94}, {467.997, 93.225}, - {467.065, 93.5875}, {467.984, 93.1951}, {467.078, 93.6174}, - {464.697, 86.1391}, {463.79, 86.5614}, {464.683, 86.1112}, - {463.804, 86.5892}, {460.987, 79.321}, {460.109, 79.799}, - {460.971, 79.2935}, {460.125, 79.8264}, {456.869, 72.7797}, - {456.023, 73.3126}, {456.851, 72.7531}, {456.041, 73.3392}, - {452.347, 66.5252}, {451.537, 67.1112}, {452.327, 66.4998}, - {451.556, 67.1366}, {447.426, 60.5656}, {446.655, 61.2024}, - {447.405, 60.5417}, {446.676, 61.2262}, {442.115, 54.9077}, - {441.385, 55.5923}, {442.092, 54.8855}, {441.408, 55.6145}, - {436.458, 49.595}, {435.774, 50.3239}, {436.434, 49.5739}, - {435.798, 50.345}, {430.5, 44.6726}, {429.863, 45.4436}, - {430.475, 44.653}, {429.889, 45.4633}, {424.247, 40.1486}, - {423.661, 40.9588}, {424.22, 40.1306}, {423.687, 40.9768}, - {417.706, 36.0288}, {417.174, 36.875}, {417.679, 36.0127}, - {417.201, 36.8911}, {410.889, 32.3172}, {410.411, 33.1956}, - {410.861, 32.3032}, {410.439, 33.2096}, {403.805, 29.0155}, - {403.383, 29.922}, {403.775, 29.0028}, {403.412, 29.9347}, - {396.422, 26.1423}, {396.06, 27.0743}, {396.39, 26.131}, - {396.092, 27.0857}, {388.856, 23.7835}, {388.558, 24.7382}, - {388.823, 23.7744}, {388.591, 24.7473}, {381.119, 21.9421}, - {380.888, 22.915}, {381.086, 21.9354}, {380.921, 22.9217}, - {373.225, 20.6175}, {373.06, 21.6037}, {373.193, 20.6131}, - {373.092, 21.608}, {365.187, 19.8057}, {365.087, 20.8007}, - {365.156, 19.8036}, {365.118, 20.8029}, {357.019, 19.5003}, - {356.981, 20.4997}, {356.985, 19.5002}, {357.015, 20.4998}, - {349.867, 19.7168}, {349.898, 20.7163}, {349.84, 19.7184}, - {349.926, 20.7147}, {342.811, 20.3251}, {342.897, 21.3214}, - {342.783, 20.3284}, {342.926, 21.3181}, {335.853, 21.3292}, - {335.996, 22.3189}, {335.824, 21.3342}, {336.025, 22.3139}, - {329, 22.7315}, {329.201, 23.7111}, {328.971, 22.7383}, - {329.229, 23.7043}, {322.261, 24.5326}, {322.52, 25.4987}, - {322.234, 24.5407}, {322.547, 25.4905}, {315.733, 26.683}, - {316.046, 27.6327}, {315.707, 26.6923}, {316.072, 27.6234}, - {309.373, 29.1752}, {309.738, 30.1062}, {309.347, 29.1862}, - {309.764, 30.0952}, {303.187, 32.0095}, {303.604, 32.9186}, - {303.162, 32.0221}, {303.629, 32.906}, {297.183, 35.1844}, - {297.65, 36.0684}, {297.158, 35.1984}, {297.675, 36.0544}, - {291.366, 38.697}, {291.884, 39.553}, {291.343, 38.7121}, - {291.907, 39.5379}, {285.787, 42.5064}, {286.351, 43.3322}, - {285.765, 42.5227}, {286.374, 43.316}, {280.449, 46.603}, - {281.057, 47.3962}, {280.427, 46.6206}, {281.079, 47.3786}, - {275.356, 50.984}, {276.008, 51.742}, {275.335, 51.0028}, - {276.029, 51.7231}, {270.515, 55.6453}, {271.209, 56.3655}, - {270.496, 55.6652}, {271.229, 56.3456}, {265.93, 60.5816}, - {266.663, 61.2621}, {265.912, 60.6028}, {266.682, 61.241}, - {261.624, 65.7745}, {262.394, 66.4128}, {261.607, 65.7971}, - {262.412, 66.3902}, {257.63, 71.1966}, {258.435, 71.7896}, - {257.613, 71.2202}, {258.451, 71.766}, {253.951, 76.842}, - {254.789, 77.3879}, {253.936, 76.8664}, {254.804, 77.3635}, - {250.591, 82.7044}, {251.459, 83.2015}, {250.578, 82.7292}, - {251.472, 83.1767}, {247.553, 88.7763}, {248.447, 89.2237}, - {248.447, 88.7768}, {247.553, 89.2232}, {245.433, 82.7337}, - {244.538, 83.1801}, {245.42, 82.7095}, {244.551, 83.2043}, - {242.097, 76.8735}, {241.228, 77.3683}, {242.082, 76.8497}, - {241.242, 77.3922}, {238.452, 71.2278}, {237.612, 71.7703}, - {238.436, 71.2047}, {237.628, 71.7935}, {234.5, 65.8032}, - {233.692, 66.3921}, {234.483, 65.7809}, {233.709, 66.4143}, - {230.246, 60.6052}, {229.472, 61.2386}, {230.228, 60.5841}, - {229.491, 61.2596}, {225.726, 55.67}, {224.989, 56.3455}, - {225.707, 55.65}, {225.008, 56.3655}, {220.953, 51.0085}, - {220.255, 51.724}, {220.933, 50.9895}, {220.275, 51.7431}, - {215.931, 46.6259}, {215.273, 47.3795}, {215.909, 46.6081}, - {215.295, 47.3973}, {210.664, 42.5267}, {210.05, 43.3159}, - {210.642, 42.5102}, {210.073, 43.3323}, {205.16, 38.7139}, - {204.59, 39.5361}, {205.136, 38.6986}, {204.614, 39.5514}, - {199.42, 35.1994}, {198.898, 36.0523}, {199.395, 35.1851}, - {198.923, 36.0667}, {193.488, 32.0224}, {193.016, 32.904}, - {193.462, 32.0096}, {193.042, 32.9169}, {187.371, 29.1863}, - {186.95, 30.0936}, {187.345, 29.175}, {186.977, 30.1048}, - {181.076, 26.6925}, {180.708, 27.6222}, {181.05, 26.6829}, - {180.734, 27.6318}, {174.611, 24.5412}, {174.295, 25.4901}, - {174.583, 24.5329}, {174.323, 25.4984}, {167.921, 22.7369}, - {167.661, 23.7025}, {167.892, 22.73}, {167.69, 23.7094}, - {161.107, 21.3325}, {160.905, 22.312}, {161.077, 21.3274}, - {160.934, 22.3171}, {154.178, 20.3272}, {154.035, 21.3169}, - {154.149, 20.3239}, {154.063, 21.3202}, {147.145, 19.718}, - {147.058, 20.7143}, {147.117, 19.7164}, {147.086, 20.7159}, - {140.015, 19.5002}, {139.985, 20.4998}, {140, 20}, + {248.406, 442.708}, {248.41, 443.286}, {247.59, 442.714}, + {255.817, 432.652}, {254.996, 432.081}, {255.809, 432.663}, + {255.004, 432.07}, {263.421, 422.323}, {262.615, 421.73}, + {263.412, 422.334}, {262.623, 421.72}, {271.229, 412.296}, + {270.44, 411.681}, {271.22, 412.306}, {270.448, 411.67}, + {279.242, 402.576}, {278.471, 401.94}, {279.233, 402.587}, + {278.48, 401.929}, {287.461, 393.172}, {286.708, 392.514}, + {287.451, 393.183}, {286.718, 392.503}, {295.885, 384.09}, + {295.152, 383.41}, {295.876, 384.099}, {295.161, 383.401}, + {308.43, 371.227}, {307.714, 370.529}, {308.423, 371.234}, + {307.721, 370.522}, {321.101, 358.756}, {320.4, 358.043}, + {321.094, 358.764}, {320.408, 358.036}, {333.897, 346.69}, + {333.211, 345.962}, {333.889, 346.697}, {333.219, 345.955}, + {346.816, 335.038}, {346.147, 334.295}, {346.813, 335.041}, + {346.15, 334.292}, {363.513, 320.244}, {362.85, 319.495}, + {363.515, 320.242}, {362.848, 319.497}, {379.858, 305.602}, + {379.191, 304.857}, {379.86, 305.6}, {379.189, 304.859}, + {395.836, 291.12}, {395.164, 290.38}, {395.842, 291.115}, + {395.158, 290.385}, {404.872, 282.656}, {404.189, 281.926}, + {404.882, 282.647}, {404.179, 281.936}, {413.576, 274.042}, + {412.872, 273.331}, {413.586, 274.032}, {412.862, 273.341}, + {421.932, 265.281}, {421.208, 264.591}, {421.942, 265.27}, + {421.198, 264.602}, {429.932, 256.374}, {429.188, 255.706}, + {429.943, 256.362}, {429.178, 255.718}, {437.567, 247.322}, + {436.803, 246.678}, {437.58, 247.307}, {436.79, 246.693}, + {443.45, 239.757}, {442.66, 239.143}, {443.464, 239.737}, + {442.646, 239.163}, {448.926, 231.962}, {448.107, 231.387}, + {448.939, 231.941}, {448.094, 231.408}, {453.985, 223.945}, + {453.139, 223.411}, {453.998, 223.923}, {453.126, 223.433}, + {458.621, 215.711}, {457.75, 215.22}, {458.633, 215.689}, + {457.738, 215.243}, {462.83, 207.266}, {461.935, 206.82}, + {462.841, 207.243}, {461.924, 206.843}, {466.606, 198.617}, + {465.69, 198.217}, {466.617, 198.591}, {465.679, 198.243}, + {469.485, 190.871}, {468.547, 190.522}, {469.494, 190.842}, + {468.538, 190.551}, {471.915, 182.893}, {470.958, 182.602}, + {471.922, 182.865}, {470.951, 182.63}, {473.898, 174.7}, + {472.927, 174.464}, {473.904, 174.672}, {472.921, 174.492}, + {475.441, 166.302}, {474.457, 166.121}, {475.445, 166.275}, + {474.453, 166.147}, {476.55, 157.713}, {475.558, 157.585}, + {476.552, 157.688}, {475.555, 157.61}, {477.232, 148.946}, + {476.235, 148.869}, {477.234, 148.922}, {476.234, 148.893}, + {477.5, 140.015}, {476.5, 139.985}, {477.5, 139.981}, + {476.5, 140.019}, {477.196, 131.844}, {476.197, 131.882}, + {477.194, 131.813}, {476.199, 131.913}, {476.387, 123.807}, + {475.392, 123.908}, {476.383, 123.775}, {475.396, 123.94}, + {475.065, 115.914}, {474.078, 116.079}, {475.058, 115.881}, + {474.085, 116.112}, {473.226, 108.177}, {472.253, 108.409}, + {473.216, 108.144}, {472.262, 108.442}, {470.869, 100.61}, + {469.914, 100.908}, {470.858, 100.578}, {469.926, 100.94}, + {467.997, 93.225}, {467.065, 93.5875}, {467.984, 93.1951}, + {467.078, 93.6174}, {464.697, 86.1391}, {463.79, 86.5614}, + {464.683, 86.1112}, {463.804, 86.5892}, {460.987, 79.321}, + {460.109, 79.799}, {460.971, 79.2935}, {460.125, 79.8264}, + {456.869, 72.7797}, {456.023, 73.3126}, {456.851, 72.7531}, + {456.041, 73.3392}, {452.347, 66.5252}, {451.537, 67.1112}, + {452.327, 66.4998}, {451.556, 67.1366}, {447.426, 60.5656}, + {446.655, 61.2024}, {447.405, 60.5417}, {446.676, 61.2262}, + {442.115, 54.9077}, {441.385, 55.5923}, {442.092, 54.8855}, + {441.408, 55.6145}, {436.458, 49.595}, {435.774, 50.3239}, + {436.434, 49.5739}, {435.798, 50.345}, {430.5, 44.6726}, + {429.863, 45.4436}, {430.475, 44.653}, {429.889, 45.4633}, + {424.247, 40.1486}, {423.661, 40.9588}, {424.22, 40.1306}, + {423.687, 40.9768}, {417.706, 36.0288}, {417.174, 36.875}, + {417.679, 36.0127}, {417.201, 36.8911}, {410.889, 32.3172}, + {410.411, 33.1956}, {410.861, 32.3032}, {410.439, 33.2096}, + {403.805, 29.0155}, {403.383, 29.922}, {403.775, 29.0028}, + {403.412, 29.9347}, {396.422, 26.1423}, {396.06, 27.0743}, + {396.39, 26.131}, {396.092, 27.0857}, {388.856, 23.7835}, + {388.558, 24.7382}, {388.823, 23.7744}, {388.591, 24.7473}, + {381.119, 21.9421}, {380.888, 22.915}, {381.086, 21.9354}, + {380.921, 22.9217}, {373.225, 20.6175}, {373.06, 21.6037}, + {373.193, 20.6131}, {373.092, 21.608}, {365.187, 19.8057}, + {365.087, 20.8007}, {365.156, 19.8036}, {365.118, 20.8029}, + {357.019, 19.5003}, {356.981, 20.4997}, {356.982, 19.5003}, + {357.018, 20.4997}, {349.084, 19.778}, {349.12, 20.7773}, + {349.054, 19.7799}, {349.15, 20.7754}, {341.275, 20.5264}, + {341.371, 21.5218}, {341.244, 20.5304}, {341.402, 21.5179}, + {333.597, 21.7514}, {333.754, 22.7389}, {333.565, 21.7575}, + {333.786, 22.7329}, {326.06, 23.4566}, {326.281, 24.4319}, + {326.028, 23.4649}, {326.312, 24.4237}, {318.676, 25.6429}, + {318.96, 26.6017}, {318.645, 25.6533}, {318.991, 26.5914}, + {311.456, 28.3088}, {311.803, 29.2468}, {311.427, 28.3205}, + {311.832, 29.235}, {304.519, 31.3764}, {304.923, 32.2909}, + {304.492, 31.3895}, {304.951, 32.2778}, {297.828, 34.8336}, + {298.287, 35.722}, {297.801, 34.8487}, {298.314, 35.707}, + {291.393, 38.6801}, {291.906, 39.5384}, {291.367, 38.697}, + {291.932, 39.5216}, {285.222, 42.9128}, {285.788, 43.7374}, + {285.197, 42.9313}, {285.813, 43.7189}, {279.324, 47.5267}, + {279.94, 48.3143}, {279.3, 47.5467}, {279.964, 48.2944}, + {273.705, 52.515}, {274.369, 53.2628}, {273.683, 52.5363}, + {274.392, 53.2415}, {268.412, 57.834}, {269.121, 58.5393}, + {268.391, 57.857}, {269.143, 58.5163}, {263.485, 63.4523}, + {264.237, 64.1116}, {263.465, 63.4768}, {264.257, 64.087}, + {258.93, 69.3638}, {259.722, 69.974}, {258.912, 69.3896}, + {259.741, 69.9483}, {254.754, 75.561}, {255.584, 76.1196}, + {254.738, 75.5876}, {255.601, 76.093}, {250.962, 82.0346}, + {251.825, 82.54}, {250.947, 82.0618}, {251.839, 82.5129}, + {247.554, 88.7744}, {248.446, 89.2256}, {248.447, 88.7751}, + {247.553, 89.2249}, {245.069, 82.0684}, {244.176, 82.5182}, + {245.055, 82.0419}, {244.19, 82.5447}, {241.306, 75.5984}, + {240.442, 76.1013}, {241.29, 75.5723}, {240.458, 76.1274}, + {237.171, 69.402}, {236.339, 69.9572}, {237.153, 69.3766}, + {236.357, 69.9825}, {232.668, 63.4883}, {231.872, 64.0942}, + {232.648, 63.464}, {231.892, 64.1185}, {227.802, 57.8651}, + {227.046, 58.5196}, {227.781, 57.8422}, {227.067, 58.5424}, + {222.579, 52.5388}, {221.865, 53.239}, {222.557, 52.5174}, + {221.888, 53.2604}, {217.044, 47.5505}, {216.374, 48.2934}, + {217.02, 47.5303}, {216.398, 48.3137}, {211.228, 42.9354}, + {210.607, 43.7188}, {211.203, 42.9166}, {210.632, 43.7376}, + {205.139, 38.7007}, {204.568, 39.5217}, {205.113, 38.6835}, + {204.595, 39.5389}, {198.784, 34.8515}, {198.266, 35.7069}, + {198.757, 34.8362}, {198.294, 35.7223}, {192.173, 31.3913}, + {191.709, 32.2774}, {192.145, 31.378}, {191.737, 32.2908}, + {185.315, 28.3214}, {184.907, 29.2342}, {185.286, 28.3093}, + {184.936, 29.2462}, {178.163, 25.6511}, {177.814, 26.588}, + {178.132, 25.6404}, {177.845, 26.5986}, {170.836, 23.4615}, + {170.55, 24.4197}, {170.804, 23.4531}, {170.582, 24.4281}, + {163.345, 21.7545}, {163.123, 22.7295}, {163.313, 21.7483}, + {163.155, 22.7357}, {155.704, 20.5285}, {155.546, 21.5159}, + {155.673, 20.5245}, {155.577, 21.5199}, {147.924, 19.7793}, + {147.828, 20.7747}, {147.893, 19.7773}, {147.858, 20.7767}, + {140.018, 19.5003}, {139.982, 20.4997}, {140, 20}, {140, 20}}; } // namespace testing } // namespace impeller diff --git a/impeller/renderer/compute_subgroup_unittests.cc b/impeller/renderer/compute_subgroup_unittests.cc index a3a28d44b2d26..e0f6b86dfecd1 100644 --- a/impeller/renderer/compute_subgroup_unittests.cc +++ b/impeller/renderer/compute_subgroup_unittests.cc @@ -161,7 +161,7 @@ TEST_P(ComputeTest, HeartCubicsToStrokeVertices) { quads->AsBufferView().contents); EXPECT_EQ(q->count, golden_heart_quads.size()); - for (size_t i = 0; i < golden_heart_quads.size(); i++) { + for (size_t i = 0; i < q->count; i++) { EXPECT_LT(std::abs(golden_heart_quads[i].p1.x - q->data[i].p1.x), 1e-3); EXPECT_LT(std::abs(golden_heart_quads[i].p1.y - q->data[i].p1.y), 1e-3);