diff options
author | Pierre Ossman <ossman@cendio.se> | 2014-09-24 16:17:42 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2014-09-24 16:17:42 +0200 |
commit | 8c7962bee84aebca08773e9890d41a8d464b5967 (patch) | |
tree | ad8fe4abdc32107b1263986d20a76139237ead9a /tests/pixelconv.cxx | |
parent | 141115a13be679283481d8b887c4cf08839922e4 (diff) | |
download | tigervnc-8c7962bee84aebca08773e9890d41a8d464b5967.tar.gz tigervnc-8c7962bee84aebca08773e9890d41a8d464b5967.zip |
Rename the pixel conversion performance test
We want to have other tests related to pixel conversion, so avoid
possible naming conflicts.
Diffstat (limited to 'tests/pixelconv.cxx')
-rw-r--r-- | tests/pixelconv.cxx | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/tests/pixelconv.cxx b/tests/pixelconv.cxx deleted file mode 100644 index 031ba8ce..00000000 --- a/tests/pixelconv.cxx +++ /dev/null @@ -1,206 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> - -#include <rfb/PixelFormat.h> - -#include "util.h" - -static const int tile = 64; -static const int fbsize = 4096; - -static rdr::U8 *fb1, *fb2; - -typedef void (*testfn) (rfb::PixelFormat&, rfb::PixelFormat&, rdr::U8*, rdr::U8*); - -struct TestEntry { - const char *label; - testfn fn; -}; - -static void testMemcpy(rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf, - rdr::U8 *dst, rdr::U8 *src) -{ - int h; - h = tile; - while (h--) { - memcpy(dst, src, tile * dstpf.bpp/8); - dst += fbsize * dstpf.bpp/8; - src += fbsize * dstpf.bpp/8; - } -} - -static void testBuffer(rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf, - rdr::U8 *dst, rdr::U8 *src) -{ - dstpf.bufferFromBuffer(dst, srcpf, src, tile, tile, fbsize, fbsize); -} - -static void testToRGB(rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf, - rdr::U8 *dst, rdr::U8 *src) -{ - srcpf.rgbFromBuffer(dst, src, tile, fbsize, tile); -} - -static void testFromRGB(rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf, - rdr::U8 *dst, rdr::U8 *src) -{ - dstpf.bufferFromRGB(dst, src, tile, fbsize, tile); -} - -static void doTest(testfn fn, rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf) -{ - startCpuCounter(); - - for (int i = 0;i < 10000;i++) { - int x, y; - rdr::U8 *dst, *src; - x = rand() % (fbsize - tile); - y = rand() % (fbsize - tile); - dst = fb1 + (x + y * fbsize) * dstpf.bpp/8; - src = fb2 + (x + y * fbsize) * srcpf.bpp/8; - fn(dstpf, srcpf, dst, src); - } - - endCpuCounter(); - - float data, time; - - data = (double)tile * tile * 10000; - time = getCpuCounter(); - - printf("%g", data / (1000.0*1000.0) / time); -} - -struct TestEntry tests[] = { - {"memcpy", testMemcpy}, - {"bufferFromBuffer", testBuffer}, - {"rgbFromBuffer", testToRGB}, - {"bufferFromRGB", testFromRGB}, -}; - -static void doTests(rfb::PixelFormat &dstpf, rfb::PixelFormat &srcpf) -{ - int i; - char dstb[256], srcb[256]; - - dstpf.print(dstb, sizeof(dstb)); - srcpf.print(srcb, sizeof(srcb)); - - printf("%s,%s", srcb, dstb); - - for (i = 0;i < sizeof(tests)/sizeof(tests[0]);i++) { - printf(","); - doTest(tests[i].fn, dstpf, srcpf); - } - - printf("\n"); -} - -int main(int argc, char **argv) -{ - int bufsize; - - time_t t; - char datebuffer[256]; - - int i; - - bufsize = fbsize * fbsize * 4; - - fb1 = new rdr::U8[bufsize]; - fb2 = new rdr::U8[bufsize]; - - for (int i = 0;i < bufsize;i++) { - fb1[i] = rand(); - fb2[i] = rand(); - } - - time(&t); - strftime(datebuffer, sizeof(datebuffer), "%Y-%m-%d %H:%M UTC", gmtime(&t)); - - printf("# Pixel Conversion Test %s\n", datebuffer); - printf("#\n"); - printf("# Frame buffer: %dx%d pixels\n", fbsize, fbsize); - printf("# Tile size: %dx%d pixels\n", tile, tile); - printf("#\n"); - printf("# Note: Results are Mpixels/sec\n"); - printf("#\n"); - - printf("Source format,Destination Format"); - for (i = 0;i < sizeof(tests)/sizeof(tests[0]);i++) - printf(",%s", tests[i].label); - printf("\n"); - - rfb::PixelFormat dstpf, srcpf; - - /* rgb888 targets */ - - printf("\n"); - - dstpf.parse("rgb888"); - - srcpf.parse("rgb888"); - doTests(dstpf, srcpf); - - srcpf.parse("bgr888"); - doTests(dstpf, srcpf); - - srcpf.parse("rgb565"); - doTests(dstpf, srcpf); - - srcpf.parse("rgb232"); - doTests(dstpf, srcpf); - - /* rgb565 targets */ - - printf("\n"); - - dstpf.parse("rgb565"); - - srcpf.parse("rgb888"); - doTests(dstpf, srcpf); - - srcpf.parse("bgr565"); - doTests(dstpf, srcpf); - - srcpf.parse("rgb232"); - doTests(dstpf, srcpf); - - /* rgb232 targets */ - - printf("\n"); - - dstpf.parse("rgb232"); - - srcpf.parse("rgb888"); - doTests(dstpf, srcpf); - - srcpf.parse("rgb565"); - doTests(dstpf, srcpf); - - srcpf.parse("bgr232"); - doTests(dstpf, srcpf); - - /* rgb565 with endian conversion (both ways) */ - - printf("\n"); - - dstpf = rfb::PixelFormat(32, 24, false, true, 255, 255, 255, 0, 8, 16); - srcpf = rfb::PixelFormat(32, 24, true, true, 255, 255, 255, 0, 8, 16); - - doTests(srcpf, dstpf); - - doTests(dstpf, srcpf); - - dstpf = rfb::PixelFormat(16, 16, false, true, 31, 63, 31, 0, 5, 11); - srcpf = rfb::PixelFormat(16, 16, true, true, 31, 63, 31, 0, 5, 11); - - doTests(srcpf, dstpf); - - doTests(dstpf, srcpf); - - return 0; -} - |