]> git.tdb.fi Git - libs/gl.git/log
6 months agoFix a copy-paste error master
Mikko Rasa [Sat, 19 Mar 2022 07:54:49 +0000 (09:54 +0200)]
Fix a copy-paste error

6 months agoAdd files which were forgotten earlier
Mikko Rasa [Fri, 18 Mar 2022 22:57:03 +0000 (00:57 +0200)]
Add files which were forgotten earlier

These should have been in 370eb9e.

6 months agoBegin creating a new demo program
Mikko Rasa [Fri, 18 Mar 2022 22:49:32 +0000 (00:49 +0200)]
Begin creating a new demo program

6 months agoMostly cosmetic changes
Mikko Rasa [Thu, 17 Mar 2022 20:12:20 +0000 (22:12 +0200)]
Mostly cosmetic changes

6 months agoMake it possible to export instance arrays from Blender
Mikko Rasa [Thu, 17 Mar 2022 20:08:13 +0000 (22:08 +0200)]
Make it possible to export instance arrays from Blender

6 months agoAdd a loader to InstanceArray and make them loadable in scenes
Mikko Rasa [Thu, 17 Mar 2022 20:06:10 +0000 (22:06 +0200)]
Add a loader to InstanceArray and make them loadable in scenes

6 months agoAdd instancing support to standard shaders and RenderMethod
Mikko Rasa [Thu, 17 Mar 2022 20:04:52 +0000 (22:04 +0200)]
Add instancing support to standard shaders and RenderMethod

6 months agoCall set_matrix from ObjectInstance's transform loader
Mikko Rasa [Thu, 17 Mar 2022 20:00:58 +0000 (22:00 +0200)]
Call set_matrix from ObjectInstance's transform loader

6 months agoFix instance attribute description updates in VertexSetup on Vulkan
Mikko Rasa [Thu, 17 Mar 2022 19:57:09 +0000 (21:57 +0200)]
Fix instance attribute description updates in VertexSetup on Vulkan

It was ignoring padding attributes when calculating which index to use
for the first instance attribute, resulting in a bogus description.

6 months agoSort shader program input attributes by name
Mikko Rasa [Thu, 17 Mar 2022 19:56:40 +0000 (21:56 +0200)]
Sort shader program input attributes by name

The lookup requires this.  It seems to have gotten broken in 2576b61, but
since the only user is InstanceArray, it wasn't noticed until now.

6 months agoRedesign InstanceArray
Mikko Rasa [Thu, 17 Mar 2022 19:55:18 +0000 (21:55 +0200)]
Redesign InstanceArray

It now stores the instances contiguously in memory instead of allocating
them individually.  Consequently only one type of instance is allowed in
any particular array.

6 months agoRebind all descriptor sets if push constant layout changes
Mikko Rasa [Thu, 17 Mar 2022 19:47:01 +0000 (21:47 +0200)]
Rebind all descriptor sets if push constant layout changes

6 months agoFurther refactoring of instance handling in the Blender exporter
Mikko Rasa [Thu, 17 Mar 2022 10:17:48 +0000 (12:17 +0200)]
Further refactoring of instance handling in the Blender exporter

6 months agoMove the utility functions in export_material into MaterialExporter
Mikko Rasa [Thu, 17 Mar 2022 09:06:47 +0000 (11:06 +0200)]
Move the utility functions in export_material into MaterialExporter

6 months agoRemove support for material atlases from the Blender exporter
Mikko Rasa [Thu, 17 Mar 2022 08:46:50 +0000 (10:46 +0200)]
Remove support for material atlases from the Blender exporter

Support for PBR materials was never added and it's unknown if it even
works anymore.  Baking and vertex colors are better solutions.

6 months agoSet debug names for pipeline and descriptor set layouts on Vulkan
Mikko Rasa [Wed, 16 Mar 2022 16:28:27 +0000 (18:28 +0200)]
Set debug names for pipeline and descriptor set layouts on Vulkan

6 months agoAdd a missing function import
Mikko Rasa [Wed, 16 Mar 2022 16:27:38 +0000 (18:27 +0200)]
Add a missing function import

6 months agoDon't try to draw world properties if there's no world
Mikko Rasa [Wed, 16 Mar 2022 16:27:23 +0000 (18:27 +0200)]
Don't try to draw world properties if there's no world

6 months agoExport instances created through geometry nodes
Mikko Rasa [Wed, 16 Mar 2022 16:26:47 +0000 (18:26 +0200)]
Export instances created through geometry nodes

