diff --git a/tests/d3d12.c b/tests/d3d12.c index 160d2018..03c44c00 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -93,19 +93,19 @@ static bool compare_uvec4(const struct uvec4* v1, const struct uvec4 *v2) return v1->x == v2->x && v1->y == v2->y && v1->z == v2->z && v1->w == v2->w; } -static bool compare_uint8(uint8_t a, uint8_t b, int max_diff) +static bool compare_uint8(uint8_t a, uint8_t b, unsigned int max_diff) { - return abs(a - b) <= max_diff; + return delta_uint8(a, b) <= max_diff; } -static bool compare_uint16(uint16_t a, uint16_t b, int max_diff) +static bool compare_uint16(uint16_t a, uint16_t b, unsigned int max_diff) { - return abs(a - b) <= max_diff; + return delta_uint16(a, b) <= max_diff; } -static bool compare_uint64(uint64_t a, uint64_t b, int max_diff) +static bool compare_uint64(uint64_t a, uint64_t b, unsigned int max_diff) { - return llabs(a - b) <= max_diff; + return delta_uint64(a, b) <= max_diff; } static ULONG get_refcount(void *iface) diff --git a/tests/d3d12_test_utils.h b/tests/d3d12_test_utils.h index 9f687b0f..9f70d2fc 100644 --- a/tests/d3d12_test_utils.h +++ b/tests/d3d12_test_utils.h @@ -55,18 +55,23 @@ static inline void set_viewport(D3D12_VIEWPORT *vp, float x, float y, vp->MaxDepth = max_depth; } +static inline uint8_t delta_uint8 (uint8_t a, uint8_t b) { return max(a, b) - min(a, b); } +static inline uint16_t delta_uint16(uint16_t a, uint16_t b) { return max(a, b) - min(a, b); } +static inline uint32_t delta_uint32(uint32_t a, uint32_t b) { return max(a, b) - min(a, b); } +static inline uint64_t delta_uint64(uint64_t a, uint64_t b) { return max(a, b) - min(a, b); } + static inline bool compare_color(DWORD c1, DWORD c2, BYTE max_diff) { - if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) + if (delta_uint32(c1 & 0xff, c2 & 0xff) > max_diff) return false; c1 >>= 8; c2 >>= 8; - if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) + if (delta_uint32(c1 & 0xff, c2 & 0xff) > max_diff) return false; c1 >>= 8; c2 >>= 8; - if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) + if (delta_uint32(c1 & 0xff, c2 & 0xff) > max_diff) return false; c1 >>= 8; c2 >>= 8; - if (abs((c1 & 0xff) - (c2 & 0xff)) > max_diff) + if (delta_uint32(c1 & 0xff, c2 & 0xff) > max_diff) return false; return true; }