Vulkan: Initial Graphics Pipeline #106224

Merged
Jeroen Bakker merged 104 commits from Jeroen-Bakker/blender:vulkan-offscreen-rendering into main 2023-05-11 13:02:03 +02:00

104 Commits

Author SHA1 Message Date
Jeroen Bakker a88b8e4ed6 Merge branch 'main' into vulkan-offscreen-rendering 2023-05-11 12:51:39 +02:00
Jeroen Bakker 3eef3532e2 Remove comment 2023-05-11 12:44:05 +02:00
Jeroen Bakker 206249039e Remove unused VKDescriptorSet::unbind 2023-05-11 12:39:38 +02:00
Jeroen Bakker b4d17737ac Remove irrelevant comment 2023-05-11 12:38:21 +02:00
Jeroen Bakker 732990795e Fix running test cases. 2023-05-11 12:35:12 +02:00
Jeroen Bakker 46d5b365b7 Merge branch 'main' into vulkan-offscreen-rendering 2023-05-11 12:30:40 +02:00
Jeroen Bakker fcec2c9d11 Added comment why early exit is needed 2023-05-11 10:13:15 +02:00
Jeroen Bakker 772672ea9f Merged vk_buffer_types with vk_buffer 2023-05-11 10:12:58 +02:00
Jeroen Bakker e45014d142 Use more descriptive parameter names 2023-05-11 09:59:39 +02:00
Jeroen Bakker 82e2270e07 Removed VKTexture::unbind 2023-05-11 09:57:05 +02:00
Jeroen Bakker d1e7a2d0fb Remove testcases that don't perform tests 2023-05-11 09:05:05 +02:00
Jeroen Bakker 4679af9a84 Revert debug capturing 2023-05-11 09:00:42 +02:00
Jeroen Bakker 3fc7d631af Merge branch 'main' into vulkan-offscreen-rendering 2023-05-11 08:58:19 +02:00
Jeroen Bakker e6fcca9547 Merge branch 'main' into vulkan-offscreen-rendering 2023-05-08 09:48:52 +02:00
Jeroen Bakker 1cd7d97e0e Reimplemented the swap chain to support blender main loop. 2023-05-05 14:54:07 +02:00
Jeroen Bakker d3aebe0836 Merge branch 'main' into vulkan-offscreen-rendering 2023-05-05 14:04:14 +02:00
Jeroen Bakker 5fbff71cdb Fix incorrect allocation streaming buffers. 2023-05-05 12:35:54 +02:00
Jeroen Bakker f12796eea3 Use late binding for image/texture/uniform buffers 2023-05-05 12:12:59 +02:00
Jeroen Bakker a40c2084dd Fix correct uniform buffer names. 2023-05-05 10:29:11 +02:00
Jeroen Bakker 7c53d5eab0 Always allocate buffer with at least 1 byte. 2023-05-05 10:28:09 +02:00
Jeroen Bakker f6fbe55733 Fix crash when during quit 2023-05-05 08:37:22 +02:00
Jeroen Bakker 2efc57cc2b Add vertex attribute conversion for immediate mode 2023-05-05 08:37:03 +02:00
Jeroen Bakker 472bc491a3 Vertex buffer conversions 2023-05-04 16:00:18 +02:00
Jeroen Bakker 3f4f51b1cc Merge branch 'main' into vulkan-offscreen-rendering 2023-05-04 10:24:53 +02:00
Jeroen Bakker 9ea63dac6b Merge branch 'main' into vulkan-offscreen-rendering 2023-05-04 10:21:51 +02:00
Jeroen Bakker dcf53b002d Merge branch 'main' into vulkan-offscreen-rendering 2023-05-04 08:02:04 +02:00
Jeroen Bakker 65018d29ad Revert unwanted change. 2023-05-02 15:28:03 +02:00
Jeroen Bakker d7b5312b49 Cleanup: remove compilation warnings. 2023-05-02 14:57:09 +02:00
Jeroen Bakker eee63f5eb8 Vulkan: Fix drawing to incorrect framebuffers. 2023-05-02 14:43:10 +02:00
Jeroen Bakker 4be885e3ad Merge branch 'main' into vulkan-offscreen-rendering 2023-05-02 13:47:58 +02:00
Jeroen Bakker d4bd0a3b7f Vulkan: Specific texture support. 2023-05-02 13:42:58 +02:00
Jeroen Bakker 4b8c6b0ad5 Enable VMA assert macros 2023-05-01 14:45:53 +02:00
Jeroen Bakker 991c0772db Updated license header with correct year. 2023-05-01 14:32:49 +02:00
Jeroen Bakker 112a662f9c Use a shared device for all contexes 2023-05-01 14:25:14 +02:00
Jeroen Bakker e0675f8047 Merge branch 'main' into vulkan-offscreen-rendering 2023-05-01 10:29:41 +02:00
Jeroen Bakker 2fd034585f Tweaks 2023-04-26 15:06:56 +02:00
Jeroen Bakker 351f4fac2b Use single texture when using immDrawPixels 2023-04-26 10:32:33 +02:00
Jeroen Bakker 25f026dd03 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-26 09:29:15 +02:00
Jeroen Bakker 72e7b3bdcb Enable highlight drawing 2023-04-26 09:22:57 +02:00
Jeroen Bakker fb86c59735 Remove debug code 2023-04-26 08:26:24 +02:00
Jeroen Bakker 11be78d430 Remove VAO cache 2023-04-26 08:21:40 +02:00
Jeroen Bakker 1cc11ad9f6 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-26 08:13:57 +02:00
Jeroen Bakker ec91803abe Remove debug code. 2023-04-25 14:24:01 +02:00
Jeroen Bakker ef1bde3fb3 Make compute/graphics pipeline more consistent. 2023-04-25 14:13:14 +02:00
Jeroen Bakker b66ef004d4 Remove debug code 2023-04-25 13:48:04 +02:00
Jeroen Bakker 01bbfafeaf Allocate correct space for vertex buffers. 2023-04-25 13:31:49 +02:00
Jeroen Bakker 65f114e4aa Do flipping on the onscreen framebuffer. 2023-04-25 12:57:06 +02:00
Jeroen Bakker 7645737113 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-25 12:09:17 +02:00
Jeroen Bakker 33102c4303 Fix incorrect uploading of tightly packed arrays. 2023-04-25 12:02:41 +02:00
Jeroen Bakker 2099c92e49 Add instance based drawing 2023-04-25 11:16:18 +02:00
Jeroen Bakker 22d582cf2d Fix blending issue 2023-04-25 10:07:11 +02:00
Jeroen Bakker d74acb8476 Flip viewport 2023-04-25 09:44:43 +02:00
Jeroen Bakker e9f4eadbde Merge branch 'main' into vulkan-offscreen-rendering 2023-04-24 15:38:18 +02:00
Jeroen Bakker 258a612a9d Don't clear framebuffer during binding. 2023-04-24 14:59:30 +02:00
Jeroen Bakker b518006420 Framebuffer->blit_to 2023-04-24 13:41:00 +02:00
Jeroen Bakker f1df6adcfc Add support for GPU_texture_unpack_row_length 2023-04-24 10:42:51 +02:00
Jeroen Bakker 6428416840 Added more debug names 2023-04-21 15:44:33 +02:00
Jeroen Bakker 5d19d1e8d5 Instance buffers have more priority than vertex buffers. 2023-04-21 14:32:00 +02:00
Jeroen Bakker 35243e1d7c Merge branch 'main' into vulkan-offscreen-rendering 2023-04-21 12:50:06 +02:00
Jeroen Bakker a6094d8bdd Load previous state of framebuffer. 2023-04-21 12:23:17 +02:00
Jeroen Bakker dad516c975 First pixels (with custom startup.blend) 2023-04-21 10:10:00 +02:00
Jeroen Bakker 23bfac540d Merge branch 'main' into vulkan-offscreen-rendering 2023-04-21 08:08:30 +02:00
Jeroen Bakker e988dcb451 Change texture layout when binding texture to shader. 2023-04-20 16:34:52 +02:00
Jeroen Bakker af621532d7 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-20 15:53:29 +02:00
Jeroen Bakker 03ec6235d2 Use dummy sampler. 2023-04-20 15:53:00 +02:00
Jeroen Bakker 68becab5db Binding uniform buffers. 2023-04-20 12:56:23 +02:00
Jeroen Bakker 0199793ea0 Geometry shaders. 2023-04-20 12:08:55 +02:00
Jeroen Bakker 6a66412833 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-20 08:11:32 +02:00
Jeroen Bakker 33b9ae39fd Commit beforr signing of for today. 2023-04-18 15:51:04 +02:00
Jeroen Bakker 3b631a6cab Updated create and switching framebuffers.
GPU module should always have an active framebuffer by design.
2023-04-18 10:14:52 +02:00
Jeroen Bakker e44b818c0c Merge branch 'main' into vulkan-offscreen-rendering 2023-04-18 08:26:01 +02:00
Jeroen Bakker c809c292c1 Don't record clear command when framebuffer cannot be cleared. 2023-04-17 16:13:49 +02:00
Jeroen Bakker 3d4d25033f Small tweaks to Blender GL initialization. 2023-04-17 16:13:19 +02:00
Jeroen Bakker bfdee523a6 Add support for large immediate buffers. 2023-04-17 15:25:03 +02:00
Jeroen Bakker d15cb1e7ef Fill previous immediate buffer. 2023-04-17 14:15:33 +02:00
Jeroen Bakker 2549b67280 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-17 08:52:29 +02:00
Jeroen Bakker b1ae7316fc Merge branch 'vulkan-immediate' into vulkan-offscreen-rendering 2023-04-17 08:45:01 +02:00
Jeroen Bakker c5e4e76008 Vulkan: Immediate mode emulation. 2023-04-14 15:48:04 +02:00
Jeroen Bakker 8fe177425e Added test case for immediate mode drawing. 2023-04-14 11:43:09 +02:00
Jeroen Bakker 25873c4963 Fix state issue 2023-04-14 09:05:38 +02:00
Jeroen Bakker 6c407c94f4 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-14 08:23:24 +02:00
Jeroen Bakker a32ee85b51 Added all non-custom blending test cases. 2023-04-13 16:14:54 +02:00
Jeroen Bakker d295aff40a Merge branch 'gpu-offscreen-texture-usage' into vulkan-offscreen-rendering 2023-04-13 15:43:45 +02:00
Jeroen Bakker a01991b538 Remove unneeded file. 2023-04-13 15:42:24 +02:00
Jeroen Bakker 36578ac4ee Automatic add GPU_TEXTURE_USAGE_ATTACHMENT. 2023-04-13 15:40:21 +02:00
Jeroen Bakker a5f7d44115 Track framebuffer state in command buffer. 2023-04-13 15:35:07 +02:00
Jeroen Bakker 9e83be5c40 Merge branch 'gpu-offscreen-texture-usage' into vulkan-offscreen-rendering 2023-04-13 13:44:18 +02:00
Jeroen Bakker 29cc37cf22 GPU: Add texture usage parameter to GPUOffscreen.
Currently the Textures used for offscreen rendering don't have
the `GPU_TEXTURE_USAGE_HOST_READ` flag. But some cases it is
needed. This PR adds a parameter when creating an offscreen
buffer.

