Commit graph

5222 commits

Author SHA1 Message Date
James Benton
6bec2b4cc1 cafe/gx2: Set GX2InitDepthBufferRegs ARRAY_MODE to surfaceInfo tileMode.
Just in case addrlib decides to change the tile mode.
2018-11-07 11:49:03 +00:00
James Benton
be8e90d7e2 Implement nn::ipc CafeOS client and IOS server and add first ACP services. 2018-11-07 11:47:19 +00:00
James Benton
97670c8bfa common: Add make_filled_array function. 2018-11-07 11:47:19 +00:00
James Benton
6bc79419d0 nn: Add ok(), failed() methods to Result. 2018-11-07 11:47:19 +00:00
James Benton
cddab11ec7 ios/kernel: Fix kernel thread TLS.
Copied the name IpcBufferPool from someone else, it's actually TLS.
2018-11-07 11:47:19 +00:00
James Benton
20ed81228c ios/kernel: Change allocateProcessStatic to use alignof and placement new. 2018-11-07 11:47:19 +00:00
James Benton
827b7d582d ios/kernel: Fix ios_kernel_timer.h 2018-11-07 11:47:19 +00:00
James Benton
192c433642 cafe/coreinit: Fix ipc driver submit event name. 2018-11-07 11:47:19 +00:00
James Benton
89b4ebeb99 cafe/coreinit: Call driverOnInit at startup. 2018-11-07 11:47:19 +00:00
James Benton
b13c00e572 cpu: Fix phys_this. 2018-11-07 11:47:19 +00:00
James Benton
2a585d158d cafe/gx2: Fix unsigned / signed comparison. 2018-11-07 11:47:19 +00:00
James Benton
b77a5e1d60 Add a new tiling library and use it for untiling in gfdtool.
More optimised - copies as much data as it can rather than operating on
single pixels.

