Commit Graph

73 Commits

Author SHA1 Message Date
Stephen Seo ef7f623fb3 Optimize buffer writes in vulkan_get_filter calls
When only a single item in pbp buffer is changed, only update the single
item in the staging buffer and the device buffer prior to Vulkan compute
execution on buffers.
2024-04-03 17:55:37 +09:00
Stephen Seo ff36314092 Update README.md 2024-04-01 11:30:42 +09:00
Stephen Seo 2854aa5104 Make OpenCL default backend
Order of backends to use:
OpenCL -> Vulkan -> CPU threads

Unless I figure out a way to make Vulkan faster, OpenCL will be the
default backend used, or at least it will have higher priority than
Vulkan if both OpenCL and Vulkan is available.
2024-04-01 11:19:55 +09:00
Stephen Seo f3d1ad425c Vulkan compute: Minor refactoring 2024-03-27 11:27:43 +09:00
Stephen Seo 7fb458dad5 Vulkan compute: Minor refactoring 2024-03-26 14:00:46 +09:00
Stephen Seo 5913b7669b Vulkan compute: Refactor pbp integer setting loop 2024-03-26 13:57:13 +09:00
Stephen Seo d137dc44ff inline get_filter in vulkan compute impl. 2024-03-26 13:49:37 +09:00
Stephen Seo 045d3ef18d Use "invalidate", not "flush" for buffer read 2024-03-26 13:37:51 +09:00
Stephen Seo 3a97f14199 Use "cached", not "coherent" for staging buffers 2024-03-26 12:21:40 +09:00
Stephen Seo 2d47b7f892 Attempt to optimize vulkan compute 2024-03-25 16:53:42 +09:00
Stephen Seo 47ba03337b Impl. Vulkan compute
Tests indicate Vulkan compute runs 2x slower than OpenCL, so there
probably is room for optimization.
2024-03-25 13:27:06 +09:00
Stephen Seo d4661996d2 WIP Vulkan compute: descriptor set and command buf
Some more Vulkan initialization code to set up Vulkan compute.
2024-03-25 11:39:50 +09:00
Stephen Seo ea66a44238 QueueFamilyIndices struct: fn definitions in .cpp
Instead of defining struct functions in header file, only declare them
in the header file and define them in the source file.
2024-03-22 17:03:56 +09:00
Stephen Seo 16f0e0e865 Define vulkan specific helper fns in header 2024-03-22 16:59:23 +09:00
Stephen Seo 03b3c90e9a Minor fix
Fix debug messenger initialization check.
2024-03-21 12:31:38 +09:00
Stephen Seo 6ed76af210 Restructure vulkan init code
Vulkan init code was resturctured so that "temporary" structs (e.g.
vulkan "info create" structs) are discarded after they are used.
2024-03-21 12:07:46 +09:00
Stephen Seo 3b11564a4a Addendum note to previous commit
It was assumed in the previous commit's message that the shader data was
stored on the stack. In actuality, the usage of std::vector<char> uses
dynamically allocated memory, which means the data should be on the heap
not the stack.
2024-03-21 11:56:12 +09:00
Stephen Seo 020993fb19 Refactor: Move shader loading code to inner scope
This prevents the loaded shader data from persisting on the stack even
when it is no longer needed.
2024-03-20 19:25:22 +09:00
Stephen Seo d29d2434ab utility::Cleanup: Replace "Nop"
A default constructor suffices where "Nop" was used, so it was removed.
2024-03-20 19:18:37 +09:00
Stephen Seo d5d722022c CMakeLists.txt: Debug flag "-Og" instead of "-O0" 2024-03-20 16:20:13 +09:00
Stephen Seo 3b0a5ab7dd WIP Vulkan compute: Fix buffer data
"filter_size" integer must be odd. This is how it is defined for the
OpenCL implementation.
2024-03-20 16:12:23 +09:00
Stephen Seo 5cee471f1f WIP Vulkan compute: create buffers 2024-03-20 16:00:47 +09:00
Stephen Seo 7cca2bfbff WIP vulkan compute: create command pool 2024-03-20 14:29:48 +09:00
Stephen Seo a7dc666082 Refactor: code where neither Vulkan/OpenCL is used 2024-03-20 14:29:03 +09:00
Stephen Seo bc02b924e2 WIP vulkan compute: create compute pipeline, fixes
Fix Cleanup class.

