int main_small_primitive3(int argc, char* argv[]) { std::vector<entry> Entries; Entries.push_back(entry("tile(0.125, 0.125)", glm::uvec2(320, 240), glm::vec2(0.125, 0.125), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(0.25, 0.25)", glm::uvec2(320, 240), glm::vec2(0.25, 0.25), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(0.5, 0.5)", glm::uvec2(320, 240), glm::vec2(0.5, 0.5), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(1, 1)", glm::uvec2(320, 240), glm::vec2(1, 1), 1, LAYOUT_LINEAR)); csv CSV; int Error(0); for(std::size_t EntryIndex(0); EntryIndex < Entries.size(); ++EntryIndex) { test_small_primitive Test( argc, argv, 1000, Entries[EntryIndex].WindowSize, Entries[EntryIndex].TileSize, Entries[EntryIndex].DrawCount, Entries[EntryIndex].Layout); Error += Test(); Test.log(CSV, Entries[EntryIndex].String.c_str()); } CSV.save("../main_small_primitive3.csv"); return Error; }
int main_small_primitive1(int argc, char* argv[]) { std::vector<entry> Entries; Entries.push_back(entry("tile(1, 1)", glm::uvec2(1920, 1080), glm::vec2(1, 1), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(2, 2)", glm::uvec2(1920, 1080), glm::vec2(2, 2), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(4, 4)", glm::uvec2(1920, 1080), glm::vec2(4, 4), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(8, 8)", glm::uvec2(1920, 1080), glm::vec2(8, 8), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(16, 16)", glm::uvec2(1920, 1080), glm::vec2(16, 16), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(32, 32)", glm::uvec2(1920, 1080), glm::vec2(32, 32), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(64, 64)", glm::uvec2(1920, 1080), glm::vec2(64, 64), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(128, 128)", glm::uvec2(1920, 1080), glm::vec2(128, 128), 1, LAYOUT_LINEAR)); Entries.push_back(entry("tile(1920, 1080)", glm::uvec2(1920, 1080), glm::vec2(1920, 1080), 1, LAYOUT_LINEAR)); csv CSV; int Error(0); for(std::size_t EntryIndex(0); EntryIndex < Entries.size(); ++EntryIndex) { test_small_primitive Test( argc, argv, 1000, Entries[EntryIndex].WindowSize, Entries[EntryIndex].TileSize, Entries[EntryIndex].DrawCount, Entries[EntryIndex].Layout); Error += Test(); Test.log(CSV, Entries[EntryIndex].String.c_str()); } CSV.save("../main_small_primitive1.csv"); return Error; }
int main_draw_call(int argc, char* argv[]) { std::vector<entry> Entries; for(glm::uint TileSizeIndex = 3; TileSizeIndex < 4; ++TileSizeIndex) { for(std::size_t DrawPerTile = 1; DrawPerTile <= 512; DrawPerTile <<= 1) Entries.push_back(entry( message_format("window(%d), tile(%d), triangle-per-draw(%d)", 64 * (TileSizeIndex + 1), 8 * (TileSizeIndex + 1), 1024 / DrawPerTile), glm::uvec2(64) * (TileSizeIndex + 1), glm::vec2(glm::uvec2(8, 8) * (TileSizeIndex + 1)), 512, DrawPerTile, LAYOUT_LINEAR, DRAW_PER_TILE)); } csv CSV; int Error(0); for(std::size_t EntryIndex(0); EntryIndex < Entries.size(); ++EntryIndex) { test_draw_call Test( argc, argv, 1000, Entries[EntryIndex].WindowSize, Entries[EntryIndex].TileSize, Entries[EntryIndex].TrianglePairPerTile, Entries[EntryIndex].DrawPerTile, Entries[EntryIndex].Layout, Entries[EntryIndex].DrawMode); Error += Test(); Test.log(CSV, Entries[EntryIndex].String.c_str()); } CSV.save("../main_draw_call.csv"); return Error; }
void Sparse :: transpose( void ) { EntryMap transposed; for( const_iterator e = data.begin(); e != data.end(); e++ ) { int i = e->first.first; int j = e->first.second; transposed[ EntryIndex( j, i ) ] = e->second; } data = transposed; swap( m, n ); }
void Sparse :: horzcat( const Sparse& A, const Sparse& B ) { assert( A.m == B.m ); assert( A.xtype == B.xtype ); data.clear(); m = A.m; n = A.n + B.n; xtype = A.xtype; for( const_iterator e = A.begin(); e != A.end(); e++ ) { int i = e->first.second; int j = e->first.first; data[ EntryIndex( j, i ) ] = e->second; } for( const_iterator e = B.begin(); e != B.end(); e++ ) { int i = e->first.second; int j = e->first.first; data[ EntryIndex( j+A.n, i ) ] = e->second; } }
int main_small_primitive6(int argc, char* argv[]) { std::vector<entry> Entries; for(std::size_t i = 8; i <= 1024; i *= 2) { //Entries.push_back(entry("(2048, 1024) tile(32, 32)", glm::uvec2(2048, 1024), glm::vec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1536, 768) tile(24, 24)", glm::uvec2(1536, 768), glm::vec2(24, 24), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1024, 512) tile(16, 16)", glm::uvec2(1024, 512), glm::vec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(768, 384) tile(12, 12)", glm::uvec2(768, 384), glm::vec2(12, 12), i, LAYOUT_LINEAR)); Entries.push_back(entry("(512, 256) tile(8, 8)", glm::uvec2(512, 256), glm::vec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(384, 192) tile(6, 6)", glm::uvec2(384, 192), glm::vec2(6, 6), i, LAYOUT_LINEAR)); Entries.push_back(entry("(256, 128) tile(4, 4)", glm::uvec2(256, 128), glm::vec2(4, 4), i, LAYOUT_LINEAR)); } /* for(std::size_t i = 1; i <= 256; i *= 2) { Entries.push_back(entry("(2048, 1024) tile(64, 64)", glm::uvec2(2048, 1024), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1536, 768) tile(48, 48)", glm::uvec2(1536, 768), glm::uvec2(48, 48), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1024, 512) tile(32, 32)", glm::uvec2(1024, 512), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(768, 384) tile(24, 24)", glm::uvec2(768, 384), glm::uvec2(24, 24), i, LAYOUT_LINEAR)); Entries.push_back(entry("(512, 256) tile(16, 16)", glm::uvec2(512, 256), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(384, 192) tile(12, 12)", glm::uvec2(384, 192), glm::uvec2(12, 12), i, LAYOUT_LINEAR)); Entries.push_back(entry("(256, 128) tile(8, 8)", glm::uvec2(256, 128), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); } */ /* for(std::size_t i = 1; i < 32; i *= 2) { Entries.push_back(entry("(1920, 1200) tile(64, 64)", glm::uvec2(1920, 1200), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1920, 1200) tile(32, 32)", glm::uvec2(1920, 1200), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1920, 1200) tile(16, 16)", glm::uvec2(1920, 1200), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1920, 1200) tile(8, 8)", glm::uvec2(1920, 1200), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1920, 1200) tile(4, 4)", glm::uvec2(1920, 1200), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1440, 900) tile(64, 64)", glm::uvec2(1440, 900), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1440, 900) tile(32, 32)", glm::uvec2(1440, 900), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1440, 900) tile(16, 16)", glm::uvec2(1440, 900), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1440, 900) tile(8, 8)", glm::uvec2(1440, 900), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(1440, 900) tile(4, 4)", glm::uvec2(1440, 900), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(960, 600) tile(64, 64)", glm::uvec2(960, 600), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(960, 600) tile(32, 32)", glm::uvec2(960, 600), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(960, 600) tile(16, 16)", glm::uvec2(960, 600), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(960, 600) tile(8, 8)", glm::uvec2(960, 600), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(960, 600) tile(4, 4)", glm::uvec2(960, 600), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(720, 450) tile(64, 64)", glm::uvec2(720, 450), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(720, 450) tile(32, 32)", glm::uvec2(720, 450), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(720, 450) tile(16, 16)", glm::uvec2(720, 450), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(720, 450) tile(8, 8)", glm::uvec2(720, 450), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(720, 450) tile(4, 4)", glm::uvec2(720, 450), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(480, 300) tile(64, 64)", glm::uvec2(480, 300), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(480, 300) tile(32, 32)", glm::uvec2(480, 300), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(480, 300) tile(16, 16)", glm::uvec2(480, 300), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(480, 300) tile(8, 8)", glm::uvec2(480, 300), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(480, 300) tile(4, 4)", glm::uvec2(480, 300), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(360, 240) tile(64, 64)", glm::uvec2(360, 240), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(360, 240) tile(32, 32)", glm::uvec2(360, 240), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(360, 240) tile(16, 16)", glm::uvec2(360, 240), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(360, 240) tile(8, 8)", glm::uvec2(360, 240), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(360, 240) tile(4, 4)", glm::uvec2(360, 240), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); Entries.push_back(entry("(240, 160) tile(64, 64)", glm::uvec2(240, 160), glm::uvec2(64, 64), i, LAYOUT_LINEAR)); Entries.push_back(entry("(240, 160) tile(32, 32)", glm::uvec2(240, 160), glm::uvec2(32, 32), i, LAYOUT_LINEAR)); Entries.push_back(entry("(240, 160) tile(16, 16)", glm::uvec2(240, 160), glm::uvec2(16, 16), i, LAYOUT_LINEAR)); Entries.push_back(entry("(240, 160) tile(8, 8)", glm::uvec2(240, 160), glm::uvec2(8, 8), i, LAYOUT_LINEAR)); Entries.push_back(entry("(240, 160) tile(4, 4)", glm::uvec2(240, 160), glm::uvec2(4, 4), i, LAYOUT_LINEAR)); } */ csv CSV; int Error(0); for(std::size_t EntryIndex(0); EntryIndex < Entries.size(); ++EntryIndex) { test_small_primitive Test( argc, argv, 200, Entries[EntryIndex].WindowSize, Entries[EntryIndex].TileSize, Entries[EntryIndex].DrawCount, Entries[EntryIndex].Layout); Error += Test(); Test.log(CSV, Entries[EntryIndex].String.c_str()); } CSV.save("../main_small_primitive6.csv"); return Error; }