| Age | Commit message (Collapse) | Author |
|
texture_cache: Implement layered framebuffer attachments
|
|
surface_base: Implement texture buffer flushes
|
|
maxwell_3d: Unify draw methods
|
|
gl_rasterizer: Use the least generic OpenGL draw function possible
|
|
Layered framebuffer attachments is a feature that allows applications to
write attach layered textures to a single attachment. What layer the
fragments are written to is decided from the shader using gl_Layer.
|
|
Implement downloads to guest memory from texture buffers on the generic
cache and OpenGL.
|
|
Pass instanced state of a draw invocation as an argument instead of
having two separate virtual methods.
|
|
|
|
|
|
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.
|
|
|
|
This may help some implementations.
|
|
gl_rasterizer: Implement GL_POINT_SPRITE
|
|
maxwell_to_gl: Implement R8G8_USCALED
|
|
gl_rasterizer: Fix instanced draw arrays
|
|
|
|
|
|
OpenGL core defaults to GL_POINT_SPRITE, meanwhile on OpenGL
compatibility we have to explicitly enable it. This fixes
gl_PointCoord's behaviour.
|
|
Partially implement Indexed samplers in general and specific code in GLSL
|
|
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
|
|
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.
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gl_shader_decompiler: Fix decompilation of condition codes
|
|
This fixes template resolution considering GLboolean an integer instead
of a bool.
|
|
gl_state: Implement PROGRAM_POINT_SIZE
|
|
shader/memory: Implement ATOMS.ADD.U32
|
|
Use Visit instead of reimplementing it. Fixes unimplemented negations
for condition codes.
|
|
gl_texture_cache: Minor fixes and style changes
|
|
|
|
renderer_opengl/utils: Forward declare private structs
|
|
For gl_PointSize to have effect we have to activate
GL_PROGRAM_POINT_SIZE.
|
|
Nothing from these headers are used, so they can be removed.
|
|
Keeps the definitions hidden and allows changes to the structs without
needing to recompile all users of classes containing said structs.
|