util/format: add trivial srgb<->linear conversion test

This would've caught 8829f9ccb0 ("u_format: add ETC2 to
util_format_srgb/util_format_linear").

Suggested-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Eric Engestrom 2019-11-07 17:33:19 +00:00
parent 8f4d4c808b
commit da9937d09b
3 changed files with 53 additions and 0 deletions

View File

@ -287,4 +287,5 @@ if with_tests
subdir('tests/vma')
subdir('tests/set')
subdir('tests/sparse_array')
subdir('tests/format')
endif

View File

@ -0,0 +1,12 @@
foreach t : ['srgb']
test(t,
executable(
t,
'@0@.c'.format(t),
include_directories : inc_common,
dependencies : idep_mesautil,
),
suite : 'format',
should_fail : meson.get_cross_property('xfail', '').contains(t),
)
endforeach

View File

@ -0,0 +1,40 @@
#include <stdio.h>
#include <stdlib.h>
#include "util/macros.h"
#include "util/format/u_format.h"
#include "pipe/p_format.h"
int main(void)
{
for (enum pipe_format format = 0; format < PIPE_FORMAT_COUNT; format++)
{
if (!util_format_is_srgb(format)) {
const enum pipe_format linear = util_format_linear(format);
if (format != linear) {
fprintf(stderr, "%s converted to linear is %s\n",
util_format_name(format),
util_format_name(linear));
return EXIT_FAILURE;
}
continue;
}
const enum pipe_format linear = util_format_linear(format);
if (format == linear) {
fprintf(stderr, "%s can't be converted to a linear equivalent\n",
util_format_name(format));
return EXIT_FAILURE;
}
const enum pipe_format srgb = util_format_srgb(linear);
if (format != srgb) {
fprintf(stderr, "%s converted to linear and back to srgb becomes %s\n",
util_format_name(format),
util_format_name(srgb));
return EXIT_FAILURE;
}
}
return EXIT_SUCCESS;
}