osmesa/tests: Cover OSMESA_RGB GL_UNSIGNED_BYTE case
authorDanylo Piliaiev <danylo.piliaiev@globallogic.com>
Mon, 30 Dec 2019 13:51:12 +0000 (15:51 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 4 Feb 2020 17:48:08 +0000 (17:48 +0000)
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3216>

src/gallium/targets/osmesa/test-render.cpp

index b31789abcd5150a4b36d085bdc0b1a51ccb9c216..ab11f665f1036f3fb3a7d1fd2bb1c782d89c75eb 100644 (file)
@@ -56,17 +56,27 @@ name_params(const testing::TestParamInfo<Params> params) {
 TEST_P(OSMesaRenderTestFixture, Render)
 {
    auto params = GetParam();
-   uint32_t pixel = 0;
+   const int w = 2, h = 2;
+   uint8_t pixels[w * h * 4] = { 0 };
    uint32_t expected;  // This should be green for the given color model
-   int w = 1, h = 1;
 
    std::unique_ptr<osmesa_context, decltype(&OSMesaDestroyContext)> ctx{
       OSMesaCreateContext(params[0], NULL), &OSMesaDestroyContext};
    ASSERT_TRUE(ctx);
 
-   auto ret = OSMesaMakeCurrent(ctx.get(), &pixel, params[1], w, h);
+   auto ret = OSMesaMakeCurrent(ctx.get(), &pixels, params[1], w, h);
    ASSERT_EQ(ret, GL_TRUE);
 
+   int bpp = 4;
+   switch (params[0]) {
+   case OSMESA_RGB:
+      bpp = 3;
+      break;
+   case OSMESA_RGB_565:
+      bpp = 2;
+      break;
+   }
+
    switch (params[0]) {
    case OSMESA_RGBA:
    case OSMESA_BGRA:
@@ -86,7 +96,12 @@ TEST_P(OSMesaRenderTestFixture, Render)
    glClear(GL_COLOR_BUFFER_BIT);
    glFinish();
 
-   ASSERT_EQ(expected, pixel);
+   for (unsigned i = 0; i < w * h; i++) {
+      uint32_t color = 0;
+      memcpy(&color, &pixels[i * bpp], bpp);
+
+      ASSERT_EQ(expected, color);
+   }
 }
 
 INSTANTIATE_TEST_CASE_P(
@@ -95,7 +110,8 @@ INSTANTIATE_TEST_CASE_P(
    testing::Values(
       Params{ OSMESA_RGBA, GL_UNSIGNED_BYTE },
       Params{ OSMESA_BGRA, GL_UNSIGNED_BYTE },
-      Params{ OSMESA_ARGB, GL_UNSIGNED_BYTE }
+      Params{ OSMESA_ARGB, GL_UNSIGNED_BYTE },
+      Params{ OSMESA_RGB, GL_UNSIGNED_BYTE }
    ),
    name_params
 );