5#include "testing/testing.h"
20 GPUStorageBuf *
ssbo =
nullptr;
30 if (
ssbo ==
nullptr) {
33 data.resize(num_floats);
39 if (
ssbo !=
nullptr) {
48 vec2_in =
float2(vector_mul * 2.0, vector_mul * 2.0 + scalar_mul);
50 vector_mul * 3.0, vector_mul * 3.0 + scalar_mul, vector_mul * 3.0 + scalar_mul * 2.0);
52 vector_mul * 4.0 + scalar_mul,
53 vector_mul * 4.0 + scalar_mul * 2.0,
54 vector_mul * 4.0 + scalar_mul * 3.0);
90 if (shader !=
nullptr) {
98 if (shader ==
nullptr) {
100 EXPECT_NE(shader,
nullptr);
141 for (
const int call_index :
IndexRange(num_calls_simultaneously)) {
142 CallData &call_data = shader.new_call();
145 shader.bind(call_data);
146 shader.update_push_constants(call_data);
151 for (
const int call_index :
IndexRange(num_calls_simultaneously)) {
152 CallData &call_data = shader.call_datas[call_index];
200GPU_TEST(push_constants_multiple_128bytes)
206GPU_TEST(push_constants_multiple_256bytes)
212GPU_TEST(push_constants_multiple_512bytes)
218GPU_TEST(push_constants_multiple_8192bytes)
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
void GPU_compute_dispatch(GPUShader *shader, uint groups_x_len, uint groups_y_len, uint groups_z_len)
void GPU_shader_uniform_2fv(GPUShader *sh, const char *name, const float data[2])
GPUShader * GPU_shader_create_from_info_name(const char *info_name)
void GPU_shader_uniform_1f(GPUShader *sh, const char *name, float value)
void GPU_shader_uniform_3fv(GPUShader *sh, const char *name, const float data[3])
int GPU_shader_get_ssbo_binding(GPUShader *shader, const char *name)
void GPU_shader_bind(GPUShader *shader)
void GPU_shader_uniform_4fv(GPUShader *sh, const char *name, const float data[4])
void GPU_shader_free(GPUShader *shader)
void GPU_memory_barrier(eGPUBarrier barrier)
@ GPU_BARRIER_SHADER_STORAGE
void GPU_storagebuf_bind(GPUStorageBuf *ssbo, int slot)
GPUStorageBuf * GPU_storagebuf_create_ex(size_t size, const void *data, GPUUsageType usage, const char *name)
void GPU_storagebuf_free(GPUStorageBuf *ssbo)
void GPU_storagebuf_read(GPUStorageBuf *ssbo, void *data)
struct GPUShader GPUShader
#define GPU_TEST(test_name)
static void test_push_constants_8192bytes()
static void test_push_constants_128bytes()
static void test_push_constants_multiple_8192bytes()
static void test_push_constants_multiple()
static void test_push_constants()
static void test_push_constants_256bytes()
static void test_push_constants_multiple_128bytes()
static void test_push_constants_multiple_256bytes()
static void test_push_constants_multiple_512bytes()
static void do_push_constants_test(const char *info_name, const int num_calls_simultaneously=1)
static void test_push_constants_512bytes()
VecBase< float, 4 > float4
VecBase< float, 2 > float2
VecBase< float, 3 > float3
void generate_test_data(const float vector_mul, const float scalar_mul)
void init_ssbo(size_t num_floats)
void update_push_constants(const CallData &call_data)
Vector< CallData > call_datas
void bind(CallData &call_data)
void init_shader(const char *info_name)