Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: client/deps/glbench/src/main.cc

Issue 1588001: Added glReadPixels test. (Closed)
Patch Set: couple more readpixel tests Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <fcntl.h> 5 #include <fcntl.h>
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 #include <sys/mman.h> 9 #include <sys/mman.h>
10 10
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 if (Bench(f, &slope, &bias)) { 61 if (Bench(f, &slope, &bias)) {
62 printf("%s: %g\n", name, coefficient * (inverse ? 1.f / slope : slope)); 62 printf("%s: %g\n", name, coefficient * (inverse ? 1.f / slope : slope));
63 } else { 63 } else {
64 printf("# %s is too slow, returning zero.\n", name); 64 printf("# %s is too slow, returning zero.\n", name);
65 printf("%s: 0\n", name); 65 printf("%s: 0\n", name);
66 } 66 }
67 } 67 }
68 } 68 }
69 69
70 static int arg1 = 0; 70 static int arg1 = 0;
71 static void *arg2 = NULL;
71 72
72 void SwapTestFunc(int iter) { 73 void SwapTestFunc(int iter) {
73 for (int i = 0 ; i < iter; ++i) { 74 for (int i = 0 ; i < iter; ++i) {
74 SwapBuffers(); 75 SwapBuffers();
75 } 76 }
76 } 77 }
77 78
78 void SwapTest() { 79 void SwapTest() {
79 RunTest(SwapTestFunc, "us_swap_swap", 1.f, false); 80 RunTest(SwapTestFunc, "us_swap_swap", 1.f, false);
80 } 81 }
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 783
783 void NoFillWindowManagerCompositingTest() { 784 void NoFillWindowManagerCompositingTest() {
784 glScissor(0, 0, 1, 1); 785 glScissor(0, 0, 1, 1);
785 glEnable(GL_SCISSOR_TEST); 786 glEnable(GL_SCISSOR_TEST);
786 InitializeCompositing(); 787 InitializeCompositing();
787 RunTest(CompositingTestFunc, "1280x768_fps_no_fill_compositing", 788 RunTest(CompositingTestFunc, "1280x768_fps_no_fill_compositing",
788 screen_scale_factor, true); 789 screen_scale_factor, true);
789 TeardownCompositing(); 790 TeardownCompositing();
790 } 791 }
791 792
792 // TODO: get resources file from a command line option or something. 793 void ReadPixelTestFunc(int iter) {
794 glReadPixels(0, 0, g_width, g_height, GL_RGBA, GL_UNSIGNED_BYTE, arg2);
795 CHECK(glGetError() == 0);
796 for (int i = 0; i < iter; i++)
797 glReadPixels(0, 0, g_width, g_height, GL_RGBA, GL_UNSIGNED_BYTE, arg2);
798 }
799
800 // TODO: better test names.
801 void ReadPixelTest() {
802 // One GL_RGBA pixel takes 4 bytes.
803 const int row_size = g_width * 4;
804 // Default GL_PACK_ALIGNMENT is 4, round up pixel row size to multiple of 4.
805 // This is a no-op because row_size is already divisible by 4.
806 // One is added so that we can test reads into unaligned location.
807 char* pixels = new char[((row_size + 3) & ~3) * g_height + 1];
808
809 arg2 = pixels;
810 RunTest(ReadPixelTestFunc, "mpixels_sec_pixel_read",
811 g_width * g_height, true);
812
813 // Reducing GL_PACK_ALIGNMENT can only make rows smaller. No need to
814 // reallocate the buffer.
815 glPixelStorei(GL_PACK_ALIGNMENT, 1);
816 RunTest(ReadPixelTestFunc, "mpixels_sec_pixel_read_2",
817 g_width * g_height, true);
818
819 arg2 = static_cast<void*>(pixels + 1);
820 RunTest(ReadPixelTestFunc, "mpixels_sec_pixel_read_3",
821 g_width * g_height, true);
822
823 delete[] pixels;
824 }
825
793 // TODO: use proper command line parsing library. 826 // TODO: use proper command line parsing library.
794 static void ParseArgs(int argc, char *argv[]) { 827 static void ParseArgs(int argc, char *argv[]) {
795 const char **enabled_tests_ptr = enabled_tests; 828 const char **enabled_tests_ptr = enabled_tests;
796 bool test_name_arg = false; 829 bool test_name_arg = false;
797 bool duration_arg = false; 830 bool duration_arg = false;
798 for (int i = 0; i < argc; i++) { 831 for (int i = 0; i < argc; i++) {
799 if (test_name_arg) { 832 if (test_name_arg) {
800 test_name_arg = false; 833 test_name_arg = false;
801 *enabled_tests_ptr++ = argv[i]; 834 *enabled_tests_ptr++ = argv[i];
802 if (enabled_tests_ptr - enabled_tests >= enabled_tests_max) 835 if (enabled_tests_ptr - enabled_tests >= enabled_tests_max)
(...skipping 23 matching lines...) Expand all
826 SwapTest, 859 SwapTest,
827 ClearTest, 860 ClearTest,
828 FillRateTest, 861 FillRateTest,
829 TriangleSetupTest, 862 TriangleSetupTest,
830 AttributeFetchShaderTest, 863 AttributeFetchShaderTest,
831 VaryingsAndDdxyShaderTest, 864 VaryingsAndDdxyShaderTest,
832 YuvToRgbShaderTest1, 865 YuvToRgbShaderTest1,
833 YuvToRgbShaderTest2, 866 YuvToRgbShaderTest2,
834 NoFillWindowManagerCompositingTest, 867 NoFillWindowManagerCompositingTest,
835 WindowManagerCompositingTest, 868 WindowManagerCompositingTest,
869 ReadPixelTest,
836 }; 870 };
837 871
838 uint64_t done = GetUTime() + 1000000ULL * seconds_to_run; 872 uint64_t done = GetUTime() + 1000000ULL * seconds_to_run;
839 do { 873 do {
840 for (unsigned int i = 0; i < sizeof(test) / sizeof(*test); i++) { 874 for (unsigned int i = 0; i < sizeof(test) / sizeof(*test); i++) {
841 InitContext(); 875 InitContext();
842 test[i](); 876 test[i]();
843 GLenum err = glGetError(); 877 GLenum err = glGetError();
844 if (err != 0) 878 if (err != 0)
845 printf("# glGetError returned non-zero: 0x%x\n", err); 879 printf("# glGetError returned non-zero: 0x%x\n", err);
846 DestroyContext(); 880 DestroyContext();
847 } 881 }
848 } while (GetUTime() < done); 882 } while (GetUTime() < done);
849 883
850 return 0; 884 return 0;
851 } 885 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698