6 months agoRefactor object prototype discovery in the blender exporter
Mikko Rasa [Wed, 16 Mar 2022 16:26:12 +0000 (18:26 +0200)]
Refactor object prototype discovery in the blender exporter

6 months agoFix handling of descriptor set bindings when shader stages change
Mikko Rasa [Wed, 16 Mar 2022 15:56:30 +0000 (17:56 +0200)]
Fix handling of descriptor set bindings when shader stages change

Also set only the present stages for descriptor set layouts.

6 months agoFix binding of descriptor sets of the new pipeline has more than the last
Mikko Rasa [Wed, 16 Mar 2022 15:54:05 +0000 (17:54 +0200)]
Fix binding of descriptor sets of the new pipeline has more than the last

6 months agoInitialize pipeline handle
Mikko Rasa [Wed, 16 Mar 2022 11:34:37 +0000 (13:34 +0200)]
Initialize pipeline handle

6 months agoSkip binding of low-numbered descriptor sets if they haven't changed
Mikko Rasa [Wed, 16 Mar 2022 11:29:09 +0000 (13:29 +0200)]
Skip binding of low-numbered descriptor sets if they haven't changed

6 months agoAnnotate uniforms with descriptor set layout qualifiers
Mikko Rasa [Wed, 16 Mar 2022 11:27:47 +0000 (13:27 +0200)]
Annotate uniforms with descriptor set layout qualifiers

Higher numbered sets are used for data which is expected to change
more often.

6 months agoMask out the descriptor set part of bind point when creating layouts
Mikko Rasa [Wed, 16 Mar 2022 11:20:59 +0000 (13:20 +0200)]
Mask out the descriptor set part of bind point when creating layouts

6 months agoRemove set layout qualifiers on OpenGL
Mikko Rasa [Wed, 16 Mar 2022 11:17:25 +0000 (13:17 +0200)]
Remove set layout qualifiers on OpenGL

But only if a binding qualifier is not present.  This allows using
multiple descriptor sets on Vulkan without breaking OpenGL.

6 months agoReplace some local pointers with references in VulkanCommands
Mikko Rasa [Wed, 16 Mar 2022 09:28:11 +0000 (11:28 +0200)]
Replace some local pointers with references in VulkanCommands

6 months agoOnly mark Result as checked if that specific value was checked
Mikko Rasa [Wed, 16 Mar 2022 09:23:31 +0000 (11:23 +0200)]
Only mark Result as checked if that specific value was checked

6 months agoRewrite descriptor set management
Mikko Rasa [Wed, 16 Mar 2022 08:44:06 +0000 (10:44 +0200)]
Rewrite descriptor set management

Descriptor sets have been moved from PipelineCache to a dedicated class.
PipelineState refers to descriptor sets using slot indices, allowing the
descriptor pool to be recreated if more space is needed.

Dynamic uniform buffers are no longer used.  Instead multiple copies of
the descriptor set are created if it contains dynamic uniform blocks.

6 months agoMake use of the sorted nature of PipelineState resource arrays
Mikko Rasa [Tue, 15 Mar 2022 19:25:18 +0000 (21:25 +0200)]
Make use of the sorted nature of PipelineState resource arrays

Since descriptor set is in the high bits, lower_bound can be used to
find its first resource and then go through elements until the next set
is reached.

6 months agoSome tweaks to vector component handling
Mikko Rasa [Mon, 14 Mar 2022 07:16:52 +0000 (09:16 +0200)]
Some tweaks to vector component handling

6 months agoUse default member initializers for ZSortedScene::SortedRenderable
Mikko Rasa [Mon, 14 Mar 2022 07:13:37 +0000 (09:13 +0200)]
Use default member initializers for ZSortedScene::SortedRenderable

6 months agoUse a per-camera cache in ZSortedScene
Mikko Rasa [Mon, 14 Mar 2022 07:10:12 +0000 (09:10 +0200)]
Use a per-camera cache in ZSortedScene

It's very common to have multiple cameras in a scene due to effects like
shadow and environment maps.  Using a single cache for all of them is
detrimental since the order will be different for each.

6 months agoUse is_ortographic in Camera instead of checking fov directly
Mikko Rasa [Mon, 14 Mar 2022 07:07:49 +0000 (09:07 +0200)]
Use is_ortographic in Camera instead of checking fov directly

