Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-08-21 11:23:17 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-08-21 11:23:17 +0300
commit908d1fd449656cfc1dacf6bf5f9d0480d9516ebf (patch)
treeb1a478d2ed2b3ed4f2572fe806863eef14b2909f
parent59d8f8a373913f2bb0674bc279226528fbbdf94e (diff)
Fix a few typo error and add test for float4x4
-rw-r--r--source/blender/draw/intern/draw_command.cc2
-rw-r--r--source/blender/draw/intern/draw_pass.cc14
-rw-r--r--source/blender/draw/intern/draw_pass.hh2
-rw-r--r--source/blender/draw/tests/draw_pass_test.cc8
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;