Commit Graph

564 Commits

Author SHA1 Message Date
Henrik Rydgard
e15cba0e1b Centralize "Resized()" 2016-12-21 18:13:58 +01:00
Henrik Rydgard
7e46a153c0 Centralize DoBlockTransfer between the GPUs.
Required adding a pointer to the framebuffer manager and texture cache in
GPUCommon, which took a little bit of refactoring.
2016-12-21 18:07:17 +01:00
Henrik Rydgard
49ce7178f5 Fix bug when showing shader IDs in the shader viewer 2016-12-21 15:50:20 +01:00
Henrik Rydgard
0fa2f2c7ae Remove more now-unused code 2016-12-20 13:50:07 +01:00
Henrik Rydgard
1dbeca0618 Only support decoding UV to float in vertex formats. Supporting u8 and 16 was more complexity than it's worth. 2016-12-20 13:42:54 +01:00
Henrik Rydgard
9d7983eee8 Remove the ability to turn off prescaleUV entirely. It's simply better to do it in the vertex decoder. 2016-12-20 13:27:44 +01:00
Henrik Rydgard
5d5f10d956 Attempts to counter crashes seen in the Google Play developer console 2016-12-01 22:07:03 +01:00
Henrik Rydgard
fe6d2d4017 Avoid unaligned accesses when hashing vertex data on ARM. Fixes #9114, may help #9128 and #9129. 2016-12-01 15:56:05 +01:00
Henrik Rydgard
e6757615dc Follow the ARM calling convention closer in the vertex decoder 2016-12-01 15:56:05 +01:00
Henrik Rydgard
5df685fa07 Fix another couple of arch define things 2016-11-03 22:25:55 +01:00
Henrik Rydgard
ea5e9f8c35 Fix ARM64 Android build 2016-11-03 22:15:50 +01:00
Jools Wills
afe8e2bfb4 Fix building on rpi - #9104
Check for PPSSPP_ARCH(ARM_NEON) for neon code
Fix up rpi armv6/armv6 toolchain to work around issue with CMAKE_*_FLAGS not being set.
2016-11-01 02:45:30 +00:00
Florent Castelli
8c3552de74 cmake: Detect features at compile time
Instead of relying on manually passed down flags from CMake,
we now have ppsspp_config.h file to create the platform defines for us.
This improves support for multiplatform builds (such as iOS).
2016-10-19 12:31:19 +02:00
Henrik Rydgård
705627d6d3 Merge pull request #9053 from Orphis/android_define
android: Change preprocessor define to standard __ANDROID__
2016-10-12 13:12:14 +02:00
Florent Castelli
e0ff68b3f6 c++11: Remove compat header base/functional.h
We want a proper C++11, not tr1. We don't target those compilers anyway.
2016-10-12 11:32:45 +02:00
Florent Castelli
70593d1004 android: Change preprocessor define to standard __ANDROID__
ANDROID is only standard to the old Makefile buildsystem, not the platform.
2016-10-12 11:14:09 +02:00
Henrik Rydgård
dfda67e815 Merge pull request #9016 from unknownbrackets/screenshot
Use the display vfb for reporting/save state/TAS screenshots
2016-09-29 11:16:59 +02:00
Unknown W. Brackets
fa0e88f1b7 Add a flag to use the display vfb for screenshots.
This fixes proportions of reporting, savestate screenshots, and TAS
recording for PS1 ports, mainly.
2016-09-25 16:32:18 -07:00
Unknown W. Brackets
c5711d223a Remove an unused variable. 2016-09-24 14:38:23 -07:00
Unknown W. Brackets
8c9ab09fe2 Download 154000 each frame for Katamari.
It textures from it in a weird way, maybe we can find a better fix.
2016-09-18 20:38:20 -07:00
Unknown W. Brackets
ee0bc6c04d Clear memory when clearing drawing.
This should help synchronize block transfers better.

Should improve #8973.
2016-09-18 20:38:19 -07:00
Henrik Rydgard
03279e1212 Port over the Exynos cacheline size fix from Dolphin. Thanks to lewurm of the mono project for the discovery and original fix.
See https://github.com/dolphin-emu/dolphin/pull/4204 and https://github.com/mono/mono/pull/3549
2016-09-10 09:25:06 +02:00
Henrik Rydgard
b264657d56 Implement W^X-compatible path. Works on Windows and Android, hopefully iOS (untested).
Disabled block linking in this mode, can re-enable with some more work later.