6 months agoAdapt to changes in mspmath
Mikko Rasa [Mon, 14 Mar 2022 07:07:09 +0000 (09:07 +0200)]
Adapt to changes in mspmath

6 months agoMove frustum culling from Scene to Camera
Mikko Rasa [Sun, 13 Mar 2022 09:42:53 +0000 (11:42 +0200)]
Move frustum culling from Scene to Camera

Also refactor it so that the camera's object matrix is accounted for
when computing the frustum planes.

6 months agoMake it possible to disable Vulkan validation
Mikko Rasa [Sun, 13 Mar 2022 08:02:06 +0000 (10:02 +0200)]
Make it possible to disable Vulkan validation

This can be useful when profiling an optimized debug build.

6 months agoUse persistent tags for the model matrix uniforms in Renderer
Mikko Rasa [Sun, 13 Mar 2022 08:00:56 +0000 (10:00 +0200)]
Use persistent tags for the model matrix uniforms in Renderer

Re-hashing the names every time takes enough time to show up in a

6 months agoTreat standard and camera shader data specially in Renderer
Mikko Rasa [Sun, 13 Mar 2022 07:34:18 +0000 (09:34 +0200)]
Treat standard and camera shader data specially in Renderer

Don't add them to the generic shdata stack.  Some effects apply their own
camera, which led to two overlapping ProgramData objects on the stack.
Although the results were correct, this caused PipelineState to flag the
uniform blocks as dirty every frame and do unnecessary work.

6 months agoSet debug names for shader modules on Vulkan
Mikko Rasa [Fri, 11 Mar 2022 22:31:27 +0000 (00:31 +0200)]
Set debug names for shader modules on Vulkan

6 months agoRemove unused stages from shader programs
Mikko Rasa [Fri, 11 Mar 2022 22:11:49 +0000 (00:11 +0200)]
Remove unused stages from shader programs

A stage is deemed unused if it has no main function after optimization,
or if a SPIR-V entry point's interface variables all become unused during

6 months agoFlip normal if a surface faces away from the camera
Mikko Rasa [Fri, 11 Mar 2022 21:48:17 +0000 (23:48 +0200)]
Flip normal if a surface faces away from the camera

This gives correct two-sided lighting for non-closed meshes, which may
be used for tree leaves and such.

6 months agoUse mesh as the task object when exporting it
Mikko Rasa [Fri, 11 Mar 2022 21:43:54 +0000 (23:43 +0200)]
Use mesh as the task object when exporting it

6 months agoUse R8 format when extracting a single channel from an image
Mikko Rasa [Fri, 11 Mar 2022 21:42:57 +0000 (23:42 +0200)]
Use R8 format when extracting a single channel from an image

6 months agoRefactor face cull settings in Blender
Mikko Rasa [Fri, 11 Mar 2022 21:37:05 +0000 (23:37 +0200)]
Refactor face cull settings in Blender

Meshes no longer have a winding test toggle.  Instead mesh winding is
always set and material's backface culling flag is exported.  The default
in RenderMethod has been changed to NO_CULL.

6 months agoChange front face logic on Vulkan to match the OpenGL backend
Mikko Rasa [Fri, 11 Mar 2022 12:53:32 +0000 (14:53 +0200)]
Change front face logic on Vulkan to match the OpenGL backend

Front face is always set, not only when face cull is enabled.  Since we
pretend that NDC has the same orientation as on OpenGL, face winding gets

This will probably produce incorrect results if anything rendering to a
swapchain image relies on winding.

6 months agoDetect and export alpha cutoff in Blender
Mikko Rasa [Fri, 11 Mar 2022 10:14:55 +0000 (12:14 +0200)]
Detect and export alpha cutoff in Blender

6 months agoFix the recognition of additive blending in the Blender exporter
Mikko Rasa [Fri, 11 Mar 2022 10:13:53 +0000 (12:13 +0200)]
Fix the recognition of additive blending in the Blender exporter

6 months agoImplement alpha cutoff for materials
Mikko Rasa [Fri, 11 Mar 2022 09:55:49 +0000 (11:55 +0200)]
Implement alpha cutoff for materials

Having to implement it separately in each material's shader is not
optimal, but since they each define their own uniform block, no better
solution is readily apparent.

The occluder shader also supports alpha cutoff so that objects with
such materials can cast proper shadows.

