| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Don't emut copies, especially not for data, which is used once. They just end in a huge GPU overhead.
|
|
|
|
Please see https://github.com/citra-emu/citra/pull/3666 for more details.
|
|
Gets the class out of the global namespace.
|
|
Makes the global a member of the RendererBase class. We also change this
to be a reference. Passing any form of null pointer to these functions
is incorrect entirely, especially given the code itself assumes that the
pointer would always be in a valid state.
This also makes it easier to follow the lifecycle of instances being
used, as we explicitly interact the renderer with the rasterizer, rather
than it just operating on a global pointer.
|
|
We can just assign to the members directly in these cases.
|
|
|
|
Don't try to configure the color buffer if it is not being cleared, it may not be completely valid at this point.
|
|
|
|
|
|
|
|
|
|
|
|
This should help a bit with GPU performance once we're GPU-bound.
|
|
Only independent blending on render target 0 is implemented for now.
This fixes the elongated squids in Splatoon 2's boot screen.
|
|
All tested games that use a single texture show no regression.
Only Texture2D textures are supported right now, each shader gets its own "tex_fs/vs/gs" sampler array to maintain independent textures between shader stages, the textures themselves are reused if possible.
|
|
|
|
The stream buffer is where all the vertex data is copied, some games require this to be much bigger than the 4 MB we used to have.
|
|
|
|
The vertex arrays will be copied to the stream buffer one after the other, and the attributes will be set using the ARB_vertex_attrib_binding extension.
yuzu now thus requires OpenGL 4.3 or the ARB_vertex_attrib_binding extension.
|
|
|
|
|
|
|
|
|
|
The bindpoints will now be dynamically calculated based on the number of buffers used by the previous shader stage.
|
|
|
|
We're going to need the shader generator to give us a mapping of the actual used const buffers to properly bind them to the shader.
|
|
|
|
|
|
|
|
|
|
|
|
Each Maxwell shader stage can have an arbitrary number of textures, but we're limited to a certain number in OpenGL. We try to only use the minimum amount of host textures by not keeping a 1:1 relation between guest texture ids and host texture ids, ie, guest texture id 8 can be host texture id 0 if it's the only texture used in the guest shader program.
This mapping will have to be passed to the shader decompiler so it can rewrite the texture accesses.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also move the implementation of CurrentConfig to the cpp file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A few registers had names such as "count" or "number" when they actually
contained the maximum (that is, count - 1). This can easily lead to hard
to notice off by one errors.
|
|
|
|
Fixes #1938
|
|
|
|
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Also implement D0 LUT enable.
|
|
|
|
|
|
- Gets us LUT interpolation for free.
- Some older Intel GPU drivers did not support the big UBOs needed to store the LUTs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This removes explicit checks sprinkled all over the codebase to instead
just have the SW rasterizer expose an implementation with no-ops for
most operations.
|
|
|
|
The support for GL_ARB_explicit_uniform_location is not that good
(53% according to http://feedback.wildfiregames.com/report/opengl/feature/GL_ARB_explicit_uniform_location).
This fix the shader compilation on Intel HD 4000 (#1222).
|
|
|
|
|
|
- Includes a check to confirm no hash collisions.
|
|
- Fixes uniform issue on AMD.
|
|
|
|
|
|
|
|
|
|
|
|
Fixes #978
|
|
|
|
- Also renames "vertex_shader.*" to "shader_interpreter.*"
|
|
|
|
|
|
|
|
|