To enable W^X on other platforms than iOS, simply change PlatformIsWXExclusive.
2016-08-28 14:52:08 +02:00
Unknown W. Brackets
f101e2710c Avoid a c++11 rule violation.
No default args on lambdas, unfortunately...?
2016-08-06 20:01:50 -07:00
Henrik Rydgård
eac18489e6 Merge pull request #8867 from unknownbrackets/mpeg
Improve mpeg parsing / corruption issues
2016-08-06 18:14:17 +02:00
Unknown W. Brackets
7127de302e Avoid some unused variable warnings. 2016-08-05 10:48:18 -07:00
Unknown W. Brackets
c9a9fc5e44 Allow block transfers to resize framebuffers.
Helps the ending video in Valkyrie Profile.  See #6008.
2016-07-24 15:58:06 -07:00
Unknown W. Brackets
8c6cdd0274 Correct CLUT load size.
Should be measured in 32 bytes not 16 bytes.

See #8850.
2016-07-09 10:13:43 -07:00
Unknown W. Brackets
5ab2676704 Buildfix. 2016-06-25 09:59:20 -07:00
Unknown W. Brackets
4c94cd764d Scale directly into the buffer if possible.
This will be possible in the majority of cases, and avoid an extra copy.
A small cost compared to scaling, but even so.
2016-06-25 08:40:45 -07:00
Unknown W. Brackets
3db69b87d7 Move ScaleAlways to common code. 2016-06-19 11:31:43 -07:00
Unknown W. Brackets
5962093ef5 Centralize the majority of texture decode. 2016-06-19 08:05:54 -07:00
Unknown W. Brackets
339f065a5c Centralize texture deindexing more. 2016-06-19 07:14:31 -07:00
Unknown W. Brackets
6151f8ef9f Allow taking screenshots with a clamped size.
Sometimes 10x is a little on the big side.
2016-06-12 07:09:01 -07:00
Unknown W. Brackets
fc77e2f8fc Flag replaced/scaled textures so we don't reuse.
Otherwise, we may try to use the replaceImages path, and end up with a
small updated texture in the top left of a large replaced texture.
2016-06-06 19:35:58 -07:00
Unknown W. Brackets
c12f835364 Download single-use renders right away.
Should prevent issues with the memory being reused soon after, hopefully.
See also #8781 and #7695.
2016-06-04 19:36:30 -07:00
Unknown W. Brackets
fed0089c81 Rewrite 5551 test mask to 0xFF in more cases.
If nothing else, this may improve cacheability or something, since states
will be more regular.

