[PATCH i-g-t 12/14] tests/kms_draw_crc: Test 64bpp

Ville Syrjala ville.syrjala at linux.intel.com
Fri Oct 4 10:41:19 UTC 2024


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Test 64bpp formats to make sure igt_draw is working correctly.

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 tests/intel/kms_draw_crc.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/tests/intel/kms_draw_crc.c b/tests/intel/kms_draw_crc.c
index e3d1c0ba9bd8..078a6f46d31a 100644
--- a/tests/intel/kms_draw_crc.c
+++ b/tests/intel/kms_draw_crc.c
@@ -34,6 +34,7 @@
 
 #include "i915/gem.h"
 #include "igt.h"
+#include "igt_halffloat.h"
 
 /**
  * SUBTEST: fill-fb
@@ -76,6 +77,7 @@ static const uint32_t formats[] = {
 	DRM_FORMAT_XRGB8888,
 	DRM_FORMAT_RGB565,
 	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR16161616F,
 };
 
 static const uint64_t modifiers[] = {
@@ -109,9 +111,11 @@ static void find_modeset_params(void)
 	}
 }
 
-static uint32_t get_color(uint32_t drm_format, bool r, bool g, bool b)
+static uint64_t get_color(uint32_t drm_format, bool r, bool g, bool b)
 {
-	uint32_t color = 0;
+	uint64_t color = 0;
+	uint16_t h[3];
+	float f[3];
 
 	switch (drm_format) {
 	case DRM_FORMAT_RGB565:
@@ -129,6 +133,15 @@ static uint32_t get_color(uint32_t drm_format, bool r, bool g, bool b)
 		color |= g ? 0x3FF << 10 : 0;
 		color |= b ? 0x3FF : 0;
 		break;
+	case DRM_FORMAT_XBGR16161616F:
+		f[0] = r ? 1.0f : 0.0f;
+		f[1] = g ? 1.0f : 0.0f;
+		f[2] = b ? 1.0f : 0.0f;
+		igt_float_to_half(f, h, 3);
+		color |= (uint64_t)h[2] << 32 |
+			(uint64_t)h[1] << 16 |
+			(uint64_t)h[0] << 0;
+		break;
 	default:
 		igt_assert(false);
 	}
@@ -290,6 +303,8 @@ static const char *format_str(int format_index)
 		return "xrgb8888";
 	case DRM_FORMAT_XRGB2101010:
 		return "xrgb2101010";
+	case DRM_FORMAT_XBGR16161616F:
+		return "xbgr16161616f";
 	default:
 		igt_assert(false);
 	}
-- 
2.45.2



More information about the igt-dev mailing list