6 months agoEnable shadow map for the blended method when exporting
Mikko Rasa [Fri, 11 Mar 2022 09:25:46 +0000 (11:25 +0200)]
Enable shadow map for the blended method when exporting

Blended objects may want to receive shadows even though they can't
cast them.

6 months agoSupport specifying enabled methods in effect templates
Mikko Rasa [Fri, 11 Mar 2022 09:24:39 +0000 (11:24 +0200)]
Support specifying enabled methods in effect templates

6 months agoCreate specialized versions of SPIR-V modules with default spec values
Mikko Rasa [Fri, 11 Mar 2022 09:22:23 +0000 (11:22 +0200)]
Create specialized versions of SPIR-V modules with default spec values

It's important to remove unused resources in this case too.

6 months agoTake care of SPIR-V load IDs in ternary expressions
Mikko Rasa [Thu, 10 Mar 2022 06:54:56 +0000 (08:54 +0200)]
Take care of SPIR-V load IDs in ternary expressions

6 months agoNormalize vertex normal and tangent vectors in vertex shader
Mikko Rasa [Wed, 9 Mar 2022 18:31:03 +0000 (20:31 +0200)]
Normalize vertex normal and tangent vectors in vertex shader

If the normal matrix has scaling, that can throw things off.

6 months agoAvoid allocating buffers and images too close together
Mikko Rasa [Tue, 8 Mar 2022 14:00:22 +0000 (16:00 +0200)]
Avoid allocating buffers and images too close together

Vulkan requires that both types of resources do not reside on the same
"page" in memory.

6 months agoMinor tweaks to MemoryAllocator
Mikko Rasa [Tue, 8 Mar 2022 13:58:57 +0000 (15:58 +0200)]
Minor tweaks to MemoryAllocator

6 months agoAdd a function to request debug information from MemoryAllocator
Mikko Rasa [Tue, 8 Mar 2022 13:31:15 +0000 (15:31 +0200)]
Add a function to request debug information from MemoryAllocator

6 months agoHandle certain shader graph patterns that occur in imported glTF files
Mikko Rasa [Sun, 6 Mar 2022 11:21:28 +0000 (13:21 +0200)]
Handle certain shader graph patterns that occur in imported glTF files

6 months agoRemove unnecessary import statements from the Blender exporter
Mikko Rasa [Sun, 6 Mar 2022 10:37:35 +0000 (12:37 +0200)]
Remove unnecessary import statements from the Blender exporter

6 months agoUse bpy.path.basename instead of a custom function
Mikko Rasa [Sun, 6 Mar 2022 10:32:49 +0000 (12:32 +0200)]
Use bpy.path.basename instead of a custom function

6 months agoChange some leftover .tex2d extensions in the exporter
Mikko Rasa [Sun, 6 Mar 2022 10:30:58 +0000 (12:30 +0200)]
Change some leftover .tex2d extensions in the exporter

6 months agoHandle arbitrary channel inversions in material inputs.
Mikko Rasa [Sat, 5 Mar 2022 17:56:34 +0000 (19:56 +0200)]
Handle arbitrary channel inversions in material inputs.

6 months agoRefactor the material node processing code
Mikko Rasa [Sat, 5 Mar 2022 17:48:51 +0000 (19:48 +0200)]
Refactor the material node processing code

6 months agoDon't check group in get_unlit_inputs
Mikko Rasa [Sat, 5 Mar 2022 17:45:21 +0000 (19:45 +0200)]
Don't check group in get_unlit_inputs

It's fundamentally different from the other functions and wouldn't work
properly with a group.

6 months agoMake texture channel handling in the Blender exporter more flexible
Mikko Rasa [Sat, 5 Mar 2022 09:00:58 +0000 (11:00 +0200)]
Make texture channel handling in the Blender exporter more flexible

Any channel can now be inverted (though the shader graph inspection does
not detect this yet), so a separate invert_green channel is no longer

6 months agoFixes for exporting objects consisting only of lines
Mikko Rasa [Sat, 5 Mar 2022 08:55:47 +0000 (10:55 +0200)]
Fixes for exporting objects consisting only of lines

6 months agoRedesign progress and error reporting in the Blender exporter
Mikko Rasa [Sat, 5 Mar 2022 08:50:04 +0000 (10:50 +0200)]
Redesign progress and error reporting in the Blender exporter

Progress is now tracked in a context object, which also holds the Blender
context.  Tasks are represented by independent objects instead of a stack

