| Age | Commit message (Collapse) | Author |
|
As fetching command list headers and and the list of command headers is a fixed 1:1 relation now, they can be implemented within a single call.
This cleans up the Step() logic quite a bit.
|
|
Fetching every u32 from memory leads to a big overhead. So let's fetch all of them as a block if possible.
This reduces the Memory::* calls by the dma_pusher by a factor of 10.
|
|
A memory manager object handles the memory allocations for a device. It
allocates chunks of Vulkan memory objects and then suballocates.
|
|
vk_resource_manager: Implement fence and command buffer allocator
|
|
renderer_opengl: respect the sRGB colorspace for the screenshot feature
|
|
Avoids the use of the global accessor in favor of explicitly making the
system a dependency within the interface.
|
|
core_timing: De-globalize core_timing facilities
|
|
Gets rid of the largest set of mutable global state within the core.
This also paves a way for eliminating usages of GetInstance() on the
System class as a follow-up.
Note that no behavioral changes have been made, and this simply extracts
the functionality into a class. This also has the benefit of making
dependencies on the core timing functionality explicit within the
relevant interfaces.
|
|
Previously, we were completely ignoring for screenshots whether the game uses RGB or sRGB.
This resulted in screenshot colors that looked off for some titles.
|
|
There are some potential edge cases where gl_state may fail to track the
state if a related state changes while the toggle is disabled or it
didn't change. This addresses that.
|
|
gl_rasterizer_cache: Get rid of variable shadowing
|
|
gl_shader_decompiler: Re-implement TLDS lod
|
|
|
|
Handles a pool of resources protected by fences. Manages resource
overflow allocating more resources.
This class is intended to be used through inheritance.
|
|
CommitFence iterates a pool of fences until one is found. If all fences
are being used at the same time, allocate more.
|
|
A fence watch is used to keep track of the usage of a fence and protect
a resource or set of resources without having to inherit from their
handlers.
|
|
Fences take ownership of objects, protecting them from GPU-side or
driver-side concurrent access. They must be commited from the resource
manager. Their usage flow is: commit the fence from the resource
manager, protect resources with it and use them, send the fence to an
execution queue and Wait for it if needed and then call Release. Used
resources will automatically be signaled when they are free to be
reused.
|
|
VKResource is an interface that gets signaled by a fence when it is free
to be reused.
|
|
vulkan: Add dependencies and device abstraction
|
|
|
|
glCopyImageSubData does not support different formats.
|
|
Implement BGRA8 framebuffer format
|
|
VKDevice contains all the data required to manage and initialize a
physical device. Its intention is to be passed across Vulkan objects to
query device-specific data (for example the logical device and the
dispatch loader).
|
|
We already store a reference to the system instance that the renderer is
created with, so we don't need to refer to the system instance via
Core::System::GetInstance()
|
|
core_timing: Rename CoreTiming namespace to Core::Timing
|
|
kepler_compute: Fixup assert and rename the engine
|
|
|
|
Avoids shadowing the members of the struct itself, which results in a
-Wshadow warning.
|
|
This file is intended to be included instead of vulkan/vulkan.hpp. It
includes declarations of unique handlers using a dynamic dispatcher
instead of a static one (which would require linking to a Vulkan
library).
|
|
|
|
Places all of the timing-related functionality under the existing Core
namespace to keep things consistent, rather than having the timing
utilities sitting in its own completely separate namespace.
|
|
Fix incorrect value for CC bit in IADD
|
|
Corrected F2I None mode to RoundEven.
|
|
shader_ir: Clean texture management code
|
|
|
|
|
|
When I originally added the compute assert I used the wrong
documentation. This addresses that.
The dispatch register was tested with homebrew against hardware and is
triggered by some games (e.g. Super Mario Odyssey). What exactly is
missing to get a valid program bound by this engine requires more
investigation.
|
|
|
|
gl_rasterizer: Implement a more accurate fermi 2D copy.
|
|
|
|
These parameters were declared as constants and passed to glTextureView
but then they were removed on a rabase. This addresses that mistake.
|
|
This was originally included because texture operations returned a vec4.
These operations now return a single float and the F4 prefix doesn't
mean anything.
|
|
Previous code relied on GLSL parameter order (something that's always
ill-formed on an IR design). This approach passes spatial coordiantes
through operation nodes and array and depth compare values in the the
texture metadata. It still contains an "extra" vector containing generic
nodes for bias and component index (for example) which is still a bit
ill-formed but it should be better than the previous approach.
|
|
shader/track: Add a more permissive global memory tracking
|
|
|
|
- This is a blit, use the blit registers.
|
|
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
|
|
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
|
|
|
|
|