Commit graph

1030 commits

Author SHA1 Message Date
Unknown W. Brackets
22e46b51c2 GPU: Centralize DestroyAllFBOs().
This cleans up the postshader update code.
2020-05-13 18:15:04 -07:00
Unknown W. Brackets
2faab0e082 GPU: Use postshader for direct VRAM draws again.
Also centralize the pixel texture code while at it.
2020-05-13 18:10:09 -07:00
Unknown W. Brackets
762b656ea2 GPU: Use a texture directly for MakePixelTexture.
This makes it easier to do things with it.
2020-05-13 18:10:09 -07:00
Unknown W. Brackets
3aa8287b74 softgpu: Enable postshader support. 2020-05-13 18:10:09 -07:00
Unknown W. Brackets
fa6544b737 GPU: Cleanup leftover postshader stuff. 2020-05-13 18:10:09 -07:00
Unknown W. Brackets
cb94487a16 GPU: Move post shader handling to new class.
Currently, Vulkan is not working properly and direct (RAM -> output) is
not hooked up.  But in general, it works.
2020-05-13 18:10:06 -07:00
Unknown W. Brackets
d39b0bdca2 GPU: Split FramebufferCommon into two classes.
Only some things moved over so far.

FramebufferCommon does too much, we want to share it with softgpu without
all the buffer management stuff.
2020-05-13 18:07:22 -07:00
Unknown W. Brackets
ef43ec5f33 GPU: Split up software transform into phases. 2020-05-08 23:09:24 -07:00
Unknown W. Brackets
4ea5d165f5 D3D11: Always use accurate depth.
The Direct3D APIs use a "min" and "max" value, and it's required that min
must be less than or equal to max.  If this requirement is not met, the
viewport parameters are not updated.

We forced accurate depth on for NVIDIA and AMD, but this just meant Intel
was still broken and less people were reporting bugs about it.

