summaryrefslogtreecommitdiff
path: root/src/tests/common/effect_test_helpers.h
blob: 962d1b0e7db2a79ffa936263e740b6fb02dfec20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// This file is part of the 64k demo project.
// It provides reusable test helpers for GPU effect testing.
// Includes pixel validation utilities.

#pragma once

#include <cstdint>
#include <functional>
#include <vector>

// ============================================================================
// Pixel Validation Helpers
// ============================================================================

// Validate pixels using a predicate function
// Returns true if at least one pixel matches the predicate
bool validate_pixels(
    const std::vector<uint8_t>& pixels, int width, int height,
    std::function<bool(uint8_t r, uint8_t g, uint8_t b, uint8_t a)> predicate);

// Check if any pixel is non-black (rendered something)
bool has_rendered_content(const std::vector<uint8_t>& pixels, int width,
                          int height);

// Check if all pixels match a specific color (within tolerance)
bool all_pixels_match_color(const std::vector<uint8_t>& pixels, int width,
                            int height, uint8_t r, uint8_t g, uint8_t b,
                            uint8_t tolerance = 5);

// Compute simple hash of pixel data (for deterministic output checks)
uint64_t hash_pixels(const std::vector<uint8_t>& pixels);