Rodrigo Locatti
efbd57f6e3
gl_state: Use std::array::fill instead of std::fill
Co-Authored-By: Mat M. <mathew1800@gmail.com>
6 years ago
ReinUsesLisp
b157ce5bbd
gl_state: Move dirty checks to individual apply calls instead of Apply
This requires removing constness from some methods, but for consistency
it's removed in all methods.
6 years ago
ReinUsesLisp
385122dc97
gl_state: Remove ApplyDefaultState
OpenGL has defaults values we can trust. Remove these.
6 years ago
ReinUsesLisp
9651fece1f
gl_state: Change SetDefaultViewports to use default constructor
6 years ago
ReinUsesLisp
3cb079e85f
gl_state: Minor style changes
6 years ago
ReinUsesLisp
941e2036ca
gl_state: Remove unused Citra TextureUnits
6 years ago
ReinUsesLisp
f15e087454
gl_state: Move initializers from constructor to class declaration
6 years ago
ReinUsesLisp
1589a146ed
shader/node: Unpack bindless texture encoding
Bindless textures were using u64 to pack the buffer and offset from
where they come from. Drop this in favor of separated entries in the
struct.
Remove the usage of std::set in favor of std::list (it's not std::vector
to avoid reference invalidations) for samplers and images.
6 years ago
ReinUsesLisp
902431adce
maxwell_3d/kepler_compute: Remove unused arguments in GetTexture
6 years ago
ReinUsesLisp
cea1214e5a
video_core/textures: Remove unused index entry in FullTextureInfo
6 years ago
ReinUsesLisp
cf7206fe7b
maxwell_3d: Remove unused method GetStageTextures
6 years ago
Fernando Sahmkow
5305d723c2
Video_Core: Implement texture format E5B9G9R9_SHAREDEXP.
This commit implements the E5B9G9R9 Texture format into the general
system and OpenGL backend.
6 years ago
ReinUsesLisp
15a52a86bd
maxwell_3d: Silence implicit conversion warnings
While we are at it, unify types for dirty reg pointers.
6 years ago
ReinUsesLisp
7a1f37bef3
rasterizer_accelerated: Add intermediary for GPU rasterizers
Add an intermediary class that implements common functions across GPU
accelerated rasterizers. This avoids code repetition on different
backends.
6 years ago
ReinUsesLisp
2140a0cadd
astc: Silence implicit conversion warnings
6 years ago
Fernando Sahmkow
ab86995cb9
Shader_IR: Address Feedback.
6 years ago
Fernando Sahmkow
094fa9ec6c
Shader_IR: Clang format
6 years ago
ReinUsesLisp
aab971bda3
gl_shader_cache: Implement locker variants invalidation
6 years ago
ReinUsesLisp
c37c37d4a2
gl_shader_disk_cache: Store and load fast BRX
6 years ago
ReinUsesLisp
9e0cf6034f
const_buffer_locker: Minor style changes
6 years ago
ReinUsesLisp
063d3e22d6
gl_shader_decompiler: Move entries to a separate function
6 years ago
Fernando Sahmkow
fb98059d10
Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.
6 years ago
Fernando Sahmkow
8081235ddd
Shader_IR: Correct typo in Consistent method.
6 years ago
Fernando Sahmkow
4168b287c9
Shader_IR: allow lookup of texture samplers within the shader_ir for instructions that don't provide it
6 years ago
Fernando Sahmkow
683008bc59
Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.
6 years ago
Fernando Sahmkow
2baf1e1ed4
Shader_Cache: setup connection of ConstBufferLocker
6 years ago
Fernando Sahmkow
d4da704ac5
VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders.
6 years ago
Fernando Sahmkow
7d24270b5f
Shader_IR: Implement BRX tracking.
6 years ago
Lioncash
f1443d2b41
shader_bytecode: Make Matcher constexpr capable
Greatly shrinks the amount of generated code for GetDecodeTable().
Collapses an assembly output of 9000+ lines down to ~3621 with Clang,
and 6513 down to ~2616 with GCC, given it's now allowed to construct all
the entries as a sequence of constant data.
6 years ago
Lioncash
1f2a584d55
shader_ir: Use std::array with pair instead of unordered_map
Given the overall size of the maps are very small, we can use arrays of
pairs here instead of always heap allocating a new map every time the
functions are called. Given the small size of the maps, the difference
in container lookups are negligible, especially given the entries are
already sorted.
6 years ago
Lioncash
0a71f5d6f4
video_core/shader: Resolve instances of variable shadowing
Silences a few -Wshadow warnings.
6 years ago
Fernando Sahmkow
fdf9bbf112
Shader_Ir: Fix TLD4S from using a component mask.
TLD4S always outputs 4 values, the previous code checked a component
mask and omitted those values that weren't part of it. This commit
corrects that and makes sure all 4 values are set.
6 years ago
ReinUsesLisp
9b7ec9d1a0
shader_ir/memory: Ignore global memory when tracking fails
Ignore global memory operations instead of invoking undefined behaviour
when constant buffer tracking fails and we are blasting through asserts,
ignore the operation.
In the case of LDG this means filling the destination registers with
zeroes; for STG this means ignore the instruction as a whole.
The default behaviour is still to abort execution on failure.
6 years ago
ReinUsesLisp
94d32c3cd2
maxwell_3d: Reduce FlushMMEInlineDraw logging to Trace
6 years ago
Lioncash
4e7dbc49f8
video_core/shader/ast: Make ShowCurrentState() and SanityCheck() const member functions
These can also trivially be made const member functions, with the
addition of a few consts.
6 years ago
Lioncash
4f4bfa0448
video_core/shader/ast: Make ASTManager::Print a const member function
Given all visiting functions never modify the nodes, we can trivially
make this a const member function.
6 years ago
Lioncash
98d64c9a04
video_core/shader/ast: Make ExprPrinter members private
This member already has an accessor, so there's no need for it to be
public.
6 years ago
Lioncash
c5c0af5aa7
video_core/shader/ast: Make Indent() return a string_view
The returned string is simply a substring of our constexpr tabs
string_view, so we can just use a string_view here as well, since the
original string_view is guaranteed to always exist.
Now the function is fully non-allocating.
6 years ago
Lioncash
3025e2110c
video_core/shader/ast: Make Indent() private
It's never used outside of this class, so we can narrow its scope down.
6 years ago
Lioncash
4f14102a05
video_core/shader/ast: Rename Ident() to Indent()
This can be confusing, given "ident" is generally used as a shorthand
for "identifier".
6 years ago
Lioncash
1a00cb5680
video_core/shader/ast: Make use of fmt where applicable
Makes a few strings nicer to read and also eliminates a bit of string
churn with operator+.
6 years ago
Lioncash
c4a874f338
vk_shader_decompiler: Mark operator() function parameters as const references
These parameters aren't actually modified in any way, so they can be
made const references.
6 years ago
Fernando Sahmkow
9dc2027153
Fermi2D: Use a different formula for delimiting blit areas.
6 years ago
Lioncash
2be8e9de58
video_core/macro_interpreter: Make definitions of most private enums/unions hidden
This allows the implementation of these types to change without
requiring a rebuild of everything that includes the macro interpreter
header.
6 years ago
Fernando Sahmkow
ea7b91dbf9
Fermi2D: limit blit area to only available area
Normaly OpenGL does not care if the areas exceed the texture regions but
other backends such as Vulkan do care about the limits of this areas.
This PR crops the areas of the blit in order that they don't surpass the
limits of the textures. This should help Vulkan and faulty OpenGL
drivers
6 years ago
Lioncash
e08002310a
video_core/surface: Add missing break in PixelFormatFromTextureFormat()
Prevents fallthrough into the following case.
6 years ago
Lioncash
51f34a27e9
vk_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator()
This would previously result in NeverExecute and UnusedIndex being
treated as regular predicates.
6 years ago
Lioncash
304cee41c4
gl_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator()
This would previously result in NeverExecute and UnusedIndex being
treated as regular predicates.
6 years ago
Lioncash
1a9c05b197
texture_cache: Avoid unnecessary surface copies within PickStrategy() and TryReconstructSurface()
We can take these by const reference and avoid making unnecessary
copies, preventing some atomic reference count increments and
decrements.
6 years ago
Lioncash
271d07c2e7
control_flow: Silence truncation warnings
This can be trivially fixed by making the input size a size_t.
CFGRebuildState's constructor parameter is already a std::size_t, so
this just makes the size type fully conform with it.
6 years ago