[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