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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
   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 );
   }
Esempio n. 5
0
   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;
}