| Age | Commit message (Collapse) | Author |
|
Abstract the current OpenGL implementation into the VideoCommon
namespace and reimplement it on top of that. Doing this avoids repeating
code and logic in the Vulkan implementation.
|
|
Use a custom cache instead of relying on a ranged cache.
|
|
Instead of waiting immediately for executed commands, defer the query
until the guest CPU reads it. This way we get closer to what the guest
program is doing.
To archive this we have to build a dependency queue, because host APIs
(like OpenGL and Vulkan) use ranged queries instead of counters like
NVN.
Waiting for queries implicitly uses fences and this requires a command
being queued, otherwise the driver will lock waiting until a timeout. To
fix this when there are no commands queued, we explicitly call glFlush.
|
|
|
|
Keep track of the queued OpenGL commands that can signal a fence if
waited on. As a side effect, we avoid calls to glFlush when no commands
are queued.
|
|
Implements GL_SAMPLES_PASSED by waiting immediately for queries.
|
|
|
|
GPU: Refactor queries implementation and correct GPU Clock.
|
|
|
|
gl_rasterizer: Implement GL_POINT_SPRITE
|
|
|
|
|
|
maxwell_3d: Fix stencil back mask
|
|
gpu_thread: Use MPSCQueue for GPU commands.
|
|
- Necessary for multiple service threads.
|
|
|
|
maxwell_to_gl: Implement R8G8_USCALED
|
|
shader/shift: Implement SHF
|
|
gl_rasterizer: Fix instanced draw arrays
|
|
|
|
|
|
Removes bounds checking from "texceptions" instances.
|
|
shader/bfi: Implement register-constant buffer variant
|
|
OpenGL core defaults to GL_POINT_SPRITE, meanwhile on OpenGL
compatibility we have to explicitly enable it. This fixes
gl_PointCoord's behaviour.
|
|
shader/arithmetic: Implement FCMP
|
|
yuzu: Implement Vulkan frontend
|
|
|
|
|
|
Partially implement Indexed samplers in general and specific code in GLSL
|
|
Shifts a pair of registers to the right and returns the low register.
|
|
Shifts a pair of registers to the left and returns the high register.
|
|
shader/memory: Implement LDL.S16, LDS.S16, STL.S16 and STS.S16
|
|
glDrawArrays was being used when the draw had a base instance specified.
This commit removes the draw parameters abstraction and fixes the
mentioned issue.
|
|
shader/memory: Implement ATOM.ADD
|
|
Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing
bits on Vulkan initialization.
|
|
|
|
|
|
|
|
Delay buffer destruction some extra frames to avoid destroying buffers
that are still being used from older frames. This happens on Nvidia's
driver with mailbox.
|
|
texture_cache/surface_base: Fix layered break down
|
|
gl_texture_cache: Silence implicit sign cast warnings
|
|
gl_shader_decompiler: Remove UNIMPLEMENTED for gl_PointSize
|
|
This was implemented by a previous commit and it's no longer required.
|
|
|
|
It's the same as the variant that was implemented, but it takes the
operands from another source.
|
|
Compares the third operand with zero, then selects between the first and
second.
|
|
Layered break downs was passing "layer" as a "depth" parameter. This
commit addresses that.
|
|
This addresses the long standing issue of compatibility vs. core
profiles on OpenGL, properly implementing depth vs. stencil sampling
depending on the texture swizzle.
|
|
ATOM operates atomically on global memory. For now only add ATOM.ADD
since that's what was found in commercial games.
This asserts for ATOM.ADD.S32 (handling the others as unimplemented),
although ATOM.ADD.U32 shouldn't be any different.
This change forces us to change the default type on SPIR-V storage
buffers from float to uint. We could also alias the buffers, but it's
simpler for now to just use uint. While we are at it, abstract the code
to avoid repetition.
|
|
|