bunnei
37e1ed3744
Merge pull request #991 from bunnei/ignore-mac
...
maxwell_3d: Ignore macros that have not been uploaded yet.
2018-08-09 19:16:28 -04:00
Khangaroo
75e12a33ae
Implement SNORM for BC5/DXN2 ( #998 )
...
* Implement BC5/DXN2 (#996 )
- Used by Kirby Star Allies.
* Implement BC5/DXN2 SNORM
UNORM for Kirby Star Allies
SNORM for Super Mario Odyssey
2018-08-09 19:15:32 -04:00
Lioncash
6ef027b958
gl_shader_decompiler: Reserve element memory beforehand in BuildRegisterList()
...
Avoids potentially perfoming multiple reallocations when we know the
total amount of memory we need beforehand.
2018-08-09 17:29:11 -04:00
Lioncash
59ea37daa7
gl_rasterizer_cache: Avoid iterator invalidation issues within InvalidateRegion()
...
A range-based for loop can't be used when the container being iterated
is also being erased from.
2018-08-09 15:30:20 -04:00
bunnei
0bfe974281
Merge pull request #992 from bunnei/declr-pred
...
gl_shader_decompiler: Declare predicates on use.
2018-08-09 14:36:52 -04:00
bunnei
88b18b9ba4
Merge pull request #994 from lioncash/const
...
gl_rasterizer_cache: Use std::vector::assign vs resize() then copy for the non-tiled case
2018-08-09 14:36:06 -04:00
bunnei
b125137493
Merge pull request #993 from bunnei/smo-vtx-pts
...
Implement VertexAttribute::Size::Size_16_16_16_16 and PrimitiveTopology::Points.
2018-08-09 13:28:14 -04:00
bunnei
f765a6b902
Merge pull request #984 from bunnei/rt-none
...
gl_rasterizer: Do not render when no render target is configured.
2018-08-09 13:12:28 -04:00
Khangaroo
5cb6eceecf
Implement BC5/DXN2 ( #996 )
...
- Used by Kirby Star Allies.
2018-08-09 12:57:13 -04:00
bunnei
c333bfc193
Merge pull request #977 from bunnei/bgr565
...
gl_rasterizer_cached: Implement RenderTargetFormat::B5G6R5_UNORM.
2018-08-08 23:43:04 -04:00
Lioncash
e831b80d69
gl_rasterizer_cache: Invert conditional in LoadGLBuffer()
...
It's generally easier to follow code using conditionals that operate in
terms of the true case followed by the false case (no chance of
overlooking the exclamation mark).
2018-08-08 23:34:57 -04:00
Lioncash
434f352eb3
gl_rasterizer_cache: Use std::vector::assign in LoadGLBuffer() for the non-tiled case
...
resize() causes the vector to expand and zero out the added members to
the vector, however we can avoid this zeroing by using assign().
Given we have the pointer to the data we want to copy, we can calculate
the end pointer and directly copy the range of data without the
need to perform the resize() beforehand.
2018-08-08 23:34:58 -04:00
bunnei
dfc3eed0cb
maxwell_to_gl: Implement VertexAttribute::Size::Size_16_16_16_16.
...
- Used by Super Mario Odyssey (in game).
2018-08-08 23:28:17 -04:00
bunnei
06d0b96ca9
maxwell_to_gl: Implement PrimitiveTopology::Points.
...
- Used by Super Mario Odyssey (in game).
2018-08-08 23:28:00 -04:00
bunnei
4283019aa0
gl_shader_decompiler: Declare predicates on use.
...
- Used by Super Mario Odyssey (when going in game).
2018-08-08 23:26:31 -04:00
bunnei
efe6b473c5
maxwell_3d: Ignore macros that have not been uploaded yet.
...
- Used by Super Mario Odyssey (in game).
2018-08-08 23:25:37 -04:00
Lioncash
557c466994
gl_rasterizer_cache: Make pointer const in LoadGLBuffer()
...
This is only ever read from, so we can make the data it's pointing to
const.
2018-08-08 23:14:57 -04:00
bunnei
25ba4d1b68
Merge pull request #982 from bunnei/stub-unk-63
...
gl_shader_decompiler: Stub input attribute Unknown_63.
2018-08-08 22:28:18 -04:00
bunnei
ddec200290
gl_rasterizer: Do not render when no render target is configured.
...
- Used by Super Mario Odyssey.
2018-08-08 19:29:45 -04:00
bunnei
cf917a5e93
Merge pull request #976 from bunnei/shader-imm
...
gl_shader_decompiler: Let OpenGL interpret floats.
2018-08-08 19:17:01 -04:00
bunnei
9ceceb212f
Merge pull request #981 from bunnei/cbuf-corrupt
...
maxwell_3d: Use correct const buffer size and check bounds.
2018-08-08 19:16:34 -04:00
bunnei
cc2526dd51
Merge pull request #985 from bunnei/rt-r11g11b10
...
gpu: Add R11G11B10_FLOAT to RenderTargetBytesPerPixel.
2018-08-08 18:21:34 -04:00
bunnei
096b04f1a4
Merge pull request #979 from bunnei/vtx88
...
maxwell_to_gl: Implement VertexAttribute::Size::Size_8_8.
2018-08-08 18:18:50 -04:00
bunnei
7bf422d58c
gpu: Add R11G11B10_FLOAT to RenderTargetBytesPerPixel.
...
- Used by Super Mario Odyssey.
2018-08-08 02:42:14 -04:00
bunnei
7f0d0a93f7
gl_shader_decompiler: Stub input attribute Unknown_63.
2018-08-08 02:35:59 -04:00
bunnei
57982df105
maxwell_3d: Use correct const buffer size and check bounds.
...
- Fixes mem corruption with Super Mario Odyssey and Pokkén Tournament DX.
2018-08-08 02:10:25 -04:00
bunnei
8c6338b6f9
renderer_opengl: Use trace log in a few places.
2018-08-08 01:53:23 -04:00
bunnei
c120ed7d18
maxwell_to_gl: Implement VertexAttribute::Size::Size_8_8.
2018-08-08 01:50:53 -04:00
bunnei
aaf8d9ac2f
gl_rasterizer_cached: Implement RenderTargetFormat::B5G6R5_UNORM.
...
- Used by Super Mario Odyssey.
2018-08-08 01:48:27 -04:00
bunnei
e542356d0c
gl_shader_decompiler: Let OpenGL interpret floats.
...
- Accuracy is lost in translation to string, e.g. with NaN.
- Needed for Super Mario Odyssey.
2018-08-08 01:45:23 -04:00
bunnei
4fa3511a63
Merge pull request #964 from Hexagon12/lower-logs
...
Lowered down the logging for command processor methods
2018-08-07 19:00:19 -04:00
Hexagon12
7139f05fc5
Fixed the sRGB pixel format ( #963 )
...
* Changed the sRGB pixel format return
* Add a message about SRGBA -> RGBA conversion
2018-08-07 18:59:50 -04:00
Hexagon12
bc6d91a103
Lowered down the logging for methods
2018-08-07 19:51:40 +03:00
bunnei
904d7eaa94
maxwell_3d: Remove outdated assert.
2018-08-05 23:57:19 -04:00
bunnei
57eb936200
gl_rasterizer_cache: Avoid superfluous surface copies.
2018-08-05 23:40:03 -04:00
bunnei
c8e5c74092
Merge pull request #927 from bunnei/fix-texs
...
gl_shader_decompiler: Fix TEXS mask and dest.
2018-08-05 16:42:21 -04:00
bunnei
c0af42d6eb
Merge pull request #912 from lioncash/global-var
...
video_core: Eliminate the g_renderer global variable
2018-08-05 16:37:39 -04:00
bunnei
fd715e54a1
gl_shader_decompiler: Fix TEXS mask and dest.
2018-08-05 01:47:09 -04:00
David Marcec
b96010bfa9
added braces for conditions
2018-08-05 11:36:55 +10:00
David Marcec
6d1e30e041
fix the attrib format for ints
2018-08-05 11:29:21 +10:00
bunnei
13d6593753
Merge pull request #919 from lioncash/sign
...
gl_shader_manager: Amend sign differences in an assertion comparison in SetShaderUniformBlockBinding()
2018-08-04 14:29:59 -04:00
Lioncash
3b678b9e8e
gl_shader_manager: Invert conditional in SetShaderUniformBlockBinding()
...
This lets us indent the majority of the code and places the error case
first.
2018-08-04 02:57:11 -04:00
Lioncash
dde5dce736
gl_shader_manager: Amend sign differences in an assertion comparison in SetShaderUniformBlockBinding()
...
Ensures both operands have the same sign in the comparison.
While we're at it, we can get rid of the redundant casting of ub_size to
an int. This type will always be trivial and alias a built-in type (not
doing so would break backwards compatibility at a standard level).
2018-08-04 02:55:03 -04:00
Lioncash
2665457f4a
renderer_base: Make Rasterizer() return the rasterizer by reference
...
All calling code assumes that the rasterizer will be in a valid state,
which is a totally fine assumption. The only way the rasterizer wouldn't
be is if initialization is done incorrectly or fails, which is checked
against in System::Init().
2018-08-04 02:36:58 -04:00
Lioncash
6030c5ce41
video_core: Eliminate the g_renderer global variable
...
We move the initialization of the renderer to the core class, while
keeping the creation of it and any other specifics in video_core. This
way we can ensure that the renderer is initialized and doesn't give
unfettered access to the renderer. This also makes dependencies on types
more explicit.
For example, the GPU class doesn't need to depend on the
existence of a renderer, it only needs to care about whether or not it
has a rasterizer, but since it was accessing the global variable, it was
also making the renderer a part of its dependency chain. By adjusting
the interface, we can get rid of this dependency.
2018-08-04 02:36:57 -04:00
bunnei
762fcaf5de
Merge pull request #911 from lioncash/prototype
...
video_core: Remove unimplemented Start() function prototype
2018-08-04 02:18:38 -04:00
bunnei
29f31356d8
Merge pull request #910 from lioncash/unused
...
gl_shader_decompiler: Remove unused variable in GenerateDeclarations()
2018-08-03 15:54:11 -04:00
Lioncash
b4e050e6c4
video_core: Remove unimplemented Start() function prototype
...
Given this has no definition, we can just remove it entirely.
2018-08-03 12:48:14 -04:00
Lioncash
b45e5c2399
gl_shader_decompiler: Remove unused variable in GenerateDeclarations()
...
This variable was being incremented, but we were never actually using
it.
2018-08-03 12:18:31 -04:00
Lioncash
555d76d065
gl_shader_manager: Make ProgramManager's GetCurrentProgramStage() a const member function
...
This function doesn't modify class state, so it can be made const.
2018-08-03 12:08:17 -04:00
bunnei
00ba704a7f
Merge pull request #892 from lioncash/global
...
video_core: Make global EmuWindow instance part of the base renderer …
2018-08-03 00:31:32 -04:00
bunnei
52da0ce399
Merge pull request #901 from lioncash/ref
...
gl_shader_manager: Take ShaderSetup instances by const reference in UseProgrammableVertexShader() and UseProgrammableFragmentShader()
2018-08-02 23:00:56 -04:00
bunnei
bae1822aed
Merge pull request #902 from lioncash/array
...
gl_state: Make texture_units a std::array
2018-08-02 14:57:42 -04:00
greggameplayer
fe64e1d38e
Implement RGB32F PixelFormat ( #886 ) (used by Go Vacation)
2018-08-02 14:56:38 -04:00
Lioncash
6b32e24161
gl_state: Make texture_units a std::array
...
Gets rid of the use of a raw C array.
2018-08-02 11:19:58 -04:00
Lioncash
d92e8ab062
gl_shader_manager: Take ShaderSetup instances by const reference in UseProgrammableVertexShader() and UseProgrammableFragmentShader()
...
Avoids performing unnecessary copies of 65560 byte sized ShaderSetup
instances, considering it's only used as part of lookup and not
modified.
Given the parameters were already const, it's likely taking these
parameters by reference was intended but the ampersand was forgotten.
2018-08-02 11:09:46 -04:00
Lioncash
0f2ac928f2
video_core: Make global EmuWindow instance part of the base renderer class
...
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.
2018-08-01 21:40:30 -04:00
Unknown
0d8fcab136
Implement R32_FLOAT RenderTargetFormat
2018-08-01 15:31:42 +02:00
bunnei
3575c076cb
Merge pull request #869 from Subv/ubsan
...
Corrected a few error cases detected by asan/ubsan
2018-07-31 09:24:13 -07:00
Subv
8191273a3d
MacroInterpreter: Avoid left shifting negative values.
...
The branch target is signed, so multiply by 4 instead of left shifting by 2
2018-07-30 20:38:24 -05:00
bunnei
e013fdc2b2
Merge pull request #808 from lioncash/mem-dedup
...
video_core/memory_manager: Avoid repeated unnecessary page slot lookups
2018-07-26 11:50:27 -07:00
Subv
f85cff0f48
GPU: Allow using R16F as a render target format.
2018-07-26 08:52:21 -05:00
Unknown
4672a01cbf
Implement R16_G16
...
correct trailing white spaces
Delete tabs
correct placement
Add RG16F & RG16UI & RG16I & RG16S PixelFormats
Return correct data according to changes done previously
correct PixelFormat declaration
correct coding style error
correct coding style error part 2
correct RG16S Declaration error
correct alignment
2018-07-26 02:01:29 +02:00
bunnei
c88382517c
Merge pull request #819 from Subv/srgb
...
GPU: Use the right texture format for sRGBA framebuffers.
2018-07-25 14:47:26 -07:00
Subv
c5b838aeef
GPU: Use the right texture format for sRGBA framebuffers.
2018-07-25 09:52:39 -05:00
Subv
ee8123bf13
GPU: Allow the use of Z24S8 as a texture format.
2018-07-25 09:41:24 -05:00
bunnei
0686183c3e
Merge pull request #816 from Subv/z32_s8
...
GPU: Implemented the Z32_S8_X24 depth buffer format.
2018-07-25 07:37:00 -07:00
bunnei
af787744ab
Merge pull request #815 from Subv/z32f_tex
...
GPU: Allow using Z32 as a texture format.
2018-07-25 07:33:09 -07:00
bunnei
704824d50a
Merge pull request #814 from Subv/rt_r8
...
GPU: Allow the usage of R8 as a render target format.
2018-07-25 07:32:18 -07:00
bunnei
a6ea6febc9
Merge pull request #809 from lioncash/rasterizer
...
gl_rasterizer: Minor cleanup
2018-07-24 19:31:34 -07:00
bunnei
e0106a7d68
Merge pull request #811 from Subv/code_address_assert
...
GPU: Remove the assert that required the CODE_ADDRESS to be 0.
2018-07-24 19:31:09 -07:00
Subv
daf2504d31
GPU: Implemented the Z32_S8_X24 depth buffer format.
2018-07-24 20:41:40 -05:00
Subv
f747a7e35d
GPU: Allow using Z32 as a texture format.
2018-07-24 19:54:23 -05:00
Subv
4f574201ea
GPU: Allow the usage of R8 as a render target format.
2018-07-24 19:49:36 -05:00
Subv
8f2c4191ab
GPU: Remove the assert that required the CODE_ADDRESS to be 0.
...
Games usually just leave it at 0 but nouveau sets it to something else. This already works fine, the assert is useless.
2018-07-24 13:54:12 -05:00
Subv
4cc1e180ec
GPU: Implemented the R16 and R16F texture formats.
2018-07-24 13:39:16 -05:00
Lioncash
0162f8b3a7
gl_rasterizer: Replace magic number with GL_INVALID_INDEX in SetupConstBuffers()
...
This is just the named constant that OpenGL provides, so we can use that
instead of using a literal -1
2018-07-24 12:24:49 -04:00
Lioncash
16139ed53b
gl_rasterizer: Use std::string_view instead of std::string when checking for extensions
...
We can avoid heap allocations here by just using a std::string_view
instead of performing unnecessary copying of the string data.
2018-07-24 12:10:37 -04:00
Lioncash
b5eb3905cd
gl_rasterizer: Use in-class member initializers where applicable
...
We can just assign to the members directly in these cases.
2018-07-24 12:08:12 -04:00
Lioncash
bf608f125e
video_core/memory_manager: Replace a loop with std::array's fill() function in PageSlot()
...
We already have a function that does what this code was doing, so let's
use that instead.
2018-07-24 11:56:30 -04:00
Lioncash
d71e19fd75
video_core/memory_manager: Avoid repeated unnecessary page slot lookups
...
We don't need to keep calling the same function over and over again in a
loop, especially when the behavior is slightly non-trivial. We can just
keep a reference to the looked up location and do all the checking and
assignments based off it instead.
2018-07-24 11:19:54 -04:00
bunnei
0f830d08f1
Merge pull request #799 from Subv/tex_r32f
...
GPU: Implement texture format R32F.
2018-07-24 04:46:07 -07:00
bunnei
b70f757913
Merge pull request #796 from bunnei/gl-uint
...
maxwell_to_gl: Implement VertexAttribute::Type::UnsignedInt.
2018-07-24 04:44:56 -07:00
bunnei
69c45ce71c
gl_rasterizer: Implement texture border color.
2018-07-23 23:34:42 -04:00
bunnei
6b3e54621f
maxwell_to_gl: Implement Texture::WrapMode::Border.
2018-07-23 23:34:41 -04:00
Subv
ccc42702b5
GPU: Implement texture format R32F.
2018-07-23 22:21:31 -05:00
bunnei
1ff3bea6c7
Merge pull request #791 from bunnei/rg32f-rgba32f-bgra8
...
gl_rasterizer_cache: Implement formats BGRA8_UNORM/RGBA32_FLOAT/RG32_FLOAT
2018-07-23 20:13:19 -07:00
bunnei
2ff86f5765
maxwell_to_gl: Implement VertexAttribute::Type::UnsignedInt.
2018-07-23 23:12:14 -04:00
bunnei
92304181d5
Merge pull request #792 from lioncash/retval
...
gl_shader_decompiler: Correct return value of WriteTexsInstruction()
2018-07-23 20:06:48 -07:00
bunnei
47ac369180
Merge pull request #790 from bunnei/shader-print-instr
...
gl_shader_decompiler: Print instruction value in shader comments.
2018-07-23 19:48:47 -07:00
bunnei
c2b4ff5d48
Merge pull request #788 from bunnei/shader-check-zero
...
gl_shader_decompiler: Check if SetRegister result is ZeroIndex.
2018-07-23 19:44:05 -07:00
Lioncash
33e2033af5
gl_shader_decompiler: Correct return value of WriteTexsInstruction()
...
This should be returning void, not a std::string
2018-07-23 22:31:58 -04:00
bunnei
9505283989
gl_shader_decompiler: Implement shader instruction TLDS.
2018-07-23 22:02:51 -04:00
bunnei
a27c0099ed
gl_rasterizer_cache: Implement RenderTargetFormat RG32_FLOAT.
2018-07-23 21:22:54 -04:00
bunnei
3a19c1098d
gl_rasterizer_cache: Implement RenderTargetFormat RGBA32_FLOAT.
2018-07-23 21:22:53 -04:00
bunnei
bcc184acfa
gl_rasterizer_cache: Implement RenderTargetFormat BGRA8_UNORM.
2018-07-23 21:22:44 -04:00
bunnei
89db8c2171
gl_rasterizer_cache: Add missing log statements.
2018-07-23 21:20:09 -04:00
bunnei
c4322ce87e
gl_shader_decompiler: Print instruction value in shader comments.
2018-07-23 21:11:05 -04:00
bunnei
81aa02424b
gl_shader_decompiler: Check if SetRegister result is ZeroIndex.
2018-07-23 21:08:40 -04:00
Lioncash
3b88ce3dcb
gl_shader_decompiler: Simplify GetCommonDeclarations()
2018-07-23 17:11:18 -04:00
bunnei
e85a528bb9
Merge pull request #769 from bunnei/shader-mask-fixes
...
shader_bytecode: Implement other TEXS masks.
2018-07-22 18:03:31 -07:00
Lioncash
0797657bc0
gl_shader_decompiler: Remove redundant Subroutine construction in AddSubroutine()
...
We don't need to toss away the Subroutine instance after the find() call
and reconstruct another instance with the same data right after it.
Particularly give Subroutine contains a std::set.
2018-07-22 03:30:35 -04:00
bunnei
148a5bef7e
shader_bytecode: Implement other TEXS masks.
2018-07-22 03:23:15 -04:00
bunnei
af4bde8cd1
Merge pull request #767 from bunnei/shader-cleanup
...
gl_shader_decompiler: Remove unused state tracking and minor cleanup.
2018-07-22 00:03:17 -07:00
bunnei
f5a2944ab6
gl_shader_decompiler: Remove unused state tracking and minor cleanup.
2018-07-22 01:00:44 -04:00
bunnei
c43eaa94f3
gl_shader_decompiler: Implement SEL instruction.
2018-07-22 00:37:12 -04:00
bunnei
63fbf9a7d3
gl_rasterizer_cache: Blit surfaces on recreation instead of flush and load.
2018-07-21 21:51:06 -04:00
bunnei
4301f0b539
gl_rasterizer_cache: Use GPUVAddr as cache key, not parameter set.
2018-07-21 21:51:06 -04:00
bunnei
cd47391c2d
gl_rasterizer_cache: Use zeta_width and zeta_height registers for depth buffer.
2018-07-21 21:51:06 -04:00
bunnei
d8c60029d6
gl_rasterizer: Use zeta_enable register to enable depth buffer.
2018-07-21 21:51:06 -04:00
bunnei
5287991a36
maxwell_3d: Add depth buffer enable, width, and height registers.
2018-07-21 21:51:05 -04:00
bunnei
3ac736c003
Merge pull request #748 from lioncash/namespace
...
video_core: Use nested namespaces where applicable
2018-07-21 18:50:14 -07:00
bunnei
ff8754f921
Merge pull request #747 from lioncash/unimplemented
...
gl_shader_manager: Remove unimplemented function prototype
2018-07-21 10:54:58 -07:00
Lioncash
d5bc9aef4e
gl_shader_manager: Replace unimplemented function prototype
...
This was just a linker error waiting to happen.
2018-07-20 18:39:54 -04:00
Lioncash
863579736c
gpu: Rename Get3DEngine() to Maxwell3D()
...
This makes it match its const qualified equivalent.
2018-07-20 18:34:49 -04:00
Lioncash
bb960c8cb4
video_core: Use nested namespaces where applicable
...
Compresses a few namespace specifiers to be more compact.
2018-07-20 18:23:54 -04:00
bunnei
29f49bd3c1
Merge pull request #738 from lioncash/sign
...
gl_state: Get rid of mismatched sign conversions in Apply()
2018-07-20 09:21:57 -07:00
bunnei
fbc2bcd4a9
Merge pull request #735 from lioncash/video-unused
...
maxwell_3d: Remove unused variable within GetStageTextures()
2018-07-20 09:16:15 -07:00
bunnei
204d707ce7
Merge pull request #731 from lioncash/shadow
...
gl_shader_decompiler: Eliminate variable and declaration shadowing
2018-07-20 09:13:36 -07:00
Lioncash
0faa13baeb
gl_state: Make references const where applicable in Apply()
2018-07-20 01:12:29 -04:00
Lioncash
e6b3d3a9ea
gl_state: Get rid of mismatched sign conversions
...
While we're at it, amend the loop variable type to be the same width as
that returned by the .size() call.
2018-07-20 01:11:20 -04:00
Lioncash
8b08f82dc7
maxwell_3d: Remove unused variable within GetStageTextures()
2018-07-19 22:38:28 -04:00
Lioncash
f26866ff6a
gl_shader_decompiler: Eliminate variable and declaration shadowing
...
Ensures that no identifiers are being hidden, which also reduces
compiler warnings.
2018-07-19 20:32:49 -04:00
Lioncash
c2121cb059
gl_shader_decompiler: Remove unnecessary const from return values
...
This adds nothing from a behavioral point of view, and can inhibit the
move constructor/RVO
2018-07-19 20:11:04 -04:00
bunnei
cf30c4be22
gl_state: Temporarily disable culling and depth test.
2018-07-18 23:21:43 -04:00
bunnei
49b0966003
Merge pull request #687 from lioncash/instance
...
core: Don't construct instance of Core::System, just to access its live instance
2018-07-18 18:55:58 -07:00
bunnei
b496a9eefe
decoders: Fix calc of swizzle image_width_in_gobs.
2018-07-18 21:42:52 -04:00
Lioncash
3a4841e403
core: Don't construct instance of Core::System, just to access its live instance
...
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.
2018-07-18 18:18:27 -04:00
bunnei
b87a71b3fe
Merge pull request #678 from lioncash/astc
...
astc: Minor changes
2018-07-17 22:06:20 -07:00
Lioncash
6a03badcbc
astc: Initialize vector size directly in Decompress
...
There's no need to perform a separate resize.
2018-07-17 23:58:14 -04:00
Lioncash
0f148548f3
astc: Mark functions as internally linked where applicable
2018-07-17 23:58:14 -04:00
Lioncash
c5803e30d3
astc: const-correctness changes where applicable
...
A few member functions didn't actually modify class state, so these can
be amended as necessary.
2018-07-17 23:58:14 -04:00
Lioncash
e3fadb9616
astc: Delete Bits' copy contstructor and assignment operator
...
This also potentially avoids warnings, considering the copy assignment
operator is supposed to have a return value.
2018-07-17 23:58:14 -04:00
Lioncash
4cd52a34b9
astc: In-class initialize member variables where appropriate
2018-07-17 23:58:10 -04:00
bunnei
c3dd456d51
vi: Partially implement buffer crop parameters.
2018-07-17 20:13:17 -04:00
Subv
3d3b10adc7
GPU: Added register definitions for the stencil parameters.
2018-07-17 15:00:21 -05:00
bunnei
3a96670f2d
gl_rasterizer_cache: Implement texture format G8R8.
2018-07-15 01:33:42 -04:00
bunnei
aaec0b7e70
Merge pull request #665 from bunnei/fix-z24-s8
...
gl_rasterizer_cache: Fix incorrect offset in ConvertS8Z24ToZ24S8.
2018-07-14 22:18:55 -07:00
bunnei
3145114190
gl_rasterizer_cache: Fix incorrect offset in ConvertS8Z24ToZ24S8.
2018-07-15 00:02:05 -04:00
bunnei
e21190f47f
gl_rasterizer_cache: Implement depth format Z16_UNORM.
2018-07-14 23:43:28 -04:00
bunnei
2cb3fdca86
Merge pull request #598 from bunnei/makedonecurrent
...
OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.
2018-07-14 20:18:11 -07:00
bunnei
05cb10530f
OpenGL: Use MakeCurrent/DoneCurrent for multithreaded rendering.
2018-07-14 02:50:35 -04:00
Subv
b37354cca8
GPU: Always enable the depth write when clearing the depth buffer.
...
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.
2018-07-14 00:52:23 -05:00
bunnei
8aeff9cf8e
gl_rasterizer: Fix check for if a shader stage is enabled.
2018-07-12 22:57:57 -04:00
bunnei
c4015cd93a
gl_shader_gen: Implement dual vertex shader mode.
...
- When VertexA shader stage is enabled, we combine with VertexB program to make a single Vertex Shader stage.
2018-07-12 22:25:36 -04:00
bunnei
64b5e5d5d9
Merge pull request #655 from bunnei/pred-lt-nan
...
gl_shader_decompiler: Implement PredCondition::LessThanWithNan.
2018-07-12 18:59:15 -07:00
bunnei
49c0c081c4
gl_shader_decompiler: Implement PredCondition::LessThanWithNan.
2018-07-12 20:04:35 -04:00
bunnei
4757ffdcce
gl_shader_decompiler: Use FlowCondition field in EXIT instruction.
2018-07-12 20:00:37 -04:00
Sebastian Valle
274d1fb0fc
Merge pull request #652 from Subv/fadd32i
...
GPU: Implement the FADD32I shader instruction.
2018-07-12 17:36:51 -05:00
bunnei
3ff21345b4
Merge pull request #651 from Subv/ffma_decode
...
GPU: Corrected the decoding of FFMA for immediate operands.
2018-07-12 12:42:58 -07:00
Subv
c1ae841f47
GPU: Implement the FADD32I shader instruction.
2018-07-12 12:00:31 -05:00
Subv
0cad310e12
GPU: Corrected the decoding of FFMA for immediate operands.
2018-07-12 10:15:48 -05:00
bunnei
854f474f52
gl_rasterizer: Flip triangles when regs.viewport_transform[0].scale_y is negative.
...
- Fixes a regression with Binding of Isaac.
2018-07-08 16:16:24 -04:00
bunnei
639346bcfb
Merge pull request #625 from Subv/imnmx
...
GPU: Implemented the IMNMX shader instruction.
2018-07-07 19:33:50 -07:00
Subv
4633dd9505
GPU: Implemented the BC7U texture format.
...
Note: Our version of glad exports GL_COMPRESSED_RGBA_BPTC_UNORM as GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, maybe it's time we update it.
2018-07-07 09:17:48 -05:00
bunnei
51bd76a5fd
Merge pull request #629 from Subv/depth_test
...
GPU: Allow using the old NV04 values for the depth test function.
2018-07-05 16:43:10 -04:00
Subv
9f6a5660e8
GPU: Allow using the old NV04 values for the depth test function.
...
These seem to be just a valid as the GL token values. Thanks @ReinUsesLisp
This restores graphical output to Disgaea 5
2018-07-05 13:01:31 -05:00
bunnei
762bf6a522
Merge pull request #626 from Subv/shader_sync
...
GPU: Stub the shader SYNC and DEPBAR instructions.
2018-07-05 12:54:19 -04:00
bunnei
637f9d780a
Merge pull request #624 from Subv/f2f_round
...
GPU: Implemented the F2F 'round' rounding mode.
2018-07-05 11:30:29 -04:00
bunnei
956b5db52e
Merge pull request #623 from Subv/vertex_types
...
GPU: Implement the Size_16_16 and Size_10_10_10_2 vertex attribute types
2018-07-05 11:30:01 -04:00
bunnei
8b815877a6
Merge pull request #622 from Subv/unused_tex
...
GPU: Ignore unused textures and corrected the TEX shader instruction decoding.
2018-07-05 11:29:17 -04:00
bunnei
1b0a74e23f
Merge pull request #621 from Subv/psetp_
...
GPU: Implemented the PSETP shader instruction.
2018-07-05 11:28:50 -04:00
bunnei
9a3c0b161e
Merge pull request #620 from Subv/depth_z32f
...
GPU: Implemented the 32 bit float depth buffer format.
2018-07-05 11:09:15 -04:00
Subv
b0c92b80b1
GPU: Implemented the IMNMX shader instruction.
...
It's similar to the FMNMX instruction but it works on integers.
2018-07-04 15:44:37 -05:00
Subv
d800a02b4b
GPU: Implemented the F2F 'round' rounding mode.
...
It's implemented via the GLSL 'roundEven()' function.
2018-07-04 15:43:21 -05:00
Subv
77cfe4f027
GPU: Stub the shader SYNC and DEPBAR instructions.
...
It is unknown at this moment if we actually need to do something with these instructions or if the GLSL compiler takes care of that for us.
2018-07-04 15:29:51 -05:00
Subv
ce39ae3e57
GPU: Implement the Size_16_16 and Size_10_10_10_2 vertex attribute types.
...
Both signed and unsigned variants.
2018-07-04 15:22:34 -05:00
Subv
4bda9693be
GPU: Ignore textures that the GLSL compiler deemed unused when binding textures to the shaders.
2018-07-04 15:20:12 -05:00
Subv
c42b818cf9
GPU: Corrected the decoding for the TEX shader instruction.
2018-07-04 15:19:20 -05:00
Subv
53a55bd751
GPU: Implemented the PSETP shader instruction.
...
It's similar to the isetp and fsetp instructions but it works on predicates instead.
2018-07-04 15:15:03 -05:00
Subv
016e357c75
GPU: Implemented the 32 bit float depth buffer format.
2018-07-04 10:42:33 -05:00
Subv
c1bebdef5e
GPU: Flip the triangle front face winding if the GPU is configured to not flip the triangles.
...
OpenGL's default behavior is already correct when the GPU is configured to flip the triangles.
This fixes 1-2 Switch's splash screen.
2018-07-04 10:26:46 -05:00
Subv
5a9df3c675
GPU: Only configure the used framebuffers during clear.
...
Don't try to configure the color buffer if it is not being cleared, it may not be completely valid at this point.
2018-07-03 22:32:59 -05:00
bunnei
c996787d84
Merge pull request #609 from Subv/clear_buffers
...
GPU: Implemented the CLEAR_BUFFERS register.
2018-07-03 19:34:34 -04:00
Subv
78443a7f29
GPU: Factor out the framebuffer configuration code for both Clear and Draw commands.
2018-07-03 16:56:47 -05:00
Subv
c1811ed3d1
GPU: Support clears that don't clear the color buffer.
2018-07-03 16:56:47 -05:00
Subv
be51120d23
GPU: Bind and clear the render target when the CLEAR_BUFFERS register is written to.
2018-07-03 16:56:44 -05:00
Subv
827bb08c91
GPU: Added registers for the CLEAR_BUFFERS and CLEAR_COLOR methods.
2018-07-03 16:56:31 -05:00
bunnei
9da1552417
gl_rasterizer_cache: Implement PixelFormat S8Z24.
2018-07-03 14:58:13 -04:00
bunnei
15e68cdbaa
Merge pull request #607 from jroweboy/logging
...
Logging - Customizable backends
2018-07-03 00:26:45 -04:00
bunnei
e3ca561ea0
Merge pull request #612 from bunnei/fix-cull
...
gl_rasterizer: Only set cull mode and front face if enabled.
2018-07-02 23:48:52 -04:00
bunnei
ddb767f1b6
Merge pull request #611 from Subv/enabled_depth_test
...
GPU: Don't try to parse the depth test function if the depth test is disabled and use only the least significant 3 bits in the depth test func
2018-07-02 23:47:11 -04:00
bunnei
5410b4659d
Merge pull request #610 from Subv/mufu_8
...
GPU: Implemented MUFU suboperation 8, sqrt.
2018-07-02 22:26:42 -04:00
bunnei
a9cacd03f6
gl_rasterizer: Only set cull mode and front face if enabled.
2018-07-02 22:22:25 -04:00
Subv
6e0eba9917
GPU: Use only the least significant 3 bits when reading the depth test func.
...
Some games set the full GL define value here (including nouveau), but others just seem to set those last 3 bits.
2018-07-02 21:06:36 -05:00
Subv
65c664560c
GPU: Don't try to parse the depth test function if the depth test is disabled.
2018-07-02 21:02:46 -05:00
James Rowe
0d46f0df12
Update clang format
2018-07-02 21:45:47 -04:00
James Rowe
638956aa81
Rename logging macro back to LOG_*
2018-07-02 21:45:47 -04:00
bunnei
92c7135065
Merge pull request #608 from Subv/depth
...
GPU: Implemented the depth buffer and depth test + culling
2018-07-02 21:24:43 -04:00
Subv
a6d4903aaf
GPU: Set up the culling configuration on each draw.
2018-07-02 19:51:29 -05:00
Subv
6e4e0b2b41
GPU: Implemented MUFU suboperation 8, sqrt.
2018-07-02 19:48:15 -05:00
Sebastian Valle
055f1546d7
Merge pull request #606 from Subv/base_vertex
...
GPU: Fixed the index offset and implement BaseVertex when doing indexed rendering.
2018-07-02 14:07:38 -05:00
Sebastian Valle
9685dd5840
Merge pull request #605 from Subv/dma_copy
...
GPU: Directly copy the pixels when performing a same-layout DMA.
2018-07-02 14:06:56 -05:00
Subv
18c8ae7750
GPU: Set up the depth test state on every draw.
2018-07-02 13:33:06 -05:00
Subv
d480b63e0d
MaxwellToGL: Added conversion functions for depth test and cull mode.
2018-07-02 13:31:49 -05:00
Subv
c1f55c32c8
GPU: Added registers for depth test and cull mode.
2018-07-02 13:31:20 -05:00
Subv
0f929762b3
GPU: Implemented the Z24S8 depth format and load the depth framebuffer.
2018-07-02 12:42:04 -05:00
Subv
4c59105adf
GPU: Implement offsetted rendering when using non-indexed drawing.
2018-07-02 11:23:36 -05:00
Subv
fca3d1cc65
GPU: Fixed the index offset rendering, and implemented the base vertex functionality.
...
This fixes Stardew Valley.
2018-07-02 11:22:17 -05:00
Subv
cc73bad293
GPU: Added register definitions for the vertex buffer base element.
2018-07-02 11:21:23 -05:00
bunnei
3d41fdfbba
Merge pull request #604 from Subv/invalid_textures
...
GPU: Ignore invalid and disabled textures when drawing.
2018-07-02 11:48:18 -04:00
Subv
ca633a5a3c
GPU: Directly copy the pixels when performing a same-layout DMA.
2018-07-02 09:46:33 -05:00
Subv
80c5e8ae99
GPU: Ignore disabled textures and textures with an invalid address.
2018-07-02 09:43:38 -05:00
Subv
e9d147349b
GPU: Allow GpuToCpuAddress to return boost::none for unmapped addresses.
2018-07-02 09:42:48 -05:00
bunnei
066d6184d4
Merge pull request #602 from Subv/mufu_subop
...
GPU: Corrected the size of the MUFU subop field, and removed incorrect "min" operation.
2018-07-01 11:06:04 -04:00
bunnei
b611d852db
Merge pull request #601 from Subv/rgba32_ui
...
GPU: Implement the RGBA32_UINT rendertarget format.
2018-07-01 03:22:38 -04:00
Subv
f33e406ff2
GPU: Corrected the size of the MUFU subop field, and removed incorrect "min" operation.
2018-06-30 14:48:25 -05:00
Subv
c0e2d52758
GPU: Implemented the RGBA32_UINT rendertarget format.
2018-06-30 14:23:13 -05:00
Subv
b11072d54a
GLCache: Specify the component type along the texture type in the format tuple.
2018-06-30 14:08:51 -05:00
bunnei
c96da97630
gl_shader_decompiler: Implement predicate NotEqualWithNan.
2018-06-30 03:01:25 -04:00
bunnei
50ef2beb58
Merge pull request #595 from bunnei/raster-cache
...
Rewrite the OpenGL rasterizer cache
2018-06-29 14:07:28 -04:00
bunnei
c18425ef98
gl_rasterizer_cache: Only dereference color_surface/depth_surface if valid.
2018-06-29 13:08:08 -04:00
bunnei
7fa9177830
gl_shader_decompiler: Add a return path for unknown instructions.
2018-06-27 01:14:34 -04:00
bunnei
1dd754590f
gl_rasterizer_cache: Implement caching for texture and framebuffer surfaces.
...
gl_rasterizer_cache: Improved cache management based on Citra's implementation.
gl_surface_cache: Add some docstrings.
2018-06-27 00:15:44 -04:00
bunnei
8af1ae46aa
gl_rasterizer_cache: Various fixes for ASTC handling.
2018-06-27 00:08:04 -04:00
bunnei
c7c379bd19
gl_rasterizer_cache: Use SurfaceParams as a key for surface caching.
2018-06-27 00:08:04 -04:00
bunnei
6a28a66832
maxwell_3d: Add a struct for RenderTargetConfig.
2018-06-27 00:08:04 -04:00
bunnei
3f9f047375
gl_rasterizer: Implement AccelerateDisplay to forward textures to framebuffers.
2018-06-27 00:08:03 -04:00
bunnei
ff6785f3e8
gl_rasterizer_cache: Cache size_in_bytes as a const per surface.
2018-06-27 00:08:03 -04:00
bunnei
9f2f819bb6
gl_rasterizer_cache: Refactor to make SurfaceParams members const.
2018-06-27 00:08:03 -04:00
bunnei
5f57ab1b2a
gl_rasterizer_cache: Remove Citra's rasterizer cache, always load/flush surfaces.
2018-06-27 00:08:03 -04:00
bunnei
10422f3c18
gl_rasterizer: Workaround for when exceeding max UBO size.
2018-06-26 23:07:34 -04:00
bunnei
dfac394e60
Merge pull request #593 from bunnei/fix-swizzle
...
gl_state: Fix state management for texture swizzle.
2018-06-26 22:05:49 -04:00
bunnei
73de9bab1a
Merge pull request #592 from bunnei/cleanup-gl-state
...
gl_state: Remove unused state management from 3DS.
2018-06-26 22:05:03 -04:00
bunnei
8447d20a11
gl_state: Fix state management for texture swizzle.
2018-06-26 17:15:58 -04:00
bunnei
20b58bab9c
gl_state: Remove unused state management from 3DS.
2018-06-26 17:09:25 -04:00
bunnei
41b3725d28
gl_rasterizer_cache: Fix inverted B5G6R5 format.
2018-06-26 17:07:36 -04:00
bunnei
36dedae842
Merge pull request #554 from Subv/constbuffer_ubo
...
Rasterizer: Use UBOs instead of SSBOs for uploading const buffers.
2018-06-26 10:25:56 -04:00
mailwl
ad39bab271
Fix crash at exit
2018-06-25 18:01:08 +03:00
Subv
a3d82ef5d9
Build: Fixed some MSVC warnings in various parts of the code.
2018-06-20 11:39:10 -05:00
bunnei
7a0bb406d5
Merge pull request #574 from Subv/shader_abs_neg
...
GPU: Perform negation after absolute value in the float shader instructions.
2018-06-18 22:24:57 -04:00
Subv
38989bef43
GPU: Perform negation after absolute value in the float shader instructions.
2018-06-18 19:56:29 -05:00
Subv
eab7457c00
GPU: Don't mark uniform buffers and registers as used for instructions which don't have them.
...
Like the MOV32I and FMUL32I instructions.
This fixes a potential crash when using these instructions.
2018-06-18 19:50:35 -05:00
bunnei
0e13d9cb7b
Merge pull request #570 from bunnei/astc
...
gl_rasterizer: Implement texture format ASTC_2D_4X4.
2018-06-18 19:08:49 -04:00
bunnei
ea080501fb
Merge pull request #571 from Armada651/loose-blend
...
gl_rasterizer: Get loose on independent blending.
2018-06-18 11:36:50 -04:00
Jules Blok
7c7f4a9be2
gl_rasterizer: Get loose on independent blending.
2018-06-18 09:27:06 +02:00
bunnei
61779fa072
gl_rasterizer: Implement texture format ASTC_2D_4X4.
2018-06-18 01:56:59 -04:00
bunnei
fe906fff36
gl_rasterizer_cache: Loosen things up a bit.
2018-06-18 00:55:59 -04:00
bunnei
afdd657d30
gl_shader_decompiler: Implement LOP instructions.
2018-06-17 15:27:48 -04:00
bunnei
5673ce39c7
gl_shader_decompiler: Refactor LOP32I instruction a bit in support of LOP.
2018-06-17 13:31:39 -04:00
bunnei
d383043e07
gl_shader_decompiler: Implement integer size conversions for I2I/I2F/F2I.
2018-06-15 22:42:02 -04:00
bunnei
fb5bd0920d
Merge pull request #564 from bunnei/lop32i_passb
...
gl_shader_decompiler: Implement LOP32I LogicOperation PassB.
2018-06-15 22:04:03 -04:00
bunnei
55c49d5bf4
gl_shader_gen: Set position.w to 1.
2018-06-15 20:47:04 -04:00
bunnei
61f9d9c4ab
gl_shader_decompiler: Implement LOP32I LogicOperation PassB.
2018-06-15 20:43:33 -04:00
bunnei
019d7208c8
Merge pull request #556 from Subv/dma_engine
...
GPU: Partially implemented the Maxwell DMA engine.
2018-06-12 14:25:17 -04:00
bunnei
2015a1b180
Merge pull request #558 from Subv/iadd32i
...
GPU: Implemented the iadd32i shader instruction.
2018-06-12 14:19:25 -04:00
Subv
db0497b808
GPU: Implemented the iadd32i shader instruction.
2018-06-12 11:46:45 -05:00
Subv
987a170665
GPU: Partially implemented the Maxwell DMA engine.
...
Only tiled->linear and linear->tiled copies that aren't offsetted are supported for now. Queries are not supported. Swizzled copies are not supported.
2018-06-12 11:27:36 -05:00
bunnei
5f3d6c85db
gl_shader_decompiler: Implement saturate for float instructions.
2018-06-11 21:46:34 -04:00
Subv
004b1b3830
GPU: Convert the gl_InstanceId and gl_VertexID variables to floats when reading from them.
...
This corrects the invalid position values in some games when doing attribute-less rendering.
2018-06-10 13:50:19 -05:00