Implement setting up compute pipeline.
2024-03-20 11:54:38 +09:00
Stephen Seo 8c1190d923 Refactor glslc usage 2024-03-20 11:11:22 +09:00
Stephen Seo bd5cfaebd3 Fix minor typo 2024-03-19 16:24:08 +09:00
Stephen Seo 6cefcc5f94 Compile glsl with glslc, fixes
Fix incorrectly set "bindings" for descriptors.

Fix blue_gen.glsl .

Program now attempts to compile blue_gen.glsl using "glslc".
2024-03-19 16:13:10 +09:00
Stephen Seo b73c6fb94b WIP Vulkan compute: compute descriptors, glsl 2024-03-19 14:58:35 +09:00
Stephen Seo a0de033d34 WIP Vulkan compute: initialize VkDevice 2024-03-08 13:48:42 +09:00
Stephen Seo 38f7248f49 Minor refactoring
Use `const std::array<...>` instead of `const std::vector<...>`.
2024-03-07 16:47:37 +09:00
Stephen Seo d0f14585b6 WIP vulkan compute: query physical devices 2024-03-07 12:13:32 +09:00
Stephen Seo aaa986b0eb Remove erronous Vulkan init. property
TODO: Vulkan compute
2024-03-06 17:56:30 +09:00
Stephen Seo c823f90c14 Update LICENSE year 2024-03-06 17:38:53 +09:00
Stephen Seo 4e4ee7f558 Begin work on Vulkan compute (WIP)
Some Vulkan initialization stuff WIP.
2024-03-06 17:04:08 +09:00
Stephen Seo 0da27b59be Fix CMakeLists.txt 2023-07-23 17:34:38 +09:00
Stephen Seo 834cae6ca5 Rename project/binary-name 2023-04-01 21:48:19 +09:00
Stephen Seo d60e9497ff Fix not using OpenCL header on disabled OpenCL 2023-03-31 19:04:25 +09:00
Stephen Seo 7041f732a9 Fixes/Refactorings to CMakeLists.txt 2023-03-31 18:55:36 +09:00
Stephen Seo ecd65fc42b clang-format --style=google 2023-03-31 18:47:33 +09:00
Stephen Seo 62d15771ad Make usage of OpenCL conditional (configuring) 2023-03-31 18:46:10 +09:00
Stephen Seo 2f768f43bd Add check for OpenCL kernel file 2023-03-31 15:00:27 +09:00
Stephen Seo 22f085cdcf Update LICENSE year 2023-03-31 14:56:40 +09:00
stephenseo b40894f9d3 Update 'src/blue_noise.cl'
Fix `twoToOne(...)` having variables with no types.
2023-03-31 05:54:47 +00:00
stephenseo 16ed743197 Update 'README.md' 2021-12-10 06:39:37 +00:00
Stephen Seo 19e3cc6041 Fix typo in README.md 2021-11-11 17:44:06 +09:00
Stephen Seo ff3b69cc6a Add README.md 2021-11-11 17:43:27 +09:00
Stephen Seo afa27fc555 Round values when creating image from rankings 2021-11-11 15:36:05 +09:00
Stephen Seo c9ec105664 Impl arg-parsing for generic use of blue-noise gen 2021-11-10 20:04:08 +09:00
Stephen Seo 2357fd9c05 Fix blue-noise when not using OpenCL 2021-11-10 19:21:33 +09:00