main sync #3

Merged
Patrick Busch merged 318 commits from blender/blender:main into main 2023-03-17 15:52:21 +01:00
6 changed files with 73 additions and 60 deletions
Showing only changes of commit 4238080568 - Show all commits

View File

@ -809,10 +809,11 @@ if(WITH_GTESTS)
set(TEST_SRC
tests/gpu_testing.cc
tests/gpu_index_buffer_test.cc
tests/gpu_push_constants_test.cc
tests/gpu_shader_test.cc
tests/gpu_storage_buffer_test.cc
tests/index_buffer_test.cc
tests/push_constants_test.cc
tests/shader_test.cc
tests/storage_buffer_test.cc
tests/texture_test.cc
tests/gpu_testing.hh
)

View File

@ -10,7 +10,7 @@
namespace blender::gpu::tests {
static void test_gpu_index_buffer_subbuilders()
static void test_index_buffer_subbuilders()
{
const uint num_subbuilders = 10;
const uint verts_per_subbuilders = 100;
@ -44,6 +44,6 @@ static void test_gpu_index_buffer_subbuilders()
GPU_INDEXBUF_DISCARD_SAFE(index_buffer);
}
GPU_TEST(gpu_index_buffer_subbuilders)
GPU_TEST(index_buffer_subbuilders)
} // namespace blender::gpu::tests

View File