Other solution could be to add this flag to all textures, but
we chose not to do this as that reduces the amount of fine-tuning
options for Metal/Vulkan backends. GPU can store textures
differently based on its actual usage.

This option isn't available in the python API as we don't expect
add-on developers to fine-tune texture usages to this extent.
2023-04-13 12:33:50 +02:00
Jeroen Bakker c9a1be0fc9 Temp commit as changes to GPU api are needed to proceed. 2023-04-13 12:24:18 +02:00
Jeroen Bakker 8b8fb15430 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-13 10:52:22 +02:00
Jeroen Bakker 560ba241fe Fix overbind vbos. 2023-04-07 15:01:36 +02:00
Jeroen Bakker 21b49096d6 Fix issues with vertex attribute objects. 2023-04-07 14:14:02 +02:00
Jeroen Bakker 812217fb67 Remove unneeded changes. 2023-04-07 12:51:21 +02:00
Jeroen Bakker 3100807739 Revert unneeded change. 2023-04-07 12:14:34 +02:00
Jeroen Bakker f00e82d5dc Migrated to pipeline specific state manager. 2023-04-07 12:09:53 +02:00
Jeroen Bakker 1e0b6a4707 Use correct primitive topology 2023-04-07 09:04:26 +02:00
Jeroen Bakker 85ffcfb04f Fix push constants and use VAO in pipeline 2023-04-07 08:22:36 +02:00
Jeroen Bakker 12e9e90b6c Vertex buffer binding. 2023-04-06 16:21:39 +02:00
Jeroen Bakker e3e3037a4d Merge branch 'main' into vulkan-offscreen-rendering 2023-04-06 08:46:22 +02:00
Jeroen Bakker 2fe23a2f03 Merge branch 'main' into vulkan-offscreen-rendering 2023-04-04 14:13:15 +02:00
Jeroen Bakker 44aae51d41 Merge branch 'main' into vulkan-offscreen-rendering 2023-03-29 08:07:40 +02:00
Jeroen Bakker 2b4988b18d Hardcoded graphics pipeline. 2023-03-28 16:01:04 +02:00
Jeroen Bakker 075790d69f Merge branch 'main' into vulkan-offscreen-rendering 2023-03-28 11:57:31 +02:00
Jeroen Bakker b0563f520e Added test for offscreen rendering.
It doesn't validate anything yet, it should (for now) be used
with renderdoc.
2023-03-28 11:49:52 +02:00