diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2022-08-21 11:23:17 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2022-08-21 11:23:17 +0300 |
commit | 908d1fd449656cfc1dacf6bf5f9d0480d9516ebf (patch) | |
tree | b1a478d2ed2b3ed4f2572fe806863eef14b2909f | |
parent | 59d8f8a373913f2bb0674bc279226528fbbdf94e (diff) |
Fix a few typo error and add test for float4x4
-rw-r--r-- | source/blender/draw/intern/draw_command.cc | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_pass.cc | 14 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_pass.hh | 2 | ||||
-rw-r--r-- | source/blender/draw/tests/draw_pass_test.cc | 8 |
4 files changed, 23 insertions, 3 deletions
diff --git a/source/blender/draw/intern/draw_command.cc b/source/blender/draw/intern/draw_command.cc index 72f3911fda5..94e15112719 100644 --- a/source/blender/draw/intern/draw_command.cc +++ b/source/blender/draw/intern/draw_command.cc @@ -311,7 +311,7 @@ std::string PushConstant::serialize() const ss << *reinterpret_cast<const float4x4 *>(&float4_value); break; case Type::FloatReference: - ss << float4_ref[i]; + ss << *float4x4_ref; break; } break; diff --git a/source/blender/draw/intern/draw_pass.cc b/source/blender/draw/intern/draw_pass.cc index d0d397c8295..916f9abee49 100644 --- a/source/blender/draw/intern/draw_pass.cc +++ b/source/blender/draw/intern/draw_pass.cc @@ -77,6 +77,8 @@ std::string PassSimple::serialize() const ss << "PassSimple(" << debug_name << ")" << std::endl; for (const command::Header &header : headers_) { switch (header.type) { + case Type::None: + break; case Type::SubPass: ss << sub_passes_[header.command_index].serialize() << std::endl; break; @@ -93,7 +95,13 @@ std::string PassSimple::Sub::serialize() const std::stringstream ss; ss << ".sub(" << debug_name << ")" << std::endl; for (const command::Header &header : headers_) { - ss << " " << commands_[header.command_index].serialize(header.type) << std::endl; + switch (header.type) { + case Type::None: + break; + default: + ss << " " << commands_[header.command_index].serialize(header.type) << std::endl; + break; + } } return ss.str(); } @@ -104,6 +112,8 @@ std::string PassMain::serialize() const ss << "PassMain(" << debug_name << ")" << std::endl; for (const command::Header &header : headers_) { switch (header.type) { + case Type::None: + break; case Type::SubPass: ss << sub_passes_[header.command_index].serialize() << std::endl; break; @@ -124,6 +134,8 @@ std::string PassMain::Sub::serialize() const ss << ".sub(" << debug_name << ")" << std::endl; for (const command::Header &header : headers_) { switch (header.type) { + case Type::None: + break; case Type::MultiDraw: /* TODO */ break; diff --git a/source/blender/draw/intern/draw_pass.hh b/source/blender/draw/intern/draw_pass.hh index 4d4f74e1425..90308d9910d 100644 --- a/source/blender/draw/intern/draw_pass.hh +++ b/source/blender/draw/intern/draw_pass.hh @@ -187,7 +187,7 @@ class PassBase { * Reference versions are to be used when the resource might change between the time it is * referenced and the time it is dereferenced for drawing. * - * IMPORTANT: Will keep a reference to the data and dereference it upon drawing. Make sure data + * IMPORTANT: Will keep a reference to the data and dereference it upon drawing. Make sure data * still alive until pass submission. * * NOTE: bool reference version is expected to take bool1 reference which is aliased to int. diff --git a/source/blender/draw/tests/draw_pass_test.cc b/source/blender/draw/tests/draw_pass_test.cc index 8cd647e5894..13e569af270 100644 --- a/source/blender/draw/tests/draw_pass_test.cc +++ b/source/blender/draw/tests/draw_pass_test.cc @@ -38,6 +38,7 @@ static void test_draw_pass_all_commands() pass.bind("missing_ssbo", &ssbo); /* Should not crash. */ pass.push_constant("alpha", alpha); pass.push_constant("alpha", &alpha); + pass.push_constant("ModelViewProjectionMatrix", float4x4::identity()); pass.draw_procedural(GPU_PRIM_TRIS, 1, 3); /* Should not crash even if shader is not a compute. This is because we only serialize. */ @@ -69,6 +70,13 @@ static void test_draw_pass_all_commands() expected << ".bind_storage_buf_ref(-1)" << std::endl; expected << ".push_constant(2, data=0)" << std::endl; expected << ".push_constant(2, data=1)" << std::endl; + expected << ".push_constant(0, data=(" << std::endl; + expected << "( 1.000000, 0.000000, 0.000000, 0.000000)" << std::endl; + expected << "( 0.000000, 1.000000, 0.000000, 0.000000)" << std::endl; + expected << "( 0.000000, 0.000000, 1.000000, 0.000000)" << std::endl; + expected << "( 0.000000, 0.000000, 0.000000, 1.000000)" << std::endl; + expected << ")" << std::endl; + expected << ")" << std::endl; expected << ".draw(inst_len=1, vert_len=3, vert_first=from_batch, res_id=0)" << std::endl; expected << ".shader_bind(gpu_shader_3D_image_modulate_alpha)" << std::endl; expected << ".dispatch(1, 1, 1)" << std::endl; |