summaryrefslogtreecommitdiff
path: root/tests/kms_psr_sink_crc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/kms_psr_sink_crc.c')
-rw-r--r--tests/kms_psr_sink_crc.c30
1 files changed, 5 insertions, 25 deletions
diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
index af63e689..94134b7d 100644
--- a/tests/kms_psr_sink_crc.c
+++ b/tests/kms_psr_sink_crc.c
@@ -241,34 +241,14 @@ static void get_sink_crc(data_t *data, char *crc)
static bool is_green(char *crc)
{
- char color_mask[5] = "FFFF\0";
- char rs[5], gs[5], bs[5];
- unsigned int rh, gh, bh, mask;
- int ret;
-
+ const char *mask = "0000FFFF0000";
+ uint32_t *p = (uint32_t *)crc, *mask_p = (uint32_t *)mask;
if (igt_interactive_debug)
return false;
- sscanf(color_mask, "%4x", &mask);
-
- memcpy(rs, &crc[0], 4);
- rs[4] = '\0';
- ret = sscanf(rs, "%4x", &rh);
- igt_require(ret > 0);
-
- memcpy(gs, &crc[4], 4);
- gs[4] = '\0';
- ret = sscanf(gs, "%4x", &gh);
- igt_require(ret > 0);
-
- memcpy(bs, &crc[8], 4);
- bs[4] = '\0';
- ret = sscanf(bs, "%4x", &bh);
- igt_require(ret > 0);
-
- return ((rh & mask) == 0 &&
- (gh & mask) != 0 &&
- (bh & mask) == 0);
+ /* Check R and B components are 0 and G is non-zero */
+ return *p == *mask_p && *(p + 2) == *(mask_p + 2) &&
+ (*(p + 1) & *(mask_p + 1)) != 0;
}
static void assert_or_manual(bool condition, const char *expected)