Commit Graph
1358 Commits
Author SHA1 Message Date
wheremyfoodatandGitHub a06c63fd41 Merge pull request #228 from caldog20/fixbundle
Fix minimum system version
2023-08-21 21:46:38 +03:00
Caleb Yates 3009e63cb8 Fix minimum system version 2023-08-21 13:45:02 -05:00
wheremyfoodat 1d601e41ba Merge branch 'master' into timerz 2023-08-21 18:57:18 +03:00
wheremyfoodat fae1da680f Merge branch 'master' into Mac-why 2023-08-21 18:56:37 +03:00
wheremyfoodat 3b22f15e67 Merge branch 'master' into mii_selector 2023-08-21 18:53:36 +03:00
wheremyfoodat 92ceb0f05f Merge branch 'master' into sd-card 2023-08-21 18:41:29 +03:00
wheremyfoodatandGitHub 56f36cee88 Merge pull request #227 from wheremyfoodat/news
Add news:u
2023-08-21 17:09:47 +03:00
wheremyfoodat d3d426985a Add news:u 2023-08-21 16:45:35 +03:00
wheremyfoodat 3f2a546915 NFC stuffs 2023-08-21 15:39:55 +03:00
wheremyfoodat 3c7b9bb512 Fonts in fonts directory 2023-08-21 15:16:23 +03:00
wheremyfoodat fb4b3ca7ab NFCC::StartCommunication: Fix response header 2023-08-21 15:13:00 +03:00
wheremyfoodat 5abfe5255f Add NFC::StartCommunication 2023-08-21 15:11:32 +03:00
wheremyfoodat dd6508eb26 Migrate shared font to cmrc 2023-08-21 14:53:50 +03:00
Wunkolo b3812548fe Fix bottom screen detection 2023-08-20 23:42:34 -07:00
Wunkolo 0258640da9 Add cached sampler creation
Using the sampler cache we can maintain a pool of reusable samplers. The
`sampler2D` utility function can help make some trivial samplers.
2023-08-20 23:40:51 -07:00
Wunkolo 7a86595a1b Add vulkan sampler cache 2023-08-20 23:35:52 -07:00
Wunkolo 14b1d7d8a8 Add display-shader presentation
Uses the graphics pipeline to both blit and transpose the 3ds-formatted
textures. Does not read from the actual texture just yet since we dont
write to the descriptor just yet. Some other patterns need to line up
before then.
2023-08-20 23:01:43 -07:00
Wunkolo 4b7bd9df3d Add Vulkan Descriptor-Update batching
Allows multiple descriptor operations to be batched up and dispatched in
one API call rather than scattered through out the code base.
2023-08-20 23:01:43 -07:00
Wunkolo 72c77e41b4 Draft Vulkan DescriptorHeap
A utility class from a personal project for managing a heap of
descriptors of a particular layout.

