5#include "testing/testing.h"
14TEST(VulkanDataConversion, clamp_negative_to_zero)
16 const uint32_t f32_2 = 0b11000000000000000000000000000000;
17 const uint32_t f32_inf_min = 0b11111111100000000000000000000000;
18 const uint32_t f32_inf_max = 0b01111111100000000000000000000000;
19 const uint32_t f32_nan = 0b11111111111111111111111111111111;
22 const uint32_t f11_0_expected = 0b00000000000;
23 const uint32_t f11_2_expected = 0b10000000000;
24 const uint32_t f11_inf_expected = 0b11111000000;
25 const uint32_t f11_nan_expected = 0b11111111111;
50TEST(VulkanDataConversion, infinity_upper)
52 const uint32_t f32_inf = 0b01111111100000000000000000000000;
54 const uint32_t f11_inf_expected = 0b11111000000;
58 const uint32_t f10_inf_expected = 0b1111100000;
63TEST(VulkanDataConversion, vertex_format_i32_as_float)
82 converter.
init(&source_format, workarounds);
94TEST(VulkanDataConversion, vertex_format_u32_as_float)
113 converter.
init(&source_format, workarounds);
125TEST(VulkanDataConversion, vertex_format_r8g8b8)
140 SourceData test_data_in[4];
141 test_data_in[0].color =
uchar3(255, 0, 0);
142 test_data_in[1].color =
uchar3(255, 255, 255);
143 test_data_in[2].color =
uchar3(255, 0, 0);
144 test_data_in[3].color =
uchar3(255, 255, 255);
148 converter.
init(&source_format, workarounds);
155 converter.
init(&source_format, workarounds);
158 DeviceData test_data_out[4];
159 converter.
convert(test_data_out, test_data_in, 4);
167TEST(VulkanDataConversion, vertex_format_multiple_attributes)
188 SourceData test_data_in[4];
189 test_data_in[0] = {
float3(1.0, 2.0, 3.0),
uchar3(255, 0, 0), 0, 0};
190 test_data_in[1] = {
float3(4.0, 5.0, 6.0),
uchar3(0, 255, 0), 0, 1};
191 test_data_in[2] = {
float3(7.0, 8.0, 9.0),
uchar3(0, 0, 255), 0, 2};
192 test_data_in[3] = {
float3(10.0, 11.0, 12.0),
uchar3(255, 255, 255), 0, 3};
197 converter.
init(&source_format, workarounds);
200 DeviceData test_data_out[4];
201 converter.
convert(test_data_out, test_data_in, 4);
203 DeviceData expected_data[4];
204 expected_data[0] = {
float3(1.0, 2.0, 3.0),
uchar4(255, 0, 0, 255), 0};
205 expected_data[1] = {
float3(4.0, 5.0, 6.0),
uchar4(0, 255, 0, 255), 1};
206 expected_data[2] = {
float3(7.0, 8.0, 9.0),
uchar4(0, 0, 255, 255), 2};
207 expected_data[3] = {
float3(10.0, 11.0, 12.0),
uchar4(255, 255, 255, 255), 3};
215TEST(VulkanDataConversion, texture_rgb16f_as_floats_to_rgba16f)
217 const size_t num_pixels = 4;
218 const float input[] = {
239 float read_back[num_pixels * 3];
243 EXPECT_NEAR(input[i], read_back[i], 0.01);
247TEST(VulkanDataConversion, texture_rgb32f_as_floats_to_rgba32f)
249 const size_t num_pixels = 4;
250 const float input[] = {
268 float device[num_pixels * 4];
271 float read_back[num_pixels * 3];
275 EXPECT_NEAR(input[i], read_back[i], 0.01);
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
additional_info("compositor_sum_float_shared") .push_constant(Type additional_info("compositor_sum_float_shared") .push_constant(Type GPU_RGBA32F
static Vector< int32_t > test_data()
TEST(VulkanDataConversion, clamp_negative_to_zero)
void convert_host_to_device(void *dst_buffer, const void *src_buffer, size_t buffer_size, eGPUDataFormat host_format, eGPUTextureFormat host_texture_format, eGPUTextureFormat device_format)
void convert_device_to_host(void *dst_buffer, const void *src_buffer, size_t buffer_size, eGPUDataFormat host_format, eGPUTextureFormat host_texture_format, eGPUTextureFormat device_format)
uint32_t convert_float_formats(uint32_t value)
blender::VecBase< uint8_t, 3 > uchar3
VecBase< uint32_t, 3 > uint3
blender::VecBase< uint8_t, 4 > uchar4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< float, 3 > float3
unsigned __int64 uint64_t
struct blender::gpu::VKWorkarounds::@146354041006053234141305266010270004245300304124 vertex_formats