CamilleLaVey
7cb8ae0c0d
[TEST] Diagnosis for corrupted HDR consumed views
2026-07-05 06:31:42 -04:00
CamilleLaVey
dbb48c4e4e
[TEST] Format swap
2026-07-05 06:24:17 -04:00
CamilleLaVey
8cc658e5be
[vulkan] Updated Typeless format structure for ASTC decoding
2026-07-05 05:26:47 -04:00
CamilleLaVey
785461a26c
[vulkan] Verify actual format of ASTC before decode
2026-07-05 05:06:16 -04:00
CamilleLaVey
7bf0e49a91
[vulkan] Plumbing ASTC decoding capabilities for HDR
2026-07-05 03:45:32 -04:00
CamilleLaVey
55627c3896
[video_core] Initial implementation on HDR endpoints for ASTC decoding
2026-07-05 02:53:52 -04:00
CamilleLaVey
1987384dec
[TEST] Test for RefreshParametter actual concurrency
2026-07-05 01:35:12 -04:00
CamilleLaVey
3b617a6733
[TEST] Add B10G11R11 as target format
2026-07-05 01:31:51 -04:00
CamilleLaVey
963e1f633b
[TEST] Add preliminary/ missing formats based on driver reports for Switch
2026-07-05 00:36:26 -04:00
CamilleLaVey
6eec277428
[vulkan] Silence unimplemented format entry
2026-07-05 00:07:41 -04:00
CamilleLaVey
dbd59bd119
[vulkan] Override default behavior on rasterizer channel
2026-07-04 23:21:46 -04:00
CamilleLaVey
3dc15a4f96
Smolio Gidolardo
2026-07-04 22:10:02 -04:00
CamilleLaVey
4900fee536
[TEST] Re-test removed features from QCOM
2026-07-04 22:05:28 -04:00
CamilleLaVey
34df1b4a16
[vulkan] Another approach for queries reset
2026-07-04 22:03:22 -04:00
CamilleLaVey
f5560deab7
[vulkan] Added tracker for reused uploads
2026-07-04 21:41:00 -04:00
CamilleLaVey
307a32f9a0
[vulkan, qcom] Updated list of features removed for QCOM stock drivers
2026-07-04 20:44:25 -04:00
CamilleLaVey
7bb4991edd
[vulkan] Refactored dual blending/ dual source attachments
2026-07-04 19:03:27 -04:00
CamilleLaVey
f5720663c2
[vulkan] Adjust blend targets from texture types
2026-07-04 18:55:00 -04:00
CamilleLaVey
53927e175e
[vulkan] Adjustments on previous TFB barrier added
2026-07-04 18:26:29 -04:00
CamilleLaVey
20a68e1e9d
[vulkan, qcom] Returned custom border color and derivates to QCOM drivers
2026-07-04 17:59:07 -04:00
CamilleLaVey
c7668fd43e
[vulkan] Adjusted checks for 8 - 16bits UBO's iteration
2026-07-04 16:40:15 -04:00
CamilleLaVey
eb7f950322
[spir-v] Workaorund for 1D sampled images
2026-07-04 16:24:22 -04:00
CamilleLaVey
80609ee974
[TEST] Remove border color swizzle from qcom
2026-07-04 16:17:01 -04:00
CamilleLaVey
28630ff109
[vulkan] Sampled linear images fallback to nearest
2026-07-04 13:47:44 -04:00
CamilleLaVey
b049f7d273
[texture_cache] Relaxed TIC's lookup for integer type image formats
2026-07-04 12:57:20 -04:00
CamilleLaVey
f6ccf2c368
[shader_recompiler] Added texture type functions
2026-07-04 01:31:25 -04:00
CamilleLaVey
27a0010b6e
[vulkan] Verify UniformAndStorage capabilities on device
2026-07-04 00:32:36 -04:00
CamilleLaVey
b06b9cc7a2
[vulkan] Pixel format handling for formats
2026-07-04 00:16:01 -04:00
CamilleLaVey
943f91cf0b
[texture_cache] Added typeless storage form
2026-07-04 00:01:31 -04:00
CamilleLaVey
bd8caa5294
[texture_cache] Added b5g6r5 pixel format to depth blit resolves
2026-07-03 23:36:05 -04:00
CamilleLaVey
3ddf349ca1
[buffer_cache] Force offsets to 0 on descriptors and use VK_WHOLE_SIZE instead
2026-07-03 23:01:13 -04:00
CamilleLaVey
d707d241fc
[host_shaders] Corrections on mismatchs for SINT on depth formats
2026-07-03 22:28:42 -04:00
CamilleLaVey
aa5d2cf9d7
[qcom] Removal custom border color from QCOM drivers
2026-07-03 22:10:12 -04:00
CamilleLaVey
decf41a3cb
Fix build
2026-07-03 21:21:14 -04:00
CamilleLaVey
d7dc4f2143
[vulkan] Correction on mislead of BindVertexBuffer entries
2026-07-03 20:58:34 -04:00
CamilleLaVey
fbd94e4237
[vulkan] Implementation color write enable + color border swizzle
2026-07-03 20:35:45 -04:00
CamilleLaVey
48cc8f4c8c
[vulkan] XFB memory barrier added
2026-07-03 02:29:06 -04:00
CamilleLaVey
e1721012d8
[vulkan] Set actual dynamic state handling for topology
2026-07-03 01:49:56 -04:00
CamilleLaVey
5af01bef9f
[vulkan] Initial implementation Synchronization2
2026-07-03 00:58:40 -04:00
lizzie
4c65780f11
Revert "[common/dynamic_library] fix AUR build error ( #4156 )" ( #4157 )
...
This reverts commit a9c4c8aefd .
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4157
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-07-02 22:07:37 +02:00
lizzie
a9c4c8aefd
[common/dynamic_library] fix AUR build error ( #4156 )
...
not gonna question why there was an ifdef there
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4156
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-07-02 19:49:19 +02:00
lizzie
a769505a45
[vk, ogl] Remove dedicated precomputed swizzle table; use shorter inline table in block_linear swizzle shaders ( #4146 )
...
old table = 64 * 8 * sizeof(u32) = 512 * 4 = 4096 bytes
new table = 8 * sizeof(u32) = 8 * 4 = 32 bytes
the expression
```glsl
return ((pos & 0x0180) >> 1)
| ((pos & 0x0040) >> 2)
| ((pos & 0x0020) << 3)
| ((pos & 0x0010) << 1)
| ((pos & 0x000f) << 0);
```
is equivalent for generating the table but idk if we'd want that
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4146
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-07-02 19:24:07 +02:00
xbzk
54c3d10b86
[vk, renderdoc] (VUID-02997) avoid vk_image_view as VK_NULL_HANDLE when feature nullDescriptor is unavailable ( #4056 )
...
This minor change in src\video_core\renderer_vulkan\pipeline_helper.h allows renderdoc capture on mhr sunbreak.
Maybe it sanitizes some crashes on old vulkan GPUs.
Device log (nvidia kepler gpu vulkan 1.1.117):
[ 17.605262] Render.Vulkan <Info> video_core\vulkan_common\vulkan_device.cpp:1041:GetSuitability: Device doesn't support feature nullDescriptor
VUID-VkWriteDescriptorSet-descriptorType-02997
For sampled/combined/storage image descriptors, Khronos says imageView must be valid or VK_NULL_HANDLE
(https://docs.vulkan.org/refpages/latest/refpages/source/VkPhysicalDeviceRobustness2FeaturesKHR.html )
but then it says: if nullDescriptor is not enabled, imageView must not be VK_NULL_HANDLE.
(https://docs.vulkan.org/spec/latest/chapters/descriptorsets.html )
nullDescriptor is exactly the feature that allows descriptors to be written with null handles.
The fix relies on conditionally replacing the null sampled view with Eden’s dummy null-image-view object (ImageView constructor checks HasNullDescriptor which checks features.robustness2.nullDescriptor. cheap checks, and only for null handles, so no notable cost).
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4056
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-07-02 03:23:08 +02:00
xbzk
bdf60d79a0
[video_core] gate Mesa EXIT terminator detection behind non-proprietary driver ( #4151 )
...
FIXES A REGRESSION FROM 4012.
TryFindSize's Mesa fallback matched the unconditional @PT EXIT (0xE30000000007000F) that nv50_ir emits at program end.
That exact word is also emitted by NVN mid-program for unconditional early-outs, so on retail titles (e.g. Super Mario 3D World) the scan truncated at the first early EXIT and dropped the rest of the shader, making textures vanish.
Mesa's terminal EXIT and NVN's mid-program EXIT are bit-identical, so no mask can separate them. Gate the heuristic on !is_proprietary_driver:
NVN binaries (bindless cbuf slot 2) keep self-branch-only sizing, while nouveau/Mesa homebrew (single terminal EXIT, no self-branch trailer) still uses the EXIT terminator. nv50_ir emits exactly one EXIT (early returns lower to BRA-to-exit, discard to DISCARD), so a single terminal match is correct for that path.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4151
Reviewed-by: Lizzie <lizzie@eden-emu.dev >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-07-01 13:06:00 +02:00
lizzie
2068b5d452
[vk] Clamp dynamic descriptors based on device limits ( #4115 )
...
Should fix this specific crash
```
* thread #82 , name = 'GPU', stop reason = Exception 0xc0000005 encountered at address 0x7ff7e5193e89: Access violation reading location 0x00000098
* frame #0 : 0x00007ff7e5193e89 eden.exe`std::unique_ptr<Vulkan::Scheduler::CommandChunk,std::default_delete<Vulkan::Scheduler::CommandChunk> >::operator->(this=<unavailable>) at memory:3453 [inlined]
frame #1 : 0x00007ff7e5193e81 eden.exe`void Vulkan::Scheduler::DispatchWork(this=0x0000000000000000) at vk_scheduler.cpp:146
frame #2 : 0x00007ff7e5193d8f eden.exe`void Vulkan::Scheduler::WaitWorker(this=<unavailable>) at vk_scheduler.cpp:133
frame #3 : 0x00007ff7e54f472e eden.exe`void Vulkan::UpdateDescriptorQueue::Acquire(this=0x0000026c77cfb4b8) at vk_update_descriptor.cpp:41
frame #4 : 0x00007ff7e5537a43 eden.exe`void Vulkan::ASTCDecoderPass::Assemble(this=0x0000026c794fba10, image=0x0000026cfb794850, map=0x00000025e28fcb30, swizzles=<unavailable>) at vk_compute_pass.cpp:603
frame #5 : 0x00007ff7e55043e1 eden.exe`void Vulkan::TextureCacheRuntime::AccelerateImageUpload(this=<unavailable>, image=0x0000026cfb794850, map=0x00000025e28fcb30, swizzles=size=10, z_start=0, z_count=0) at vk_texture_cache.cpp:2482
frame #6 : 0x00007ff7e5516592 eden.exe`void VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::UploadImageContents<struct Vulkan::StagingBufferRef>(this=<unavailable>, image=0x0000026cfb794850, staging=0x00000025e28fcb30) at texture_cache.h:1147
frame #7 : 0x00007ff7e551523d eden.exe`void VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::RefreshContents(this=0x0000026c794fd800, image=0x0000026cfb794850, image_id=(index = 3801072224)) at texture_cache.h:1133
frame #8 : 0x00007ff7e5517b50 eden.exe`struct Common::SlotId VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::JoinImages(this=0x0000026c794fd800, info=<unavailable>, gpu_addr=25374426112, cpu_addr=2254181376) at texture_cache.h:1644
frame #9 : 0x00007ff7e5516ff6 eden.exe`struct Common::SlotId VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::InsertImage(this=0x0000026c794fd800, info=0x00000025e28fd270, gpu_addr=25374426112, options=0x0) at texture_cache.h:1513
frame #10 : 0x00007ff7e5516a60 eden.exe`struct Common::SlotId VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::FindOrInsertImage(this=0x0000026c794fd800, info=0x00000025e28fd270, gpu_addr=25374426112, options=0x0) at texture_cache.h:1194
frame #11 : 0x00007ff7e5515a13 eden.exe`struct Common::SlotId VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::CreateImageView(this=0x0000026c794fd800, config=0x00000025e28fd370) at texture_cache.h:1173
frame #12 : 0x00007ff7e550cd64 eden.exe`struct Common::SlotId VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::VisitImageView(this=0x0000026c794fd800, index=4586, compute=<unavailable>) at texture_cache.h:554
frame #13 : 0x00007ff7e550d181 eden.exe`void VideoCommon::TextureCache<struct Vulkan::TextureCacheParams>::FillImageViews(this=0x0000026c794fd800, views=size=5, compute=<unavailable>, blacklist=<unavailable>) at texture_cache.h:227
frame #14 : 0x00007ff7e58896e4 eden.exe`Vulkan::GraphicsPipeline::ConfigureImpl<Vulkan::(anonymous namespace)::SimpleStorageSpec>(this=0x0000026f865c1a60, is_indexed=<unavailable>) at vk_graphics_pipeline.cpp:415
frame #15 : 0x00007ff7e5889479 eden.exe`<lambda_1>::operator(pl=<unavailable>, is_indexed=<unavailable>) at vk_graphics_pipeline.h:123 [inlined]
frame #16 : 0x00007ff7e5889474 eden.exe`<lambda_1>::__invoke(pl=<unavailable>, is_indexed=<unavailable>) at vk_graphics_pipeline.h:123
frame #17 : 0x00007ff7e519d2a8 eden.exe`Vulkan::GraphicsPipeline::Configure(this=0x0000026f865c1a60, is_indexed=<unavailable>) at vk_graphics_pipeline.h:105 [inlined]
frame #18 : 0x00007ff7e519d29d eden.exe`Vulkan::RasterizerVulkan::PrepareDraw<`lambda at D:\a\g\g\eden-source\src\video_core\renderer_vulkan\vk_rasterizer.cpp:256:29'>(this=0x0000026c764f9368, is_indexed=<unavailable>, draw_func=0x00000025e28fdb80) at vk_rasterizer.cpp:244
frame #19 : 0x00007ff7e519d1db eden.exe`void Vulkan::RasterizerVulkan::Draw(this=<unavailable>, is_indexed=<unavailable>, instance_count=<unavailable>) at vk_rasterizer.cpp:256
frame #20 : 0x00007ff7e50d9025 eden.exe`void Tegra::HLE_DrawIndexedIndirect::Fallback(this=0x0000026f2af85118, maxwell3d=0x0000026ccbf9eb00, parameters=size=6) at macro.cpp:178
frame #21 : 0x00007ff7e50d8f21 eden.exe`void Tegra::HLE_DrawIndexedIndirect::Execute(this=0x0000026f2af85118, maxwell3d=0x0000026ccbf9eb00, parameters=size=6) at macro.cpp:129
frame #22 : 0x00007ff7e50db607 eden.exe`Tegra::MacroEngine::Execute::<lambda_0>::operator(this=0x00000025e28fde70, acm= Active Type = Tegra::HLE_DrawIndexedIndirect ) at macro.cpp:1362
frame #23 : 0x00007ff7e50dada0 eden.exe`void Tegra::MacroEngine::Execute(this=0x0000026ccbfaa020, maxwell3d=0x0000026ccbf9eb00, method=418, parameters=<unavailable>) at macro.cpp:1392
frame #24 : 0x00007ff7e4ef062b eden.exe`void Tegra::Engines::Maxwell3D::CallMacroMethod(this=0x0000026ccbf9eb00, method=<unavailable>, parameters=<unavailable>) at maxwell_3d.cpp:390
frame #25 : 0x00007ff7e4ef04be eden.exe`void Tegra::Engines::Maxwell3D::ProcessMacro(this=0x0000026ccbf9eb00, method=<unavailable>, base_start=<unavailable>, amount=5, is_last_call=<unavailable>) at maxwell_3d.cpp:223
frame #26 : 0x00007ff7e4ef1673 eden.exe`void Tegra::Engines::Maxwell3D::CallMultiMethod(this=<unavailable>, method=<unavailable>, base_start=0x000001ea398e22f4, amount=<unavailable>, methods_pending=5) at maxwell_3d.cpp:419
frame #27 : 0x00007ff7e4ef535a eden.exe`void Tegra::DmaPusher::CallMultiMethod(this=<unavailable>, base_start=0x000001ea398e22f4, num_methods=<unavailable>) const at dma_pusher.cpp:201
frame #28 : 0x00007ff7e4ef5023 eden.exe`void Tegra::DmaPusher::ProcessCommands(this=0x0000026ccbfba698, commands=size=36) at dma_pusher.cpp:120
frame #29 : 0x00007ff7e4ef4ced eden.exe`bool Tegra::DmaPusher::Step(this=0x0000026ccbfba698) at dma_pusher.cpp:88
frame #30 : 0x00007ff7e4ef49f8 eden.exe`void Tegra::DmaPusher::DispatchCalls(this=0x0000026ccbfba698) at dma_pusher.cpp:40
frame #31 : 0x00007ff7e4ede797 eden.exe`void Tegra::Control::Scheduler::Push(this=<unavailable>, channel=-493895072, entries=0x00000025e28fe2e0) at scheduler.cpp:31
frame #32 : 0x00007ff7e4eedc7b eden.exe`VideoCommon::GPUThread::ThreadManager::StartThread::<lambda_0>::operator(this=<unavailable>, stop_token=stop_token @ 0x00000025e28ffb40) at gpu_thread.cpp:42 [inlined]
frame #33 : 0x00007ff7e4eedae8 eden.exe`std::invoke(_Obj=<unavailable>, _Arg1=0x0000026ccb3edef0) at type_traits:1680 [inlined]
frame #34 : 0x00007ff7e4eedac1 eden.exe`std::thread::_Invoke<std::tuple<`lambda at D:\a\g\g\eden-source\src\video_core\gpu_thread.cpp:29:27',std::stop_token>,0,1>(_RawVals=0x0000026ccb3edef0) at thread:60
frame #35 : 0x00007ff8e87a37b0 ucrtbase.dll`wcsrchr + 336
```
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4115
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-06-30 04:33:30 +02:00
lizzie
1b482fa99b
[hle] remove parent object reference data on Request/Response builders, pass by argument ( #3774 )
...
anyways this should remove a bunch of redundant code/stack usage for response builders (ahem, msvc)
SHOULD help games that use IPC heavily like PKZA and whatnot
biblical levels of performance greed
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3774
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: Maufeat <sahyno1996@gmail.com >
2026-06-29 08:11:12 +02:00
xbzk
b6ee847947
[hle/am] make Service::Process move-only to fix #3908 KProcess use-after-free ( #4137 )
...
#3908 changed process_creation.*, CreateProcess/CreateApplicationProcess, to return std::optional<Process> instead of std::unique_ptr<Process>, so the AM sites now transfer a Process by value via make_unique<Service::Process>(*std::move(opt)).
The consequence: Process owns a refcounted KProcess* but its user-declared dtor suppressed the implicit move ctor, so that "move" silently shallow-copied and the temporary's dtor Close()/RemoveProcess()'d the shared handle -> use-after-free.
It's seems to be user end based, so whether it crashes may depend on machine, compiler, allocator reuse, refcount slack, and the AM event-observer thread race, idk. It reliably crashed my MSVC build at launching games (cstack: ProcessHolder -> MultiWait -> KSynchronizationObject::Wait -> null) multiple times.
Fix: give Process a move ctor that steals the handle (nulling the source so the moved-from dtor is a no-op) and delete copy/move-assign, making the optional<->unique_ptr transfer safe.
Bonus: explicited delete for the 3 kinds of assignment: copy ctor (the one used in eden), copy assign and move assign (currently unused) to force compile error if they ever come to use.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4137
Reviewed-by: Lizzie <lizzie@eden-emu.dev >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-06-29 02:39:11 +02:00
wildcard
6c16440996
[vulkan] Fix EDS 0-2 ( #4117 )
...
EDS3 states were dynamic just because the driver supports them. But in EDS0-EDS2, we does not actually emit the EDS3 dynamic commands for them. So the pipeline builder skipped baking some fixed graphics state into the Vulkan pipeline, but the runtime also did not set that state dynamically. That leaves wrong Vulkan state during rendering causing rendering glitches in XC2.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4117
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
2026-06-28 15:07:54 +02:00
lizzie
09c583506b
[tests] Require backing base pointer to be nonnull for HostMemory tests ( #4138 )
...
A basic requirement, probably more helpful than outright crashing in the middle of a test.
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4138
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-06-28 08:01:41 +02:00
lizzie
894add43f3
[vk] fix PR5R black screen on qcom driver ( #4120 )
...
Different approach proposed by gido.
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4120
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-06-28 04:29:28 +02:00