The context/task objects also track which data object that task is about,
so the object path can be reported in errors.

7 months agoFix incorrect vertex array indexing in InstanceArray
Mikko Rasa [Tue, 1 Mar 2022 10:52:02 +0000 (12:52 +0200)]
Fix incorrect vertex array indexing in InstanceArray

7 months agoMove ProgramData to materials
Mikko Rasa [Mon, 28 Feb 2022 09:56:33 +0000 (11:56 +0200)]
Move ProgramData to materials

It has more users in materials and in render, and also materials is a
lower layer, so it makes more sense for it to be here.

8 months agoSimplify Program by removing transient data
Mikko Rasa [Sat, 29 Jan 2022 12:09:01 +0000 (14:09 +0200)]
Simplify Program by removing transient data

After some earlier refactorings it was only used on one code path, so
those variables are now directly declared where they're needed.

8 months agoAlign staging memory with an alignment suitable for image transfers
Mikko Rasa [Tue, 25 Jan 2022 18:14:17 +0000 (20:14 +0200)]
Align staging memory with an alignment suitable for image transfers

The source data needs to be aligned at a multiple of the texel size.  48
bytes is divisible by almost all possible pixel sizes.

8 months agoUse a dummy transmittance lookup texture to render the lookup in Sky
Mikko Rasa [Tue, 25 Jan 2022 17:56:39 +0000 (19:56 +0200)]
Use a dummy transmittance lookup texture to render the lookup in Sky

Ideally the compiler should optimize the shader so the texture isn't
used, but that'll take some extra effort to implement.

8 months agoOverhaul the Vulkan backend's memory allocator
Mikko Rasa [Tue, 25 Jan 2022 17:42:35 +0000 (19:42 +0200)]
Overhaul the Vulkan backend's memory allocator

It now sub-allocates from larger chunks of memory to avoid hitting
Vulkan's allocation count limit.

8 months agoRefactor Vulkan memory mapping functions
Mikko Rasa [Tue, 25 Jan 2022 17:16:57 +0000 (19:16 +0200)]
Refactor Vulkan memory mapping functions

An allocation is now always mapped in its entirety.  Unmapping is done
by ID instead of mapped address.

8 months agoRefactor allocation index and ID handling in the Vulkan backend
Mikko Rasa [Tue, 25 Jan 2022 16:56:16 +0000 (18:56 +0200)]
Refactor allocation index and ID handling in the Vulkan backend

MemoryAllocator now always uses indices internally.  Incoming IDs are
checked for validity.

8 months agoRemove the unused get_allocation_size function
Mikko Rasa [Tue, 25 Jan 2022 15:58:14 +0000 (17:58 +0200)]
Remove the unused get_allocation_size function

8 months agoUse pipeline keys for objects and effects
Mikko Rasa [Wed, 19 Jan 2022 13:00:52 +0000 (15:00 +0200)]
Use pipeline keys for objects and effects

8 months agoSupport multiple PipelineStates in Renderer
Mikko Rasa [Mon, 17 Jan 2022 20:41:24 +0000 (22:41 +0200)]
Support multiple PipelineStates in Renderer

In the Vulkan backend it can be beneficial to keep separate pipeline
states and avoid having to repeatedly compute hashes and look them up
from the cache.  The downside is that every time the used state object
changes, shader data has to be reapplied.  But it's likely this would
be necessary anyway due to different shader or data being used.

8 months agoApply only changed parts of VulkanPipelineState
Mikko Rasa [Sat, 15 Jan 2022 09:06:08 +0000 (11:06 +0200)]
Apply only changed parts of VulkanPipelineState

8 months agoMinor, largely cosmetic tweaks
Mikko Rasa [Fri, 14 Jan 2022 22:06:58 +0000 (00:06 +0200)]
Minor, largely cosmetic tweaks

8 months agoUse the changes member directly in PipelineState backends
Mikko Rasa [Thu, 13 Jan 2022 21:17:01 +0000 (23:17 +0200)]
Use the changes member directly in PipelineState backends

8 months agoStore simpler states by value in PipelineState
Mikko Rasa [Wed, 12 Jan 2022 20:24:54 +0000 (22:24 +0200)]
Store simpler states by value in PipelineState

Since these are also stored by value in various objects, a pointer
comparison is not enough to tell if state needs to be changed.  There's
no guarantee that the object behind the pointer stays alive, so comparing
values through the pointer is hazardous.

