Commit Graph

172 Commits (9eae69f96be75d15db6ed5752a096df83e3dad1e)

Author SHA1 Message Date
cosmonaut 057a48e96f separate shader types 2022-03-02 11:22:52 -08:00
cosmonaut 61e83cfba8 D3D compatibility ABI break 2022-03-02 11:10:28 -08:00
cosmonaut e4ea104a88 remove swapchain log spam 2022-03-02 10:27:03 -08:00
cosmonaut 83c2372499 only mark swapchain as needing recreate if it exists 2022-03-02 10:02:07 -08:00
cosmonaut cb99489b3c Rework Presentation Flow (#15)
Removes `Refresh_RenderTarget`, `Refresh_CreateRenderTarget` and `Refresh_QueueDestroyRenderTarget`. Render targets are now managed by the implementation.

Adds `REFRESH_TEXTUREFORMAT_B8G8R8A8`.

Adds `Refresh_AcquireSwapchainTexture`. Returns a swapchain texture for the requested window.

Removes `Refresh_QueuePresent`. It is now assumed that the texture returned by `Refresh_AcquireSwapchainTexture` will be presented. This texture can be manipulated like any other texture.

Adds `Refresh_GetSwapchainFormat`. Returns the swapchain format for the requested window.

Reviewed-on: MoonsideGames/Refresh#15
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-03-02 06:33:57 +00:00
cosmonaut d22bed8b76 transition entire images + rework swapchain image management 2022-02-28 12:02:39 -08:00
cosmonaut 436b990d45 Fix intro message formatting 2022-02-25 23:13:17 -08:00
cosmonaut a26d3e3689 move color blend state to AttachmentInfo 2022-02-25 17:37:42 -08:00
cosmonaut a38a9d461d fix right alignment spacing 2022-02-25 13:51:29 -08:00
cosmonaut 517399f5d9 convert all spaces to tabs 2022-02-25 13:42:11 -08:00
cosmonaut 5187093ddc reset command buffers on the thread they were spawned 2022-02-24 22:06:00 -08:00
cosmonaut 336468cc31 fix some invalid accesses 2022-02-24 21:29:52 -08:00
cosmonaut a531fb8593 Render Pass API Streamlining (#14)
Removes `Refresh_RenderPass` and `Refresh_Framebuffer` objects.

`Refresh_BeginRenderPass` now takes a set of `Refresh_ColorAttachmentInfo` structs and an optional `Refresh_DepthStencilAttachmentInfo` struct that describe the render pass. The render pass and framebuffer objects are now managed by the implementation instead of the application.

Accordingly, `Refresh_GraphicsPipelineCreateInfo` now takes a `Refresh_GraphicsPipelineAttachmentInfo` struct that describes render passes that may be used with the pipeline. It is an error to bind a pipeline during an incompatible render pass.

Reviewed-on: MoonsideGames/Refresh#14
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-02-24 22:01:37 +00:00
cosmonaut a3aea0f796 Reset fence as late as possible 2022-02-22 21:54:32 -08:00
cosmonaut 0319c26f6a Submission rewrite (#13)
Rework submission flow to reduce waiting and improve the resource cleanup process.

This patch also gets rid of descriptor set caching.
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-02-23 00:49:45 +00:00
TheSpydog 1d72fdb995 Added a Refresh driver template file (#12)
This allows us to avoid monotonous boilerplate when bringing up new backends.
Co-authored-by: TheSpydog <thespydog@noreply.example.org>
Co-committed-by: TheSpydog <thespydog@noreply.example.org>
2022-02-22 03:28:31 +00:00
cosmonaut b54b7cc42d fix separate swapchain synchronization 2022-02-09 21:42:19 -08:00
cosmonaut 829356d927 Revise swapchain management + remove external 2022-02-08 17:16:11 -08:00
cosmonaut 42f5f84524 Transfer Buffer Pool (#7)
Reviewed-on: MoonsideGames/Refresh#7
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-01-20 22:56:28 +00:00
cosmonaut c5a689c6d6 fix bad realloc 2022-01-17 21:28:25 -08:00
cosmonaut 80fdf09d86 fix some fence edge cases 2022-01-17 21:09:27 -08:00
cosmonaut e59e3e6b02 insert missing memory barrier after buffer copy 2022-01-17 19:57:45 -08:00
cosmonaut 49d7b1fabc fix transfer buffer offset not incrementing 2022-01-17 18:32:45 -08:00
cosmonaut 34e4b4f576 SetBufferData rework (#6)
Buffer uploads now require a command buffer, like textures do. Additionally it is now regarded as an error to upload data in the middle of a render pass.

Reviewed-on: MoonsideGames/Refresh#6
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-01-13 23:08:08 +00:00
cosmonaut 0cd9a2e8e9 fix validation error on exit 2022-01-13 12:03:44 -08:00
cosmonaut 0ffa045f78 fix UBO descriptor set not being resized 2022-01-13 12:03:32 -08:00
cosmonaut c17ec99c50 deadlock fixes 2022-01-12 23:09:06 -08:00
cosmonaut 8e04b357db reset uniform buffer offset when acquiring 2022-01-12 22:47:04 -08:00
cosmonaut 62789005dd fix for multi-submit 2022-01-12 22:04:07 -08:00
cosmonaut 53c65fb5eb fix incorrect index 2022-01-12 22:00:08 -08:00
cosmonaut 0e05ed6b34 Buffer and Submission Rework (#1)
We used to have monolithic uniform buffers on the VulkanRenderer object, but this was inefficient in the case of threaded usage.

Now, we have a pool of uniform buffers. A uniform buffer is selected from the pool when a pipeline is bound. The uniform buffers are rotated upon presentation.

Now pushing uniforms is now a concern of the command buffer instead of the pipeline. The pipeline should just always have been a static object anyway.

Additionally, we now do extra buffer record-keeping so that buffer data can be updated after a bind/draw.

Fence submission has also been restructured so that submissions don't cause unnecessary blocks. Now we assign one fence per submission, and we don't wait for fences until it's time to present.

Reviewed-on: MoonsideGames/Refresh#1
Co-authored-by: cosmonaut <evan@moonside.games>
Co-committed-by: cosmonaut <evan@moonside.games>
2022-01-12 22:41:10 +00:00
David Weil c51b4e95d2 Fixed multiple command buffer submissions 2022-01-03 13:51:13 -08:00
cosmonaut c7666cd8fc fix use after free 2022-01-03 10:36:47 -08:00
cosmonaut ca07286e29 change texture transfer to be per-CB 2022-01-02 14:35:57 -08:00
cosmonaut 78c5d54bf1 revise SetTextureData to take a command buffer 2021-11-14 20:36:26 -08:00
cosmonaut ab941a68df fix debug mode flag not set before creating instance 2021-11-08 14:25:18 -08:00
cosmonaut dd1ba55312 fix YUV upload 2021-02-27 13:03:30 -08:00
cosmonaut b6a09517c2 change clear color type 2021-02-09 22:51:49 -08:00
cosmonaut 17524fd30b fix depth attachment barriers 2021-02-09 17:52:26 -08:00
cosmonaut 8f1cdf190f change shader uniform push to take pipelines instead of command buffers 2021-02-05 19:59:29 -08:00
cosmonaut 7f3e89315e uniform API update 2021-02-02 16:37:01 -08:00
cosmonaut 4699c158f3 calculate texture length internally + fix rename 2021-01-31 21:17:27 -08:00
cosmonaut 76c845cbb4 rename PushShaderParams to PushShaderUniforms 2021-01-31 19:37:16 -08:00
cosmonaut 254d209a48 fix issue where texture staging buffer would be too small to contain incoming data 2021-01-31 18:01:21 -08:00
cosmonaut a60725fecc fix bad malloc size 2021-01-31 17:16:32 -08:00
cosmonaut d99bd756f4 remove extra region merge checks 2021-01-31 16:29:38 -08:00
cosmonaut 952cf974b4 fix empty compute image descriptor set creation 2021-01-31 14:30:16 -08:00
cosmonaut 52d06f9f6c merge free regions 2021-01-29 16:03:00 -08:00
cosmonaut b2199fcaae improve device enumeration + fix host memory allocation 2021-01-29 15:57:58 -08:00
cosmonaut 978d1e9451 cpu texture alloc tweak 2021-01-28 22:05:44 -08:00