Although the PSP GE has depth viewport transform, this is not used for
clipping and is not actually the depth range.  The minz and maxz GE
registers are the depth range, and minz must be less than or equal to maxz
for drawing to occur.
2020-04-18 22:34:33 -07:00
Unknown W. Brackets
ac60e2ecd4 GPU: Track HW tess at start of frame too.
This also makes it so we don't force the setting off when you change
backends, and just ignore it if unsupported.
2020-04-04 11:52:32 -07:00
Unknown W. Brackets
30ede8240c GPU: Move hw transform decision to draw engine. 2020-04-04 11:14:32 -07:00
Unknown W. Brackets
ad98609819 GPU: Use consistent buffered rendering state.
The setting can be changed in Qt and Windows between frames, so let's
track the current setting in most places.  This is everywhere fbman is
easily accessible.
2020-04-04 10:51:47 -07:00
Unknown W. Brackets
4a0109d273 GPU: Treat negative light exp same as 0.
Based on #12507 and some tests, seems like negative exponents are also
fixed to a 1.0f result.
2020-03-22 22:28:05 -07:00
Unknown W. Brackets
cebcfb1bbd GPU: Use old frame when presenting a skip.
If we flip using a skipped frame, we may show an even older frame causing
weird flickering.
2020-03-01 13:55:28 -08:00
Henrik Rydgård
2ec82951a0
Merge pull request #12659 from unknownbrackets/vsync
Support vsync in all hardware backends, support runtime update
2020-03-01 09:52:14 +01:00
Unknown W. Brackets
3c1e8abcfe GPU: Centralize vsync interval logic.
We already do unthrottle checking here.
2020-02-29 22:27:00 -08:00
Henrik Rydgård
974095ac10 Log shader contents to VERBOSE instead of DEBUG. 2020-02-29 10:46:04 +01:00
Unknown W. Brackets
5009698cc0 Core: Use a shared_ptr for i18n categories.
This does not make them thread safe, but it reduces the chances of a crash
a bit (see #12594.)
2020-02-09 07:35:16 -08:00
Henrik Rydgård
41a6b97023 DX9: Simplify some expressions 2020-01-26 16:34:46 +01:00
Henrik Rydgård
e4f9f3b120 DrawEngineDX9: Rename lookup table, cleanup 2020-01-26 15:28:54 +01:00
Henrik Rydgård
767b1e45b2 Fix the build - there's a Vec3 name collision, fixed it using a namespace. 2019-10-22 22:58:10 +02:00
Unknown W. Brackets
c5b844cc98 GPU: Respect stencil write mask on clear.
Actually identified this for the softgpu in #11319, but applying it for
RGBA is a problem in most renderers.  Forgot to at least apply it to
stencil.

Fixes #11901.
2019-03-16 19:42:18 -07:00
Henrik Rydgård
8e7da3fef4 Disable vertex range culling when the depthrange hack is enabled. Temporary workaround for #11576. 2019-02-26 16:07:11 +01:00
Henrik Rydgard
5aed2a2cee Gate fewer effects behind "Disable slow framebuffer effects". 2019-02-08 15:02:31 +01:00
Henrik Rydgard
9736bc431a The block transfer setting should not affect clearing memory behind a render target, especially since that's already gated behind a compat flag. 2019-02-08 14:46:16 +01:00
Henrik Rydgård
8af523596f Disable vertex range culling on old NVIDIA. Should help #11638 2019-02-06 22:44:02 +01:00
Henrik Rydgård
8e17caf351
Merge pull request #11694 from unknownbrackets/draw-bugs
Vulkan: Limit stencil workaround to Adreno 5xx
2018-12-26 20:46:09 +01:00
Unknown W. Brackets
7ad6270623 GLES: Remove spurious semicolons in shaders.
Were causing compile errors on some devices.
2018-12-23 20:21:17 -08:00
Unknown W. Brackets
f8ce9b08ba Vulkan: Limit stencil workaround to Adreno 5xx. 2018-12-23 14:11:57 -08:00
Unknown W. Brackets
1f594f3fb5 GPU: Track draw in shader manager.
With device restore etc. everywhere.
2018-12-23 12:55:37 -08:00
Henrik Rydgård
9fd8d3b911 Fix bug in #11681 2018-12-18 17:01:16 +01:00
Henrik Rydgård
a2cc2b39ca Additional raw string shaders 2018-12-18 10:42:29 +01:00
Henrik Rydgård
de4dec2a80 Use raw strings for more shaders 2018-12-18 10:37:45 +01:00
Henrik Rydgard
3f8aec5147 Remove the "Disable stencil test" hack. Doesn't seem to serve much purpose anymore. 2018-12-14 13:54:03 +01:00
Unknown W. Brackets
5932cbabc3 GPU: Avoid stencil emulation if possible.
This reduces use of replaceAlpha, and reduces use of more complicated
blend states.  This simplifies fragment shaders a little.
2018-12-01 14:05:29 -08:00
Unknown W. Brackets
fd97d82c71 D3D9: Correct shader bounds apply.
Also, use triangle strip like D3D11.
2018-11-24 10:47:49 -08:00
Unknown W. Brackets
d9510f8824 D3D11: Allow shader blend to self.
It was forcing from black before.  See #9616.
2018-11-24 10:19:28 -08:00
Henrik Rydgård
c789c34274
Merge pull request #11575 from unknownbrackets/texture-self
GLES: Fix render-to-self detection
2018-11-22 20:05:16 +01:00
Unknown W. Brackets
87085d18f0 GLES: Fix render-to-self detection.
Was broken by the recent fb_address changes, so match Vulkan and D3D11
for consistency.
2018-11-22 09:26:12 -08:00
Unknown W. Brackets
1c19bce514 GPU: Correct specular exponent zero. 2018-11-22 08:53:25 -08:00
Unknown W. Brackets
4816bfc1a6 GPU: Skip specular on negative diffuse factor.
This is correct per hardware tests, see #8403.  Note that the PS3 emulator
running PSP HD remasters does not correctly handle this, and applies
specular for negative diffuse factor.
2018-11-22 08:53:25 -08:00
Unknown W. Brackets
6e46d6c0f9 GPU: Correct powered diffuse with exp=0.
Just to ensure negative factors are handled too, as they are on hardware.
2018-11-22 08:53:25 -08:00
Unknown W. Brackets
1cec9f5ea1 GPU: Handle spot light with 0 exp or length. 2018-11-22 08:53:25 -08:00
Unknown W. Brackets
9a4cd5bd9d GPU: Skip specular on powered diffuse.
Matches hardware tests and improves lighting for Virtua Tennis, see #4140.
2018-11-22 07:59:56 -08:00
Unknown W. Brackets
0c5c776bb9 GPU: Correct shade mapping with 0,0,0 light pos.
May need to audit more normalize() usage, if it's consistent in other
places.
2018-11-17 18:33:07 -08:00
Henrik Rydgård
b17fc67c45 Get rid of MaskedEqual 2018-11-12 08:19:19 +01:00
Henrik Rydgård
d8f4a70396 Remove constraint that virtual framebuffers have to represent VRAM.
Prerequisite for #11531, virtual readbacks.
2018-11-12 08:19:14 +01:00
Henrik Rydgård
22c066515e
Merge pull request #11425 from xebra/refactor_spline_bezier
[Refactoring] Improve spline/bezier.
2018-11-04 17:04:29 +01:00
Henrik Rydgård
fa40bcff8d Disable triangle range culling on D3D9 on Intel. Should fix #11477 2018-10-21 09:36:15 +02:00
xebra
eca9386c05 [spline/bezier]Reduce static buffers. Get rid of the spline buffer using half of the vertex buffer. 2018-10-07 23:54:31 +09:00