@ -33,7 +33,7 @@ static void test_shader_compile_statically_defined()
}
GPU_TEST(shader_compile_statically_defined)
static void test_gpu_shader_compute_2d()
static void test_shader_compute_2d()
{
if (!GPU_compute_shader_support()) {
@ -77,9 +77,9 @@ static void test_gpu_shader_compute_2d()
GPU_texture_free(texture);
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_compute_2d)
GPU_TEST(shader_compute_2d)
static void test_gpu_shader_compute_1d()
static void test_shader_compute_1d()
{
if (!GPU_compute_shader_support()) {
@ -126,9 +126,9 @@ static void test_gpu_shader_compute_1d()
GPU_texture_free(texture);
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_compute_1d)
GPU_TEST(shader_compute_1d)
static void test_gpu_shader_compute_vbo()
static void test_shader_compute_vbo()
{
if (!GPU_compute_shader_support()) {
@ -173,9 +173,9 @@ static void test_gpu_shader_compute_vbo()
GPU_vertbuf_discard(vbo);
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_compute_vbo)
GPU_TEST(shader_compute_vbo)
static void test_gpu_shader_compute_ibo()
static void test_shader_compute_ibo()
{
if (!GPU_compute_shader_support()) {
@ -214,9 +214,9 @@ static void test_gpu_shader_compute_ibo()
GPU_indexbuf_discard(ibo);
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_compute_ibo)
GPU_TEST(shader_compute_ibo)
static void test_gpu_shader_compute_ssbo()
static void test_shader_compute_ssbo()
{
if (!GPU_compute_shader_support() && !GPU_shader_storage_buffer_objects_support()) {
@ -256,9 +256,9 @@ static void test_gpu_shader_compute_ssbo()
GPU_storagebuf_free(ssbo);
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_compute_ssbo)
GPU_TEST(shader_compute_ssbo)
static void test_gpu_shader_ssbo_binding()
static void test_shader_ssbo_binding()
{
if (!GPU_compute_shader_support()) {
/* We can't test as a the platform does not support compute shaders. */
@ -277,44 +277,7 @@ static void test_gpu_shader_ssbo_binding()
/* Cleanup. */
GPU_shader_free(shader);
}
GPU_TEST(gpu_shader_ssbo_binding)
static void test_gpu_texture_read()
{
GPU_render_begin();
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_ATTACHMENT | GPU_TEXTURE_USAGE_HOST_READ;
GPUTexture *rgba32u = GPU_texture_create_2d("rgba32u", 1, 1, 1, GPU_RGBA32UI, usage, nullptr);
GPUTexture *rgba16u = GPU_texture_create_2d("rgba16u", 1, 1, 1, GPU_RGBA16UI, usage, nullptr);
GPUTexture *rgba32f = GPU_texture_create_2d("rgba32f", 1, 1, 1, GPU_RGBA32F, usage, nullptr);
const float4 fcol = {0.0f, 1.3f, -231.0f, 1000.0f};
const uint4 ucol = {0, 1, 2, 12223};
GPU_texture_clear(rgba32u, GPU_DATA_UINT, ucol);
GPU_texture_clear(rgba16u, GPU_DATA_UINT, ucol);
GPU_texture_clear(rgba32f, GPU_DATA_FLOAT, fcol);
GPU_memory_barrier(GPU_BARRIER_TEXTURE_UPDATE);
uint4 *rgba32u_data = (uint4 *)GPU_texture_read(rgba32u, GPU_DATA_UINT, 0);
uint4 *rgba16u_data = (uint4 *)GPU_texture_read(rgba16u, GPU_DATA_UINT, 0);
float4 *rgba32f_data = (float4 *)GPU_texture_read(rgba32f, GPU_DATA_FLOAT, 0);
EXPECT_EQ(ucol, *rgba32u_data);
EXPECT_EQ(ucol, *rgba16u_data);
EXPECT_EQ(fcol, *rgba32f_data);
MEM_freeN(rgba32u_data);
MEM_freeN(rgba16u_data);
MEM_freeN(rgba32f_data);
GPU_texture_free(rgba32u);
GPU_texture_free(rgba16u);
GPU_texture_free(rgba32f);
GPU_render_end();
}
GPU_TEST(gpu_texture_read)
GPU_TEST(shader_ssbo_binding)
static std::string print_test_data(const TestOutputRawData &raw, TestType type)
{
@ -487,11 +450,11 @@ static void gpu_shader_lib_test(const char *test_src_name, const char *additiona
GPU_render_end();
}
static void test_gpu_math_lib()
static void test_math_lib()
{
gpu_shader_lib_test("gpu_math_test.glsl");
}
GPU_TEST(gpu_math_lib)
GPU_TEST(math_lib)
static void test_eevee_lib()
{

View File

@ -22,7 +22,7 @@ static Vector<int32_t> test_data()
return data;
}
static void test_gpu_storage_buffer_create_update_read()
static void test_storage_buffer_create_update_read()
{
GPUStorageBuf *ssbo = GPU_storagebuf_create_ex(
SIZE_IN_BYTES, nullptr, GPU_USAGE_STATIC, __func__);
@ -45,6 +45,6 @@ static void test_gpu_storage_buffer_create_update_read()
GPU_storagebuf_free(ssbo);
}
GPU_TEST(gpu_storage_buffer_create_update_read);
GPU_TEST(storage_buffer_create_update_read);
} // namespace blender::gpu::tests

View File

@ -0,0 +1,49 @@
#include "gpu_testing.hh"
#include "MEM_guardedalloc.h"
#include "BLI_math_vector.hh"
#include "GPU_context.h"
#include "GPU_texture.h"
namespace blender::gpu::tests {
static void test_texture_read()
{
GPU_render_begin();
eGPUTextureUsage usage = GPU_TEXTURE_USAGE_ATTACHMENT | GPU_TEXTURE_USAGE_HOST_READ;
GPUTexture *rgba32u = GPU_texture_create_2d("rgba32u", 1, 1, 1, GPU_RGBA32UI, usage, nullptr);
GPUTexture *rgba16u = GPU_texture_create_2d("rgba16u", 1, 1, 1, GPU_RGBA16UI, usage, nullptr);
GPUTexture *rgba32f = GPU_texture_create_2d("rgba32f", 1, 1, 1, GPU_RGBA32F, usage, nullptr);
const float4 fcol = {0.0f, 1.3f, -231.0f, 1000.0f};
const uint4 ucol = {0, 1, 2, 12223};
GPU_texture_clear(rgba32u, GPU_DATA_UINT, ucol);
GPU_texture_clear(rgba16u, GPU_DATA_UINT, ucol);
GPU_texture_clear(rgba32f, GPU_DATA_FLOAT, fcol);
GPU_memory_barrier(GPU_BARRIER_TEXTURE_UPDATE);
uint4 *rgba32u_data = (uint4 *)GPU_texture_read(rgba32u, GPU_DATA_UINT, 0);
uint4 *rgba16u_data = (uint4 *)GPU_texture_read(rgba16u, GPU_DATA_UINT, 0);
float4 *rgba32f_data = (float4 *)GPU_texture_read(rgba32f, GPU_DATA_FLOAT, 0);
EXPECT_EQ(ucol, *rgba32u_data);
EXPECT_EQ(ucol, *rgba16u_data);
EXPECT_EQ(fcol, *rgba32f_data);
MEM_freeN(rgba32u_data);
MEM_freeN(rgba16u_data);
MEM_freeN(rgba32f_data);
GPU_texture_free(rgba32u);
GPU_texture_free(rgba16u);
GPU_texture_free(rgba32f);
GPU_render_end();
}
GPU_TEST(texture_read)
} // namespace blender::gpu::tests