May somehow help PowerVR in #7740?
2016-05-28 09:11:53 -07:00
Unknown W. Brackets
a1fbcc3d93 Avoid directly calling osm from Core/GPU code.
This allows UI to handle the message however it wants to, and reduces
cross linkage issues.
2016-05-27 22:05:30 -07:00
Unknown W. Brackets
4113fd940c Add ugly invalidation workaround for SGS7s.
Otherwise they just crash, and crash often.  Special thanks to Jaaan for
numerous trials to try to find the best way to solve the crashes.
2016-05-23 21:35:28 -07:00
Unknown W. Brackets
68717411b1 Track when we see a clear indicate a size of a vfb. 2016-05-19 21:17:09 -07:00
Unknown W. Brackets
915ff42a9a Detect clears even when outside scissor.
Verified that scissor affects clears as well.  This allows a clear to be
detected in Katamari Damacy.
2016-05-19 20:37:29 -07:00
Unknown W. Brackets
1a26699607 Refactor texture loading to move things around. 2016-05-01 11:17:55 -07:00
Unknown W. Brackets
2e1986d0c8 Fix a few reorder warnings. 2016-05-01 09:50:03 -07:00
Unknown W. Brackets
f5b93bc6f0 Remove global num videos hack. 2016-05-01 08:53:48 -07:00
Unknown W. Brackets
99d29356d7 Track video addresses in texture cache. 2016-05-01 08:39:18 -07:00
Unknown W. Brackets
f039259a1a Use a same-everywhere quick hash for now. 2016-05-01 00:30:43 -07:00
Unknown W. Brackets
9039dd606f Move TextureReplacer to Core.
Probably makes more sense here after all.
2016-05-01 00:30:40 -07:00
Unknown W. Brackets
5dbc2b9267 Initial support for saving textures to PNGs. 2016-04-30 15:03:39 -07:00
Unknown W. Brackets
cf53948cf6 Implement some initial hashing so it's not broken. 2016-04-30 14:19:23 -07:00
Unknown W. Brackets
c4e98433b8 Add config to save or load replaced textures. 2016-04-30 14:05:03 -07:00
Unknown W. Brackets
bf39e61458 Setup initial structure for texture replacements. 2016-04-30 13:44:31 -07:00
Henrik Rydgård
259c696a35 Merge pull request #8690 from unknownbrackets/spline
Minor spline and bezier accuracy improvements
2016-04-24 09:33:35 +02:00
Unknown W. Brackets
ebce8d2753 Don't convert to float with prescale off.
Since we assume we need to normalize, it seems.
2016-04-16 19:00:34 -07:00
Unknown W. Brackets
ff802a983a vertexjit: Implement x86 tc morph decoding. 2016-04-16 18:38:08 -07:00
Unknown W. Brackets
614665068a Implement morphing for texcoords.
Tests show that this can be used.
2016-04-16 18:38:06 -07:00
Unknown W. Brackets
a0397bce4c Hopefully fix prescale in remasters.
Don't actually have a remaster to test, though.
2016-04-13 23:15:41 -07:00
Unknown W. Brackets
9224eb375f Correct bezier handling for 0 division.
This should still be drawn and treated as 1.
2016-04-10 17:53:50 -07:00
Unknown W. Brackets
0cd44e838b Allow spline subdivisions below 2. 2016-04-10 17:33:34 -07:00
Unknown W. Brackets
b1f0d4869c Advance pointers after drawing splines.
Tests show this is just like beziers.
2016-04-10 17:12:48 -07:00
Unknown W. Brackets
868bbb8ebe Advance vertex/index pointers on bezier submit.
Just like other primitives.
2016-04-10 12:59:06 -07:00
Unknown W. Brackets
808c807448 Allow tessellation with less than a 4 factor.
Per tests on real hardware, this is allowed.  It works fine without the
clamping and matches the result on hardware.
2016-04-10 12:10:15 -07:00
Unknown W. Brackets
277b76e2ae Treat GE_PATCHPRIM_UNKNOWN as points.
Confirmed by tests on hardware - although it's doubtful any games use
this type.
2016-04-10 11:58:15 -07:00
Unknown W. Brackets
02995ff083 Tiny cleanup to indexgen. 2016-04-10 02:30:33 -07:00
Unknown W. Brackets
1e0051a792 Add support for 32-bit indices.
Not clear how often these are used by games.  Let's find out.
2016-04-10 02:24:58 -07:00
Henrik Rydgard
d85dce0c21 Add limited support for newly discovered 32-bit index buffer format (by unknownbrackets)
See https://github.com/hrydgard/pspautotests/pull/184

Will truncate indices past 65536.
2016-04-10 11:03:07 +02:00
Unknown W. Brackets
c0660c5ee7 Simplify some repeated code patterns a bit.
Doesn't save many lines of actual code, though...
2016-04-09 22:25:10 -07:00
Unknown W. Brackets
555c76d439 Use bernstein for texcoord interpolation too.
This also closely matches hardware.
2016-04-09 22:14:15 -07:00
Unknown W. Brackets
2314a0f0ee Update note per hardware testing. 2016-04-09 21:46:50 -07:00
Unknown W. Brackets
2bafba3909 Interpolate bezier patch colors using bernstein.
This closely matches hardware (some color values seem to be off by one.)

