| Commit message (Collapse) | Author | Files | Lines |
|
This is just the named constant that OpenGL provides, so we can use that
instead of using a literal -1
|
|
We can avoid heap allocations here by just using a std::string_view
instead of performing unnecessary copying of the string data.
|
|
We can just assign to the members directly in these cases.
|
|
|
|
|
|
|
|
This makes it match its const qualified equivalent.
|
|
|
|
This would result in a lot of allocations and related object
construction, just to toss it all away immediately after the call.
These are definitely not intentional, and it was intended that all of
these should have been accessing the static function GetInstance()
through the name itself, not constructed instances.
|
|
|
|
The GPU ignores that register when clearing, but OpenGL obeys the glDepthMask parameter, so we set the depth mask to GL_TRUE when clearing the depth buffer. It will be restored to the correct value automatically on the next draw call.
|
|
|
|
- When VertexA shader stage is enabled, we combine with VertexB program to make a single Vertex Shader stage.
|
|
- Fixes a regression with Binding of Isaac.
|
|
|
|
OpenGL's default behavior is already correct when the GPU is configured to flip the triangles.
This fixes 1-2 Switch's splash screen.
|
|
Don't try to configure the color buffer if it is not being cleared, it may not be completely valid at this point.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This fixes Stardew Valley.
|
|
|
|
gl_rasterizer_cache: Improved cache management based on Citra's implementation.
gl_surface_cache: Add some docstrings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
This fixes the flip_viewport uniform having invalid values when drawing.
|
|
This should fix the bug with the vs_config UBO being uninitialized during shader execution.
|
|
|
|
|
|
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.
|
|
This is how nouveau calculates the viewport width and height. For some reason some games set 0xFFFF in the VIEWPORT_HORIZ and VIEWPORT_VERT registers, maybe those are a misnomer and actually refer to something else?
|
|
|
|
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.
|
|
This makes the formatting expectations more obvious (e.g. any zero padding specified
is padding that's entirely dedicated to the value being printed, not any pretty-printing
that also gets tacked on).
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
C++17 adds clamp() to the standard library, so we can remove ours in
favor of it.
|
|
For now only the UNORM type is supported.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this is a rebasing error from #2792. It doesn't affect much though, because the later more Apply() call fixes/hides it
|
|
|
|
|
|
|
|
While debugging the software renderer implementation, it was noticed
that this is actually exactly what the hardware does, upgrading the
status of this "hack" to being a proper implementation. And there was
much rejoicing.
|
|
|
|
|
|
|
|
|
|
Also move the implementation of CurrentConfig to the cpp file.
|
|
|
|
|
|
This copy was left behind when the shader generation code was moved to a
separate 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.
|
|
|
|
|
|
|
|
|
|
This OpenGL call synchronize the worker thread of the nvidia blob.
It can be verified on linux with the __GL_THREADED_OPTIMIZATIONS=1 environment variable.
Those errors should not happen on tested drivers.
It was used as a workaround for https://bugs.freedesktop.org/show_bug.cgi?id=94148
|
|
|
|
|
|
Fixes #2246, #2261
|
|
|
|
|
|
|
|
|
|
Fixes #1938
|
|
|
|
|
|
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This has been entirely superseded by MicroProfile. The rest of the code
can go when a simpler frametime/FPS meter is added to the GUI.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Our code did not handle this well, causing random crashes in some
situations.
|
|
This has been confirmed on hardware. Fixes Etrian Odyssey IV.
|
|
|
|
|
|
|
|
|
|
- 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.
|
|
|
|
|
|
|
|
- Alpha testing is not done with float32 precision, this makes the HW renderer match the SW renderer.
|
|
|
|
|
|
|
|
|
|
Fixes #978
|
|
|
|
The main advantage of switching to glad from glLoadGen is that, apart
from being actively maintained, it supports a customizable entrypoint
loader function, which makes it possible to also support OpenGL ES.
|
|
|
|
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
|
|
Reported here https://communities.intel.com/message/324464
|
|
|
|
- Also renames "vertex_shader.*" to "shader_interpreter.*"
|
|
All uses of this field where it's false can just set the texture id to 0
instead.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|