And much easier to use than addrlib.
2018-11-07 11:47:19 +00:00
James Benton
5679752759 cafe/gx2: Add support for writing cubemaps to DDS file. 2018-11-07 11:47:19 +00:00
James Benton
0da7d9fabd decaf: Improve logger creation. 2018-11-07 11:47:19 +00:00
Brett Lawson
4c9b203eb5 vulkan: Use an SRGB swap chain rather than RGB.
This is neccessary for many games, which render with an
incorrect gamma otherwise.  This change does however break
other games which are not using SRGB surfaces.  Seeing
things a bit more bright rather than quite a bit darker
is probably for the best.  Must implement gamma correction!
2018-11-05 05:32:23 -08:00
Brett Lawson
f419f88bae vulkan: Allow some invalid sampler XY filters.
NLand appears to bind an illegal sampler.  For now we
will expressely allow it in this case and warn instead
of crashing decaf.
2018-11-05 05:32:23 -08:00
Brett Lawson
4c7665da8a cafe/gx2: Implemented some needed GX2Perf methods. 2018-11-05 05:32:23 -08:00
Brett Lawson
f7ee783bba vulkan: Implement support for Geometry Shaders! 2018-11-05 05:32:23 -08:00
Brett Lawson
046ac84424 spirv: Improved export handling, added support for gl_LayerID. 2018-11-05 05:30:05 -08:00
Brett Lawson
6255961b43 vulkan: Added validation bypass for dual-bound textures.
Sometimes, games will incorrectly bind a color buffer as both
the active framebuffer as well as a texture in that draw.  This
is illegal in Vulkan, but happens nevertheless.
2018-11-05 04:53:14 -08:00
Brett Lawson
201d3b9c7e spirv: Improved vertex attribute fetching.
There are a few changes here.  Mainly related to avoiding
the INT8 type (which is not directly supported yet), as well
as correctly handling packed float types.
2018-11-05 04:51:25 -08:00
Brett Lawson
200739cd3b spirv: Improved applySelMask implementation.
It now will condense down to less instructions or more occasions.
2018-11-05 04:48:42 -08:00
Brett Lawson
b2401b03c2 spirv: Write floats as bitcasted integers.
This is required as sometimes we are not sure if a value is used
as a float or an integer.  In the case of an integer, the storage
and compilation by the drivers could cause the data to change.
2018-11-05 04:48:29 -08:00
Brett Lawson
92a79d5bd0 vulkan: Added some missing needed extensions. 2018-11-05 04:47:19 -08:00
Brett Lawson
e28740a3ad vulkan: A bunch of surface management changes...
-Added better support for 3D and CUBEMAP textures.
-Improved debug naming of surface/surfaceview objects.
-Added regeneration for framebuffers and views on surface update.
When the a surface gets upgraded internally, the framebuffer and
imageview objects still pointed to the old images rather than the
new ones.
2018-11-05 04:46:14 -08:00
Brett Lawson
4b5f20a272 vulkan: Fixed issue with surface swizzles being lost in error.
We were masking away the swizzle from color buffer base addresses
for no apparent reason...
2018-11-05 04:37:49 -08:00
Brett Lawson
c53ccbb947 vulkan: Added support for DISABLED special op.
This removes all color buffers from a draw if the special op
is set to disable color writes.  This is used by depth-only
clears sometimes.
2018-11-05 04:37:24 -08:00
Brett Lawson
6c1aa9b0df vulkan: Improved shader debug dumping names and formats. 2018-11-05 04:37:02 -08:00
Brett Lawson
30cf2f9f4e spirv: Updated loops to track pixel state using the stack.
This fixes an issue where loops being entered whenever the pixel
state is already false would cause the state to be incorrect
upon leaving the loop section.
2018-11-05 04:34:54 -08:00
Brett Lawson
6629ba0095 spirv: Updated KILL instructions to exit shaders.
This appears to be required as Geometry shaders use the KILL
instructions to check that the ringbuffers do not overflow.
2018-11-05 04:34:53 -08:00
Brett Lawson
119e221152 vulkan: Added support for Occlusion Queries. 2018-11-05 04:34:52 -08:00
Brett Lawson
0b231ed79f spirv: Allowed more cases of fragment coordinate locations. 2018-11-05 04:33:52 -08:00
Brett Lawson
779e789ad0 spirv: Improved CBUFFER structure generation.
This makes the GLSL generated from the SPIRV easier to parse.
Previously, the structure name conflict would cause the names
to become CBUFFER_1_1_1_1 etc...
2018-11-05 04:33:51 -08:00
Brett Lawson
24ddb22114 spirv: Improved OMOD_D2 implementation.
This is more in line with the ISA description, and would be
ever so slightly faster.
2018-11-05 04:33:50 -08:00
Brett Lawson
02d85148d1 spirv: Added support for the GET_GRADIENTS instructions. 2018-11-05 04:28:45 -08:00
Brett Lawson
6320347f64 libgpu: Fixed some latte formats being described incorrectly. 2018-11-05 04:28:44 -08:00
Brett Lawson
6dd58668fb cafe/nn_temp: Fixed static data not being registered. 2018-11-05 04:28:44 -08:00
Brett Lawson
5348f608ab spirv: Updated CUBE instruction implementation.
Literally have no clue where I got this implementation from, but
it appears to work correctly...  Doesn't match any examples I
have, or have seen....
2018-11-05 04:28:43 -08:00
Brett Lawson
32596bfefe cafe/coreinit: Fixed MPTaskQueue locking up due to missing atomics. 2018-11-05 04:28:43 -08:00
Brett Lawson
156afec604 cafe/gx2: Fixed incorrect color buffer tile type being configured. 2018-11-05 04:27:33 -08:00
Brett Lawson
df97141fbe cafe/gx2: Implemented GX2GetMainCoreId function. 2018-11-05 04:27:33 -08:00
Brett Lawson
cfdf667a2d cafe/gx2: Fixed geometry shader uniform block ids being cleared.
The ordering of the memcpy and the ID set was inverted.  Clearing
the id after it had already been set.
2018-11-05 04:27:32 -08:00
Brett Lawson
e046673f48 cafe/gx2: Fixed registers not being initialized to 0. 2018-11-05 04:27:32 -08:00
Brett Lawson
002a5bb7bb cafe/gx2: Added support for OnFlip event callbacks. 2018-11-05 04:27:31 -08:00
Brett Lawson
b01fe26932 cafe/gx2: Added detection for unsupported event callbacks. 2018-11-05 04:27:31 -08:00
Brett Lawson
d580667fea cafe/gx2: Correctly subtract sample counts in GX2 occlusion results.
When reading occlusion results, technically there is meant to be
two fetches of the total sample counts.  Then a subtraction of the
two is used to determine the specific queries counts.
2018-11-05 04:27:30 -08:00
Brett Lawson
6b00b500e0 vulkan: Remove pragma optimizes included in error. 2018-11-05 04:27:30 -08:00
Brett Lawson
08ae140c73 vulkan: Improved support for SET/CLEAR logic ops. 2018-11-05 04:27:29 -08:00
Brett Lawson
945b2662e0 vulkan: Consistently use front triangles for polygon offsets. 2018-11-05 04:23:45 -08:00
Brett Lawson
417655c3c8 spirv: Fixed incorrect implementation of SIN/COS. 2018-11-05 04:23:44 -08:00