Michael Maltese
05b4d14bf0
TextureConversionShader: fix syntax error
...
Fixes a situation where the following invalid GLSL code is generated:
```glsl
float3 texSample0 = texture(samp0, float3(uv0 + float2(0, 0) * sample_offset, 0.0)).rgb;
float3 texSample0 = floor(float3 texSample0 * 63.0) / 63.0;
float3 texSample1 = texture(samp0, float3(uv0 + float2(1, 0) * sample_offset, 0.0)).rgb;
float3 texSample1 = floor(float3 texSample1 * 63.0) / 63.0;
```
2017-04-12 14:23:25 -07:00
Stenzek
e9850aa0f2
VideoBackends: Support updated texture encoding shader generators
2017-04-12 00:11:22 +10:00
Stenzek
3847e226ab
TextureConversionShader: Consider source format of EFB for EFB2RAM
...
Currently, we use the alpha channel from the EFB even if the current
format does not include an alpha channel. Now, the alpha channel is set
to 1 if the format does not have an alpha channel, as well as truncating
to 5/6 bits per channel. This matches the EFB-to-texture behavior.
2017-04-12 00:11:22 +10:00
Markus Wick
4e90c5da8b
Merge pull request #5234 from lioncash/tuple
...
RenderBase: Return tuples from CalculateTargetScale and ConvertStereoRectangle instead of using out parameters
2017-04-11 10:27:16 +02:00
Scott Mansell
e6476b805e
Merge pull request #5008 from ligfx/aspectheuristic
...
VideoCommon: rework anamorphic widescreen heuristic
2017-04-10 11:30:34 +12:00
Anthony
c6b553b6d2
Merge pull request #5220 from stenzek/small-nonsquare-mips
...
TextureCache: Fix incomplete GPU texture decoding of non-square mips
2017-04-09 13:45:38 -07:00
Lioncash
c7ab6861c2
RenderBase: Return a tuple from ConvertStereoRectangle instead of using out parameters
2017-04-09 15:11:59 -04:00
Lioncash
671b5f9747
RenderBase: Return a tuple from CalculateTargetScale instead of using out parameters
2017-04-09 14:41:51 -04:00
Lioncash
cc803db042
RenderBase: Eliminate renderer global accesses within the Renderer class
...
There's no need to access these globals, the instance itself has access
to these data members and functions.
2017-04-08 20:15:39 -04:00
Lioncash
caf25653d8
RenderBase: const correctness
2017-04-08 20:11:29 -04:00
Mat M
59d93f3a0d
Merge pull request #5219 from lioncash/common
...
FileSearch: Namespace functions under the Common namespace
2017-04-08 17:19:00 -04:00
Stenzek
2492f196a7
TextureCache: Fix incomplete GPU texture decoding of non-square mips
2017-04-07 23:03:14 +10:00
Lioncash
f7a2f6ad01
FileSearch: Namespace functions under the Common namespace
2017-04-07 01:02:14 -04:00
Michael Maltese
cef5bd4a09
TextureCacheBase: remove duplicated variable
...
Fixes warning:
```
Source/Core/VideoCommon/TextureCacheBase.cpp:869:17: warning: declaration shadows a local variable [-Wshadow]
const u8* tlut = &texMem[tlutaddr];
^
Source/Core/VideoCommon/TextureCacheBase.cpp:784:13: note: previous declaration is here
const u8* tlut = &texMem[tlutaddr];
^
```
2017-04-06 13:52:42 -07:00
Stenzek
fdf2efdac6
TextureConversionShader: Add missing swap for index of C14X2 textures
2017-04-06 23:29:40 +10:00
Stenzek
c6075f4c36
TextureConversionShader: Fix compile error in C14X2 decoder
2017-04-06 13:59:06 +10:00
Michael Maltese
d10d09ccc1
VideoCommon: rework anamorphic widescreen heuristic
...
Some widescreen hacks (see below) properly force anamorphic output, but
don't make the last projection in a frame 16:9, so Dolphin doesn't
display it correctly.
This changes the heuristic code to assume a frame is anamorphic based on
the total number of vertex flushes in 4:3 and 16:9 projections that
frame. It also adds a bit of "aspect ratio inertia" by making it harder
to switch aspect ratios, which takes care of aspect ratio flickering
that some games / widescreen hacks would be susceptible with the new
logic.
I've tested this on SSX Tricky's native anamorphic support, Tom Clancy's
Splinter Cell (it stayed in 4:3 the whole time), and on the following
widescreen hacks for which the heuristic doesn't currently work:
Paper Mario: The Thousand-Year Door (Gecko widescreen code from Nintendont)
C202F310 00000003
3DC08042 3DE03FD8
91EEF6D8 4E800020
60000000 00000000
04199598 4E800020
C200F500 00000004
3DE08082 3DC0402B
61CE12A2 91CFA1BC
60000000 387D015C
60000000 00000000
C200F508 00000004
3DE08082 3DC04063
61CEE8D3 91CFA1BC
60000000 7FC3F378
60000000 00000000
The Simpsons: Hit & Run (AR widescreen code from the wiki)
04004600 C002A604
04004604 C09F0014
04004608 FC002040
0400460C 4082000C
04004610 C002A608
04004614 EC630032
04004618 48220508
04041A5C 38600001
04224344 C002A60C
04224B1C 4BDDFAE4
044786B0 3FAAAAAB
04479F28 3FA33333
2017-04-05 17:23:16 -07:00
Scott Mansell
4c0a392698
Merge pull request #4715 from iwubcode/efb_copy_corruption_at_higher_ir
...
Add configurable toggle to round vertices to nearest pixel
2017-04-05 19:41:52 +12:00
Michael Maltese
e9e3226026
TextureCacheBase: fix custom textures not being loaded
...
Fixes bug #10183 [0] introduced by 3bd184a
/ PR #4467 [1].
TextureCacheBase was no longer calling `entry->Load` for custom textures
since the compute shader decoding logic was added. This adds it back in.
It also slightly restructures the decoding if-group to match the one
below, which I think makes the logic more obvious.
(recommend viewing with `git diff -b` to ignore the indentation changes)
[0]: https://bugs.dolphin-emu.org/issues/10183
[1]: https://github.com/dolphin-emu/dolphin/pull/4467
2017-04-04 14:34:46 -07:00
iwubcode
a9d08a31a6
Add configurable toggle that rounds vertices to the nearest pixel when
...
w=1. This fixes some games at higher IRs.
2017-04-04 09:52:18 -05:00
Stenzek
79ba946d70
VideoCommon: Changes to TextureCache to support decoding in backend
2017-04-01 12:32:10 +10:00
Stenzek
6ffc16d1b0
VideoCommon: Add texture decoding shader generators
2017-04-01 12:32:10 +10:00
Stenzek
82fd984f3e
VideoBackends: Add configuration field for GPU texture decoding
2017-04-01 12:32:05 +10:00
Stenzek
b987f220e1
VideoBackends: Add support flag for compute shaders
2017-04-01 12:31:41 +10:00
Lioncash
41fbc659bf
Fifo: Remove unnecessary integral casts
...
FIFO_SIZE is a u32, so %u can just be used instead.
2017-03-28 10:35:26 -04:00
Matthew Parlane
85d74a506f
Merge pull request #4951 from waddlesplash/haiku-2
...
Initial support for Haiku.
2017-03-28 17:19:35 +13:00
Augustin Cavalier
0831dad467
Initial support for Haiku.
2017-03-27 23:46:19 -04:00
Matthew Parlane
94dd435336
Merge pull request #5176 from lioncash/retval
...
VertexLoader: Return debug strings by value
2017-03-28 15:38:32 +13:00
Lioncash
9ebd84e54a
VertexLoaderManager: Return debug strings by value
...
This also renames AppendListToString to VertexLoadersToString.
2017-03-26 23:50:09 -04:00
Lioncash
9859533ab4
VertexLoaderBase: Return debug strings by value
...
An out parameter for this sort of thing is a C++03 hold-over. This also
renames AppendToString to ToString.
2017-03-26 23:49:59 -04:00
Lioncash
d44844ba29
XFStructs: Get rid of an unnecessary pointer cast
...
Also gets rid of implicit sign conversions.
2017-03-26 23:09:30 -04:00
Lioncash
62db55dee2
Fifo: const correctness
...
PushFifoAuxBuffer only memcpys data using ptr as the source pointer, so
it can be a pointer to const data because of that.
2017-03-26 23:08:33 -04:00
Lioncash
8033a72f0b
VertexLoaderBase: Use std::array where applicable
2017-03-26 22:12:20 -04:00
Lioncash
57c21b9576
TextureCacheBase: Convert bound_textures from a C array to a std::array
...
Prevents array-to-pointer decay and simplifies some code.
2017-03-25 14:53:25 -04:00
Markus Wick
4b5995a6e0
Merge pull request #5138 from lioncash/init
...
VertexLoaderBase: In-class initialize class members where applicable
2017-03-23 15:15:32 +01:00
Lioncash
da2e34f69b
VertexLoaderBase: In-class initialize class members where applicable
...
Same thing, less code.
2017-03-23 08:37:18 -04:00
degasus
ca8d9e2215
TextureCache: Don't lock freed rendertargets for one frame.
...
New Super Mario Bros on PAL still renders at 60 fps, but skips every 5th XFB copy.
So our detection of "per frame" fails, and we require twice the amound of texture objects.
But our pool frees unused textures after 3 frames, so half of them needs to be reallocated
every few frames.
This commit removes the lock for render targets. It was introduced to not update a texture
while it is still in use. But render targets aren't updated while rendering, so this
lock isn't needed. Non-rendertarget textures however aren't as dynamic, so the lock should
have no performance update.
2017-03-22 23:28:42 +01:00
Markus Wick
5cc55f0fe3
Merge pull request #5096 from Armada651/anything-with-a-viewport
...
VertexShaderGen: Correct for negative viewport dimensions.
2017-03-20 10:55:56 +01:00
Jules Blok
cbfb07152f
VertexShaderGen: Correct for negative viewport dimensions.
2017-03-16 12:34:19 +01:00
Michael Maltese
134317e07f
videoconfig: add BBoxPreferStencilImplementation
...
@JMC47 requested this to be able to do performance comparisons.
2017-03-15 17:41:33 -07:00
Michael Maltese
de940a5fd6
VideoConfig: add bSupportsFragmentStoresAndAtomics
2017-03-15 17:20:47 -07:00
Markus Wick
31bb41c532
Merge pull request #4973 from z0z0z/master
...
Disable pinned memory for AMD mesa drivers
2017-03-14 10:02:05 +01:00
Jules Blok
0a2b58c896
OGL: Remove support for NV_depth_buffer_float.
...
We can't clamp the depth values to the 24-bit range while this extension is active.
2017-03-14 01:02:13 +01:00
Markus Wick
7b19475911
Merge pull request #4548 from stenzek/gcc-sse
...
Support SSSE3 texture decoders and CRC32 hashing on non-native builds (gcc)
2017-03-13 14:28:01 +01:00
Markus Wick
e99cd57eb3
Merge pull request #4935 from Armada651/depth-range-fix
...
VideoBackends: Set the maximum range when the depth range is oversized.
2017-03-10 18:05:52 +01:00
Jules Blok
3f41e6d4cf
RenderBase: Check if early ztest is enabled before falling back to vertex depth range.
2017-03-10 15:43:32 +01:00
Markus Wick
ef74c5eabd
Merge pull request #5051 from stenzek/renderer-fixes
...
VideoBackends: Fix crashes introduced by #4999
2017-03-09 21:06:50 +01:00
JosJuice
ced1614cac
Unify the way of setting game ID, title ID, revision
...
The existing code from ConfigManager, ES and MIOS is merged
into a new set of functions called SetRunningGameMetadata.
2017-03-09 15:34:14 +01:00
Stenzek
2cd240af0d
VideoBackends: Move max texture size to VideoConfig
...
This stops the virtual method call from within the Renderer constructor.
The initialization here for GL had to be moved to VideoBackend, as the
Renderer constructor will not have been executed before the value is
required.
2017-03-10 00:04:13 +10:00
Stenzek
4012166085
VideoCommon: Fix crash at startup with virtual XFB enabled
2017-03-09 23:39:48 +10:00
Markus Wick
489d90b6f3
Merge pull request #4999 from stenzek/renderer-statics
...
VideoCommon: Eliminate static state in Renderer
2017-03-08 11:02:20 +01:00
Markus Wick
9c1eac1f4f
Merge pull request #4944 from vladfi1/framedump
...
Framedump extensions
2017-03-08 11:01:53 +01:00
Markus Wick
a911d256a7
Merge pull request #5018 from Tilka/trunc
...
VideoCommon: remove unnecessary trunc()
2017-03-08 11:01:17 +01:00
Vlad Firoiu
096f58b172
Save new framedump options.
2017-03-08 01:38:40 -08:00
Vlad Firoiu
71c0e30655
Appease linter.
2017-03-05 17:29:46 -08:00
Vlad Firoiu
fbff74c1eb
Warn on invalid video codec.
2017-03-05 17:08:59 -08:00
Vlad Firoiu
9155af5103
GetDumpPath function.
2017-03-05 17:08:59 -08:00
Vlad Firoiu
8c24387509
Use ffv1 if user requests it.
2017-03-05 17:08:59 -08:00
Tillmann Karras
8a72e84ece
VideoCommon: remove unnecessary trunc()
2017-03-05 01:53:54 +00:00
Stenzek
459a5ab554
Android: Move screenshot waiting logic to Renderer
2017-03-04 16:53:16 +10:00
Stenzek
811eafda57
VideoCommon: Store last window request width/height
...
This avoids the need to send a window resize event every frame.
2017-03-04 16:53:12 +10:00
Stenzek
00a0a91513
VideoCommon: Move last EFB scale handling to CalculateTargetSize
2017-03-04 16:53:07 +10:00
Stenzek
afc25fdca0
VideoCommon: Rename Renderer s_ prefixes to m_
2017-03-04 16:42:21 +10:00
Stenzek
238a70b006
VideoCommon: Move some common initialization logic to RenderBase
2017-03-04 16:42:16 +10:00
Stenzek
277829d842
VideoCommon: Eliminate static state in Renderer
2017-03-04 16:39:50 +10:00
Lioncash
552c0d8404
Common: Move byte swapping utilities into their own header
...
This moves all the byte swapping utilities into a header named Swap.h.
A dedicated header is much more preferable here due to the size of the
code itself. In general usage throughout the codebase, CommonFuncs.h was
generally only included for these functions anyway. These being in their
own header avoids dumping the lesser used utilities into scope. As well
as providing a localized area for more utilities related to byte
swapping in the future (should they be needed). This also makes it nicer
to identify which files depend on the byte swapping utilities in
particular.
Since this is a completely new header, moving the code uncovered a few
indirect includes, as well as making some other inclusions unnecessary.
2017-03-03 17:18:18 -05:00
Markus Wick
7982ba120f
Merge pull request #4995 from lioncash/normalize
...
CMakeLists: Normalize whitespace
2017-03-02 11:51:06 +01:00
Lioncash
ee61bd6f2e
CMakeLists: Normalize whitespace
...
Normalizes tabs to spaces to follow our codebase's indentation style.
2017-03-01 14:53:23 -05:00
Jules Blok
83bd74aef0
Merge pull request #4974 from gamemasterplc/master
...
Widescreen Hack improvement
2017-03-01 02:17:33 +01:00
Lioncash
5ed55ffb34
PixelEngine: Move enum constants into the PixelEngine namespace
...
Gets some identifier names out of the global namespace.
2017-02-28 07:01:50 -05:00
Vlad Firoiu
a3af5b09d3
error logs
2017-02-27 23:45:35 -08:00
Vlad Firoiu
6b1910a078
Appease global header warning.
2017-02-27 23:45:35 -08:00
Vlad Firoiu
f82e3de763
Dump to arbitrary URLs.
2017-02-27 23:45:34 -08:00
Vlad Firoiu
21e66e60e3
Configable dump codec.
2017-02-27 23:45:12 -08:00
Vlad Firoiu
a1a9e488a5
XVID FourCC for MPEG-4 codecs.
2017-02-27 23:44:33 -08:00
Vlad Firoiu
d4686aa1a7
More warnings for AVIDump.
2017-02-27 23:44:33 -08:00
Vlad Firoiu
86a8382376
Arbitrary dump formats.
2017-02-27 23:44:29 -08:00
Vlad Firoiu
1723645c99
guess format before allocating context
2017-02-27 23:43:15 -08:00
Vlad Firoiu
8fb2eb889d
Handle delayed frames at the end of the movie.
2017-02-27 23:43:15 -08:00
Anthony
ed6a46a193
Merge pull request #4958 from RisingFog/avidump_bitrate
...
Add configurable video dump bitrate to INI
2017-02-27 10:15:19 -08:00
Anthony
63c5230d9b
Merge pull request #4959 from lioncash/ini
...
IniFile: Handle s64/u64 values
2017-02-27 10:02:53 -08:00
Anthony
b16cebc297
Merge pull request #4978 from ligfx/avidumpclosefiles
...
AVIDump[regression]: close avio handles
2017-02-27 09:39:40 -08:00
Jules Blok
f5d14e3691
Merge pull request #4933 from Armada651/disable-cache
...
VideoBackends: Add a developer option to disable the shader cache.
2017-02-27 17:35:01 +01:00
Michael Maltese
621472336c
AVIDump[regression]: close avio handles
2017-02-26 23:26:31 -08:00
gamemasterplc
4c4a96bfc5
Widescreen Hack improvement
...
Fixes Projection alignment in some N64 VC games. The original code forgot to multiply rawProjection[1] and rawProjection[3].
2017-02-26 12:55:57 -06:00
z0z0z
005e6796b8
Disable pinned memory for AMD mesa drivers
2017-02-26 10:49:28 -05:00
Jules Blok
a15555fe03
VideoBackends: Use vertex shader depth range if ztexture is used.
2017-02-26 11:34:48 +01:00
Chris Burgener
bfb17d5a9e
Add configurable video dump bitrate to INI
2017-02-25 23:58:21 -05:00
Lioncash
beec40f178
IniFile: Handle s64/u64 values
2017-02-25 00:03:20 -05:00
Jules Blok
94522d4cf3
OGL: Add support for glDepthRangedNV to handle oversized depth ranges.
2017-02-24 14:54:16 +01:00
Anthony
4e93002adb
Merge pull request #4800 from JosJuice/movie-dual-core-determinism
...
Remove special condition for auto dual core determinism
2017-02-23 13:19:39 -08:00
Jules Blok
21967b1f6e
VideoBackends: Add a developer option to disable the shader cache.
...
Makes it easier to disable the cache while working on the shaders.
2017-02-19 12:05:44 +01:00
Stenzek
b8eb1080ce
Merge pull request #4924 from stenzek/vulkan-list-restart
...
Vulkan: Fix GPU hangs on AMD Polaris
2017-02-18 21:58:30 +10:00
Markus Wick
6acad27919
Merge pull request #4927 from lioncash/unique-ptr
...
VertexManagerBase: Make CreateNativeVertexFormat return a unique_ptr
2017-02-18 12:40:00 +01:00
Lioncash
1fa81f24d3
VertexManagerBase: Make CreateNativeVertexFormat return a unique_ptr
...
Much safer as opposed to just returning raw allocated memory.
2017-02-18 03:16:24 -05:00
Matthew Parlane
4da7164f66
Merge pull request #4596 from ligfx/updateffmpeg
...
AVIDump: Updates to avoid deprecation warnings
2017-02-18 21:12:37 +13:00
Stenzek
e2ddb3853e
DriverDetails: Set BUG_PRIMITIVE_RESTART for AMD drivers
2017-02-18 15:07:35 +10:00
Matthew Parlane
691abc223b
Merge pull request #4859 from lioncash/opcodedecoder
...
OpcodeDecoding: Convert #defines into enum constants
2017-02-08 18:12:11 +13:00
Lioncash
d9d069e024
OpcodeDecoding: Convert #defines into enum constants
...
Gets several constants out of global scope.
2017-02-08 00:05:17 -05:00
Florent Castelli
8c82607c95
cmake: Don't use unqualified target_link_libraries
...
You can't mix unqualified and qualified link libraries (PUBLIC / PRIVATE).
Use the modern form.
2017-02-08 03:07:43 +01:00