[Bf-blender-cvs] [24a5f4d6f8a] temp-gpu-texture-partial-updates: Use enum class for ePartialUpdateCollectResult.
Jeroen Bakker
noreply at git.blender.org
Fri Nov 26 13:29:43 CET 2021
Commit: 24a5f4d6f8a952f33a6040ca8795de29a6f1a04d
Author: Jeroen Bakker
Date: Fri Nov 26 11:21:12 2021 +0100
Branches: temp-gpu-texture-partial-updates
https://developer.blender.org/rB24a5f4d6f8a952f33a6040ca8795de29a6f1a04d
Use enum class for ePartialUpdateCollectResult.
===================================================================
M source/blender/blenkernel/BKE_image_partial_update.hh
M source/blender/blenkernel/intern/image_gpu.cc
M source/blender/blenkernel/intern/image_partial_update.cc
M source/blender/blenkernel/intern/image_partial_update_test.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_image_partial_update.hh b/source/blender/blenkernel/BKE_image_partial_update.hh
index 6c4a9febbee..da98ab3d69a 100644
--- a/source/blender/blenkernel/BKE_image_partial_update.hh
+++ b/source/blender/blenkernel/BKE_image_partial_update.hh
@@ -34,7 +34,7 @@ struct PartialUpdateRegister;
}
namespace blender::bke::image {
-
+
using TileNumber = int;
namespace partial_update {
@@ -45,16 +45,16 @@ namespace partial_update {
/**
* \brief Result codes of #BKE_image_partial_update_collect_changes.
*/
-typedef enum ePartialUpdateCollectResult {
+enum class ePartialUpdateCollectResult {
/** \brief Unable to construct partial updates. Caller should perform a full update. */
- PARTIAL_UPDATE_NEED_FULL_UPDATE,
+ FullUpdateNeeded,
/** \brief No changes detected since the last time requested. */
- PARTIAL_UPDATE_NO_CHANGES,
+ NoChangesDetected,
/** \brief Changes detected since the last time requested. */
- PARTIAL_UPDATE_CHANGES_AVAILABLE,
-} ePartialUpdateCollectResult;
+ PartialChangesDetected,
+};
/**
* \brief A region to update.
@@ -89,15 +89,14 @@ typedef enum ePartialUpdateIterResult {
*
* Invoke #BKE_image_partial_update_get_next_change to iterate over the collected tiles.
*
- * \returns PARTIAL_UPDATE_NEED_FULL_UPDATE: called should not use partial updates but
- * recalculate the full image. This result can be expected when called
- * for the first time for a user and when it isn't possible to reconstruct
- * the changes as the internal state doesn't have enough data stored.
- * PARTIAL_UPDATE_NO_CHANGES: The have been no changes detected since last
- * invoke for the same user.
- * PARTIAL_UPDATE_CHANGES_AVAILABLE: Parts of the image has been updated
- * since last invoke for the same user. The changes can be read by
- * using #BKE_image_partial_update_get_next_change.
+ * \returns ePartialUpdateCollectResult::FullUpdateNeeded: called should not use partial updates
+ * but recalculate the full image. This result can be expected when called for the first time for a
+ * user and when it isn't possible to reconstruct the changes as the internal state doesn't have
+ * enough data stored. ePartialUpdateCollectResult::NoChangesDetected: The have been no changes
+ * detected since last invoke for the same user.
+ * ePartialUpdateCollectResult::PartialChangesDetected: Parts of the image has been updated since
+ * last invoke for the same user. The changes can be read by using
+ * #BKE_image_partial_update_get_next_change.
*/
ePartialUpdateCollectResult BKE_image_partial_update_collect_changes(
struct Image *image, struct PartialUpdateUser *user);
@@ -183,7 +182,7 @@ template<typename TileData = NoTileData> struct PartialUpdateCollectResult {
ePartialUpdateIterResult get_next_change()
{
- BLI_assert(collect_result == PARTIAL_UPDATE_CHANGES_AVAILABLE);
+ BLI_assert(collect_result == ePartialUpdateCollectResult::PartialChangesDetected);
ePartialUpdateIterResult result = BKE_image_partial_update_get_next_change(user,
&changed_region);
switch (result) {
diff --git a/source/blender/blenkernel/intern/image_gpu.cc b/source/blender/blenkernel/intern/image_gpu.cc
index 62659138704..4b76bbd91b0 100644
--- a/source/blender/blenkernel/intern/image_gpu.cc
+++ b/source/blender/blenkernel/intern/image_gpu.cc
@@ -359,17 +359,17 @@ static void image_gpu_texture_try_partial_update(Image *image, ImageUser *iuser)
PartialUpdateChecker<ImageTileData> checker(image, iuser, image->runtime.partial_update_user);
PartialUpdateCollectResult<ImageTileData> changes = checker.collect_changes();
switch (changes.get_collect_result()) {
- case PARTIAL_UPDATE_NEED_FULL_UPDATE: {
+ case ePartialUpdateCollectResult::FullUpdateNeeded: {
image_free_gpu(image, true);
break;
}
- case PARTIAL_UPDATE_CHANGES_AVAILABLE: {
+ case ePartialUpdateCollectResult::PartialChangesDetected: {
image_gpu_texture_partial_update_changes_available(changes);
break;
}
- case PARTIAL_UPDATE_NO_CHANGES: {
+ case ePartialUpdateCollectResult::NoChangesDetected: {
/* GPUTextures are up to date. */
break;
}
diff --git a/source/blender/blenkernel/intern/image_partial_update.cc b/source/blender/blenkernel/intern/image_partial_update.cc
index c319f2988d9..f823c810f60 100644
--- a/source/blender/blenkernel/intern/image_partial_update.cc
+++ b/source/blender/blenkernel/intern/image_partial_update.cc
@@ -23,16 +23,16 @@
*
* switch (BKE_image_partial_update_collect_changes(image, image_buffer))
* {
- * case PARTIAL_UPDATE_NEED_FULL_UPDATE:
+ * case ePartialUpdateCollectResult::FullUpdateNeeded:
* // Unable to do partial updates. Perform a full update.
* break;
- * case PARTIAL_UPDATE_CHANGES_AVAILABLE:
+ * case ePartialUpdateCollectResult::PartialChangesDetected:
* PartialUpdateRegion change;
* while (BKE_image_partial_update_get_next_change(partial_update_user, &change) ==
* PARTIAL_UPDATE_ITER_CHANGE_AVAILABLE){
* // Do something with the change.
* }
- * case PARTIAL_UPDATE_NO_CHANGES:
+ * case ePartialUpdateCollectResult::NoChangesDetected:
* break;
* }
*
@@ -469,12 +469,12 @@ ePartialUpdateCollectResult BKE_image_partial_update_collect_changes(Image *imag
if (!partial_updater->can_construct(user_impl->last_changeset_id)) {
user_impl->last_changeset_id = partial_updater->last_changeset_id;
- return PARTIAL_UPDATE_NEED_FULL_UPDATE;
+ return ePartialUpdateCollectResult::FullUpdateNeeded;
}
/* Check if there are changes since last invocation for the user. */
if (user_impl->last_changeset_id == partial_updater->last_changeset_id) {
- return PARTIAL_UPDATE_NO_CHANGES;
+ return ePartialUpdateCollectResult::NoChangesDetected;
}
/* Collect changed tiles. */
@@ -509,7 +509,7 @@ ePartialUpdateCollectResult BKE_image_partial_update_collect_changes(Image *imag
}
user_impl->last_changeset_id = partial_updater->last_changeset_id;
- return PARTIAL_UPDATE_CHANGES_AVAILABLE;
+ return ePartialUpdateCollectResult::PartialChangesDetected;
}
ePartialUpdateIterResult BKE_image_partial_update_get_next_change(PartialUpdateUser *user,
diff --git a/source/blender/blenkernel/intern/image_partial_update_test.cc b/source/blender/blenkernel/intern/image_partial_update_test.cc
index 5f7abb41c9b..1c3a0abd94a 100644
--- a/source/blender/blenkernel/intern/image_partial_update_test.cc
+++ b/source/blender/blenkernel/intern/image_partial_update_test.cc
@@ -96,19 +96,19 @@ TEST_F(ImagePartialUpdateTest, mark_full_update)
ePartialUpdateCollectResult result;
/* First tile should always return a full update. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NEED_FULL_UPDATE);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::FullUpdateNeeded);
/* Second invoke should now detect no changes. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NO_CHANGES);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::NoChangesDetected);
/* Mark full update */
BKE_image_partial_update_mark_full_update(image);
/* Validate need full update followed by no changes. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NEED_FULL_UPDATE);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::FullUpdateNeeded);
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NO_CHANGES);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::NoChangesDetected);
}
TEST_F(ImagePartialUpdateTest, mark_single_tile)
@@ -116,10 +116,10 @@ TEST_F(ImagePartialUpdateTest, mark_single_tile)
ePartialUpdateCollectResult result;
/* First tile should always return a full update. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NEED_FULL_UPDATE);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::FullUpdateNeeded);
/* Second invoke should now detect no changes. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NO_CHANGES);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::NoChangesDetected);
/* Mark region. */
rcti region;
@@ -128,7 +128,7 @@ TEST_F(ImagePartialUpdateTest, mark_single_tile)
/* Partial Update should be available. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_CHANGES_AVAILABLE);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::PartialChangesDetected);
/* Check tiles. */
PartialUpdateRegion changed_region;
@@ -140,7 +140,7 @@ TEST_F(ImagePartialUpdateTest, mark_single_tile)
EXPECT_EQ(iter_result, PARTIAL_UPDATE_ITER_FINISHED);
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NO_CHANGES);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::NoChangesDetected);
}
TEST_F(ImagePartialUpdateTest, mark_unconnected_tiles)
@@ -148,10 +148,10 @@ TEST_F(ImagePartialUpdateTest, mark_unconnected_tiles)
ePartialUpdateCollectResult result;
/* First tile should always return a full update. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NEED_FULL_UPDATE);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::FullUpdateNeeded);
/* Second invoke should now detect no changes. */
result = BKE_image_partial_update_collect_changes(image, partial_update_user);
- EXPECT_EQ(result, PARTIAL_UPDATE_NO_CHANGES);
+ EXPECT_EQ(result, ePartialUpdateCollectResult::NoChangesDetected);
/* Mark region. */
rcti region_a;
@@ -163,7 +163,7 @@ TEST_F(ImagePartialUpdateTest, mark_unconnected_tiles)
/* Partial Update should be available. */
result = BKE_image_partial_up
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list