See #7525.
2016-04-09 21:41:49 -07:00
Unknown W. Brackets
59d9524308 Switch bernsteins to use sse-friendly Vec3f. 2016-04-09 21:10:52 -07:00
Henrik Rydgard
731af0d0b4 Add some infrastructure for 2D drawing, to be used by the Vulkan framebuffer manager 2016-03-31 00:49:10 +02:00
Henrik Rydgard
339daede56 Clean up, start building some scaffolding 2016-03-31 00:49:10 +02:00
Henrik Rydgard
40d05e292c Cleanup in FramebufferVulkan to reduce the size of future diffs 2016-03-28 20:23:29 +02:00
Henrik Rydgard
0a8d74728a x86/64: Add a couple of more cases to very minor vertex skinning optimization 2016-03-28 18:40:23 +02:00
Unknown W. Brackets
b4406957c9 Halve the default tex buf size.
Might as well not allocate 2.5 MB that most of the time won't be needed.

If it becomes needed, it'll allocate at runtime, but this should be
uncommon.
2016-03-26 23:38:51 -07:00
Unknown W. Brackets
1300631e9a Allow unswizzling with a dest pitch. 2016-03-26 23:38:50 -07:00
Unknown W. Brackets
3593a7963e Cleanup and clarify texture swizzling funcs. 2016-03-26 21:55:32 -07:00
Unknown W. Brackets
b6778bf4ad Vulkan: Fix flat texture scaling. 2016-03-26 17:26:55 -07:00
Unknown W. Brackets
7d5f308494 Fix a crash where we used an old framebuf.
This was causing Breath of Fire 3 to crash, because it had an offset
framebuffer set that was never detatched.
2016-03-26 12:30:34 -07:00
Unknown W. Brackets
f31fbb9417 Cleanup fbTexInfo_ when detaching framebuffers. 2016-03-26 12:30:34 -07:00
Unknown W. Brackets
aad04f2941 Centralize the texcache key format. 2016-03-26 12:30:33 -07:00
Unknown W. Brackets
e8c8f19aec Move framebuf attachment into central code.
It doesn't look like this will be different, and there's a bug in it.
2016-03-26 12:30:32 -07:00
Henrik Rydgard
bd17351ef9 Texcache: Minor refactor/cleanup 2016-03-22 23:56:55 +01:00
Henrik Rydgard
e270b955bb x86/x64: Minor vertex decoder optimization 2016-03-22 23:56:55 +01:00
Unknown W. Brackets
2461a849f9 Correct some warnings reported by clang. 2016-03-20 23:13:28 -07:00
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
da50370328 Split out VulkanTexture from VulkanContext.cpp/h into VulkanImage.cpp/h 2016-03-20 19:31:02 +01:00
Unknown W. Brackets
f289e8485d Vulkan: Make sure depth==stencil when clearing.
We have to clear both at the same time.  I think it makes sense to
consider this part of the "separate alpha" flag, since alpha has to match
both color and depth.
2016-03-20 19:31:02 +01:00
Henrik Rydgard
a995dd2ff4 Get rid of strange offset in Vulkan matrix converter 2016-03-20 19:31:02 +01:00
Henrik Rydgard
5cee8856ea Fix UV scale for some vertex formats (like GL). Separate updates of PROJ and PROJTHROUGH matrices. 2016-03-20 19:31:02 +01:00
Unknown W. Brackets
8efbcf8d42 Use draws for alpha/stencil only clear in Vulkan. 2016-03-20 19:31:02 +01:00
Henrik Rydgard
28ae840abe Pipelines, samplers, description sets, oh my 2016-03-20 19:30:11 +01:00
Henrik Rydgard
cfcfd406fc Start porting TextureCache. Lots of stubbing going on. 2016-03-20 19:30:11 +01:00
Henrik Rydgard
e89a7f0c67 Update VulkanContext 2016-03-20 19:26:41 +01:00
Henrik Rydgard
c64064024d Initial vulkan code.
This was squashed from nine commits but using old versions of Vulkan.
2016-03-20 19:18:35 +01:00
Henrik Rydgard
c8457d39ed Fix a bunch of compiler warnings, delete some unused code 2016-03-13 15:17:31 +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
Henrik Rydgard
9d8d810395 Clear detection: Don't need to check the even vertices, as the odd vertices are the ones used for color.
This lets us detect and replace cube.elf's clear, and probably others.
2016-03-06 11:36:32 -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