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};
210 EXPECT_EQ(test_data_out[i].color, expected_data[i].color);
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)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
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::@669 vertex_formats