Brett Lawson
3ad6ab5ba1
libgpu: Fixed surface tiler incorrectly handling multiple slices.
2018-10-26 04:54:57 -07:00
Brett Lawson
88cadad0c4
common: Added support for randomized data hashes.
2018-10-26 04:54:57 -07:00
Brett Lawson
0dfc0ac2b5
libgpu: Added configuration to generate debuggable shaders.
...
For SPIRV decompilation, it is required that we use VertexIndex
rather than VertexId as VertexId is GLSL-only. This does cause
a behaviour change, but is rarely relevant.
2018-10-26 04:54:57 -07:00
Brett Lawson
e2c98a07ab
spirv: Fixed errors causing GET_TEXTURE_INFO to fail to compile.
2018-10-26 04:54:56 -07:00
Brett Lawson
c8b00fcd4e
spirv: Correctly cast types being sent for masked writes.
2018-10-26 04:54:56 -07:00
Brett Lawson
1da2a520af
spirv: Fixed texture constant offsets for array images.
...
You cannot use constant offset with the array levels.
2018-10-26 04:54:55 -07:00
Brett Lawson
cdab63f4b2
spirv: Fix vertex shader texture fetches.
...
We previously did not force LOD zero when in a shader
which is not capable of implicit LOD.
2018-10-26 04:54:55 -07:00
Brett Lawson
cfedd9783b
vulkan: Fix issue with swapchains being rendered before ready.
...
We need to wait at least a single frame after a swap chain
is created before we start returning it to the rendering
engine at the top level.
2018-10-26 04:54:54 -07:00
Brett Lawson
5e23f159f0
vulkan: Handle register synchronization requests.
...
This is required for pm4 capture to work appropriately.
2018-10-26 04:54:54 -07:00
Brett Lawson
1deec7dd99
spirv: Fix bug with ELSE blocks in nested if groups.
2018-10-26 04:54:53 -07:00
Brett Lawson
79930b0a6f
vulkan: Refactor surface management to handle varying widths.
...
Multiple surfaces with the same pitch but different widths are
all compatible with each other. It is necessary to ensure that
they are managed together.
2018-10-26 04:54:53 -07:00
Brett Lawson
1e86f9f07c
vulkan: Fixed issue with incorrect surface transition.
...
When initializing the swap chain buffers, we inadvertently
were keeping the surface in general layout when clearing
instead of making it a destination first.
2018-10-26 04:54:52 -07:00
Brett Lawson
d59384c9cd
vulkan: Fixed issue pointer to an out-of-scope object.
2018-10-26 04:54:52 -07:00
Brett Lawson
94815177b1
spirv: Added support for outputting computed z.
2018-10-26 04:54:51 -07:00
Brett Lawson
0250cebafc
decafsdl: Use a separate vulkan queue for the driver.
...
Usage of a singular queue from two places requires external
synchronization. It's far more prudent to just run the driver
in a separate queue context instead and let the driver work
it out.
2018-10-26 04:54:51 -07:00
Brett Lawson
b7895f90ba
vulkan: Added support for disabling z-clipping.
2018-10-26 04:54:50 -07:00
Brett Lawson
6cdcb0d267
spirv: Implemented support for front facing variable.
2018-10-26 04:54:50 -07:00
Brett Lawson
25e22f1615
decafsdl: Updated vulkan to use VulkanHPP dynamic loader.
...
We previously manually fetched non-standard functions and invoked
them using the standard CPP API. This method is far nicer.
2018-10-26 04:54:49 -07:00
Brett Lawson
2cb048c68c
spirv: Implemented MOVA_INT instruction.
2018-10-26 04:54:49 -07:00
Brett Lawson
fbbc316faa
decafsdl: Fixed incorrect descriptor pool setup.
...
This broke on newer versions of the Vulkan SDKs validators.
These did not fail on the driver as the driver seems to emulate
these objects on the CPU, but it is technically an error still.
2018-10-26 04:54:49 -07:00
Brett Lawson
6a3033ce79
vulkan: Improved handling of disabled shader stages.
2018-10-26 04:54:48 -07:00
Brett Lawson
1908688c92
gpu: Added handling of COPY_DW command.
...
This required implementing special handling for some register
cases where the register is actually read from memory at draw
time.
2018-10-26 04:54:48 -07:00
Brett Lawson
7232741631
vulkan: Added detection of stream-out draws.
2018-10-26 04:54:47 -07:00
Brett Lawson
ce7782f04e
gx2: Fixed stream out incorrectly configuring context packet.
2018-10-26 04:54:47 -07:00
Brett Lawson
cf9bc874e0
opengl: Fixed force_sync mode running at INF FPS.
2018-10-26 04:54:46 -07:00
Brett Lawson
b878d1a3e3
gpu: Fixed compiler warning in pm4 processor.
2018-10-26 04:54:46 -07:00
Brett Lawson
6b60eb8e24
spirv: Fixed incorrect texture sampling argument validation.
2018-10-26 04:54:45 -07:00
Brett Lawson
6f8a2af994
vulkan: Implemented unified memory management system.
2018-10-26 04:54:45 -07:00
James Benton
ea20f3fe44
Oops! Add missing files from previous commit.
2018-10-19 11:52:35 +01:00
James Benton
9fb2911877
cafe/gx2: Implement GX2DrawStreamOut.
2018-10-19 11:43:24 +01:00
James Benton
de8fad6812
cafe/hle: Add support for calling constructors of registered data symbols.
2018-10-19 11:43:24 +01:00
Brett Lawson
04564c30ff
vulkan: Fixed some slight formatting errors.
2018-10-18 02:44:35 -07:00
Brett Lawson
eb6c779bf7
vulkan: Update lastHashedIndex if hashing matches on data buffers.
2018-10-18 02:44:34 -07:00
Brett Lawson
cc34cc2db0
vulkan: Fix surfaces being rehashed more than needed.
2018-10-18 02:44:34 -07:00
Brett Lawson
d0600bb3a6
spirv: Implemented GET_TEXTURE_INFO instruction.
2018-10-18 02:44:34 -07:00
Brett Lawson
3b4c275502
spirv: Fixed some compiler warnings.
2018-10-18 02:44:34 -07:00
Brett Lawson
6e28e32ca0
spirv: Corrected issue with addressing register behaviour.
2018-10-18 02:44:34 -07:00
Brett Lawson
b8cb4d1e16
spirv: Implemented MULLO instructions.
2018-10-18 02:44:34 -07:00
James Benton
2f729064b9
cafe/gx2: Fix GX2InitSampler.
2018-10-18 09:47:26 +01:00
James Benton
668761e27f
Fix pm4 type0 register id.
2018-10-18 09:16:35 +01:00
James Benton
7918bfe4ac
Move cafe::nn::Result to nn::Result.
2018-10-18 09:16:35 +01:00
Brett Lawson
bbefc6cfd8
spirv: Implemented missing FLOOR instruction.
2018-10-17 10:39:15 -07:00
Brett Lawson
a4c4d7ee8f
vulkan: Handle partially premultiplied targets.
...
latte supports having premultiplied alpha specified on a
per-target basis, but Vulkan does it globally. We have to
fix this in the shader by premultiplying the shader outputs
of non-premultiplied targets if premultiplied alpha is
enabled globally.
2018-10-17 10:31:57 -07:00
Brett Lawson
99e2036195
vulkan: Use config to enable/disable vulkan debug features.
2018-10-17 09:52:39 -07:00
Brett Lawson
499b5cde4d
vulkan: Added assertions for use of unsupported PM4 commands.
2018-10-17 09:40:13 -07:00
Brett Lawson
c350161ab4
vulkan: Cleaned up sampler generation code.
2018-10-17 09:38:37 -07:00
Brett Lawson
1e2fd63b78
vulkan: Elide illegal draw commands.
...
This will ignore illegal draw commands, such as commands that
use attribute buffers that are not bound or use textures which
are not bound.
2018-10-17 09:36:24 -07:00
Brett Lawson
67330b04ae
spirv: Correctly incorrect unsigned norm decoding.
...
We were incorrectly dividing by the fieldMask/2 instead of just
the fieldMask itself (copy paste fail from signed handling).
2018-10-17 03:08:41 -07:00
Brett Lawson
5abd5f5d20
spirv: Fixed attribute buffer elements not being decoded.
...
We were incorrectly using the input element count to process the
output elements. If there was a miss-match, some elements were not
decoded.
2018-10-17 03:08:00 -07:00
Brett Lawson
0bc8209980
spirv: Fixed issue where input buffers W value defaulted to 0.
...
Register loading from input buffers is supposed to fill components
not specified in the attribute buffer as 0001, we were filling it
with 0000.
2018-10-17 02:48:21 -07:00