]> git.seodisparate.com - blue_noise_generation/commitdiff
WIP Vulkan compute: Fix buffer data
authorStephen Seo <seo.disparate@gmail.com>
Wed, 20 Mar 2024 07:12:23 +0000 (16:12 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 20 Mar 2024 07:12:23 +0000 (16:12 +0900)
"filter_size" integer must be odd. This is how it is defined for the
OpenCL implementation.

src/blue_noise.cpp

index 4de76d804e36a33a92b83d610a0f7fb9d97081e2..2e1292e552feb7b62e4bd2323a6447f18f47968d 100644 (file)
@@ -676,8 +676,14 @@ image::Bl dither::blue_noise(int width, int height, int threads,
       vkMapMemory(device, staging_buffer_mem, 0, other_size, 0, &data_ptr);
       std::memcpy(data_ptr, &width, sizeof(int));
       std::memcpy(((char *)data_ptr) + sizeof(int), &height, sizeof(int));
-      std::memcpy(((char *)data_ptr) + sizeof(int) * 2, &filter_size,
-                  sizeof(int));
+      if (filter_size % 2 == 0) {
+        int filter_size_odd = filter_size + 1;
+        std::memcpy(((char *)data_ptr) + sizeof(int) * 2, &filter_size_odd,
+                    sizeof(int));
+      } else {
+        std::memcpy(((char *)data_ptr) + sizeof(int) * 2, &filter_size,
+                    sizeof(int));
+      }
       vkUnmapMemory(device, staging_buffer_mem);
 
       if (!vulkan_create_buffer(device, phys_device, other_size,