Commit graph

13366 commits

Author SHA1 Message Date
JosJuice
41315b19f1 DolphinWX: Support banners in Homebrew Channel format
HBC uses files named icon.png for icons. This change makes Dolphin
support that file name, and also [executable file name].png
in case someone wants to have multiple files in one folder.

The HBC banner support is mainly intended for DOL and ELF files,
but it can also be used to override banners of disc images,
something that wasn't possible in the past.

There are currently issues with banner scaling not preserving
the aspect ratio and looking bad in general.
2015-09-04 19:08:30 +02:00
Markus Wick
ad978122d9 Merge pull request #2942 from booto/xfb_lines
VideoCommon: xfb height calculation adjusted
2015-09-03 09:40:24 +02:00
Scott Mansell
a1538a30ef Merge pull request #2941 from lioncash/gp
GPFifo: Remove pointer casts
2015-09-03 13:47:26 +12:00
Lioncash
2d224bd3b1 ActionReplay: Remove an alloca call 2015-09-02 17:41:19 -04:00
booto
5a32c3fba4 VideoCommon: xfb height calculation adjusted
Baten Kaitos allocates its XFBs from a tagged heap
structure. With the old calculation, too many lines
were being written so the tag of the allocation
after the XFB was being corrupted. Fixes crash
mentioned in this comment:
https://code.google.com/p/dolphin-emu/issues/detail?id=7734#c6
2015-09-03 03:57:03 +08:00
Lioncash
f32b79e612 GPFifo: Get rid of pointer casts 2015-09-02 15:24:33 -04:00
Lioncash
db98efdc98 GPFifo: Adjust parameter names 2015-09-02 15:20:02 -04:00
Ryan Houdek
3b65c4070c Merge pull request #2935 from Sonicadvance1/GLES_palette_conversion
[GLES] Support texture_buffer for palette texture conversion.
2015-09-02 10:11:41 -05:00
Scott Mansell
ecbb83fa0f Merge pull request #2686 from booto/field-timing
VI: derive field timing from VI registers
2015-09-03 01:09:43 +12:00
Markus Wick
66e9395d5d Merge pull request #2937 from lioncash/enums
VideoCommon: Convert some defines into enums
2015-09-02 13:27:09 +02:00
Rohit Nirmal
9c26bb0e17 Fix building with PCH disabled. 2015-09-01 13:45:23 -05:00
flacs
3b134497dd Merge pull request #2774 from AdmiralCurtiss/wiimote-extension-reconnect-on-button-press
Wiimote: Extend emulated Wiimote reconnect-on-button-press to attachments.
2015-09-01 18:31:39 +02:00
Lioncash
71ef0a0245 PixelShaderGen: Use spaces instead of tabs for vertical alignment 2015-09-01 12:20:50 -04:00
Lioncash
91eff28699 PixelShaderGen: Move defines into the implementation file
These aren't used outside of it. This also reduces the amount of things in
the global namespace.
2015-09-01 12:18:18 -04:00
Lioncash
c760ffbd28 BPMemory/XFMemory: Convert defines to enums
These actually convey a concrete type, as well as also providing a
symbolic constant during debugging.
2015-09-01 12:07:10 -04:00
booto
f6e4a8e680 FifoPlayer: Use VI derived timing, not hardcoded 60Hz 2015-09-01 20:24:42 +08:00
booto
8d6c39a89d VI: Adjust forced-progressive hack per magumagu's suggestion 2015-09-01 20:24:41 +08:00
booto
acc9a74174 VI: Restore forced-progressive hack with option
Bugfix: TargetRefreshRate uses rounded result
NTSC's 59.94 was becoming 59 with integer division.
2015-09-01 20:24:40 +08:00
booto
480dbb22f2 VI: derive field timing from VI registers 2015-09-01 20:24:40 +08:00
Ryan Houdek
7a35f9285b [GLES] Support texture_buffer for palette texture conversion.
OpenGL ES 3.2 adds this feature to core
It was available to GLES 3.1 as GL_{EXT, OES}_texture_buffer as well.
For the non-Nvidia vendors that implemented this is:
      - Qualcomm's Adreno 4xx
      - IMGTec's PowerVR Rogue