Allows the display graphics pipeline to be successfully created,
satisfying its descriptor layout issues.
2023-08-20 23:01:43 -07:00
Wunkolo 6ebbd80286 Add Display-pipeline as member variables 2023-08-20 23:01:43 -07:00
Wunkolo 89f3eb3a87 Add simple graphics pipeline creation
This will eventually need to move into a cache, but this is introducing
some foundational patterns so that we know how to properly design a
pipeline cache. Currently does not provide a `DescriptorSetLayout`
argument. Causing validation errors. This will be a general-case cache
right from the get-go.
2023-08-20 23:01:43 -07:00
Wunkolo 13e52ac047 Add shader-module loading
Loads spirv files from the embedded virtual file system and loads them
into vulkan shader-modules.
2023-08-20 23:01:43 -07:00
Wunkolo 4b193c8d6b Add general purpose vulkan render cache
Takes in a general `vk::Format` rather than PICA-types
2023-08-20 23:01:43 -07:00
Wunkolo d4b75deaf8 Remove separate presentation/graphics command buffers
Now there is just one primary command buffer where all work is enqueued
into. At the end of the frame, the next frame's CPU-side fence is waited
on before resetting and beginning its command buffer again for
recording. This command buffer must always be in the RECORDING state.
2023-08-20 23:01:43 -07:00
Wunkolo 6052abe551 Fix swapchain synchronization issues
While we wait on the CPU-side fence for these command buffers, we must
also wait on the GPU-side semaphore to be compliant to validation
layers synchronization. We still get an error on the very first frame
since it will wait for a semaphore that has nothing signaling it.
2023-08-20 23:01:43 -07:00
Wunkolo 52ddaae221 Add getCurrentCommandBuffer for all frame workloads
Rather than allocating new command buffers for each small task, schedule
all work onto the frame's main command buffer to be dispatched at
display-time. Fixes all layout transition and synchronization issues.
2023-08-20 23:01:43 -07:00
Wunkolo cb8c53e0b8 Map RGB8 to RGBA8
RGB8 is not supported by drivers like RADV. Instead, we map it to RGBA8.
RGBA8 is mandated to be supported by the vulkan spec.
2023-08-20 23:01:43 -07:00
Wunkolo 9e2781e874 Refactor render-texture cache
Implement `displayTransfer` in parity with the OpenGL renderer. Allow
arguments to `get{Color,Depth}RenderTexture`.
2023-08-20 23:01:43 -07:00
Wunkolo 97b6b7f122 Add Vulkan Host-Shader compilation
Compiles Vulkan Host shaders into spirv binary files and embeds them
into the application's virtual file-system.
2023-08-20 23:01:43 -07:00
Wunkolo f62f1bf9b2 Fix ambiguous extension name conversion 2023-08-20 23:01:43 -07:00
Wunkolo cb64c52d2f Use inline rotl/ror
Fixes apple-clang builds, which do not implement a lot of the `bit`
header.
2023-08-20 23:01:43 -07:00
Wunkolo c778c34433 Separate present/graphics workloads
Separate the "Display" texture from the cache of framebuffer textures,
move present/graphics into separate command buffers.
2023-08-20 23:01:43 -07:00
Wunkolo 50029e1333 Avoid usage of D24-S8 format
This support is not supported on `radv`. Vulkan mandates D16 only and a
combination of Depth and Depth-Stencil types only.
2023-08-20 23:01:43 -07:00
Wunkolo 27268f86d3 Fix instance-extension iteration
Add the extensions when they are available rather than statically
including them.
2023-08-20 23:01:43 -07:00
Wunkolo 6dcd09af3e Implement basic color/depth render-texture cache 2023-08-20 23:01:43 -07:00
Wunkolo a36ee0025f Disable present queue when present unavailable. 2023-08-20 23:01:43 -07:00
Wunkolo bf3917f074 Add subpass dependencies, optional depth attachment 2023-08-20 23:01:43 -07:00
Wunkolo 37902cd9d6 Implement a renderpass cache.
Technically we can generate every possible render-pass up-front based on
the possible combinations of ColorFmt and DepthFmt, but we should only
allocate what the game asks for. Save that pattern for pipelines.
2023-08-20 23:01:43 -07:00
Wunkolo bf8bb5d459 Add vk_pica translation unit
Intended for conversions and utils between PICA definitions and Vulkan.
2023-08-20 23:01:43 -07:00
Wunkolo d19b8cf364 Separate frame-work from presentation 2023-08-20 23:01:43 -07:00
Wunkolo 4976671ef0 Rename vulkan_api.hpp to vk_api.hpp
Consistant with other vulkan header patterns.
This header in particular is to configure our Vulkan API usage.
2023-08-20 23:01:43 -07:00
Wunkolo ac1f7bc521 Remove dependency on C++20 ranges
AppleClang does not support this unfortunately
2023-08-20 23:01:43 -07:00
Wunkolo e87db99a97 Remove ownership of SDL's vulkan-surface
This surface is managed by SDL itself, so there is no need to keep it in
a Unique handle for us to delete.  Fixes the bug where vulkan crashes
during shutdown.
2023-08-20 23:01:43 -07:00
Wunkolo e3699fe8f8 Allocate and present separate top/bottom screen framebuffer images
Instead of operating directly on the swapchain images, we have our own
top/bottom framebuffer images that will be rendered to independent of
having an available swapchain. The images are blitted into the swapchain
images, allowing for resizing too!
2023-08-20 23:01:43 -07:00
Wunkolo d0832ca558 Fix support for headless vulkan context 2023-08-20 23:01:43 -07:00
Wunkolo 17101e9bb9 Fix graphics queue assignment
Copy-paste error
2023-08-20 23:01:43 -07:00
wheremyfoodatandGitHub d26789571c Merge pull request #225 from wheremyfoodat/tsc
[Touchscreen] Properly handle "dragging" stylus across screen
2023-08-21 00:02:25 +03:00
wheremyfoodat 706503974c [Touchscreen] Properly handle "dragging" stylus across screen 2023-08-20 23:42:55 +03:00
wheremyfoodat 9e0f590b79 Trying to switch to MacOS 10.15 2023-08-20 22:46:44 +03:00
wheremyfoodat b26a801042 More complete PList 2023-08-20 22:41:24 +03:00