Commit graph

75 commits

Author SHA1 Message Date
06115a7a2d Vulkan compute: combine all minmax calls
This commit combines the minmax execution via Vulkan compute. The
previous implementation executed compute in vulkan_minmax with a new
command buffer each time. This implementation combines all required
executions of compute in vulkan_minmax in a single command buffer and
uses a pipeline to ensure the enqueued compute calls stay in order.
2024-04-03 18:22:13 +09:00
52e6a09abd Do "minmax" on Vulkan compute
Was an attempt to speed up blue-noise-generation with Vulkan compute,
but this implementation seems to slow it down instead.
2024-04-03 18:20:22 +09:00
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
ff36314092 Update README.md 2024-04-01 11:30:42 +09:00
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
f3d1ad425c Vulkan compute: Minor refactoring 2024-03-27 11:27:43 +09:00
7fb458dad5 Vulkan compute: Minor refactoring 2024-03-26 14:00:46 +09:00
5913b7669b Vulkan compute: Refactor pbp integer setting loop 2024-03-26 13:57:13 +09:00
d137dc44ff inline get_filter in vulkan compute impl. 2024-03-26 13:49:37 +09:00
045d3ef18d Use "invalidate", not "flush" for buffer read 2024-03-26 13:37:51 +09:00
3a97f14199 Use "cached", not "coherent" for staging buffers 2024-03-26 12:21:40 +09:00
2d47b7f892 Attempt to optimize vulkan compute 2024-03-25 16:53:42 +09:00
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
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
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
16f0e0e865 Define vulkan specific helper fns in header 2024-03-22 16:59:23 +09:00
03b3c90e9a Minor fix
Fix debug messenger initialization check.
2024-03-21 12:31:38 +09:00
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
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
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
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
d5d722022c CMakeLists.txt: Debug flag "-Og" instead of "-O0" 2024-03-20 16:20:13 +09:00
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
5cee471f1f WIP Vulkan compute: create buffers 2024-03-20 16:00:47 +09:00
7cca2bfbff WIP vulkan compute: create command pool 2024-03-20 14:29:48 +09:00
a7dc666082 Refactor: code where neither Vulkan/OpenCL is used 2024-03-20 14:29:03 +09:00
bc02b924e2 WIP vulkan compute: create compute pipeline, fixes
Fix Cleanup class.

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