2015-09-01 05:41:03 -05:00
Lioncash
222b33f0a3 VolumeCreator: Fix a typo in VolumeKeyForPartition's name 2015-08-31 20:01:51 -04:00
Lioncash
1db1a8aacf VolumeCreator: Use a unique_ptr in CreateVolumeFromFilename 2015-08-31 20:01:44 -04:00
flacs
b9ea9c05ad Merge pull request #2931 from lioncash/mem
VertexLoader_Color: Remove some pointer casts
2015-09-01 00:32:43 +02:00
Lioncash
f7e22c8126 VertexLoader_Color: Mark translation-unit-local functions static 2015-08-31 17:31:23 -04:00
Lioncash
ec42be79f3 VertexLoader_Color: Get rid of some pointer casts 2015-08-31 17:31:11 -04:00
Ryan Houdek
ae0a06a018 [AArch64] Implement dcbz instruction 2015-08-31 15:39:47 -05:00
Ryan Houdek
d495ad5104 [AArch64] Make TST reg, reg emitter alias 2015-08-31 14:03:32 -05:00
Ryan Houdek
0f54aa48b4 Merge pull request #2928 from Sonicadvance1/aarch64_improved_singles
[AArch64] Improve floating point single instructions.
2015-08-31 12:00:08 -05:00
Ryan Houdek
bcde1aa8ff [AArch64] Improve floating point single instructions.
Instead of having an "INS" instruction after every single instruction to duplicate the bottom 64bits in to the top 64bits of the register,
create a new FPR register cache type to track when a register's lower 64bits is supposed to be duplicated in to the high 64bits.
Not necessarily actually having the lower bits duplicated in the host side register. This removes inefficient INS instructions from sequential single
float instructions.
In particular a very heavy single heavy block in Animal Crossing went from 712 instructions down to 520 instructions(~37% less instructions!)
2015-08-31 11:09:17 -05:00
Ryan Houdek
d003934b8a Merge pull request #2929 from Sonicadvance1/aarch64_optimize_gpr_flush
Aarch64 optimize gpr flush
2015-08-31 10:55:45 -05:00
Ryan Houdek
8bf332cf08 [AArch64] Optimize GPR cache flushing.
If we are flushing multiple sequential guest GPRs then we can store two in a single STP instruction.
Ikaruga does this quite a bit in their blocks where they do an lmw at the very end and then we have to flush them all.
Typically cuts 16 STR instructions down to 8 STP instructions there.
2015-08-30 23:07:12 -05:00
Ryan Houdek
f2c17436ab [AArch64] Fix issue in emitter.
Loadstore pairs support only signed offsets, not unsigned.
2015-08-30 23:05:59 -05:00
Scott Mansell
368867dba0 Merge pull request #2922 from aserna3/SDBlock
Implemented ability to block writes to the SD card
2015-08-31 04:51:50 +12:00
Ryan Houdek
b907576510 [AArch64] Support profiling by cycle counters if they are available to EL0 2015-08-30 10:25:16 -05:00
Ryan Houdek
5110574c1f Merge pull request #2921 from Sonicadvance1/aarch64_optimize_lmw
[AArch64] Optimize lmw.
2015-08-30 10:23:57 -05:00
Anthony Serna
0390bd61df Fixed introduced compiler warning in Linux 2015-08-29 20:41:59 -07:00
Lioncash
d58550e874 MemcardManager: Minor cleanup of header code 2015-08-29 05:19:51 -04:00
Lioncash
0f3e4c50e1 MemcardManager: Correct class indentation 2015-08-29 05:13:20 -04:00
Lioncash
072150589e Merge pull request #2924 from lioncash/scope
Hash: Narrow define scope
2015-08-29 03:12:18 -04:00
Lioncash
e7c7dcaa1f Merge pull request #2923 from lioncash/override
Jit_Util: Add missing override specifiers
2015-08-29 03:12:11 -04:00
Lioncash
310bb46967 Hash: Narrow define scope 2015-08-29 02:57:35 -04:00
Markus Wick
a16669231a Merge pull request #2917 from Sonicadvance1/android_fix_sgs6
[Android] Workaround Mali driver issue on the Samsung Galaxy S6.
2015-08-29 08:56:32 +02:00
Lioncash
df19f11cb9 Jit_Util: Add missing override specifiers 2015-08-29 00:30:18 -04:00
Anthony Serna
db7fe9507e Implemented ability to block writes to the SD card
Renamed variable to be more accurate
2015-08-28 17:32:29 -07:00
Markus Wick
6004ecc521 Merge pull request #2920 from rohit-n/build-pch
Fix building with PCH disabled.
2015-08-28 23:08:24 +02:00
Ryan Houdek
8d61706440 [AArch64] Optimize lmw.
This instruction is fairly heavily used by Ikaruga to load a bunch of registers from the stack.
In particular at the start of the second stage is a block that takes up ~20% CPU time that includes a usage of lmw to load half of the guest
registers.

Basic thing optimized here is changing from a single 32bit LDR to potentially a single 128bit LDR.
a single 32bit LDR is fairly slow, so we can optimize a few ways.
If we have four or more registers to load, do a 64bit LDP in to two host registers, byteswap, and then move the high 32bits of the host registers in
to the correct mapped guest register locations.
If we have two registers to load then do a 32bit LDP which will load two guest registers in a single instruction.
and then if we have only one register left to load, load it as before.

This saves quite a bit of cycles since the Cortex-A57 and A72's LDR instruction takes a few cycles.

Each 32bit LDR takes 4 cycles latency, plus 1 cycle for post-index(which typically happens in parallel.
Both the 32bit and 64bit LDP take the same amount of latency.

So we are improving latencies and reducing code bloat here.
2015-08-28 14:40:30 -05:00
Ryan Houdek
2c3fa8da28 [AArch64] Fix a bug in the register caches.
This is a bug that crops if BindToRegister() is called multiple times in a row without a R() function call between them.
How to reproduce the bug:
1) Have a completely filled cache with no host register remaining
2) Call BindToRegister() with different guest registers
3) Don't call R() between the BindToRegister() calls.

This issue typically wouldn't be seen for a couple of reasons. Typically we have /plenty/ of registers in the cache, and in most cases we only call
BindToRegister() once per instruction. In the off chance that it is called multiple times, it wouldn't update the last used counts and would flush the
same register as the previous call to it.
2015-08-28 14:36:14 -05:00
Rohit Nirmal
6252d2d71a Fix building with PCH disabled. 2015-08-28 14:13:28 -05:00
Lioncash
a6bd2fea28 Merge pull request #2919 from lioncash/vec
Vec3: Remove a memset call on the this pointer.
2015-08-28 15:05:02 -04:00
Lioncash
e787501528 Vec3: Simplify operator== code 2015-08-28 14:46:40 -04:00