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
Brett Lawson
52402297f7
vulkan: Added blit optimization for surface updating.
...
This attempts to optimize image usage such that we will fetch
new data out of our local surface cache using a blit rather
than requiring the data to be written to/from the backing
memory cache buffers first.
2018-11-05 04:23:44 -08:00
Brett Lawson
55932680f3
vulkan: Use range combiner when reading surface data.
...
This allows us to avoid copying slices which we already have the
latest data available for (we previously would copy the whole
range if even a single slice was out of date).
2018-11-05 04:23:43 -08:00
Brett Lawson
1d88a18d5a
vulkan: Added support for compatible surface consolidation.
...
Specifically, this allows games which use varying slices
of a Surface to have one backing image in vulkan, rather
than multiple images. If we see an image with depth 9
after previously having a compatible image with depth 3,
we upgrade the existing image rather than generating a
whole new surface.
2018-11-05 04:23:43 -08:00
Brett Lawson
c3fec4a7b1
vulkan: Added unique identifier to surface debug names.
...
Previously it was impossible to tell the difference between
two variants of the same surface in the Vulkan debugging
tools without digging deep into the allocated memory.
2018-11-05 04:23:42 -08:00
Brett Lawson
44e67b503e
vulkan: Fix slice selection for 3D textures.
2018-11-05 04:23:42 -08:00
Brett Lawson
4352bcfd7f
vulkan: Better unified memory/surface management.
...
This also adds support for surface slice selection when
rendering to a color buffer and sampling from a texture.
2018-11-05 04:23:41 -08:00
Brett Lawson
8e2e9bbda5
vulkan: Fixed incorrect information in a comment.
2018-11-05 04:23:41 -08:00
Brett Lawson
13f6ad0e94
spirv: Centralized generic shader prolog generation.
2018-11-05 04:23:40 -08:00
Brett Lawson
dca65ed043
vulkan: Improved descriptor set management.
...
This is primarily to allow us to fully reset descriptors.
This is important as the validation layers were getting
confused about which resources were used in each frame.
2018-11-05 04:23:40 -08:00
Brett Lawson
cc8cedc87e
vulkan: Fixed corruption in staging buffer management.
...
This one was quite challenging to find. It only appears when
lots of staging buffers are used, and causes memory to be
read/written strangely incorrectly.
2018-11-05 04:23:39 -08:00
Brett Lawson
3655aef9ff
vulkan: Fixed hashing not playing nicely with murmur.
2018-11-05 04:23:39 -08:00
Brett Lawson
91720da92a
vulkan: Added support for geometry shader based RECTLIST rendering.
2018-11-05 04:23:38 -08:00
Brett Lawson
6e8bc62f2c
vulkan: Added support for sampling UINT textures.
2018-11-05 04:23:38 -08:00
Brett Lawson
87fcc7fe72
vulkan: Added support for additional surface tile modes.
2018-11-05 04:23:37 -08:00
Brett Lawson
ce6d6860d6
vulkan: Added faked support for MSAA surface types.
...
Note that we don't actually back these surfaces with host-side
MSAA surfaces, but rather pretend like we are providing them.
2018-11-05 04:23:37 -08:00
Brett Lawson
de70d1256e
vulkan: Fix some minor surface format inconsistencies.
2018-11-05 04:23:36 -08:00
Brett Lawson
3a259c5c44
vulkan: Remove unused utility function getSurfaceFormat.
2018-11-05 04:23:36 -08:00
Brett Lawson
47955fd976
cafe/gx2: Implement some modes of GX2SetSpecialState
2018-11-05 04:23:35 -08:00
Brett Lawson
2c4639a13f
vulkan: Added support for viewport control registers.
2018-11-05 04:23:35 -08:00
James Benton
7013c1d353
cafe/gx2: Rewrite GX2Init{Color,Depth}BufferRegs.
2018-11-05 04:23:34 -08:00
Brett Lawson
bb250c9c71
spirv: Implemented support for the LD instruction.
2018-11-05 04:23:34 -08:00
Brett Lawson
37d1201c5b
vulkan: Move tiling alignment into the Driver.
...
This is required to ensure that surfaces that behave the same
actually get grouped together. Rather than accidentally
splitting them.
2018-11-05 04:23:33 -08:00
Brett Lawson
681058f089
gpu: Fix ringbuffer wakes getting lost sometimes.
2018-11-05 04:23:33 -08:00
Brett Lawson
f042fb6193
vulkan: Added names to vulkan objects for easier debugging.
2018-10-30 04:35:22 -07:00
Brett Lawson
99524a4cf4
vulkan: Fixed memory writes not happening on retire.
...
They were instead being written as soon as we processed
the buffer, which could confuse games into using resources
while the GPU still technically owns them.
2018-10-26 04:54:57 -07:00
Brett Lawson
b174ced840
spirv: Fixed minor code-smell in generator.
2018-10-26 04:54:57 -07:00
Brett Lawson
92035e13e0
vulkan: Improved surface manager and unified memory system.
2018-10-26 04:54:57 -07:00