Blender
V5.0
source
blender
blenlib
tests
BLI_compression_test.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2025 Blender Authors
2
*
3
* SPDX-License-Identifier: Apache-2.0 */
4
5
#include "testing/testing.h"
6
7
#include "
BLI_array.hh
"
8
#include "
BLI_compression.hh
"
9
10
namespace
blender
{
11
12
TEST
(compression,
filter_transpose_delta
)
13
{
14
constexpr
int
num
= 5;
15
constexpr
int
size
= 3;
16
uint8_t
input
[
num
*
size
] = {0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 5, 4, 3};
17
uint8_t filtered_exp[
num
*
size
] = {0, 2, 6, 26, 227, 1, 2, 10, 42, 205, 1, 4, 16, 68, 170};
18
uint8_t filtered[
num
*
size
] = {};
19
uint8_t unfiltered[
num
*
size
] = {};
20
filter_transpose_delta
(
input
, filtered,
num
,
size
);
21
EXPECT_EQ_ARRAY(filtered_exp, filtered,
num
*
size
);
22
unfilter_transpose_delta
(filtered, unfiltered,
num
,
size
);
23
EXPECT_EQ_ARRAY(
input
, unfiltered,
num
*
size
);
24
}
25
26
static
uint32_t
pcg_rand
(uint32_t &rng_state)
27
{
28
uint32_t
state
= rng_state;
29
rng_state = rng_state * 747796405u + 2891336453u;
30
uint32_t word = ((
state
>> ((
state
>> 28u) + 4u)) ^
state
) * 277803737u;
31
return
(word >> 22u) ^ word;
32
}
33
34
TEST
(compression, filter_transpose_delta_stress)
35
{
36
uint32_t rng = 1;
37
38
constexpr
int
size
= 64 * 1024;
39
Array<uint8_t>
input
(
size
);
40
Array<uint8_t>
filtered(
size
);
41
Array<uint8_t>
unfiltered(
size
);
42
for
(uint8_t &val :
input
) {
43
val =
pcg_rand
(rng);
44
}
45
46
const
int
strides[] = {1, 2, 3, 4, 5, 8, 13, 16, 25, 48, 64, 65, 101, 300, 512, 513,
size
};
47
for
(
int
stride : strides) {
48
const
int
num
=
size
/ stride;
49
filter_transpose_delta
(
input
.data(), filtered.
data
(),
num
, stride);
50
unfilter_transpose_delta
(filtered.
data
(), unfiltered.
data
(),
num
, stride);
51
EXPECT_EQ_ARRAY(
input
.data(), unfiltered.
data
(),
num
* stride);
52
}
53
}
54
55
}
// namespace blender
BLI_array.hh
BLI_compression.hh
num
ATTR_WARN_UNUSED_RESULT const size_t num
Definition
BLI_memarena.h:42
size
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition
btDbvt.cpp:52
blender::Array
Definition
BLI_array.hh:50
blender::Array::data
const T * data() const
Definition
BLI_array.hh:312
input
#define input
Definition
gpu_shader_compat_cxx.hh:170
state
static ulong state[N]
Definition
mathutils_noise.cc:56
blender
Definition
ANIM_action.hh:36
blender::filter_transpose_delta
void filter_transpose_delta(const uint8_t *src, uint8_t *dst, size_t items_num, size_t item_size)
Definition
compression.cc:13
blender::pcg_rand
static uint32_t pcg_rand(uint32_t &rng_state)
Definition
BLI_compression_test.cc:26
blender::TEST
TEST(compression, filter_transpose_delta)
Definition
BLI_compression_test.cc:12
blender::unfilter_transpose_delta
void unfilter_transpose_delta(const uint8_t *src, uint8_t *dst, size_t items_num, size_t item_size)
Definition
compression.cc:29
Generated on
for Blender by
doxygen
1.16.1