Commit graph

35 commits

Author SHA1 Message Date
Henrik Rydgard
0b1cfaf751 Be more economical with UBO pushbuffer space by reusing the last data when possible. 2016-03-20 19:35:31 +01:00
Henrik Rydgard
a995dd2ff4 Get rid of strange offset in Vulkan matrix converter 2016-03-20 19:31:02 +01:00
Unknown W. Brackets
944a1f380b Disable alpha test optimization with logic ops.
We still need to discard the pixels in the case of a logic op, like
invert.  Otherwise we will invert the blended pixels too.

See #8632.
2016-03-12 09:27:18 -08:00
Henrik Rydgard
58b07e00d7 Assorted fixes and cleanups. 2016-03-06 11:46:41 -08:00
Unknown W. Brackets
6b9b00aa16 Assume DUALSOURCE replace alpha means supported.
We already check supports when generating this value, don't need to check
again when using it.
2016-03-05 17:18:04 -08:00
Unknown W. Brackets
8b51bc5b0b Fix debugging and depth packing with old depth.
Which means, OpenGL in general right now.
2016-02-07 22:42:47 -08:00
Unknown W. Brackets
f1c06d25ea Switch to old-style depth in OpenGL.
Some devices really aren't handling the new method well.  There seem to be
accuracy problems when specifying the values to OpenGL.
2016-02-06 20:21:14 -08:00
Unknown W. Brackets
87b75235e7 Improve depth accuracy a bit in 16-bit slice mode. 2016-02-06 20:02:18 -08:00
Victor Xie
dc32805256 Made commit 0920f6c a little more robust.
Eliminated division-by-zero when depth range is zero.
2016-02-01 13:17:15 +08:00
Unknown W. Brackets
79750ed1ad Add a config setting to control depth quality.
For those who want 1x PSP like behavior.
2016-01-20 22:11:00 -08:00
Henrik Rydgård
4c8384aa09 Merge pull request #8461 from unknownbrackets/gpu-depth
Swap depth range to use minz/maxz
2016-01-20 10:19:51 +01:00
Unknown W. Brackets
02bf70a2d0 Where possible, rewrite 5551 stencil ops too.
We can in most cases fix INVERT, and also INCR so INVERT works when we
can't fix it.

Fixes #8422.
2016-01-19 23:17:58 -08:00
Unknown W. Brackets
e00c9940e8 Correct pixel depth rounding. 2016-01-19 20:19:50 -08:00
Unknown W. Brackets
5de7d2cf8f Oops, correctly center depth. 2016-01-19 07:51:56 -08:00
Unknown W. Brackets
6ef97f72d2 gedbg: Show scaled depth values properly. 2016-01-19 07:23:06 -08:00
Unknown W. Brackets
b80c02c272 Simulate depth clamping.
We'll allow extra space in both directions.  It's not exactly right, but
it's a fast approximation.
2016-01-19 07:12:58 -08:00
Unknown W. Brackets
0920f6c6eb Use minz/maxz as the depth range.
This allows values that fall outside the viewport, but still within the
depth range, to be drawn.
2016-01-19 07:12:57 -08:00
Unknown W. Brackets
d1b3768e49 Use a common func everywhere for float depth vals. 2016-01-18 19:29:45 -08:00
Unknown W. Brackets
0828721bc2 Simplify depth calculation a bit.
This way we keep the original range better, so we should lose less
precision.
2016-01-17 18:30:58 -08:00
Unknown W. Brackets
3aead9584b Oops, fix typo causing clamping to clamp wrong. 2016-01-03 19:59:59 -08:00
Unknown W. Brackets
529abd7db4 Correct clamped depth range from [0, 65535].
This changes a few things:
 * All backends clamp the depth range and keep it positive.
 * The depth rounding uniform is now properly dirtied.
 * Projection is updated to translate and scale appropriately.
 * Depth rounding is halved on OpenGL to account for [-1, 1] range.

Fixes Phantasy Star Portable 2 without the need for a game-specific hack.
2016-01-03 12:29:43 -08:00
Unknown W. Brackets
fd2e302a66 When possible, replace 5551 stencil with 0xFF. 2015-12-31 17:16:41 -08:00
Unknown W. Brackets
e1599821ea Split out the 5551 logic to be clearer. 2015-12-31 17:12:12 -08:00
Unknown W. Brackets
64a34a6d92 Handle masking correctly for 5551 stencil rewrite. 2015-12-31 17:01:08 -08:00
Unknown W. Brackets
c31a8f860b Adjust stencil ops for 5551 and 565 buffers.
This attempts to better approximate the operations that actually happen,
where possible.  Expected to help #5278.
2015-12-31 17:01:03 -08:00
Unknown W. Brackets
c22953a4b9 Treat invalid blend factors as fixed consistently. 2015-11-19 06:48:06 -08:00
Unknown W. Brackets
eb5072bba5 Warning fixes. 2015-11-18 21:56:05 -08:00
Unknown W. Brackets
bf7f07f918 Optimize inverse blending modes, where possible.
Also, take advantage of cases where we can double src and src.a in the
shader, which can in some cases get us closer to accurate.
2015-11-14 12:37:32 -08:00
Henrik Rydgard
fadb19acc6 Remove a very minor difference between the backends in state mapping 2015-11-14 09:56:36 +01:00
Unknown W. Brackets
13a09647e2 d3d9: Disable shader blending, not implemented.
Fixes bad graphics in Ridge Racer, etc.
2015-11-13 23:11:06 -08:00
Henrik Rydgard
df94914a63 D3D: No need to convert blendcolor to float and back
Fix bug with constantAlpha

Remove misleading comment, thanks unknown
2015-11-12 18:11:23 +01:00
Henrik Rydgard
4a71d4cda2 The ConvertBlendState machinery is now pure, so move it out to GPU/Common 2015-11-12 18:11:20 +01:00
Henrik Rydgard
a6ced1d0b4 Move viewport/stencil conversion out into GPUStateUtils.cpp, use it in D3D as well.
D3D bugfixes. Not perfect yet.
2015-11-09 21:21:54 +01:00
Unknown W. Brackets
2b832e7f6c Zero out dst blend factors in 565. 2015-11-04 00:35:55 -08:00
Henrik Rydgard
edafa9bc17 Centralize the GPU state conversion functions 2015-10-24 23:49:05 +02:00