8 months agoCreate a function for applying framebuffer state in Renderer
Mikko Rasa [Wed, 12 Jan 2022 20:18:09 +0000 (22:18 +0200)]
Create a function for applying framebuffer state in Renderer

8 months agoMake various enums use uint8_t as their underlying type
Mikko Rasa [Wed, 12 Jan 2022 20:17:20 +0000 (22:17 +0200)]
Make various enums use uint8_t as their underlying type

8 months agoOnly set pipeline resources as used when the resource changes
Mikko Rasa [Sun, 9 Jan 2022 13:38:54 +0000 (15:38 +0200)]
Only set pipeline resources as used when the resource changes

This avoids an issue on Vulkan where invalid descriptor set writes were
generated if a resource unused by the current shader was set to the same
value it already had and the shader wasn't changed.

I'm not really sure if the flags should be set in the common part at all,
since the OpenGL bckend barely uses them.  But other approaches are not
clearly superior either.

9 months agoUse a placeholder texture when a texture has not been loaded yet
Mikko Rasa [Sun, 2 Jan 2022 11:15:01 +0000 (13:15 +0200)]
Use a placeholder texture when a texture has not been loaded yet

9 months agoUse low-level handles when computing descriptor set hashes
Mikko Rasa [Wed, 29 Dec 2021 22:03:36 +0000 (00:03 +0200)]
Use low-level handles when computing descriptor set hashes

The handle of a texture may change due to loading and unloading through
a resource manager.

9 months agoConvert pixel components if necessary when async loading textures
Mikko Rasa [Tue, 28 Dec 2021 20:11:03 +0000 (22:11 +0200)]
Convert pixel components if necessary when async loading textures

9 months agoMove Texture2D::AsyncLoader back to the common part
Mikko Rasa [Tue, 28 Dec 2021 14:09:59 +0000 (16:09 +0200)]
Move Texture2D::AsyncLoader back to the common part

The backend-specific parts are now handled by AsyncTransfer.

9 months agoRefactor Texture2D::AsyncLoader to use sub_image_async
Mikko Rasa [Tue, 28 Dec 2021 14:07:48 +0000 (16:07 +0200)]
Refactor Texture2D::AsyncLoader to use sub_image_async

9 months agoAdd an asynchronous version of Texture2D::sub_image
Mikko Rasa [Tue, 28 Dec 2021 10:03:58 +0000 (12:03 +0200)]
Add an asynchronous version of Texture2D::sub_image

9 months agoRequire buffer to have storage for mapping
Mikko Rasa [Mon, 27 Dec 2021 23:05:20 +0000 (01:05 +0200)]
Require buffer to have storage for mapping

9 months agoMake Buffer::AsyncTransfer default-constructible and move-assignable
Mikko Rasa [Mon, 27 Dec 2021 21:26:25 +0000 (23:26 +0200)]
Make Buffer::AsyncTransfer default-constructible and move-assignable

9 months agoRedesign asynchronous buffer uploads
Mikko Rasa [Fri, 24 Dec 2021 10:25:46 +0000 (12:25 +0200)]
Redesign asynchronous buffer uploads

The Buffer class now offers an async version of sub_data, which can
better account for exactly how the data needs to be uploaded.

9 months agoReset staging buffers in TransferQueue once the transfers are done
Mikko Rasa [Mon, 20 Dec 2021 21:03:33 +0000 (23:03 +0200)]
Reset staging buffers in TransferQueue once the transfers are done

9 months agoImprove state setting in Sky
Mikko Rasa [Mon, 20 Dec 2021 00:13:41 +0000 (02:13 +0200)]
Improve state setting in Sky

Avoid leaking the effect's shader data to its content as it contains no
relevant uniforms.

9 months agoUse a streaming buffer for ProgramData only when needed
Mikko Rasa [Sun, 19 Dec 2021 23:26:15 +0000 (01:26 +0200)]
Use a streaming buffer for ProgramData only when needed

9 months agoRefactor ProgramData buffer (re)creation into a function
Mikko Rasa [Sun, 19 Dec 2021 12:10:12 +0000 (14:10 +0200)]
Refactor ProgramData buffer (re)creation into a function

9 months agoMultiplex streaming buffer contents on Vulkan
Mikko Rasa [Sun, 19 Dec 2021 11:39:08 +0000 (13:39 +0200)]
Multiplex streaming buffer contents on Vulkan

This ensures that the data stays valid until the draw commands using it
have finished executing.