Compare commits

...

3461 Commits

Author SHA1 Message Date
Jonathan Li
15a9a95284 pcsx2: Bump version number 2020-05-07 08:40:04 +01:00
knight-ryu12
56ea8c4fe6 locale:ja_jp Add missing hotkey notations 2020-05-05 20:07:19 +01:00
Christian Kenny
c4c1b58108 NSIS: QoL changes, general cleanup, bug fixes (#3335)
Uninstaller:
- Removed dependency for AdvUninstallLog, it wasn't really used for anything.
- Remove unpacked installer files upon successful installation.

Installer:
- Remove detection code for versions prior to 1.4.
- Fix Unicode path issues.
- Fix path issues if install folder already exists.
- Remove language option.
- Fix redistributable installation issues.
- Move redistributable installation to after user proceeds with install.
2020-05-05 20:02:07 +01:00
lightningterror
6fd328611f onepad: Update to latest controller database. 2020-05-04 21:01:27 +02:00
refractionpcsx2
18f772e71c Debugger: Fix editing of function names 2020-05-02 14:56:49 +01:00
refractionpcsx2
97df1dd3b5 Only reload the function symbols in debugger once per game 2020-05-02 14:22:43 +01:00
refractionpcsx2
4ce3fdfcb2 Fix up debugger stepping 2020-05-02 04:53:03 +01:00
refractionpcsx2
939e576df9 Separate debug pausing from savestates and recording frame advance 2020-05-02 04:29:30 +01:00
lightningterror
1939671e7f onepad: Add PDP Kingdom Hearts Controller.
Close #3342
2020-05-02 05:00:38 +02:00
refractionpcsx2
ea52da9428 Move debugger function list reset to when the debugger breaks in to the code. Stops a long freeze when first launching a game 2020-05-02 03:41:42 +01:00
lightningterror
f0d08aa7d0 Revert "Locale:ja_JP:Update Hotkey notation"
This reverts commit a7717b9ff1.

It actually broke hotkeys, we noticed a bit too late.
2020-05-01 00:09:55 +02:00
knight-ryu12
a7717b9ff1 Locale:ja_JP:Update Hotkey notation 2020-04-30 21:58:38 +02:00
lightningterror
ba449a524a Revert "gsdx-ogl/d3d11: Add a assert when texture is too small or too big."
This reverts commit 99f814d376.

The assert gets triggered on Linux and so debug build can't be used properly.
Would be nice to investigate why in the first place but until then revert the
entire commit. We have checks for texture limits anyway so it shouldn't be an issue.
2020-04-29 19:33:38 +02:00
Shadix Aced
f68bbfba60 Locales: Update translations (fr-FR). (#3326) 2020-04-28 14:33:52 +02:00
lightningterror
bce30e7388 onepad: Add SZMY-POWER CO. LTD. GAMEPAD to db.
Close #3329
2020-04-28 01:28:14 +02:00
Abdullah Hashim
58f5a5b915 Locales: Update Arabic Translations ar_SA. (#3302) 2020-04-14 18:40:25 +02:00
lightningterror
e53b2585d1 onepad: Add SZMY-POWER CO. LTD. GAMEPAD 3 TURBO controller.
Issue: https://github.com/PCSX2/pcsx2/issues/3309
2020-04-14 18:28:16 +02:00
lightningterror
49e316e488 onepad: Update to latest controller database. 2020-04-08 19:31:26 +02:00
lightningterror
56b76b17a0 onepad: Update to latest controller database. 2020-03-27 18:30:28 +01:00
lightningterror
8d3ff9444f gamedb: Remove gamefix patch for Petz - Horsez 2.
No longer needed, fixed with DI execution PR.

Game requires EE Cyclerate +2 or +3 to work properly.

Tested by Prafull.
2020-03-23 00:18:24 +01:00
RedDevilus
7b9547de3e Locales: Update Arabic Translations ar_SA
Unneeded spaces and symbols changed and removed.
2020-03-23 00:13:38 +01:00
StarFang208
d652d4e364 Locales: Update Italian translations it_IT. (#3289) 2020-03-22 13:28:22 +01:00
Christian Kenny
69b97dc3a6 cheats_ws: Remove R&C NTSC Patch - resolves Vid Comic 1 Boss Hang.
45FE0CC4.pnach

Close #3291
2020-03-19 21:52:53 +01:00
dio-gh
2c294fad8e Locales: Update Hungarian Translations hu_HU 2020-03-19 21:22:43 +01:00
lightningterror
4aa594197a gsdx: Bump gsdx version number to 1.2.0. 2020-03-19 20:27:42 +01:00
lightningterror
62dd5d980d pcsx2-tas: Adjust TAS code to be properly disabled with macro.
VS complains about errors so isolate the code in each file for TAS with macros.

Remove ifndef for m_capturingVideo as it is used for video capture menu.
2020-03-19 20:27:19 +01:00
lightningterror
5afa0e6d20 cheats_ws: Update widescreen patches for 1.6 release.
Version 18.01.2020
2020-03-19 20:17:35 +01:00
lightningterror
79db01d7ed gsdx-d3d11: Truncate fog in tfx.fx shader.
The change should've been pushed in #3091

Fixes regression with fog rendering.
2020-02-29 22:47:30 +01:00
xddxd
2c4af87e13 Locales: Add Lithuanian Translations lt_LT. (#3267) 2020-02-29 19:08:18 +01:00
Christian Kenny
6e22efe790 NSIS: Don't pack files twice - reduces installer size to 7MB. 2020-02-22 08:38:50 +01:00
Christian Kenny
3b380148ee NSIS: Fix uninstaller issue with shortcut removal. 2020-02-22 08:38:50 +01:00
lightningterror
420f642f65 onepad: Update to latest controller database. 2020-02-21 00:25:12 +01:00
altiereslima
d7ae93d856 Locales: Update Portuguese Brazilian Translations pt_BR. (#3259) 2020-02-20 01:30:52 +01:00
RedDevilus
a3114a2f8d Locales: Update Polish Translations pl_PO
Mo minor fixes to polish
2020-02-19 02:49:06 +01:00
TheNekOz
47cfbcb3fb Locales: Update Norwegian Translations nb_NO
Fixes for Norwegian Translations (merged)
Fix Norwegian lines + reviews
2020-02-19 02:49:06 +01:00
RedDevilus
d13f5b192b Locales: Update French Translations fr_FR
Fixes for French Translations (merged)

Rebased for translation French
Fixes to mo files
2020-02-19 02:49:06 +01:00
refractionpcsx2
160f4fd255 GameDB: Added VU patch for Powerdrome PAL. (#3255)
This patches some values in Powerdromes VU microprogram, which restores the 3d models of the characters.
The game uses the extended PS2 float range to do some culling calculations, so I have brung them down to be usable by x86, no other way to really fix this game.
2020-02-15 13:24:20 +01:00
teorex
9770755881 Locales: Update Russian Translations (ru_RU). (#3253) 2020-02-14 05:10:29 +01:00
lightningterror
82ebf36970 onepad: Update to latest controller database. 2020-02-13 20:56:47 +01:00
RedDevilus
9fd8d5c58c Locales: Translation/localisation fixes for Arabic/French/German. (#3251) 2020-02-12 23:42:19 +01:00
Chromaryu
e55ad0a12e Locales: Update Japanese translations ja_JP. (#3250) 2020-02-11 14:55:31 +01:00
RedDevilus
b944e54868 Locales: Update Dutch/Polish translations (nl_NL, pl_PL). (#3245) 2020-02-11 10:35:36 +01:00
Christian Kenny
e45fa9b6d8 NSIS: Update VC Redist URL/comments 2020-02-10 23:18:23 +01:00
Jonathan Li
6a5795abaf locales: Refresh locales to include updated strings
Updated strings:
"Configuration Guides (online)" -> "Configuration Guide"
"Readme / FAQ (Offline/PDF)" -> "Readme / FAQ"

Any string reformatting/sorting was done automatically by script.
2020-02-10 17:38:08 +00:00
Jonathan Li
4858dea259 locales: Renormalise nl_NL line endings 2020-02-10 17:25:56 +00:00
Jonathan Li
75346f42c3 locales: Remove pl_PL duplicate metadata 2020-02-10 17:25:45 +00:00
RedPanda4552
a7285ff375 PCSX2: PCSX2 1.6 Documentation Overhaul. (#3139)
Update all documentation for 1.6.
Source files for documentation are in md format and are kept in pcsx2\pcsx2\Docs, final exported/converted docs are in pdf format (Configuration_Guide and PCSX2_FAQ).

Update First time wizard to reflect recent documentation changes.
Update cmake to reflect recent documentation changes.

PO/POT/MO Localisation needs to be updated for the First time wizard to include the documentation changes.
NSIS installer needs to be updated to reflect the recent changes.
2020-02-10 04:46:49 +01:00
lightningterror
63eaea26d2 onepad: Update to latest controller database. 2020-02-09 17:51:22 +01:00
JohnHolmesII
c0eb053866 gsdx-hw: Add Jak 2 JP to crc list. (#3240) 2020-02-07 11:53:07 +01:00
atomic83GitHub
2b6905307d GameDB: New fixes/patches
This commit add several fixes for several games as well as some serial updates:

- Batman Vengeance - patch removal and the addition of EETiminghack to fix slow videos.
- Musashiden 2 - Several fixes which reduce by a large margin the amount of graphical issues.
- F1 2001 - Adjustment of the patch to make it fully working as well as the addition of the NTSC-U patch.
- Sprint Car 2 - Added a patch to make it playable without bouncing cars.
- Wakeboarding Unleashed - Added 2 fixes to fix various graphics issues (still unplayable on retail builds).
- Netsu Chu! Pro Baseball 2003 - Added a patch to fix game hanging when going ingame.
- Hisshou Pachinko-Pachislot series - Added the EETiminghack to solve crashing videos.
- Yu Gi ho 2 - Added several fixes to fix battle annimation.
- .hack fragment - Removal of all unneeded hacks.
- Ratchet and Calnk 2 - Removal of the EEtimingHack causing problems in the game.
2020-02-06 19:21:16 +01:00
lightningterror
5308be3c4d Locales: Fix First time wizard window width on Chinese Simplified language zn_CN. 2020-02-04 22:57:09 +01:00
teorex
654af774c8 Locales: Update Russian translations ru_RU. (#3234)
Some strings haven't been translated, another translator will have to look in to them.
2020-02-04 20:27:47 +01:00
XXXBold
4b72c32a09 Locales: Update German translations de_DE. (#3230) 2020-02-04 19:58:21 +01:00
arcum42
8550cb9b1b onepad: Broken haptic != Broken controller. 2020-02-02 01:49:00 -08:00
lightningterror
69ae598b7e gsdx-gui: Update crc hack level and Image load store tooltips to reflect recent changes. 2020-01-31 16:19:58 +01:00
lightningterror
f54b79c274 gsdx-hw: Move GSC_XenosagaE3 crc hacks to Aggressive state.
It will allow D3D11 to render Texture shuffle effects.

Keep the crc hacks on aggressive instead of removing them as they might
still be useful.
2020-01-31 16:19:58 +01:00
lightningterror
9af1d3b137 onepad: Update to latest controller database. 2020-01-27 20:51:41 +01:00
RedDevilus
46f1821046 Locales: Update Dutch translations nl_NL. (#3224) 2020-01-27 18:10:48 +01:00
lightningterror
6bcd118b62 gsdx-d3d11: Adjust anisotropic filtering handle.
Previous behaviour:
Anisotropic filtering was continuing to run even with Nearest filtering.
On opengl it doesn't run on nearest filtering. The gui for both
renderers also greys out aniso when nearest is selected.

Anisotropic filtering being able to run on palette texture. This caused
to break the rendering on palette textures for games that use it.

PR behavior:
The PR corrects both of these behaviors, Aniso won't run on palette
textures as well as nearest filtering.

Test cases for observing the issues were used: Star Ocean 3, Fifa
Street.
2020-01-26 22:02:19 +01:00
manz4rk
eb2ca00e8d Locales: Polish localization/translation fixes. (#3223) 2020-01-26 16:16:43 +01:00
resadent
6ef0e94520 Locales: Update Spanish translations es_ES. (#3203) 2020-01-23 13:47:38 +01:00
lightningterror
0c5353a709 gsdx-hw: Remove GSC_DemonStone crc hack.
It removed texture shuffle effects.
Half screen issue can be properly emulated with "Half-screen fix" option
set to Force Enabled.
2020-01-23 01:22:23 +01:00
lightningterror
f9e3605254 gsdx-gui: Add an option in hw hacks to control the half bottom detection.
Automatic, Force Disabled, Force Enabled.

Automatic - automatically determinate if a game needs the half screen
fix.
Force Disabled - fully disables the half bottom fix. It will help
Xenosaga games.
Force Enabled - fully enables the half bottom fix. Will help Lord of the
Rings Two Towers, Superman Shadows of Apokolips, Midnight Club 3.
2020-01-23 01:11:57 +01:00
lightningterror
f5eeaf1baa gsdx-hw: Split half screen/bottom detection in 3 levels.
Automatic, same as before, automatically enable based on height delta.

Force Disabled, fully disables the half bottom detection.

Force Enabled: Fully enables the half bottom detection.
2020-01-23 01:11:57 +01:00
hchsu
5aef5030d7 Locales: Update Traditional Chinese (zh_TW) translations. (#3216) 2020-01-21 07:30:24 +01:00
Marcin Mitura
cacaf3822b Locales: Polish localization fix. (#3222)
Fixed missing space gaps and corrected some stuff.
2020-01-20 11:24:32 +01:00
lightningterror
e43ba53ea9 gsdx-d3d11: Remove unused m_rt_ss sampler.
It was removed with old rtCopy DATE code.
2020-01-18 18:06:46 +01:00
Chromaryu
3d06cca15c Locale: Update Japanese translations ja_JP. (#3204) 2020-01-17 15:34:25 +01:00
Marcin Mitura
d77168f19e Locales: Update Polish language translations pl_PL. (#3213) 2020-01-17 15:21:24 +01:00
JudgeJE
8e420fe39b Locales: Updated the Turkish(tr_TR) translation with the missing string. (#3217) 2020-01-17 15:09:20 +01:00
Jonathan Li
b9c0faf51c locales: Refresh locales to include missing string 2020-01-17 08:52:48 +00:00
Jonathan Li
bb5e91a377 pcsx2:gui: Make the presets tooltip translatable again 2020-01-17 08:45:42 +00:00
JudgeJE
6452ae077c Locales: Updated Turkish translations for PCSX2(tr_TR). (#3208) 2020-01-17 04:06:02 +01:00
Hamish
96ef800777 Update locale files to current set of translatable strings (#3158) 2020-01-15 10:30:19 +00:00
Jonathan Li
7a83f7c8f6 pcsx2: Quickfix for translatable string not being picked up by xgettext 2020-01-15 09:24:41 +00:00
lightningterror
df639970c6 gsdx-hw: Add some missing game regions to crc list.
ArTonelico2 JP, Okami KO, SMTNocturne KO, TenchuWoH KO, TimeSplitters2
KO, Xenosaga 3 Demo JP, ShadowofRome JP, BurnoutTakedown KO,
BurnoutDominator JP,,  ShinOnimusha disc 1 and 2 JP (PS2 the best), Jak
2 KO, Jak 3 KO, Barnyard KO, HarryPotterATGOF KO, SoulReaver2 US/KO,
Persona 3 KO, ShoX KO/EU, TheIncredibleHulkUD US and Whiplash EU.
2020-01-14 02:02:04 +01:00
lightningterror
9c12937351 gsdx-hw: Add GT4 Mazda MX-5 Edition to crc list. 2020-01-05 16:00:52 +01:00
Christian Kenny
80e3e00f96 GameDB: Add patch for Nascar09. (#3193)
This prevents the DMA transfer from being corrupted intentionally from values written in cached memory (that require the EE data cache).
2019-12-31 22:09:42 +01:00
lightningterror
d78f9fdf2b gsdx-hw: Add Jak1 Cingular/Underground Demo, Jak X trilogy demo, RatchetAndClank3 1108 Beta to crc list. 2019-12-31 17:32:34 +01:00
lightningterror
03027453c8 onepad: Update to latest controller database.
Close #3188
2019-12-30 20:58:08 +01:00
refractionpcsx2
10dd9412a1 Fix CMSAR1 execution to use correct multiplier
Fix ILW/ISW/LQ/SQ on microVU for reading VU1 regs

Marvel Nemesis - Rise of the Imperfects goes ingame now, but it's quite messy
2019-12-30 15:26:44 +00:00
lightningterror
90b0e7af83 pcsx2-gui: Remove Dump memory option from Debugger.
Feature was never implemented, option served no purpose to remain there.

Issue #3186
2019-12-23 19:47:55 +01:00
Mrlinkwii
471a58a7a9 GameDB: Add Burnout 3 - Takedown [Demo], International Cue Club, Telly Addicts to db. (#3185) 2019-12-23 15:53:56 +01:00
chaoticgd
63a6e94444 Fix VIF unpack log message in Vif_Unpack.cpp for VU1 2019-12-23 01:17:25 +00:00
lightningterror
9ff5f5de7e gamedb: remove gamefix patches for DI execution fixes.
Jak X, Spongebob Squarepants( The movie  and Battle for Bikini Bottom),
namCollection - Namco 50th Anniversary, Disney-Pixar's The Incredibles,
Incredibles, The - Rise of the Underminer.
2019-12-22 20:58:29 +01:00
refractionpcsx2
908049a0fb pcsx2: DI execution is delayed by one instruction.
Fixes booting issues in the following games:
Jak X, Namco 50th anniversary, Spongebob the Movie, Spongebob Battle for Bikini Bottom,
The Incredibles, The Incredibles rize of the underminer, Soukou kihei armodyne, Garfield Saving Arlene, Tales of Fandom Vol. 2.

The games will no longer require a patch to boot.
2019-12-22 20:58:29 +01:00
Jonathan Li
363b87b334 gui: Fix about dialog logo DPI scaling
Also dynamically allocate the wxStaticBitmap control since its parent
window will delete it, which can cause issues.
2019-12-19 19:53:40 +01:00
lightningterror
1dc5d07696 pcsx2-gui: Fix dpi scaling for some windows.
About, first time wizard, import settings, assertion dialog.
2019-12-19 19:53:40 +01:00
lightningterror
18fe9431e0 pcsx2-gui: Update About window.
Add forum and license links.
Remove Developers and Contributors names, replaced with:
"Big thanks to everyone who contributed to the project throughout the years."
2019-12-19 19:53:40 +01:00
lightningterror
bbc3e36055 Lilypad-gui: Fix gui overlapping for force feedback axis 2 value. 2019-12-19 19:53:40 +01:00
lightningterror
23cbfdcf47 gsdx-gui: Redesign hw hacks gui on Windows.
Separate and group hack types in to Rendering and Upscaling hacks. This
should help users identify better what some hacks do and make it a
little bit easier to use.
2019-12-19 19:53:40 +01:00
lightningterror
2ec35f4493 gsdx-gui: Adjust some gui options.
Rename Automatic CRC Level label back to CRC Hack Level.
Rename Accurate Date label to DATE Accuracy.
Rename Accurate Blending label to Blending Accuracy.

Remove 10x and 12x upscaling options, we don't want to hit the maximum
texture size limit and cause issues so better play it safe and allow
only up until 8x upscaling.

Reword the tooltip to make it a bit more fitting with it's current
behavior.
Add all games in the list that have some sort of aggressive state.
Update anisotropic filtering, autoflush sw, sparse texture, gl blending tooltips.
2019-12-19 19:53:40 +01:00
lightningterror
92473c2ef6 gsdx-hw: Add missing crc id for Star Wars: The Force Unleashed PAL region.
Issue #3175
2019-12-19 19:17:10 +01:00
Christian Kenny
02a9d73c89 GameDB: Resolve missing blade issue in Castlevania Curse of Darkness. (#3173)
Fixes issue regarding a missing blade in Castlevania Curse of Darkness. User reported in Discord that any EE clamping modes besides full would work (they used Extra + Preserve sign, so we've done that here as well).
2019-12-19 16:34:06 +01:00
atomic83GitHub
9c65b73ae6 GameDB: Ecco the dolphin - Defender of the Future patch
This commit add a patch for the game : Ecco the Dolphin - Defender of the Future

This resolve a race condition causing the game to hang on the main loading screen.
2019-12-08 17:39:01 +01:00
lightningterror
23174f3a00 onepad: Update to latest controller database. 2019-12-06 20:13:28 +01:00
Jonathan Li
aa03c83126 pcsx2: Fix mainframe wxStaticBitmap delete issue
wxWindow classes will delete their children when destroyed, so
the wxStaticBitmap control must be allocated with new to avoid
undefined behaviour.
2019-12-02 20:40:48 +00:00
lightningterror
230c1ece35 gamedb: Add vuClampMode 2 gamefix to Soul Calibur 2.
Fixes respawn issues as well as SPS.
Also add a missing DB entry for a JAP release of SC3 Trial. The demo
discs may not actually need the gamefixes so they aren't included.

Wasn't able to verify if the gamefixes are required for SC3.
2019-12-02 20:43:20 +01:00
atomic83GitHub
21227cd12f GameDB: Patches update. (#3166)
This commit add multiples patch for various games.

F1 Racing championship - Fixes IPU hanging.

Sprint Cars 2 - Rearrange COP2 instructions to fix bad mac flag stuff. Fix for bouncing vehicles. Close #1991

Knockout Kings 2002 - Fixes DMA loop causing Hanging at start of fight.
2019-12-01 18:03:08 +01:00
lightningterror
2827394f3c gsdx-hw: Disable half screen TS fix for Xenosaga 3.
Xenosaga handles the half bottom as an vertex offset instead of a buffer
offset which does the effect twice.
Half bottom won't trigger a cache miss that skip the draw because it is
still the normal buffer but with a vertices offset.

Issue #3147
2019-11-28 00:04:15 +01:00
lightningterror
f2da7ece5c onepad: Update to latest controller database. 2019-11-25 22:56:51 +01:00
lightningterror
cc62165e36 gsdx-hw: Remove GSC_ResidentEvil4 crc hack.
Game is properly rendered on all renderers, any upscaling issues can be
resolved with Half Pixel Offset Normal.
2019-11-25 08:17:25 +01:00
lightningterror
50dda75c0d gsdx-hw: Add missing crc id for CrashBandicootWoC, pal region. 2019-11-25 05:34:09 +01:00
atomic83GitHub
f6600ec835 GameDB: Various updates
This commit add several changes:

- Various serials updates.
- An Emotion Engine clamping fix to solve the inability of collecting items in Lemony Snicket's A Series of Unfortunate Events. Tested by atomic83github
- A missing XgKickHack fix for Crash Twinsanity.
- An adjustment of the fixes applied to Muppets Party Cruise which allow to make the game fully playable. Tested by atomic83github
- A patch for Superman Returns (Pal only) to fix major SPS ingame. Tested by kozarovv
- A missing Gif Fifo fix for Puzzle Quest - Challenge of the Warlords to correct flickering black and white sprites.
- A removal of Vif Fifo hack for Pippa Funnell which do not change anything.
- A XgKickHack fix for Eternal Quest which fixes missing blue lines on the characters in dark areas. Tested by atomic83github
- Several EETiminghack fixes to various games of the Hisshou Pachinko-Pachislot Kouryoku series which fixes FMV hanging. Tested by atomic83github
- A patch for namCollection - Namco 50th Anniversary which fixes a game hanging at the intro. Tested by atomic83github - PSI and Refraction
- An adjustment of the VU clamping mode fix for Pac-Man World Rally which require a higher value to work. Tested by atomic83github
- A patch for True Crime streets of LA which fixes a game hanging before going ingame. Tested by PSI
2019-11-24 21:07:19 +01:00
lightningterror
dbfbc333f4 fps2bios: Remove fps2bios from master branch.
It's an abandoned project pretty much, if someone needs to go back and
take a look at it we have 1.4 branches and older.
2019-11-18 18:30:58 +01:00
lightningterror
89848346ae gsdx-hw: Add comments explaining what GSC_MidnightClub3 crc hack does. 2019-11-17 17:14:27 +01:00
Christian Kenny
132caf7f4a GameDB: Update/Remove outdated gamefixes for the following titles:
---------REMOVALS--------
EETimingHack:
- Blade 2 (replace EE TimingHack with GIF FIFO Gamefix)
- Buffy the Vampire Slayer
- Drakan The Ancient Gates
- Euro Rally Champion
- Obscure
- R-Type Final
- Muppets Party Cruise (replace EETimingHack with mVUFlagSpeedHack)

OPHFlagHack:
- Sphinx and the Cursed Mummy
- Buffy the Vampire Slayer
- Motorstorm Arctic Edge

------ADDITIONS```````
- Evergrace (Full EE Clamping - fixes hanging going in-game.)
2019-11-13 18:59:54 +01:00
lightningterror
3c38087e78 Gamedb: Remove FMVinSoftwareHack gamefix for Silent Hill 3.
On Direct3D11 FMVinSoftwareHack in combination with FXAA or External
shader enabled cause the emulator to hang. This is only a temporary
solution, a real solution would be to fix the fmv issue instead.
2019-11-03 16:25:28 +01:00
lightningterror
24be7785db gsdx-hw: Add Persona 3 to automatic mipmapping (basic level).
Fixes flashing / strobing windows.
Issue #1342
2019-10-27 02:03:56 +01:00
Jonathan Li
5b6b386708 ci:appveyor: Add VS2019 and remove VS2015
[skip travisci]
2019-10-23 15:33:13 +01:00
Some1fromthedark
e7d1a58a5a pcsx2: Remove special case from pointer patch command parsing (#3135)
Removes the special case in type 6 (pointer) code parsing when the data value
is 0. This matches Codebreaker behaviour.
2019-10-23 01:21:01 +01:00
lightningterror
b34338a500 gsdx-d3d11: Fetch the texture PSM format rather than the context format in texture sampler.
Match opengl behavior.
2019-10-21 23:23:22 +02:00
lightningterror
70c2778686 gsdx-hw: Adjust GSC_Bully crc hack.
Previous skip value 6 wasn't enough and caused some visual issues on the
ntsc version. Use value of 8 instead.

Issue reported by ozzie212121 on discord.
2019-10-21 18:55:45 +02:00
orbea
293983ea71 common: Silence -Wunused-function clang warnings. (#3127)
v2: Use pragma instead of [[maybe_unused]].
v3: Silence warnings with older clang versions too.
2019-10-12 12:14:40 -07:00
lightningterror
7bf920b07c gsdx-hw: Purge impact screen crc hack for Burnout Revenge.
Effect is properly rendered with depth emulation, so far only Burnout
Revenge triggered the crc hack from my testing.

Triggering the draw is done when the player car crashes.
2019-10-11 21:04:20 +02:00
lightningterror
c6b8763ba6 Onepad: Update to latest controller database. 2019-10-08 14:02:06 +02:00
orbea
afde59bb19 spu2-x: Fix crash with an invalid output module. (#3125)
* spu2-x: Fix crash with an invalid output module.

This will default to SDLOut.

Fixes https://github.com/PCSX2/pcsx2/issues/3124

* spu2-x: Create non-empty defaults for OutputApi and SdlOutputApi.
2019-10-06 18:05:19 -07:00
Jonathan Li
fa096cfce0 cmake: Change FreeBSD wx-config path 2019-10-07 01:39:32 +01:00
Jonathan Li
c87b8c7f49 pcsx2|utilities: Remove ambiguous wxString-related overloads
Avoid some function overloads that can accept char*, wxChar* and
wxString as a parameter. wxString can be constructed with either of
those parameters, so the function overloads may actually result in
ambiguity errors. Keep the wxString parameter versions and remove the
rest.

Fixes some compile errors on FreeBSD.
2019-10-07 01:39:32 +01:00
Jonathan Li
aee571e9b2 utilities: Split thread internal callback function
__try is used in pthread_cleanup_push when CLEANUP_SET is used as the
pthread cleanup model. That can't be used in functions with objects that
have destructors, so move it into a separate function.

Prevents compile errors on non-release Windows builds if other things in
the internal callback function change.
2019-10-07 01:39:32 +01:00
atomic83GitHub
cc52be15f3 GameDB: Asobo VU Rounding mode fixes (#3129)
This commit adds VU rounding modes (Positive) to Asobo games (Disney-Pixar WALL-E, Disney-Pixar Toy Story 3) which produces small lines in game.
Also add missing PAL entries to DB for Disney-Pixar WALL-E.
2019-10-05 20:17:23 +02:00
atomic83GitHub
3a15751fe9 GameDB: Fahrenheit asylum crashing fixes. (#3109)
This commit add a patch to solve a crash in the game "Fahrenheit".

Found with the help of the dev-9 plugin and the PS4 emu.

This is a game bug trigger by a timing issue. The game have an internal crash reporting system
which rely on a debug server connected to the console.

When the game do an error, it expects the debug server to be connected to send the crash dump.

But that never happen on PCSX2 as the debug server is not present.

Thus, the game will enter in an infinite loop at the asylum level.

This only happen when certain conditions are meet in the game.

This patch makes the game to exit the loop by cancelling the debug reporting.

On top of that the game have no frame pacing system in place which causes a massive slowdown in loading screens.

Thankfully, this can be patched out.

Note: NTSC version is fine and doesn't require the patch.

Tested by atomic83github
2019-10-05 11:34:19 +02:00
lightningterror
f2a9b59aae gsdx-ogl: Hit unsafe instead of safe path for sw fbmask when there is no alpha blending. (#3100)
So far notable performance improvement show Spiderman 3 and Scarface of 1-2 fps when using basic blending. Full list of known affected games at #3100
2019-10-03 15:50:19 +02:00
orbea
1c66851344 gsdx_legacy: Silence very verbose clang warnings. (#3126)
[107/641] Building CXX object plugins/GSdx_legacy/CMakeFiles/GSdx-legacy-1.0.0.dir/stdafx.cpp.o
warning: unknown warning option '-Wno-class-memaccess'; did you mean '-Wno-class-varargs'? [-Wunknown-warning-option]
warning: unknown warning option '-Wno-packed-not-aligned'; did you mean '-Wno-over-aligned'? [-Wunknown-warning-option]
2 warnings generated.
2019-09-30 16:23:47 -07:00
KrossX
fd5d80b53f Set F4's AlsoApplyToGui to false to avoid a hang when spammed. 2019-09-30 19:56:10 +05:30
orbea
d943870413 common: Fix build error with clang 9. (#3123)
clang 9 now provides _rotr and _rotl.
2019-09-29 20:30:47 +01:00
Jonathan Li
45687cd51a pcsx2: Partially fix IPU PACK command
The pack command converts from RGB32 to RGB16/INDX4, not RAW8 to
RGB16/INDX4.

Also, the VQ conversion (still unimplemented) only occurs when the
output format is 0, so fix that as well.
2019-09-29 12:06:27 +01:00
lightningterror
e506dc1457 Onepad: Update to latest controller database. 2019-09-22 17:49:05 +02:00
orbea
d92e4343e3 cmake: Fix build with cmake-3.5.2. (#3117) 2019-09-21 18:00:52 -07:00
Jonathan Li
0967f9bcfc cdvdgigaherz: Prevent potential infinite loop on ini read
Fixes a condition where a file read error could cause an infinite loop.
2019-09-21 22:29:23 +01:00
Some1fromthedark
33f4f04594 pcsx2: Fix parsing error in pointer patch command (#3112)
Fixes a type 6 (pointer) code parsing error that resulted in codes
with more than one offset getting terminated early.
2019-09-21 17:32:33 +01:00
lightningterror
6392f79fb6 gsdx-gui: Fix FXAA Shader checkbox not working properly.
Bonus: Remove unused "ModeRefreshRate" ini setting, leftover from d3d9,
psx option.
2019-09-17 23:05:03 +02:00
lightningterror
2a94dbcfe3 Gamedb: Remove Dakar 2 gamefix patches.
On earlier versions (0.9.8) the KOSMOS patches were used to fix an
emulator crash on bootup, the patches are no longer needed and cause an
emulator crash on OpenGL HW before a race begins.
The intro video patch skip also isn't needed anymore since intro video
is emulated properly. So far the only issue I spotted on earlier
versions such as 0.9.8 was fmv screen shaking.

Bug Report:
https://forums.pcsx2.net/Thread-Regression-Bug-Report-Emulator-crash-with-game-Dakar-2?pid=602842
2019-09-17 19:58:37 +02:00
KrossX
4db6b287cd GSdx-d3d11: Make TFX shader more similar to OGL's.
Denormalize FOG and COLOR to match as well.
2019-09-15 19:02:36 +02:00
KrossX
ee05d55a51 GSdx-d3d11: Reorganize TFX shader to match OGL's. 2019-09-15 19:02:36 +02:00
Hamish
e2d8992310 GSdx: Enable OpenCL on Linux (#3099) 2019-09-11 17:59:33 -07:00
lightningterror
a69cb88b16 Onepad: Update to latest controller database. 2019-09-10 23:35:50 +02:00
arcum42
877c4358d8 Take care of a typo that only effects pcsx2 if built without superVU. 2019-09-07 11:09:45 -07:00
lightningterror
159ce78680 gsdx-gui: Fix Align Sprite checkbox not working properly. 2019-09-06 13:12:49 +02:00
altiereslima
f2b402b0cb Locales: Update Portuguese Brazilian Translation. (#3092) 2019-09-04 22:09:15 +02:00
FlatOutPS2
0e84e2c438 pcsx2-counters: Revert to older VRender/VBlank timings
This fixes timing issues in Dynasty Warriors 3 Xtreme Legends
(fake save corruption), Jak II (random speedup issues) and Shadow of
Rome (FMV audio issues).

Also update the comments since a lot of them refer to past revisions of
the code.
2019-09-02 08:23:05 +01:00
Jonathan Li
aef0f94dcf gsdx: Use the same ini code on both Windows and Linux
Partially replace the Linux ini code so that it:
 - works on both Windows and Linux
 - is backwards compatible with older GSdx inis
 - properly handles UTF-8 ini pathnames

Fix an issue with GSdx on Windows not being able to handle non-ASCII
ini pathnames.
2019-09-02 00:06:26 +01:00
Chromaryu
476ccf8ac9 Locales: ja-JP: fix non-desu-masu forms. (#3097) 2019-09-01 23:57:12 +02:00
lightningterror
b44c0a3fbd gsdx-hw: Add FFX us/eu demo/prototype discs to crc list. 2019-08-31 23:32:00 +02:00
lightningterror
d3ecec5d6c Gamedb: Adjust/add some entries for Jak games.
Add Jak 1 Jap versions:PAPX-90222, PAPX-90223
Add Jak 1 Korean version: SCPS-56003
Add Jak 2 Jap version:PAPX-90516
Add Jak 2 demo EU version: SCED-51700
Add Jak 3 demo EU version: SCED-52952

Adjust/ correct some of the names for Jak games to better fit their
region name and wiki entries.
2019-08-31 04:10:44 +02:00
lightningterror
62d07c8335 gsdx-hw: Add Jak 1 jap, Jak 2 eu, Jak 3 eu/us demo discs to crc list. 2019-08-31 04:10:23 +02:00
lightningterror
99f814d376 gsdx-ogl/d3d11: Add a assert when texture is too small or too big.
Add an assert for when texture is below 1 on direct3d/ogl.
Add an assert for when texture is above direct3d limit.
2019-08-26 15:55:43 +02:00
lightningterror
de7a3b70c9 gsdx-d3d11: Adjust maximum texture size limit based on available feature level.
d3d10 = 8192
d3d11 = 16384

Seems it is easier to hit the limit. Champions of Norrath with 8x
upscale for example.
2019-08-26 15:55:43 +02:00
Jonathan Li
92aa43fe91 cdvd: Fix end-of-disc issues (#3051)
* cdvd: Fix off-by-one end of file checks

* cdvd: Fix loading for games that attempt to read non-existent sectors

Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.

* cdvdgigaherz: Fix loading for games that attempt to read non-existent sectors

Some games will hang when attempting to read non-existent sectors.
Just do nothing when it occurs instead of erroring out.

* cdvd: Don't write non-existent sectors to blockdump
2019-08-25 16:09:28 +02:00
arcum42
014753894a Get rid of extremely spammy warnings when compiling as debug. 2019-08-24 18:47:49 -07:00
arcum42
d048baf503 pango: reenable harfbuzz check, but don't fail if it isn't there. Revisit once travis builds have pango 1.44 in them. 2019-08-24 15:50:02 -07:00
arcum42
74e6c437f2 Add option not to build dev9ghzdrk. 2019-08-23 15:31:46 -07:00
arcum42
7679dcf469 clang: Get rid of a number of warnings. I don't need pages of warnings that things clearly marked in the code as deprecated are deprecated, and I doubt I'll be worrying about those overloaded functions any time soon. 2019-08-23 14:40:33 -07:00
atomic83GitHub
03133bc539 GameDB: Enter the Matrix changes. (#3081)
This commit add some explaination about what the EETiming hack does in "Enter the Matrix" and add a missing serial with corresponding fixes to it.

Tested by atomic83github
2019-08-20 22:56:30 +02:00
lightningterror
d77d440a04 gsdx-hw: Re enable automatic mipmapping for Jak 1 and 3.
Issue #2916 has been resolved in #3076
2019-08-19 23:27:58 +02:00
Alessandro Vetere
6feb59fef5 GSdx-hw OGL: log if tex size gt PBO segment size.
Texture data may be corrupted in this case due to missing
fences synchronization.
2019-08-19 23:13:56 +02:00
Alessandro Vetere
63982bf6b7 GSdx-hw OGL: fix PBO pool map size.
Round up mapping size for alignment before computing
wrapped pointer.
Avoids memcpy after end of PBO buffer.
2019-08-19 23:13:56 +02:00
KrossX
9788f6db2c PCSX2: Avoid hang when switching renders with hotkey. (#3072) 2019-08-19 15:44:33 +02:00
arcum42
33571dda42 Comment out the fix for the moment, since Travis hates me. 2019-08-17 21:23:18 -07:00
arcum42
0db14df070 One more try here. Make harfbuzz optional instead of required for the moment, and worry about travis once it's on distributions with pango 1.44+. 2019-08-17 21:04:46 -07:00
arcum42
c381cb90be Add harfbuzz to travis as well. 2019-08-17 20:52:03 -07:00
arcum42
eda1ab44ac Add harfbuzz as a dependency to play nice with pango 1.44+. 2019-08-17 20:33:14 -07:00
lightningterror
e8fe2eeb59 Revert "3rdparty/pthreads4w: Fixup process exit logic. (#3056)"
This reverts commit af6f040202.
2019-08-18 02:24:58 +02:00
lightningterror
fc8423e49d Revert "3rdparty/pthreads4w: Ensure on_process_init early execution. (#3073)"
This reverts commit 88a02941f6.
2019-08-18 02:24:58 +02:00
Silent
88a02941f6 3rdparty/pthreads4w: Ensure on_process_init early execution. (#3073)
This fixes a semi-consistent regression introduced by #3056, where on_process_exit would execute before other destructors relying on pthreads.

Now on_process_init has been moved to an earlier section of static initializers, ensuring it will be initialized first. Previously, this initializer was placed in the same section as any other initializer, making their order of execution non-deterministic across compilations - for example, I was unable to reproduce this issue as soon as I forced pthreads4w.c to recompile last!
2019-08-16 17:22:29 +02:00
KrossX
9b651e44d0 GSdx: Fix mipmap SSE2 code for linear mipmap nearest filter. (#3064)
Fixes a regression introduced in e728a14c19
2019-08-16 09:03:05 +01:00
lightningterror
9830b2dd98 GSdx-hw: Add Jak 1 JP and Jak 3 EU crc ids. 2019-08-14 22:56:03 +02:00
lightningterror
beac776025 GSdx-hw: Add a crc id for Jak 1 US region. 2019-08-14 17:54:55 +02:00
Alessandro Vetere
9e687895e1 GSdx-hw TC: improve search tex in RT
Fixes eyes rendering in Jak games both ingame and in cutscenes.
Previous method yielded no eyes in Jak 2/3/X cutscenes.

- Generalized offset search logic with caching system (works for BW > 1
and any PSM, limited to PSMCT32 for now)
- CRC Flags mechanism for default behavior enabling in Jak games
2019-08-14 17:09:51 +02:00
Alessandro Vetere
7c42928b57 GSdx-hw TC: invalidate Source with Target TEX0
Fixes eyes blinking in Jak games with tex in rt search
enabled.

- Target TEX0 in Source is Source TEX0 if the Source is
not build from Target, otherwise it is the Target TEX0,
allowing improved Source invalidation
2019-08-14 17:09:51 +02:00
Alessandro Vetere
68cfc5d953 GSdx-hw TC: fix Target::Inside check
- inclusion shall not be strict only on start side
2019-08-14 17:09:51 +02:00
Alessandro Vetere
2007894ba6 GSdx-hw TC: fix end block computations
- compute bottom right texel block as last valid block
2019-08-14 17:09:51 +02:00
Alessandro Vetere
dfa4680547 GSdx-hw: SwSpriteRender, fix drawing region 2019-08-14 16:18:39 +02:00
Alessandro Vetere
1f6b44d556 GSdx-hw: SwSpriteRender, improve no rast. check 2019-08-14 16:18:39 +02:00
atomic83GitHub
924156f3cb GameDB: Crazy Frog Racer 2/Alone in the Dark fixes
This commit add a FPU negative div hack to Crazy Frog Racer 2 to fix black fade effects and some overlays texts in the menus.

It also add EETimingHack on some missing Alone in the Dark revisions which fixes game hanging at boot.

Tested by Forum member:
- LoStraniero1991
2019-08-14 10:56:18 +02:00
Silent
af6f040202 3rdparty/pthreads4w: Fixup process exit logic. (#3056)
This PR modifies a third party module - I realize normally those should be fixed upstream, but I really doubt pthreads4w would a) consider it a valid bug and b) fix it. To make all my changes easily visible, I wrap them all in #if PCSX2_FIX.

This PR fixes a process exit routine in pthreads. This third party module exploits CRT initialization order to inject their initializer/deinitializer earlier than the others by putting their functions in .CRT$XCU and .CRT$XPU pseudo regions. The problem comes when a module gets build with dynamic CRT (/MD or /MDd), like most of PCSX2 plugins, it doesn't actually use .CRT$XPx regions as terminators, and instead lets dynamic CRT handle them.

This PR corrects this issue by registering the terminator via atexit, so it works with both static and dynamic CRT. This resolves an issue where SPU2-X plugin (and potentially more) leaks TLS handles when unloaded.
2019-08-13 18:32:41 +02:00
arcum42
ed6ac00186 onepad-legacy: Use mt_queue, and move it from onepad to common. (#3060) 2019-08-10 15:46:29 -07:00
lightningterror
4e58558eb7 Gamedb: Also add Norway region of Harry Potter COS to gamedb with a gamefix patch. 2019-08-10 20:52:53 +02:00
lightningterror
4c1b7086be Gamedb: Add Harry Potter and the Chamber of Secrets Finnish version to gamedb along with a gamefix patch. 2019-08-10 20:15:30 +02:00
KrossX
4bb968158d PCSX2: Wait some frames between F9 SW render toggles. (#3052)
Setting the toggle variable is now at the vsync point. FMV toggle should still work as usual, but the F9 toggle should have to wait the full period of around 32 frames. This seems short enough while also depends on how fast those frames can rendered, avoiding having to set a timer in ms.
2019-08-07 19:51:29 +02:00
KrossX
c0a38b45f1 GSDumpGUI: Replaced watchdog thread with Forms.Timer
Explicit dispose of watchers and timer on Form dispose, also event enum.
2019-08-07 16:50:59 +02:00
KrossX
77f52cf04d GSDumpGUI: Some changes based on willkuer's review. 2019-08-07 16:50:59 +02:00
KrossX
c8a285dee6 GSDumpGUI: Now textbox path change requires enter key. 2019-08-07 16:50:59 +02:00
KrossX
7b6c2be067 GSDumpGUI: Make it 64bit friendly. 2019-08-07 16:50:59 +02:00
KrossX
c6b944753b GSDumpGUI: Add bits information to window title. 2019-08-07 16:50:59 +02:00
KrossX
6bc322cab1 GSDumpGUI: Avoid startup crash on invalid path settings. 2019-08-07 16:50:59 +02:00
KrossX
62c1fc621a GSDumpGUI: Update textboxes after using the File Dialog.
Also, minor style changes.
2019-08-07 16:50:59 +02:00
KrossX
c14c23a063 GSDumpGUI: Actually start reading the stderr stream. 2019-08-07 16:50:59 +02:00
KrossX
b6415bf6fc GSDumpGUI: Different color for error log output. 2019-08-07 16:50:59 +02:00
KrossX
73369db6c2 GSDumpGUI: Enable stderr redirection.
Also some tabs to spaces.
2019-08-07 16:50:59 +02:00
KrossX
9dd92c1cb5 GSDumpGUI: Replace directory tree dialog.
Also fix refresh on manual label change.
2019-08-07 16:50:59 +02:00
KrossX
bd6261e3de GSDumpGUI: Watch for directory changes.
Also try to avoid unclosed file handles.
2019-08-07 16:50:59 +02:00
KrossX
b749c8ef7d GSDumpGUI: Fix unbalanced stack exception. 2019-08-07 16:50:59 +02:00
KrossX
317683461f GSDumpGUI: Run one frame per loop for better performance.
Also, make sure to check messages before vsync. GSdx message loop runs per vsync.
2019-08-07 16:50:59 +02:00
KrossX
0d6b9e9570 GSDumpGUI: Close when GSdx window is hidden.
The plugin hides the window on WM_CLOSE (wnd x button) and does not post quit message.
2019-08-07 16:50:59 +02:00
KrossX
b245b06959 GSDumpGUI: create the vsync packet just once. 2019-08-07 16:50:59 +02:00
KrossX
003046c91c GSDumpGUI: Minor improvements.
Loop changes, icon and info shows up, can take screenshot.
2019-08-07 16:50:59 +02:00
atomic83GitHub
66487b18e3 GameDB: MTX Mototrax glitchy graphics fixes
This PR add a VU rounding mode fix to MTX Mototrax which solve glitchy graphics ingame.

Tested by forum member: wheninrome
2019-08-04 15:35:22 +02:00
lightningterror
51ba799779 GSdx: Use rt for dRect size, update crc level label.
Use rt for dRect size for OI_SonicUnleashed fix.

Make CRC level label name and position match between windows and linux.
2019-08-04 13:16:47 +02:00
arcum42
11187cff9e PCSX2: Set pad plugin and bios defaults automatically. (#3020)
Default to Onepad on Linux, Lilypad on Windows, and default to using the bios if there is one listed.
2019-08-02 20:06:50 -07:00
lightningterror
0814690534 GSdx: Remove useless logo_ogl.bmp include from VS project files. 2019-07-31 17:36:28 +02:00
lightningterror
c8c1429493 gsdx-hw: Add some logs for OI fixes, add JakX beta eu crc id. 2019-07-30 01:01:23 +02:00
lightningterror
e79ea75ae2 gsdx-hw: Add OI rendering fix for Big Mutha Truckers.
It will allow to render the shadows properly, also update the crc
hack to skip less effects.
2019-07-30 00:29:07 +02:00
lightningterror
55d469e7f2 gsdx-hw/gamedb: Add gamefix for Dog of Bay as well as some game crc ids.
Add XgKickHack gamefix for Dog of Bay., fixes corrupt textures. Issue
#3041

Add some crc ids. Big Mutha JP version(Bakusou Convoy Densetsu - Otoko
Hanamichi America Roman),
Jak X Public Beta v.1 US, Sly 3 EU Prototype.
2019-07-28 06:54:58 +02:00
atomic83GitHub
ddb6aac826 GameDB: Super Monkey Ball Deluxe Monkey Billiards DX minigame fixes
This commit add an emotion engine rounding fix for Super Monkey Ball Deluxe to fix object balls never stoping in the Monkey Billiards DX minigame.

Tested by atomic83github
2019-07-26 18:10:55 +02:00
atomic83GitHub
fd69720d11 Lilypad: Update Xinput description. (#3038)
This commit add the Xbox ONE controller mention in the Xinput description. This include the Mediatek wireless adapter.
2019-07-26 00:38:17 +02:00
arcum42
b48bc8e71c spu2-x: Set default to SDL on Linux instead of portaudio, unless you don't have SDL 2. 2019-07-22 21:16:14 -07:00
monster860
902b88ac1a Spu2-x: Fix noise generator. (#3030)
Fixes the noise generator outputting a 4.8 kHz tone instead of white noise. The random number generator used in GetNoiseValues currently repeats every 10 samples, which is really really awful for a random number generator.

New code based on http://problemkaputt.de/psx-spx.htm#spunoisegenerator
2019-07-22 18:46:10 +02:00
arcum42
7d1d88e408 Fix Game Database error message. 2019-07-20 12:10:07 -07:00
Luminar Light
5de92562a7 Gamedb: Patch for Jak X NTSC Public Beta. (#3029)
Patches HookOrDie()

Emulator can't boot this without the patch. All Jak X builds have this problem, but soon I will patch the few remaining ones too.
2019-07-18 20:50:54 +02:00
lightningterror
2e4e22f0a5 Gamedb: Update Spider Man 3 Jap patch, add Korean version to db list along with a gamepatch port by Arapapa. 2019-07-17 09:08:03 +02:00
lightningterror
a4d899132c Gamedb: Add some gamefix patches, add/modify db entries.
Add/update patches/entries for WWE SmackDown! Shut Your Mouth:
SLES-51283, SLKA-25030, SLUS-20483
Fixes freeze during entrances.

Add gamefix patch for Dead or Alive 2 SLPS-25026 JP.
Fixes game hanging on boot, fixes sound.

Add gamefix patches for Spider Man 3 US/EU regions:
SLES-54723, SLES-54724, SLUS-21552, SLPS-25823.
Fixes hang before loading level 2.
Issue #3012

Patch sources from thread:
https://forums.pcsx2.net/Thread-Fixing-unplayable-games
2019-07-17 08:31:31 +02:00
lightningterror
41baf1de14 gsdx-gui: A few more adjustments to the osd/shade boost sliders.
Finally fix overlapping? I hope.
2019-07-17 05:12:56 +02:00
lightningterror
91570a9e0f gsdx-ogl/d3d11: Also ensure that we set proper ini values for Shade Boost sliders.
Should avoid any potential issues if ini values are wrong for shade
boost.

Bonus: Fix gui overlapping issues when sliders are on maximum (100).
2019-07-17 01:16:46 +02:00
lightningterror
888897ed48 gsdx-osd: Ensure we set proper data for osd options.
Should avoid any potential issues if ini values are wrong for osd.
2019-07-16 23:42:34 +02:00
lightningterror
56b8612502 gsdx-d3d11: Set maximum allowed texture size to d3d10 limits which is 8192.
Should prevent any issues if we ever go over the limit.
2019-07-15 22:32:45 +02:00
lightningterror
557f50fb4e gsdx-gui: Allow only digit inputs in osd edit boxes for font size, timeout, and max logs. 2019-07-15 21:41:30 +02:00
lightningterror
6ccc4911c5 gsdx-gui: Fix some overlapping text on osd gui. 2019-07-15 19:30:26 +02:00
lightningterror
ee9c31317e gsdx-gui: Put/move hw adv. & hacks option after blending option. 2019-07-15 01:49:10 +02:00
arcum42
2f8932e370 Cache code cleanups. 2019-07-13 17:49:51 -07:00
Kojin
dbfe21c444 Travis: Bump Ubuntu version to Xenial
- Update Ubuntu version to Xenial as Trusty is EOL as of April
- Drop GCC 4.9 build
2019-07-13 20:10:05 +02:00
iMineLink
f409079864 GSdx-hw: New SW sprite renderer, used in Jak games only for now. (#3001)
Developed a new SW sprite render function, which is used to fix
Jak and Daxter colors in Jak games and to remove the old Jak games hack
which yielded wrong colors and clashed with TC search texture in RT function.

- Remove OO_JakGames hack for palette readback from framebuffer (slow,
clashes with texture in RT TC function, clashes with Target readback logic)
- Developed new method SwSpriteRender with CPU rendering logic
- Add OI_JakGames method using SwSpriteRender for CPU palette rendering (fast,
does not clash with texture in RT TC function, no readback required)

Bonus: fps also sees an improvement in Jak games 3-5 increase.
2019-07-13 01:05:27 +02:00
KrossX
c678627b19 pcsx2: Auto select proper GSdx plugin in Plugin Selection. (#3013)
In order AVX2 -> SSE4 -> SSE2.
Auto selected by cpu instruction support.
2019-07-12 23:48:20 +02:00
atomic83GitHub
a3f3e7705d GameDB: Various updates/cleanup and gamefixes for Ratatouille and Dog's Life
This PR clean a bit the GameDB and add 2 fixes for:

-Ratatouille: Add vu round mode to positive to fix very minor lines appearing at certain points during the game.
tested by atomic83github

-Dog's Life and Wallace & Gromit in Project Zoo: Add vu clamping mode to extra+preserv sign to fix minor white SPS problem on characters.
Tested by discord member: LastBreath
2019-07-12 13:48:19 +02:00
gibbed
b739e9187d pcsx2: Fix microVU debug logging. 2019-07-12 06:25:12 +02:00
lightningterror
8e3b34bce6 gsdx-ogl: Comment out pabe bit, not yet used. 2019-07-11 20:11:34 +02:00
lightningterror
6f09cd9b81 gsdx: Fix unknown pragma clang warnings. 2019-07-11 20:11:27 +02:00
lightningterror
96b02be1d1 gsdx-hw: Add Harry Potter and the Goblet of Fire,
Project Snowblind to automatic mipmapping.

Add some extra missing crc ids too for GT4 and Ape Escape 2.
2019-07-11 13:12:06 +02:00
atomic83GitHub
9961478212 GameDB: Bully/Canis Canem Edit unbeatable Chapter 2 level fixes.
This commit add FPU clamping fixes for Bully/Canis Canem Edit to fix the inability to take the bottle in the trophy case in Chapter 2: Hattrick vs Galloway.

Tested by atomic83github.
2019-07-11 12:27:44 +02:00
Dogway
3886d72e0f GSdx: Add temperature setting. (#2989)
Ported libretro's white_point shader to GSdx.
Based on the work described here:
http://www.zombieprototypes.com/?p=210
2019-07-11 00:20:00 +02:00
lightningterror
d0cb0f59d9 gsdx-d3d11: Extend BLEND_NO_BAR to also hit on clamp 0, it's faster than standard HDR algo.
GOW shows a nice fps improvement (+6 give or take). Spyro too maybe.
2019-07-08 00:40:54 +02:00
lightningterror
2cd9aff867 gsdx-d3d11: Extend sw blending to BLEND_NO_BAR which is also free and doesn't require rt sample nor any barriers.
It helps light rendering in SW Battlefront 2, VP2 also triggers it but needs to be further tested what it does.
2019-07-08 00:40:54 +02:00
arcum42
cc1a320c61 Remove sVU_Compare.h and iVU1micro.cpp, both of which appear unused. 2019-07-06 15:47:26 -07:00
arcum42
441e786d3d Take care of a few clang warnings. 2019-07-06 14:16:04 -07:00
lightningterror
7c17b9ef5b gamedb: Looks like I copied outdated patch codes on my previous commit for Ace Combat Zero.
Update the patches to the correct values.
2019-07-06 22:20:31 +02:00
lightningterror
132332f9b8 Gamedb/GSdx-hw: Add gamefix patches for Ace Combat Zero JP/KO versions. Add KO version to crc id list.
Fixes collision/missle hit issues.

Issue and patch sources (provided by arapapa) from thread:
https://forums.pcsx2.net/Thread-Ace-Combat-Zero-Collision-Issues
2019-07-06 22:11:47 +02:00
arcum42
fc35de02f2 build.sh and cmake plugin code cleanup (#2953)
* Refactor build.sh. Restructure finding plugins. Remove legacy code. Add --clean-plugins option. Document --no-trans option.

Don't do setcap if dev9ghzdrk isn't being built. List dependencies if they are missing. Remove code related to zerospu2, and misc plugins we aren't building. Minor message changes.
2019-07-04 19:49:11 -07:00
Kojin
7054450348 [skip ci] README: Update system requirements
- Update min OS to Windows 7
- Update recommended OS to Windows 10
- Update recommended CPU to anything with AVX2
- Some small wording changes
2019-07-05 01:06:54 +02:00
lightningterror
a6f7a9576e Onepad: Update controller database. 2019-07-05 01:01:33 +02:00
Akash
a36d5a0221 CDVD: Add fallback path for blockdump source name unavailability
2 pass fallback cases for the untitled scenario was mentioned in the TODO comment to be completed, added  one of them. (Still doesn't seem reliable enough, but honestly when do we  Also modified blank space indentation at a part to tab space to satisfy lightning boi.
2019-07-01 11:29:35 +05:30
Akash
7290576a2a CDVD: Add configurable directory for blockdumps storage
Previously the blockdumps will be automatically stored in the root directory of PCSX2, added an INI option in "PCSX2_ui.ini" named "CurrentBlockdump" to modify the directory to whatever is preferred by the user. (Some people were requesting for this)

A GUI could also be added if anyone wants, but considering the popularity of this I'm not sure as blockdumps will only be used my less percentile of users and mostly by testers and developers for debugging.
2019-06-30 11:48:12 +05:30
Alessandro Vetere
ba2efec983 GsDumpFinder: fix error when dir not found 2019-06-29 16:14:28 +05:30
lightningterror
b19804190e gsdx-hw: Add an OI hack for Sonic Unleashed.
It will allow to render the shadows properly.

Rendering pattern is:
Save RG channel with a kind of a TS (replaced by a copy in this hack),
compute shadow in RG,
save result in alpha with a TS,
Restore RG channel that we previously copied to render shadows.
2019-06-23 23:34:25 +02:00
lightningterror
40929a4728 gsdx-d3d11: Add rgba channel selection/support to StretchRect. 2019-06-23 23:34:25 +02:00
lightningterror
e9825dccc0 gsdx-ogl: Add rgba channel selection/support to StretchRect. 2019-06-23 23:34:25 +02:00
lightningterror
066a9aaf71 gsdx-hw: Purge Sonic unleashed crc hack. 2019-06-23 23:34:25 +02:00
atomic83GitHub
3ee72e7cec GameDB: Serials update and some gamefixes. (#2999)
- serials update along with a minor modification to siphon filter patches typo.

- Pac Man world 2 Timing fixes to avoid hangs at various levels. Tested by atomic83github.

- Missing VU clamping fixes for some EA sports titles. Tested by atomic83github.
2019-06-23 12:54:33 +02:00
lightningterror
62417dae99 gsdx-hw: Revert dmc 3 TS hack purge.
Seems like Texture shuffle/depth is not handled properly in all cases so
revert the change until we fix it properly. Move it to gl level too.

Commit:

11cd6b56cd
2019-06-20 10:36:21 +02:00
atomic83GitHub
14178cb184 GameDB: Popcap crashing fixes
- Added EETimingHack to Popcap hits vol1 and 2 to fixes random crashing in the game.

Tested by atomic83github and discord memeber "Jacoby".
2019-06-19 13:57:51 +05:30
Shanoah Alkire
de1717c1a1 Switch a bunch of 64 bit #ifdef's to use the cross-platform 64-bit define I added into Pcsx2Defs.h. 2019-06-18 22:08:43 -07:00
Shanoah Alkire
43981f5981 Add warning on gcc 9. 2019-06-18 21:24:30 -07:00
lightningterror
300f16df61 Gamedb/gsdx-hw: Add gamefix patch and crc id for Harry Potter and the Prisoner of Azkaban EU.
Gamefix patch source:

https://forums.pcsx2.net/Thread-Fixing-unplayable-games?pid=600492#pid600492
2019-06-18 22:34:17 +02:00
lightningterror
9401e52b08 gsdx-d3d11/gui: Move the nvidia hack toggle to Disable Safe Features.
With the sprite hack removed it was no longer possible to toggle this
hack on nvidia gpus, the toggle has been moved to Disable Safe Features.

It some issues caused by the hack in sotc, fatal frame and border offset
issues.
2019-06-18 22:06:35 +02:00
Alessandro Vetere
61b984a6c1 BuildParameters.cmake: fix typo 2019-06-18 21:28:57 +02:00
lightningterror
11cd6b56cd gsdx-hw: Purge useless d3d11 only hacl for DMC3.
Texture shuffle emulated correctly.
2019-06-18 20:21:03 +02:00
atomic83GitHub
1fc3516637 GameDB: Naruto games fixes and beta trial updates (#2994)
Added VU clamping to none for Ulitmate Ninja 2 to fix minor visual issues with lights.
- Tested by boberto5888

Added VU clamping to extra for Ulitmate Ninja 3 to fix minor visual issues with lights as well as missing QTE.
- Tested by boberto5888

Added beta trial serials.
- Tested by atomic83github
2019-06-17 17:22:25 +02:00
Akash
4195b77fa3 GSdx-dialog: Unused parameter on hacks dialog constructor
Apparently someone was careless enough to forget removing the parameter on the constructor which passes the adapter ID >_<
2019-06-17 13:01:16 +05:30
Akash
9acb871c7b GSdx-Dialog: Remove useless member variable
The adapter ID was needed to be passed before for a legacy DX9 hack which is no longer present, I figured it could cause a potential conflict when the adapter value stored at INI is outdated. (which is now a possibility after
lightning removed reference device)

The other alternative would be to just force set the INI value on dialog initialization to avoid unavailable values in the INI file, but that would be a rough for a person transitioning from debug build to release build using the reference device
option, so just removing this outdated variable for now, I rather doubt we'd be needing it in the future, in case we need adapter passing to subdialogs, the former suggestion needs to be implemented. Not implementing it right now since there's no need for it.
2019-06-17 12:47:03 +05:30
Shanoah Alkire
cc6a58da18 Remove sVU_Debug.h, as nothing in it is actually used anywhere. 2019-06-16 19:31:02 -07:00
arcum42
563772fdf1 Added a universal 64-bit define, and a message indicating that Pcsx2 was compiled as 64 bit in the system information. 2019-06-16 17:33:17 -07:00
lightningterror
e6d42338ad gsdx-hw: Fix incorrect variable name when tc is disabled.
Allows to compile gsdx with tc disabled properly again.
2019-06-17 00:11:47 +02:00
lightningterror
e89f46139b gsdx-d3d11/gui: Don't display Reference Device in available Adapters in release builds. Display it only on debug builds.
It is used for debugging only.
2019-06-16 21:25:25 +02:00
lightningterror
a936cd9eb1 gsdx-d3d11: Remove remaining uav (UnorderedAccessView) code, it wasn't used
. Code can be readded in the future if there is a need for it. Advanced
DATE for example.
2019-06-16 20:42:28 +02:00
lightningterror
34bedddd5c gsdx-d3d11: Update nvidia hack handling.
Don't query the api for the adapter description twice.
2019-06-16 20:42:28 +02:00
KrossX
55f4dea468 gsdx-gui: Purge Sprite hack from the gui.
Collaborator: lightningterror
2019-06-16 20:42:28 +02:00
KrossX
39f509feaa gsdx-hw: Remove no longer needed Sprite hack, replaced by improved atst code already. 2019-06-16 20:42:28 +02:00
KrossX
6a122268cb gsdx-d3d11: Update d3d shader macro handling to a much better algorithm.
Bonus, remove unused options variable
D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS.
2019-06-16 20:42:28 +02:00
lightningterror
cec185fd66 gsdx-hw: Add Jak2 demo crc id, US version. 2019-06-15 22:35:17 +02:00
lightningterror
0781cb65bf gsdx-hw purge HauntingGround crc hacks.
Half Pixel Offset can solve the misaligned blur when upscaling, while
the second hack is also no longer needed and it broke depth effects too.
2019-06-14 23:32:58 +02:00
lightningterror
3228789808 gsdx-d3d11: Add draw call number to debug logs. 2019-06-13 14:52:03 +02:00
lightningterror
6024359011 gsdx-hw: Purge CastlevaniaCoD, CastlevaniaLoI, NanoBreaker crc hacks.
Shadows emulated correctly with accumulation blend, d3d11 misses sw
blend for extra accuracy (darker shadow).

gsdevice11: Remove unused IsCLR1() variable.
2019-06-13 13:38:24 +02:00
hibye8313
60cf62fea1 GSdx-d3d11: Partial port of EmulateBlending() from OGL renderer to DX11 renderer and ps_blend() from OGL shader to DX11 shader (only accumulation blend). 2019-06-13 13:25:46 +02:00
hibye8313
6bdd4ff186 GSdx-d3d11: Ported SW blending variables from OGL to DX11 PSSelector/BSSelector/pixel shader. 2019-06-13 13:25:46 +02:00
hibye8313
718042e6a6 GSdx: Made a DX11/OGL-independent blend map in GSDevice.cpp. Convert to OGL/DX11 specific constants at run time. 2019-06-13 13:25:46 +02:00
willkuer
a3bf46ecd9 [skip ci] GSDumpgui: Handle dumpPath as optional. (#2981)
GsDump file can be optional in case you just want to launch the plugin config dialog.
Throw with a meaningful error message in case validation layer fails.
2019-06-06 04:21:02 +02:00
lightningterror
cd11ae1ac6 Gamedb: Add SLES-51219 Harry Potter and the Chamber of Secrets Portugal release.
Bonus, include the gamefix patches for all remaining PAL releases that
were missing. crc and patch codes should be the same considering other
releases share it.

Issue:

https://forums.pcsx2.net/Thread-Bug-report-Harry-Potter-and-the-Chamber-of-Secrets-PAL-PS2-Disc-and-Iso-Problem?pid=600047
2019-06-04 02:41:19 +02:00
Marco Estevez
668670941c Gamedb: Fix for Mafia (S) SLES-52282. (#2974)
Allow pass the initial splash screen.

EETimingHack = 1
2019-06-02 03:16:27 +02:00
lightningterror
976b77f144 gsdx-hw: Use std max for scaling factor, bonus add jak3 crc id for eu preview/us international release. 2019-06-01 16:46:17 +02:00
Ian Brown
a1a6374709 Build: Changes required to compile and run using VS 2019 (#2975)
in vs 2019, the system xhash used by unordered_map uses Target in its template definition. pcsx2 #defines this in the r5900 and r3000 headers which leak cause a cryptic compilation error. A quick fix here is just to undef it in gamebase.h. A better fix would be to encapsulate the definition or use something more c++ to avoid the pre-processor. Add a comment to explain the _Target_ undef.

tap.h did not have string defined. I guess this was included transitively somewhere with an earlier set of system headers.

Biostools, the file is opened in text mode which causes the bios to be partially read. I'm not sure that's vs2019 specific but it's wrong in any case. Maybe the default mode parameter changed at some point. Maybe wxFile would be a better choice here rather than WxFFile because wxFile always open s in binary mode.
2019-06-01 13:34:21 +02:00
Thomas Evans
1f1b68a9b4 debugger: Muti-byte hex strings can now be pasted into the memory view. (#2960)
You can now paste a hex string into the memory view (with Ctrl+V).
2019-06-01 13:30:03 +02:00
lightningterror
fbafd44209 [skip ci] gsdumpgui: Auto select gsdx dll and gs dump when a directory location is reloaded/changed.
First on list only. Feature to save selection isn't available for now.
2019-05-31 19:24:48 +02:00
lightningterror
877a112193 gsdx-hw: Remove no longer used linear parameter from ComputeFixedTEX0,
add an assert that m_target isn't handled with invalid_tex0 yet due to upscaling.
2019-05-31 13:50:28 +02:00
lightningterror
8ff74fc6c2 gsdx-hw: Fix border issue on ComputeFixedTEX0.
It is quite complex to handle rescaling on ComputeFixedTEX0
so this function is less stricter than GetSizeFixedTEX0,
therefore we remove the reduce optimization,
and we don't handle bilinear filtering which might create wrong interpolation at the border.

Fixes FFX upscaling issues on Bilinear filter during cutscenes.

comment
2019-05-31 13:50:28 +02:00
pgert
afd5ceef7a PCSX2 > GUI: update and improvements of Scandinavian translations 2019-05-26 16:09:58 +02:00
lightningterror
5e043b3b6f gsdx-hw: Re add GSC_RedDeadRevolver crc hack that only skipped blur effects to aggressive mode only.
Previous commit for reference:

548d6b31bf
2019-05-25 17:19:17 +02:00
lightningterror
3fb2afb51a onepad: Update to latest controlled database. 2019-05-24 08:06:23 +02:00
lightningterror
482f1e953a gamedb/gsdx: Harry Potter Chamber of secrets db and crc update.
Remove some crc lookups for gamefix patches that share the same serial
and patch codes. It will allow game versions with different crc ids to
use the patches. Close #2654

Add JP version to automatic mipmapping.
2019-05-24 07:41:50 +02:00
lightningterror
ed8592b30b gsdx-d3d11: Don't run Alpha Stencil on DATE with texture shuffle.
It breaks DATE with tex shuffle (Haunting Ground 2, Superman shadow of
Apokolips, possibly others too).
2019-05-24 01:17:33 +02:00
lightningterror
3289dc1cc7 gsdx-gui: update alpha stencil, crc hack level tooltips. 2019-05-23 18:11:26 +02:00
lightningterror
fe8793081a [skip ci] gsdumpgui: Properly disable/grey out some debug options based on Debug Mode check. 2019-05-23 18:05:38 +02:00
Chromaryu
c6fcf0aaab Locales: Update ja_JP localing.
To match up with newly added strings.
2019-05-17 23:46:55 +02:00
lightningterror
87808fee03 gsdx-hw: Purge GSC_GTASanAndreas crc hacks.
Auto flush allows us to render the effects properly.
Small ghosting may not be an actual issues as it's also present on sw
renderer.
2019-05-17 03:35:17 +02:00
Shanoah Alkire
2941fd9b87 wx: Replace a bunch of wx 2.8 macros with the wx 3.x versions. 2019-05-11 20:43:47 -07:00
Shanoah Alkire
5d4ae31ba1 Add a few default functions in explicitly. (-Wdeprecated-copy) 2019-05-11 19:18:18 -07:00
Shanoah Alkire
284880f768 GSdx: Variables should be initialized in the order in which they are declared. (-Wreorder) 2019-05-11 19:00:29 -07:00
Kojin
2d46bc661d gsdx-d3d11: ensure texture size of at least 1x1 2019-05-11 22:23:12 +02:00
lightningterror
9a5225dfdf gsdx-hw: Purge GSC_SimpsonsGame crc hacks.
Upscaling issue can be resolved with Half Pixel Offset Normal.
2019-05-05 23:37:18 +02:00
Christian Kenny
079baaed99 gamedb: Add CrashTagTeamRacingIbit gamefix to Crash Tag Team Racing.
Fixes constant recompilation problems.
2019-05-03 01:03:05 +02:00
lightningterror
be46832c7b gsdx-hw/gamedb: Add Star Wars - The Force Unleashed to gamedb and crc list. 2019-05-03 00:47:45 +02:00
lightningterror
637f777ea9 gsdx-hw: Update OI_StarWarsForceUnleashed hack.
Remove hack that was replaced by OI_GsMemClear and OI_DoubleHalfClear.
2019-05-02 22:53:44 +02:00
lightningterror
eb0d22626f gsdx-hw: Purge GSC_StarWarsForceUnleashed crc hacks.
Shadows are rendered correctly with basic blending on opengl, high on
d3d11.
2019-05-02 21:07:46 +02:00
Kojin
de0c4a7fc7 gsdx-hw: Check for null texture before commit in hacks. (#2951)
Issue ##2943
2019-05-02 19:57:00 +02:00
lightningterror
5a69a2f689 gsdx-sw: Add an option to toggle auto flush on sw renderer.
Windows + Linux.
2019-05-02 15:35:55 +02:00
lightningterror
87f36852b6 pcsx2: ofc I forgot to completely remove the variable from the previous commit ... 2019-05-01 22:57:46 +02:00
lightningterror
bbce809ac9 pcsx2-gui: Don't put Screenshot button in a submenu.
Bonus take care of a compiler warning.

Issue #2949
2019-05-01 22:40:49 +02:00
hibye8313
56a976e277 microVU: Add gamefix for Crash Tag Team Racing. Fixes constant recompilation problems. 2019-04-30 22:57:11 +01:00
Shanoah Alkire
b270c1bb67 onepad: Cleanup in a few places. 2019-04-28 01:36:43 -07:00
Shanoah Alkire
6a202c9b5f onepad: Update to include latest controller database. 2019-04-27 21:15:53 -07:00
Shanoah Alkire
d00b8081ac onepad: bring the sensibility changes over to onepad as well as onepad_legacy. 2019-04-27 19:30:29 -07:00
Yaroslav Salnikov
ff9749f6dc Onepad (legacy) sensibility implementation for linux (#2932)
* Implementation of onepad sensibility for linux

* cast floats to int

* Fix the sensibility sanity checking, and clean up the dialog box a bit.
2019-04-27 18:35:35 -07:00
Gregory Hainaut
ead3d21bdb gsdx ogl: commit texture in copy function
So far not yet used but safer this way
2019-04-26 12:40:04 +02:00
Gregory Hainaut
568b96b885 gsdx ogl: only always uncommit texture in debug build
It is good for memory but bad for the speed. There is likely a better trade-off
but it should be enough for now
2019-04-26 12:40:04 +02:00
Gregory Hainaut
70c3c1a48f gsdx ogl: always commit a sparse texture when force_texture_clear is enabled
The goal is to ensure the behavior of the option. VRAM usage isn't important
as option is mainly intented for debug purpose.
2019-04-26 12:40:04 +02:00
lightningterror
e77aac0bf1 gsdx-ogl: Do some integer casts for destination texture commit to StretchRect.
Fixes warning.
2019-04-26 12:40:04 +02:00
Gregory Hainaut
bdcf83ca45 gsdx ogl: sparse texture : only commit new area
Avoid potential driver overhead
2019-04-26 12:40:04 +02:00
Gregory Hainaut
bb306dfe90 gsdx hw: commit texture before a clear in OI hack
Note I didn't bother to compute the draw region for single game hack.
Gain would be 0 if game doesn't suffer of memory issue in the first place
2019-04-26 12:40:04 +02:00
Kojin
116a5d822c gsdx-ogl: update Save() to use committed size of texture 2019-04-26 12:40:04 +02:00
Kojin
9618283217 gsdx-ogl: Add detection of Sparse Depth in isDss() 2019-04-26 12:40:04 +02:00
Kojin
55e95cc552 gsdx-ogl: add destination texture commit to StretchRect 2019-04-26 12:40:04 +02:00
Kojin
e9989a5966 gsdx: enable sparse render target in TC 2019-04-26 12:40:04 +02:00
Kojin
a1cdeb2fd1 gsdx: add uncommit in recycle 2019-04-26 12:40:04 +02:00
Kojin
4e675ef6e1 gsdx-ogl: add texture commit ogl renderer 2019-04-26 12:40:04 +02:00
Gregory Hainaut
ba782e90c8 gsdx ogl: enable sparse feature on GSdevice interface
Note: remain
* To really use sparse texture
* To debug it ^^
2019-04-26 12:40:04 +02:00
Gregory Hainaut
16d5f477ff gsdx ogl: implement CommitPages 2019-04-26 12:40:04 +02:00
Gregory Hainaut
e8b2d036ee gsdx ogl: handle creation of sparse texture 2019-04-26 12:40:04 +02:00
Gregory Hainaut
9e7069f374 gsdx hw: add API to manage sparse texture allocation
DX/GL should implement "CommitPages" to really commit memory

Note: CommitPages should also update the m_committed_size member
2019-04-26 12:40:04 +02:00
Gregory Hainaut
643ed528c2 gsdx hw: allow to create sparse texture at device level
Obviously texture allocation should be updated too
2019-04-26 12:40:04 +02:00
lightningterror
3408d1a873 gsdx-d3d11: Move colclip code to blending function.
Also disable a log that was accidentally enabled/pushed.
2019-04-25 16:48:07 +02:00
lightningterror
a0c6c1cb9f gsdx-hw: Forgot to remove a crc region check for dbzbt2-3, no longer needed. 2019-04-25 16:34:28 +02:00
lightningterror
8eab618502 gsdx-hw: Purge crc hacks that had their half screen issues resolved (Texture shuffle case).
DBZBT2, DBZBT3, MetalGearSolid3.
2019-04-25 15:08:51 +02:00
Kojin
34ac15f7eb GSdx-hw: Add secret ini option to disable TS half bottom detection 2019-04-25 13:42:47 +02:00
Kojin
7eb0b0ac65 GSdx-hw: Add automatic detection of half-bottom in TS
Typical shuffle case is 1/2 height so other half is undesired

In dbz we split the depth buffer.
- Sample first half, write to `0x0`.
- Sample second half, write to `0x800`
- Finally, sample `0x0` though `0xffc`

Crash Twinsanity is a similar case.
2019-04-25 13:42:47 +02:00
Kojin
97612edd58 GSdx-hw: Move src to protected member 2019-04-25 13:42:47 +02:00
Kojin
6af2f7ef46 GSdx-hwtc: Propagate valid area from dst to source 2019-04-25 13:42:47 +02:00
Kojin
acf771edd8 GSdx-hw: Store bounding rectangle in protected member 2019-04-25 13:42:47 +02:00
Christian Kenny
7f5dc2135e GameDB: Add VU Clamping for Battle Gear 3. (#2939)
Stops car from falling through track.
2019-04-24 02:28:31 +02:00
lightningterror
c3f36ad430 gsdx-gui: Separate opengl and direct3d blending options.
A short summary how d3d option behaves compared to gl.

None d3d-> behaves the same
Basic d3d-> even less than 1/3 of Basic opengl.
Medium d3d -> less than 1/3 of Basic opengl.
High d3d -> 1/3 of Basic opengl.

Note: Medium and High options are mostly intended for debug use.
2019-04-23 15:24:04 +02:00
lightningterror
d4b62444d1 gsdx-d3d11: Adjust fbmask code on d3d11.
Add the remaining code and separate it in levels because dx sux.

Basic blending mode -> doesn't enable fbmask on texture shuffle and
triangle primitives.

Medium -> doesn't enable fbmask on triangle primitives.

High mode- >  fully enables fbmask, note it's still not on par with
opengl because we miss sw blending for some games.

Also keep in mind that High Blending option on d3d11 is like 1/3 of
Basic Blending option on GL.
2019-04-23 15:24:04 +02:00
lightningterror
6a4fa90b8f pcsx2-wx: Remove extra separator line.
Close #2936
2019-04-22 17:38:28 +02:00
lightningterror
641df126c4 gsdx-d3d11: Don't enable fbmask on triangle primitives.
It is quite slow due to fb copy on d3d, add potential notes for future
improvements so I don't forget what I wanted to do.
2019-04-22 05:07:42 +02:00
lightningterror
e72aa23436 gsdx-gui: Purge the aout (Alpha hack) from the gui, will be useless with fbmask emulation, enable blending option on d3d11.
Blending option allows us to toggle fbmask on or off with at least basic
level just like on gl.
2019-04-22 05:07:42 +02:00
lightningterror
de5e9a85bb gsdx-d3d11: Partial port of frame buffer masking from opengl.
It works on games such as Fifa Street 1 and 2 (character and stage
rendering), mission impossible operation surma (shadow rendering).
It needs at least Basic level of blending enabled on d3d11.
2019-04-22 05:07:42 +02:00
lightningterror
9d60d6acfd gsdx-d3d11: Remove old aout code.
Will be replaced with fbmask code in next commits.
2019-04-22 05:07:42 +02:00
pgert
060689d3e9 PCSX2: update & improvments of Scandinavian translations 2019-04-21 23:20:38 +02:00
Yaroslav Salnikov
6bae2f7629 Fixing stiks state monitor (#2933) 2019-04-21 13:49:11 -07:00
lightningterror
4202cbe7e8 pcsx2 savestates: Bump savestate version, required for the previous TAS PR merge.
Attention! Older savestates will be incompatible so please use a
previous older dev build (such as dev 3043) to save your progress on
memory cards instead!
2019-04-21 00:50:18 +02:00
Tyler Wilding
0980c7185f recording: Opt-into keybindings, revert potential overrides if disabled 2019-04-21 00:45:44 +02:00
Tyler Wilding
ec9c97e0bf recording: freeze recording information to savestate regardless 2019-04-21 00:45:44 +02:00
Tyler Wilding
506ea4c4d2 recording: various formatting and review corrections
Squashed commit:

[7955b42e3] recording: Throw errors on fread/fwrite errors.

[5a2160f9e] recording: Remove function implementation from header files

[f2937ab5f] recording: Fixed UndoCount metadata bug and will gracefully fail if savestate is missing

[d7f4d43e5] recording: Refactored code-style to be consistent

[0f77fbb71] recording: Refactor to use switch statements

[28d7945f6] recording: Resolve CMake warnings and use tagged github links for cross-linking to LilyPad

[7c01c6cb4] recording: corrected disparity between comment and code

[17a8bd8d6] recording: Remove all usages of #define

[3830f5a82] recording: Refactor enums and general cleanup

[569ef7d67] recording: Completely disable new console log sources when recording is disabled
2019-04-21 00:45:44 +02:00
Tyler Wilding
08d923ca6f recording: Append copyright headers
Squashed commits:

[47be08613] recording: Forgot to refactor the usage of std::size
2019-04-21 00:45:44 +02:00
Tyler Wilding
64104ca9fd gui:recording: Revert addition of Screenshot As, will contribute as separate PR
Along with changing the .bmp file naming scheme.
2019-04-21 00:45:44 +02:00
Tyler Wilding
c12c6ed149 recording: Added some more useful logs and cleaned up some TODOs 2019-04-21 00:45:44 +02:00
Tyler Wilding
eb7030cf12 recording: Use conventional savestate functions, save save-state in a separate file alongside recording file
Regressions were discovered after merging with master due to way the save state data was saved within the movie file.
This change uses the same functions used in the GUI to create savestates to create a compressed save-state file.  Eventually this could be re-incorporated back into the recording file and could be backwards compatible.
2019-04-21 00:45:44 +02:00
Tyler Wilding
270f7fd905 recording: Significant refactor on VirtualPad implementation 2019-04-21 00:45:44 +02:00
Tyler Wilding
d7074503d8 recording: Use wxFopen instead of f_open 2019-04-21 00:45:44 +02:00
Tyler Wilding
6b3fb14339 recording:gui: Temporarily remove Movie Editor GUI, add back at a later date
This is a rather involved refactor and isn't critical to getting the main PR / spike merged.
2019-04-21 00:45:44 +02:00
Tyler Wilding
db4ff1e8fc recording:gui: Overhaul VirtualPad GUIs 2019-04-21 00:45:44 +02:00
Tyler Wilding
3d6bfacd55 recording:gui: was not correctly removing recording top level menu bar option 2019-04-21 00:45:44 +02:00
Tyler Wilding
8b6ccde441 gui:recording: force ascii for filepath of recording, remove legacy conversions 2019-04-21 00:45:44 +02:00
Tyler Wilding
cb7425c59f recording: removed C++ reserved pattern usages, removed japanese comments 2019-04-21 00:45:44 +02:00
Tyler Wilding
6e111205a2 travis: include recording header files in travis build properly 2019-04-21 00:45:44 +02:00
Tyler Wilding
5fefe28e39 recording: recording file implementation 2019-04-21 00:45:44 +02:00
Tyler Wilding
94c160401c recording: implementation for recording file GUI panel 2019-04-21 00:45:44 +02:00
Tyler Wilding
0021ad66e0 recording:gui: dialog for creating a new recording 2019-04-21 00:45:44 +02:00
Tyler Wilding
ddd2e3f8f0 recording: main recording functions and input gathering 2019-04-21 00:45:44 +02:00
Tyler Wilding
7a03bafa27 recording:gui: movie editor window and virtual pads 2019-04-21 00:45:44 +02:00
Tyler Wilding
7b79235f19 gui:recording: new mainmenu event listeners 2019-04-21 00:45:44 +02:00
Tyler Wilding
e2e882e08b gui:recording: All main window modifications and additions 2019-04-21 00:45:44 +02:00
Tyler Wilding
bad3fa73f4 recording: implementation for new keybindings 2019-04-21 00:45:44 +02:00
Tyler Wilding
407224d29c recording: added new log sources 2019-04-21 00:45:44 +02:00
Tyler Wilding
e3333a9b8c recording: all modifications to pcsx2/ source 2019-04-21 00:45:44 +02:00
Tyler Wilding
413ba4b430 GSdx: implemented saving a snapshot to a dialog provided file path 2019-04-21 00:45:44 +02:00
Tyler Wilding
6252c7bd6a recording: visual studio project changes 2019-04-21 00:45:44 +02:00
Tyler Wilding
f147923555 travis:recording: added Recording sources to CMake scripts 2019-04-21 00:45:44 +02:00
Tyler Wilding
c2a19b7be5 recording: gitignore modifications and new keybindings 2019-04-21 00:45:44 +02:00
Avindra Goolcharan
4d88a57f27 gsdx-gui: Fixes typos on the tooltip for disabling safe features. (#2931) 2019-04-20 04:52:28 +02:00
atomic83GitHub
ac89730a4d Gamedb: Visual concept hanging fixes. (#2929)
This PR allow each fixes to by apply in all situations (such as exiting from the NETGUI utility). It makes these games completely playable in all cases.
2019-04-18 17:57:55 +02:00
lightningterror
ac1bc9d6fc gsdx-hw: Move GSC_RadiataStories, GSC_StarOcean3, GSC_ValkyrieProfile2 crc hacks to D3D level.
Follow up from the previous commit which is bypassing the texture cache
when the frame buffer is sampled.
Crc hacks are no longer needed on opengl.

Note: it requires at least Basic blending support.
2019-04-17 03:48:30 +02:00
Gregory Hainaut
f406051ed9 gsdx ogl: Bypass the texture cache when the frame buffer will be sampled.
Proof of concept. It should provide a huge speedup when accurate
blending is enabled for tri-ace / Jak / R&C (shadow rendering).

See #2894
Need PR#2892

v2: Add const + comment to explain that code isn't ideal.
2019-04-17 03:48:30 +02:00
willkuer
1414d64b18 [skip ci] GSDumpGui: Only reload dumps and dlls separately if their respective settings change, make config portable, autodetect dump/dll folder. (#2926)
- Add simple logging infrastructure and further improve the existing one
- Delegate loading of dlls and dumps into dedicated loader classes
- Adjust user interaction to restrict updates to only relevant parts
- Gsdx dlls (dumps) are only reloaded when a new path for gsdx dlls (dumps) was given. That means dlls are not reloaded just because the dumps path was changed or another dump was selected
- When GSDumpGui can not find the specified settings folder or there is no setting saved so far it will look into the directory of the currently running application (however as before only exactly in the directory and not in subdirectories)
- Further decouple model, view and 'controller' logic.
- Restrict directory checks to application basepath instead of current directory as current directly is changed at too man places
- Avoid some minor memory leaks by disposing some disposable elements

Note: Net framework requirement has been increased to 4.0 to run/compile the application.
2019-04-15 17:24:25 +02:00
pgert
773be7bb95 PCSX2: compiled mo-file for latest pt_BR update (#2910). 2019-04-14 17:01:58 +02:00
willkuer
48b2383096 [skip ci] GSDumpGUI: Fixes multiinstance crashes. (#2925)
- automatically find the next free TCP port yielded by OS
- transfering currently used instance-fixed port to launched clients
- connect each client via given port

See #1637
2019-04-14 12:04:58 +02:00
Guilherme Dias
075a9f38ed Locale: Br. Portuguese Translation - Update. (#2910)
* A lot of grammatical errors were fixed.
* Several sentences were reformulated for a better understanding and a better quality of the translation.
2019-04-14 04:28:14 +02:00
atomic83GitHub
d3ddd9b1f7 Gamedb: WRC avec sebastien loeb performance fixes. (#2923)
This commit re introduces a partial patch to WRC avec sebastien loeb to fix a performance problem with a delay slot instruction.

Follow up from a58f56fa4a
2019-04-13 21:11:38 +02:00
lightningterror
163fd2bad9 spu2-x-gui: Increase synchronizing mode drop down list vertical size.
Will help the list display properly on frontends like spectabis.
2019-04-11 21:41:56 +02:00
lightningterror
52da124a2b gsdx-ogl: Check if primitives are triangles instead of overlapping.
Single triangle draw can now hit the tex_is_fb path.
Primitive Overlap will return no overlap  for single primitive (triangle).
Ratchet and Clank, Jak, tri-Ace games.

It should improve shadow rendering.

Idea by Gregory.
2019-04-10 12:33:31 +02:00
lightningterror
a58f56fa4a Gamedb: Remove stall delay branch patches from WRC3, WRC Rally Evolved/WRC avec Sebastien Loeb.
Bonus, add XgKickHack for the French version of WRC Rally.
2019-04-10 04:06:18 +02:00
FlatOutPS2
17ac536116 pcsx2: Fix stall on branch .. in delay slot.
Fixes stall when loading a stage in WRC 3.

Original pr https://github.com/PCSX2/pcsx2/pull/1783

Collaborator: lightningterror
2019-04-10 04:06:18 +02:00
Kojin
73e3072715 GSdx-d3d11: Enable break on D3D message
Enable automatic breaking on d3d11 messages:
- D3D11_MESSAGE_SEVERITY_CORRUPTION
- D3D11_MESSAGE_SEVERITY_ERROR
- D3D11_MESSAGE_SEVERITY_WARNING
- D3D11_MESSAGE_SEVERITY_INFO

Hidden option dx_break_on_severity bitfield

Debug build only.
2019-04-08 00:45:50 +02:00
lightningterror
9332f9b1ac [skip ci] Readme.md: Update system requirements info.
Replace GHz with STR requirements,
Mention that 1.4 is the last version to support D3D9.
2019-04-08 00:06:12 +02:00
lightningterror
508a8b477e gsdx-hw: Disable automatic mipmapping on Jak games for now.
It crashes the emulator so until the issue is resolved properly comment
out/disable automatic mipmapping for jak games.

Issue #2916
2019-04-07 19:50:46 +02:00
atomic83GitHub
b68761fa0d Gamedb: Fixes, serial and patches update. (#2914)
This commit add the rounding fix for the international version of Final Fantasy X, a Emotion Engine Clamping fix for let's make a soccer team, a Emotion Engine rounding fix for Eternal Ring,  and add the WRC avec Sebastien Loeb patch.

There are also several additions about Winback fixes for various regions.
2019-04-07 19:38:58 +02:00
lightningterror
bb0c0d3d27 Gamedb: Add gamefix patch for (Choro Q - High Grade) Gadget Racers NTSC-J.
Patch by Prafull.
Fixes vsync issues, avoid hang at first loading screen, skips movies.

https://forums.pcsx2.net/Thread-Fixing-unplayable-games?pid=597546#pid597546
2019-04-05 22:52:06 +02:00
lightningterror
fc5dde464f Lilypad: Replace question mark with "N/A" on Diagonotics window when a device is not active. 2019-04-04 03:05:06 +02:00
lightningterror
9c222f8efe gsdx-hw: Some minor comment and code adjustments. 2019-04-04 02:13:57 +02:00
Chromaryu
5f099b1bea Pnach: Add Author line. (#2911)
Adds a separate author line for pnach entries. This will allow to separate comments with other info such as pnach purposes.

GameDB could be updated with the new changes for a more slick and clean look.
2019-04-01 23:10:43 +02:00
Souzooka
55112938a2 GSDumpGUI: Make sure all child processes are closed when closing main form. (#2900)
* Make sure all child processes are closed when closing main form

* Try/catch kill processes in case they are starting/exiting, dispose after killing
2019-03-26 23:27:13 +01:00
lightningterror
e73607395b gsdx:-debug: Update previous GSDrawingContext commit to show log only on gl sw renderer.
Follow up from:

46e63c1f17
2019-03-26 14:40:17 +01:00
Gregory Hainaut
a16fe6f016 gsdx TC: remove dead code
src->m_texture is always NULL, set in Source constructor

Potentially it was a leftover of msaa or the commented code to handle mutable FBW
2019-03-26 14:22:34 +01:00
Gregory Hainaut
374374fdf1 gsdx ogl: disable sparse in extenstion detection
* Allow to keep automatic as default value in the option
* You need to force enable sparse in the option to enable sparse
2019-03-26 14:22:23 +01:00
lightningterror
535b0d4aac gsdx-ogl: Disable sparse depth on amd.
* Bad driver as usual.

* Driver reports a compatible sparse format for depth texture but it isn't attachable to a frame buffer.
2019-03-26 14:22:16 +01:00
Chromaryu
0e3e9c2c59 GameDB: Add patch for Panzer Dragoon. (#2902)
Stop screen shaking (game switches to Progressive).

Patch by PSI.
2019-03-26 14:03:17 +01:00
Aced14
987f783632 GameDB: Fix PlayStation Underground 4.4 entries
PlayStation Underground 4.4 is a set of 2 discs:
* SCUS-97120: PS1 CD (disc 1)
* SCUS-97121: PS2 DVD (disc 2)

Specific changes:
* Remove disc 1 since it's out of scope
* Change 4.3 to 4.4 in disc 2's name (4.3 doesn't include any PS2 discs)
2019-03-26 13:53:39 +01:00
lightningterror
936f66d701 Gamedb: Also add patches for Klonoa 2 JP version.
Follow up from:

3133221fd7

Backport by Arapapa:

https://forums.pcsx2.net/Thread-Fixing-unplayable-games?pid=597525#pid597525
2019-03-23 20:46:25 +01:00
lightningterror
3133221fd7 Gamedb: Also add patches for Klonoa 2 EU version.
Follow up from:

d7fd3d7648

Patch by Prafull:

https://forums.pcsx2.net/Thread-Fixing-unplayable-games?pid=597499#pid597499
2019-03-23 01:04:56 +01:00
refractionpcsx2
d7fd3d7648 Updated Klonoa 2 patch to new one by Prafull, works much better and fixes some corrupt textures 2019-03-21 20:25:52 +00:00
refractionpcsx2
10ee832dc1 Workaround to avoid access violation problem in Klonoa 2 loading Volkan Inferno
Lets hope the build bot doesn't mess this up :P
2019-03-21 20:17:14 +00:00
Sean Nam
5c7084f8bf [skip ci] README.md: Improve readability. (#2893) 2019-03-19 19:38:23 +01:00
lightningterror
f5bf1f655d gsdx-hw: Add another Sly 2 prototype/beta disc to crc list. 2019-03-17 20:47:40 +01:00
lightningterror
a30f642860 gsdx-hw: Purge GSC_NarutimateAccel, GSC_Naruto crc hacks.
Naruto Shippuden - Narutimate Accel 3,
Naruto - Narutimate Hero 3.

Depth effects (shadows) rendered correctly.
2019-03-17 05:34:13 +01:00
lightningterror
0d5ae808ef gsdx-gui: Fix overlap issue with Rendering threads text.
Issue was visible only on gsdumpgui.
2019-03-17 05:04:08 +01:00
lightningterror
f8a6a3c6ef Gamedb: Add King's Field IV ntsc-j patch.
Follow up from 6052614233
Fixes (black voids) central tower level loading.
Issue: Some doors leading to some areas appeared as black voids that you can walk in to.

Credits to @wgarvin0 for the patch.
2019-03-12 13:13:01 +01:00
lightningterror
c8d4d5528e gsdx-ocl: Fix some compile warnings. 2019-03-12 02:36:49 +01:00
lightningterror
e9e7580582 gsdx-gui: Properly grey out opencl device text when opencl is enabled, also some minor cleanup. 2019-03-12 01:49:48 +01:00
Christian Kenny
3296ade983 Plugins: Remove PADSSSPSX and xpad. 2019-03-11 23:34:47 +01:00
Jannik Vogel
7982e3abfe dev9ghzdrk: pthread_create returns status, not thread handle 2019-03-11 00:52:05 +01:00
lightningterror
7354c1fa0d gsdx-hw: Update a few crc issue categories for several games. 2019-03-08 19:33:28 +01:00
lightningterror
889001c026 gsdx-hw: Move GSC_Okami to Aggressive level.
Upscaling issues, hack needs to be updated because it removes too many
effects. Maybe HPO or Wild Arms offset are fine, needs further testing.
2019-03-08 19:23:03 +01:00
lightningterror
910ef1db41 Gsdx hw: Purge GSC_TalesOfAbyss crc hacks.
Depth and channel shuffle rendered correctly on all renderers.
Also add some missing crc ids for Tales of Abyss.

PS: I'm ninjaing 3000 builds on the buildbot 😄
2019-03-08 16:13:39 +01:00
lightningterror
47c255be2c gsdx-gui: Adjust advanced settings and hacks gui.
Allow to open Advanced settings and hacks window even when hw hacks are
off, this should allow OpenGL advanced settings to be configured even
when hw hacks are off in the gui since the options are configurable
wihtout depending on hw hacks checkbox.

Hw hacks will be greyed out when the checkbox button is not enabled.

New behavior will only be present on opengl hw gui. Direct3d11 will remain the same.
2019-03-06 18:11:26 +01:00
Chromaryu
3155278ac7 Locale: purging some ja_JP localization
Sync up with current codebase

Update ja_JP localization
2019-03-05 15:28:06 +01:00
lightningterror
8219bcd1b4 gsdx-hw: Move GSC_YakuzaGames to partial level.
Don't enable hack on native res if crc is below aggressive. Upscaling
issues.

Bonus, revert recent barrier changes on gl date code.
2019-03-05 12:39:07 +01:00
lightningterror
e36976bf86 gsdx-d3d11: Minor adjustments to DATE code.
Run fast accurate date instead of alpha stencil when accurate date is
enabled on supported calls, also update some logs and comments.
2019-03-04 20:35:09 +01:00
lightningterror
e48ce1bc69 gsdx-ogl: Minor adjustments to DATE code.
Don't set DATE true when Accurate Date is off, DATE is true anyway so
no need to set it again.

Don't call full barrier for DATE 45 at the date selection, do it
at the shader call check. It's the same, plus we avoid extra checks.
2019-03-04 19:39:58 +01:00
lightningterror
46e63c1f17 gsdx-debug: Use gl GL_INS print macro for a log instead of relying on debug build.
In GSDrawingContext.

Also some minor format cleanup to match the rest of the code.
2019-03-04 19:39:47 +01:00
lightningterror
5c23a9fac0 gsdx-gui: Update blending option.
Change the name to Accurate Blending so it fits more with Date option
next to it, get rid of low/high end recommended nametag for the list and
just use Recommended for Basic level, lot of users seem to be using high
for "high end pc" which they shouldn't.
2019-03-03 00:47:40 +01:00
Christian Kenny
5af929a387 Gamedb: Add vuClampMode 2 gamefix for James Bond 007 - Nightfire.
Fixes polygon clipping in driving missions.

Close #2872
2019-03-02 23:25:33 +01:00
lightningterror
811d8781ab cdvd: Get rid of code that disabled loading psx discs.
Not used anymore.
2019-03-01 17:21:13 +05:30
Chromaryu
8a16d96112 PCSX2-EE: Improve SetGSCrt logging 2019-03-01 17:09:37 +05:30
Akash
7106909d3f PCSX2: Avoid enabling VuClipFlag at some scenarios
VuClipFlag hack is only used for SuperVU1 Recompiler, let's avoid enabling it when it's not used.

Previously a console message would be provided stating that "(GameDB) Enabled Gamefix: VuClipFlagHack" even when the user is using the Interpreter (or) MicroVU Recompiler. The following patch prevents such confusions.
2019-03-01 14:41:13 +05:30
Chromaryu
90531f8b7b Locale: Update ja_JP translation 2019-03-01 10:01:54 +01:00
lightningterror
425059d882 gsdx: Forgot to move the crc state for mgs3 and ace combat 4.
crc hacks are aggressive only. Fixes regressions mentioned in
https://forums.pcsx2.net/Thread-Metal-Gear-Solid-3-OpenGL-Issue-with-Latest-Builds
2019-03-01 08:37:04 +01:00
lightningterror
8a9abd8a1b gsdx: Purge depth crc hack for GSC_RadiataStories.
Effects rendered correctly, blur/ghosting upscaling issues can be
resolved with HPO special.
2019-02-25 11:35:27 +01:00
lightningterror
ffe6587e62 [skip ci] git: Update issue template links. 2019-02-25 09:35:11 +01:00
lightningterror
79a38858d1 gsdx: Purge GSC_CrashNburn crc hacks.
Depth, texture shuffle rendered correctly.
@MrCK1 did the tests. PAL needs to be tested as well.
2019-02-24 22:12:27 +01:00
Shanoah Alkire
64ab2d53e1 Add comments to prevent various warnings about falling through on case statements. 2019-02-23 22:08:57 -08:00
lightningterror
8e8598412d gsdx: Purge all crc hacks for GSC_OnePieceGrandAdventure and GSC_OnePieceGrandBattle.
Texture shuffle and hdr colclip.
Effects rendered correctly.
2019-02-23 06:52:40 +01:00
lightningterror
930f07df4a gsdx: Purge depth crc hack for Haunting Ground.
Effects rendered correctly on all renderers.
2019-02-22 17:18:58 +01:00
Gregory Hainaut
e56f75fe9a gsdx hw:move vertices fixup for texture shuffle in RendererHw
Bonus: fix m_vt value
2019-02-22 16:57:59 +01:00
lightningterror
aa2b474d1a Gamedb: Add GIFFIFOHack gamefix to remaining Mana Khemia games.
Fixes flickering sprites.
Close #2645
2019-02-21 08:15:36 +01:00
lightningterror
a9c1a1c768 Gamedb: Add gamefixes for NFL Street 2, Killzone, Constantine, ShellShock.
Add GIFFIFOHack to NFL Street 2.
Fixes garbage graphics. Close #2857

Add vuClampMode None for Killzone, ShellShock.
Resolves I Reg Clamping / performance impact and yellow graphics in
certain areas.

Add eeRoundMode Positive for Constantine.
Resolves dumpster not being able to be climbed from front in level 2.

Clamp and round mode patches by @MrCK1
2019-02-21 07:54:45 +01:00
lightningterror
80f8de5e0b Revert "gsdx-gui: Use a separate drop down list for sparse texture."
This reverts commit 61c4df0375.

It was a bad idea from the start.
2019-02-20 17:42:49 +01:00
lightningterror
61c4df0375 gsdx-gui: Use a separate drop down list for sparse texture.
It's temporary until sparse texture is fully implemented.
Force Disabled should be Default option.
2019-02-20 16:56:51 +01:00
lightningterror
e55fcae981 gsdx d3d11: re-normalize coordinate when TEX0 is invalid. 2019-02-20 13:49:57 +01:00
Gregory Hainaut
29aef04fbf gsdx ogl: re-normalize coordinate when TEX0 is invalid
Fix #258
Fix #695
2019-02-20 13:49:57 +01:00
Gregory Hainaut
12dcb701c7 gsdx: add a function to fix the TEX0 register value for HW renderer
Based on the SW renderer
2019-02-20 13:49:57 +01:00
Gregory Hainaut
6df9eb8dab gsdx: Allow to save and restore drawing context
Purpose is to allow edition of the context for current draw call
2019-02-20 13:49:57 +01:00
lightningterror
9c60541f3c gsdx-gui: Adjust psx compat gui.
Fix up options to properly disable on Null render.
Clean up some resource defines.
2019-02-20 13:38:49 +01:00
lightningterror
c6f57c0bdb gsdx: Save hotkey toggle to ini config.
This will allow to save hotkey option toggling to the ini which
should fix gui updating with hotkey toggles.

Note: Render hw/sw switch doesn't work.

Also update some options that didn't have hotkey nametag.
2019-02-20 11:07:02 +01:00
lightningterror
8cb6d255ca fxaa.fx: Purge d3d9 shader code.
Looks like I forgot this one.
2019-02-19 15:36:15 +01:00
lightningterror
6905d4d883 x86emitter: Purge empty file sse_helpers.h.
Code was removed in
60a9463e7a
Right now it's useless.
Update VS/cmake project files to remove any mentions of the file as
well.
2019-02-18 11:51:06 +01:00
lightningterror
cc2fda6d6d gsdx-gui: Add hotkey nametags to some options that have hotkey support already. 2019-02-18 05:11:43 +01:00
lightningterror
c0a47c2c79 Lilypad: Don't toggle width and heigh for Inputs window with Show/hide Special Inputs button.
Use a fixed size instead. It will avoid DPI scaling issues.
Also adjust the Special Inputs buttons height position so that the
window height remains a reasonable size.
2019-02-17 20:17:41 +01:00
lightningterror
bcba2597f3 Lilypad: Partially revert #2832
DPI scaling doesn't work for the window resize so it made things worse.
Maybe once that is fixed this code can be reverted back again.
2019-02-17 18:42:55 +01:00
Gregory Hainaut
31d95448ed gsdx device: use same target for fxaa/shaderboost/shaderfx
It avoid to waste VRAM memory
2019-02-13 19:52:43 +01:00
Gregory Hainaut
45dfb0dcdb gsdx device: use generic resize texture function
V2: add missing size for merge and interlace
2019-02-13 19:52:43 +01:00
lightningterror
90e38f68d8 onepad/onepad legacy: Remove Windows placeholder dirs.
They are useless.
2019-02-13 14:01:34 +01:00
lightningterror
ea6f9acf86 spu2-x-gui: Reduce window height.
Should help low res monitors.
2019-02-13 13:34:40 +01:00
lightningterror
a130fcaa4e gsdx-gui: Adjust some button positioning and window width.
"Symmetry"
2019-02-13 13:07:33 +01:00
lightningterror
119ab90657 gsdx: Reuse same selected renderer image/banner for ps1 emu compatibility as ps2.
There's no need to have duplicate images that basically do the same
thing. Update the gui to reflect latest changes and use the same images
on both. It will reduce plugin size.
Remove old images and update VS project files.
2019-02-13 12:30:00 +01:00
lightningterror
5a4541f2f4 gsdx: Adjust/cleanup ini options.
Opencl device, Alpha, Alpha stencil are windows only options so no need
to clutter ini on linux with useless stuff.
2019-02-13 11:06:02 +01:00
lightningterror
12b622c9c1 gsdx: Cleanup/update Wild Arms offset hack.
Don't use integer for the variable, option has only on and off states.
Use member variable names and adjust some checks.
2019-02-13 10:28:07 +01:00
lightningterror
19586fdd7f gsdx: Move GSTexturecache files from Common to HW renderer. 2019-02-11 18:18:02 +01:00
lightningterror
ca002c56e5 GSdx: Adjust Burnout crc hacks to work on multiplayer mode as well.
Yellow stripes crc hack.
Note: Only Takedown was tested but other games should work as well.
2019-02-09 21:42:38 +01:00
lightningterror
c898c13eb9 lilypad: Some tweaks and fixes.
Hide all ps1 emu options instead of disable. Some options still got
enabled when they shouldn't have so just hide everything. This way we
avoid adding extra code, plus the gui looks cleaner.

Disable ini read/write for Analog ps1 mode, the feature was accidentaly
enabled for pcsx2. By looking at the code it should only be enabled for
ps1 combatibility mode. Also hide the option for pcsx2 as well.

Move around some of the hacks and advanced options to reflect the recent
changes.
2019-02-09 20:28:36 +01:00
lightningterror
7406e13028 gsdx-egl: Also do the same for egl pointer logs. 2019-02-09 11:16:51 +01:00
lightningterror
cc6ac657f8 gsdx-ogl: Enable function pointer support logs only when "debug_opengl" is enabled in the ini.
They are mostly for debugging driver issues so regular users don't
actually need to see them most of the time.
2019-02-09 11:10:00 +01:00
lightningterror
6e49139d0e [skip ci] gsdumpgui: Auto select first GSdx dll on the list upon program launch. 2019-02-09 02:06:38 +01:00
lightningterror
46b70a72cb [skip ci] gsdumpgui: Allow to open ini file even when no gsdx dll is selected.
ini file is already shared between dlls (previous commit) so there's no
need for verification anymore.
2019-02-09 01:14:53 +01:00
lightningterror
8c6e4cd28b [skip ci] gsdumpgui: Update code to share only one gsdx config for all dlls. 2019-02-09 01:14:53 +01:00
lightningterror
dabc99f466 gsdx-ogl: Small colclip improvements.
1. Allow hrd colclip to also run on the unsupported
cases which should be pretty rare.

2. Remove colclip from high sw blending.

3. Disable the hdr colclip shader which may not be
actually required to run.

Idea by Gregory
2019-02-08 14:53:15 +01:00
lightningterror
b5f0959e6d GSdx-gui: Set ini option to 0 for sparse texture since the feature is not yet implemented,
also add tooltip for the gui option.
2019-02-07 18:38:40 +01:00
lightningterror
a9e622357a gsdx-ogl: Fix override detection for extensions. 2019-02-07 18:38:40 +01:00
lightningterror
371b52f4f3 gsdx-gtk: Add linux option for Sparse Texture in advanced options. 2019-02-07 18:38:40 +01:00
lightningterror
ad0279a0ab gsdx-gui: Add windows option for GL Sparse Texture in advanced options. 2019-02-07 18:38:40 +01:00
lightningterror
96623acdcd gsdx-ogl: glTexturePageCommitmentEXT should be optional for sparse texture. 2019-02-07 14:32:10 +01:00
Gregory Hainaut
6282c3d263 gsdx ogl: remove boilerplate of extension check
* Use GLExtension::Has in cold path
* Throw error at first error
* Remove aniso check, all hardware support it. Bonus add GL4.6 extension support
* Remove viewport array check. We replace the function pointer anyway
2019-02-07 12:34:02 +01:00
Gregory Hainaut
86a10969f3 gsdx ogl: load GL_EXT_direct_state_access for sparse texture
They forgot to add is to the ARB extension...
2019-02-07 12:34:02 +01:00
Gregory Hainaut
2ea47a1d96 gsdx-ogl: add sparse format detection
v2: fix wrong variable name
2019-02-07 12:34:02 +01:00
Gregory Hainaut
fa7ffcd1bf gsdx-ogl: use a print_once macro 2019-02-07 12:34:02 +01:00
Gregory Hainaut
0e4c63db5d gsdx-ogl: add extensions check that might be useful in the future
Namely
* GL_ARB_multi_bind
* GL_ARB_vertex_attrib_binding
* GL_ARB_shader_storage_buffer_object
* GL_ARB_sparse_texture
* GL_ARB_sparse_texture2
* GL_ARB_compute_shader
* GL_ARB_texture_view

v2: add default option value
2019-02-07 12:34:02 +01:00
Gregory Hainaut
aed7ccaadf gsdx ogl: use a set to store the supported extension
Split mandatory/optional extensions

Note: set is nice but likely much slower than reading a boolean
So both are kept
2019-02-07 12:34:02 +01:00
Gregory Hainaut
e6b0a7828e gsdx-ogl: add a separate glext.h file
Allow to compile on distribution that still ship an older file
The file is only a patchup of the missing 4.3/4.4/4.5/4.6 define

v2: rename the file and add khronos copyright
2019-02-07 12:34:02 +01:00
Gregory Hainaut
2c99a0775c 3rdpary: import GL/glcorearb.h
It will replace glext.h in the future

v2: add requirement in gsdx
2019-02-07 12:34:02 +01:00
Gregory Hainaut
8cd6f4375e gsdx-ogl: use only core debug extension
There are 2 extensions GL_ARB_debug_output (promoted from amd extension)
and GL_KHR_debug (the core extension, promoted from GL_ARB_debug_output)

As we use the callback we could drop the manual query of errors.
And save us the load of the GL_ARB_debug_output extension function pointer.
2019-02-07 12:34:02 +01:00
Gregory Hainaut
cd333c2c94 gsdx-ogl: add missing define of glcorearb.h
Migration isn't expected soon but it should ease the process
2019-02-07 12:34:02 +01:00
Gregory Hainaut
8a723b3be8 gsdx-ogl: clean partially the GL1 mess
Remaining will require a move to glcorearb.h
2019-02-07 12:34:02 +01:00
Gregory Hainaut
4f09124f19 gsdx-ogl: generate nearly all gl entries function pointers
I used glcorearb.h as input file

Code is limited to core gl + KHR/ARB extension
GL1.X must be handled manually (need only 3 functions)
I think the solution would be to migrate gl.h/glext.h to the
single glcorearb.h. However we might need to update the code to fetch
pointer accordingly

Note: we don't check the null ptr anymore on GSwnd. It isn't important
as we check the extension.

v2: update copyright
v3: update copyright space
v4: update copyright of script

fix copyright
2019-02-07 12:34:02 +01:00
Gregory Hainaut
dbffad2aef gsdx hw: use non virtual Create Texture function.
Just do the format check in FetchSurface. It removes a level of virtual function
and avoid useless code duplication.
2019-02-02 22:54:30 +01:00
Christian Kenny
f25fe48c9b 3rdparty:soundtouch: Upgrade SoundTouch lib to 2.1.2. (#2787) 2019-02-02 17:50:38 +01:00
lightningterror
1ae48db873 [skip ci] nsis: Update banner/logo.
It's a lot better than the previous one.

Example:

https://cdn.discordapp.com/attachments/324631776863453185/540619462219399188/unknown.png
2019-01-31 21:10:08 +01:00
lightningterror
1094446862 lilypad: Adjust Special Inputs window and button behavior.
Fixes an issue with the window size and Show/Hide special inputs button
resetting when lilypad was closed and reopened, this was because the
code was executed only when the button was actually clicked.

The values will be properly stored in cache along with the rest already
working properly buttons.
2019-01-31 15:15:44 +01:00
RedPanda4552
6a52b8cdcb pcsx2: Update speed hack presets to be more friendly and usable (#2793)
Old presets touched parts such as VU clamping for what seems to be no good reason at all, and applied some rather dodgy combinations of EE cyclerate and cycle skipping. Also added MTVU to presets 3-6.
2019-01-30 22:29:47 +01:00
Christian Kenny
d71dac0918 [skip ci] NSIS: Add code comments, small tweaks, misc. copyright changes
blorp
2019-01-30 22:23:57 +01:00
Christian Kenny
61c68f20f0 NSIS: Fix uninstaller regression with regkey removal. 2019-01-30 22:23:57 +01:00
lightningterror
f02c683178 gsdx: Merge Sly 2 and 3 crc hacks.
Upscaling issue with texture shuffle on dx and gl. Also removes shadows
on gl.
Bbox issue on dx.

Dumps from Sly 2 and 3 look fine after the merge.

Also add a crc id BF1739E2 for a prototype Sly2. I don't remember who
game me the dump or if it's official.
2019-01-28 21:58:30 +01:00
lightningterror
ee7749452d gsdx-d3d11: Remove unused function OMSetRenderTargets with UnorderedAccessView.
Note ID3D11UnorderedAccessView parameters are also unused but could be
useful for future DATE ports.
2019-01-28 21:01:22 +01:00
lightningterror
4c477d3cd6 gsdx-debug: Disable Alpha Test debug logs on d3d11.
Unfortunately they do more harm than help, slowing things quite a lot
because of the endless log spam when debugging gs dumps.
2019-01-28 20:38:11 +01:00
Kojin
af64865c5d gsdx-d3d11: Framebuffer copy improvements
Improved handling of frame buffer copy by accounting for fb read on all slots.

- implement before/after draw functions
- defer setting of resources on the api to just before the draw
- use a bitfield to keep track of set/copied resources
- recycle copies after draw

Fixes: RE4 and Tales of Abyss
2019-01-27 16:40:39 +01:00
lightningterror
ece7d6e718 gsdx-ogl: Update intel bad driver log.
Assume that driver support is good when GL_ARB_texture_barrier and
GL_ARB_direct_state_access are both supported, disable the log in that
case.

Kaby Lake and above already support the required extensions (windows) so
the log is useless. It should be the same case for Skylake. Mesa driver
should already be good.

Note: SSO is still broken even on latest igpu.
2019-01-27 00:12:08 +01:00
lightningterror
4ab29eb280 gsdx: Remove some useless dx9 comments. 2019-01-26 16:13:07 +01:00
lightningterror
d4833a4618 gsdx-d3d11: Add final specifier to some voids. 2019-01-26 16:13:07 +01:00
lightningterror
744fa18d95 gsdx-d3d11: Merge/move GSDeviceDX code to GSDevice11.
Update VS and cmake project files, remove GSDeviceDX files.
2019-01-26 16:13:07 +01:00
lightningterror
19b97f8684 gsdx-ogl: Remove useless SetupIA from GSDeviceOGL.h not used. 2019-01-26 16:13:07 +01:00
lightningterror
2e2c9b14a4 gsdx-ogl: Enable anisotropic filtering only for triangles.
Sprites are flat so aniso is likely useless (it would save perf for
others primitives).

Idea by Gregory.
2019-01-26 14:52:30 +01:00
lightningterror
224d51b0aa gamedb: Add eeClampMode full gamefix for Castlevania - Lament of Innocence.
Fixes cutscene freezes.

Close #2812
2019-01-26 13:21:51 +01:00
ghost-101
ac1424ad6d onepad: Add the Logitech Chillstream to the database. 2019-01-25 22:51:22 +01:00
lightningterror
0e239cac66 gsdx-ocl: Add some ifdef checks for opencl renderer.
Should resolve gsdx crashes when ini value is selected as opencl when
opencl is disabled.

Properly fallback to default renderer.
2019-01-25 22:35:11 +01:00
Shanoah Alkire
8791d8e5b0 onepad: Add the SteelSeries Stratus XL to the database. Issue #2825 2019-01-24 21:48:56 -08:00
lightningterror
7b4133ac08 GSdx-d3d11: Add final to Renderer class and DrawPrims, also change some voids to inline. 2019-01-24 20:30:48 +01:00
lightningterror
78f0b65e19 GSdx-d3d11: Merge GSRendererDX11 and GSRendererDX together.
Update VS and cmake project files to match new changes.
2019-01-24 20:30:48 +01:00
lightningterror
b9df1e643b gsdx-hw: Adjust/cleanup hw hacks variable calls.
Use a function to check UserHacks for all variables in GSState.cpp
instead of checking each variable individually.

Get rid of UserHacks_HPO local variables in GSRendererOGL/DX and use the
member variable m_userHacks_HPO instead, we don't need duplicates that
do the same thing.

Add ResetStates call at the beginning of GSRendererDX to match gl
behavior.
2019-01-23 12:24:12 +01:00
GovanifY
628f5abaac PCSX2: Remove the arbitrary limit on patches by converting the patch list to a vector. (#2797)
Pnach had a limit that, while increased at some point to 2048, is still not enough for everyone. This uses a vector to avoid that limit, as there is no reason to keep it and people loading pnach with over 2048 patches most likely know what they are doing.
Inipatch group member was also unused in the whole codebase so I did some cleanup and removed it.
2019-01-23 02:01:30 +01:00
lightningterror
2aadf0be89 GSdx: Adjust Scaling Factor.
Use value of 1 when upscale multiplier is 0 for ScalingFactor, this is
to avoid doing math with 0 in shader.

It helps custom res be less broken. Still not recommended to use custom
res ofc.
2019-01-22 23:25:01 +01:00
lightningterror
55bc8e13fc gsdx-gui: Update Accurate date tooltip. 2019-01-22 22:14:28 +01:00
Kojin
8c8b1f497c gsdx-d3d11: ICO depth HLE
Game reads framebuffer depth as alpha of texture.
However, this is a problem for d3d11 as a shader read on the fb is not allowed.

So let's handle it in a similar fasion to channel shuffle:
- Set depth to slot 4
- Detect when slot 4 matches depth rt
- Copy and send the copy to the shader
2019-01-22 06:52:24 +01:00
Kojin
468b9ded46 gsdx-d3d11: Update texture copy method to handle depth
- Rename CopyRenderTarget to CloneTexture
- Allow copy of depth target

Also fix a small oversight from the removal of MSAA.
2019-01-22 06:52:24 +01:00
Kojin
57824261c6 gsdx-d3d11: Cache rt depth stencil on m_state
Cache the depth stencil in addition to color rt.
This will allow us to check for depth stencil equality on slot 4.
2019-01-22 06:52:24 +01:00
lightningterror
946e6046b3 gsdx: Adjust some crc hack comments for some games.
Maybe in the future I'll add github issue links to corresponding crc
hacks.
2019-01-21 19:38:20 +01:00
lightningterror
548d6b31bf Gsdx: Purge GSC_RedDeadRevolver crc hacks.
Blurring with a bit of ghosting is intended and it looks like that on
the console as well.

Depth properly emulated.

D3D11 misses blending.
2019-01-20 19:49:36 +01:00
lightningterror
4ecbb750a8 GSdx: Purge GSC_BlackHawkDown crc hacks.
Channel and texture shuffle emulated correctly.
2019-01-20 00:05:18 +01:00
lightningterror
7247ee1ad0 GSdx: Add glsl shaders to VS solution.
It should make searching/navigating a bit easier now.
2019-01-18 15:56:54 +01:00
lightningterror
b4cb805a91 gsdx-tc: Remove CanConvertDepth virtual bool and use m_can_convert_depth for depth toggling. 2019-01-18 14:53:06 +01:00
lightningterror
bbd8cbbcf4 GSdx: Move GSC_DeathByDegreesTekkenNinaWilliams to partial crc level.
Upscaling issues + unsupported texture shuffle.
Hacks might need to be updated.
2019-01-18 13:17:28 +01:00
lightningterror
85e2a0a6bb gsdx: Add Death By Degrees crc id for US region.
crc hacks still need to be tested properly.
2019-01-18 11:29:45 +01:00
lightningterror
f28f03803f tfx.fx: Correct a couple more blending factors.
Chane 0.5 to 128.0f/255.0f which is 0.50196078431.
Just to be safe it's accurate.
2019-01-18 06:10:41 +01:00
lightningterror
0c3a0da58f GSdx: Purge GSC_LegoBatman crc hacks.
Effects emulated correctly with texture shuffle and depth.

Game has upscaling issues which can be fixed with TC offsets.
2019-01-17 09:58:59 +01:00
lightningterror
51fe6c20ca GSdx: Adjust dbz bt glow/blur crc hack.
Don't enable hack on native res if crc(ntsc only) is below aggressive.

Note for future so I don't forget: This hack can be disabled if depth
hack is also disabled.
2019-01-17 07:45:35 +01:00
Kojin
5fe1cab889 gsdx: Remove remaining MSAA ui code
We are removing MSAA for the following reasons:
1. It's broken
2. Fixing it would mean it would perform as well as FSAA, which defeats the purpose of having it
3. It's only supported by DX and Windows
4. Reduction in code complexity

Press F to pay respect
2019-01-15 19:13:14 +01:00
Kojin
e429677a07 gsdx-hw: Completely remove MSAA from renderer code. 2019-01-15 19:13:14 +01:00
atomic83GitHub
bf8dc7707a GameDB: Add vuClampMode = 2 for UEFA Euro 2004. (#2814)
This commit fixes black box issues when going ingame.
2019-01-15 05:34:41 +01:00
lightningterror
fa4ae7800b tfx.fx: Adjust some blending factors
255.0f / 128.0f gives us 1.9921875.
128.0f / 255.0f gives us 0.50196078431.
Which are more accurate.
Fixes regression in dbz bt3 where characters appeared darker.
2019-01-14 17:01:17 +01:00
lightningterror
ee4d295667 GSdx-d3d11: Remove afix factor from 24bit format. 2019-01-14 16:52:19 +01:00
lightningterror
e05b5d2420 GSdx-d3d: Move channel and texture shuffle in GSRendererDX.
Preparations for file merge.
2019-01-14 02:30:25 +01:00
lightningterror
25ed5857d8 GSdx-gui: Add 10x and 12x as an upscaling option.
10x ~3160p 6K
12x ~4320p 8K"
Can anyone even run these ?
2019-01-14 01:44:58 +01:00
lightningterror
3a7f2a5c0b GSdx: Hide the MSAA option.
No need to have an option on display that does nothing for now.
2019-01-13 17:57:29 +01:00
lightningterror
106c678cc1 GSdx: Purge GSC_EternalPoison crc hacks.
Shadows are better rendered now with hdr colclip, blending is still
needed but the shadow's shape is proper now so let's purge the hack.
2019-01-13 17:33:08 +01:00
lightningterror
52bad3505c GSdx: Adjust GSC_GodOfWar 1 and 2 crc hacks a bit more.
GSC_GodOfWar moved to aggressive state.
GSC_GodOfWar2 some value swere corrected (should fix some regressions)
and hack was moved to partial state because we have an upscaling hack.
2019-01-13 16:26:09 +01:00
lightningterror
f5b9965910 GSdx: Purge OI_GodOfWar2 hw hack. 2019-01-13 15:08:36 +01:00
lightningterror
6f01936943 GSdx: Remove depth crc hacks for god of war 1 and 2.
Effects rendered correctly with depth on all renderers.
2019-01-13 14:42:53 +01:00
lightningterror
9119e3110d GSdx-ogl: Correct DATE log. 2019-01-12 16:43:26 +01:00
lightningterror
f73de4c59c GSdx-ogl: Add perf log for Slow DATE code on texture shuffle/no prim overlap. 2019-01-12 09:59:28 +01:00
lightningterror
7e6c325210 GSdx: Move BoundingBox to HW render and update d3d11 code to use the gl bounding box as well.
hdr colclip and date uses it.
2019-01-12 09:53:51 +01:00
lightningterror
86327b52a9 convert.fx: Update main4 shader to better support hdr colclip. 2019-01-12 09:53:51 +01:00
lightningterror
d17e0eba9b GSdx-d3d11: Add/port HDR colclip support.
It helps render shadows a lot better compared to the old code.

Credits to Gregory and Kojin for helping with the code.
2019-01-12 09:53:51 +01:00
lightningterror
8a57d7f470 GSdx-d3d11: Remove colclip and negative blend algo.
Code was old and inefficient. HDR colclip will do a better job.
2019-01-12 09:53:51 +01:00
Shanoah Alkire
1b41d19016 Remove the unused 'incomplete and untested' BaseTaskThread class. 2019-01-10 13:13:20 -08:00
lightningterror
e0877608ae spu2-x: Remove DecodeDPLII.cpp and DPLII.h files "Dolby Pro Logic II".
DecodeDPLII.cpp is an old duplicate of DplIIdecoder.cpp which seems to
be useless.

Code was updated in
a4a40441c9 (diff-7b7ddfd7d5c8c428703a057822e60668)
2019-01-09 20:05:29 +01:00
lightningterror
fb5471f34f spu2-x: Adjust some Dolby Pro Logic II code.
Comment out unused variable sLogTable in DplIIdecoder.cpp.
Remove DPLII.h from cmake list, it's unused so don't list it.

Some people suggested to keep the source files even if they are unused
so we can do that. Maybe someone will get the code to work properly.
2019-01-09 16:01:56 +01:00
lightningterror
ea38e2eba5 pcsx2: Remove/disable unused variables.
Removed:
MC2_SIZE in MemoryCardFile.cpp,
length in microVU_Log.inl
VU_Neg_Infinity in sVU_Upper.cpp.

Commented out:
mc_sizeinfo_8mb in Sio.cpp
2019-01-09 16:01:56 +01:00
lightningterror
f2f66c02d3 GSdx: Add option to Disable Safe Features.
Idea is to disable multiple features in 1 option to avoid gui clutter.

Unscale Point and Line:
This partially reverts PR #2710 restoring Unscale Point and Line but as a disable option.
It can help Xenosaga games.

GS Memory clearning:
This disables GS memory clearing to be done on the CPU, by default both gpu and cpu do memory clearing
which is more accurate.
It can help Kingdom Hearts games.
2019-01-09 15:44:41 +01:00
arcum42
c58acd1105 Remove CDVDPeops and PeopsSPU2. (#2792) 2019-01-03 19:55:03 -08:00
lightningterror
54f8aca7d5 GSdx-d3d11: Re enable shader code logging.
Log was disabled in #2760
2019-01-04 01:00:10 +01:00
lightningterror
062d141cf1 cmake: Re add the -mxsave flag to compiler flags.
The warnings issue should be resolved now thanks to arcum.
Fixes compiling issues on some systems/distros using gcc 8.2+
Idea by turtleli.

Also add -mfxsr flag suggested by Gregory.
2019-01-02 23:45:23 +01:00
Shanoah Alkire
67a6f31b88 Properly escape the period in Translation.cmake. 2019-01-02 00:01:00 -08:00
lightningterror
4cf3328682 GSdx: Adjust some checks in the gui code.
Now that d3d9 has been removed we can ease up and reduce/remove some
render variable checks.
2019-01-02 03:11:47 +01:00
lightningterror
549b438a84 pcsx2: Remove unused variable "maddr" from Vif1_MFIFO.cpp.
One less warning to worry about.
2019-01-01 22:07:18 +01:00
Shanoah Alkire
43fa7cd6c6 Skip over translation files with .git in the path when building pcsx2 with cmake. Fixes an intermittant cmake build error about duplicate rules. 2018-12-31 23:02:34 -08:00
lightningterror
d55e9cbd96 spu2-x: Remove unused GetLinearSrAr code.
Get rid of GetLinearSrAr code, it wasn't used anywhere so I don't see a
reason why to keep it, other than clogging up the code, if someone wants
to work on it they can re add the function in the future.
2018-12-31 18:06:31 +01:00
lightningterror
ec6ac75b10 GSdx-gui: Update the crc hack level tooltip again.
Suggested by Gregory.
2018-12-31 18:03:15 +01:00
lightningterror
5d62e47229 GSdx-gui: Update crc hack level tooltip.
The tooltip was way too big so this should shrink it down a bit. Remove
the mentioned games on Aggressive state, it was a bit useless.
2018-12-30 23:59:59 +01:00
Kojin
eddaf71d47 gsdx: remove dds parameter from texture save method 2018-12-30 20:13:59 +01:00
Kojin
e847d94062 gsdx-d3d11: enable splitting of alpha in dumps 2018-12-30 20:13:59 +01:00
lightningterror
781323ff10 GSdx: Purge a crc hacks for GSC_Onimusha3.
Hack removed depth effects which are rendered properly. I wasn't able to
trigger a skip on the other hack draw calls, they need to be
investigated further what they actually did.
2018-12-29 01:35:44 +01:00
lightningterror
01c64f1b35 GSdx: Purge some crc hacks for GSC_BurnoutGames.
Purge hacks that removed texture shuffle effects only.
2018-12-28 20:21:02 +01:00
lightningterror
7577165a97 GSdx: Adjust Aggressive state crc level.
Create a Aggressive state function instead of adjusting the hacks
separate, move the aggressive only there.
It's more efficient this way.
2018-12-28 20:03:38 +01:00
lightningterror
0b72708981 Gabedb: Add EE clampmode gamefix to full for DreamWorks Shrek the Third.
Fixes objects spawning.
Also add missing game db entry for a missing version.
2018-12-28 19:42:10 +01:00
lightningterror
d13d5aef00 Gabedb: Add EE clampmode gamefix to full for NFS Carbon.
Fixes game hang after opening intro.
Close #2776
2018-12-28 02:26:58 +01:00
Shanoah Alkire
a97bc2309a Take care of a cmake 3.11 deprecation warning when finding OpenGL. 2018-12-26 22:00:03 -08:00
Shanoah Alkire
0ff7ea3ccc Only use -Wno-class-memaccess on gcc 8.0 or higher, as it didn't exist previously. 2018-12-26 21:55:25 -08:00
lightningterror
9c0bbfec1f Revert "cmake: Add -mxsave flag to ARCH_FLAG in BuildParameters."
gcc complained about "Wno-packed-not-aligned" and "Wno-class-memaccess"
flags so I won't bother with it, the warnings can be fixed properly
but for now I'll just revert the previous commit.
2018-12-27 06:20:26 +01:00
lightningterror
752dbdefd2 cmake: Add -mxsave flag to ARCH_FLAG in BuildParameters.
A couple of users reported compilation issues using gcc 8.2+ on some
machines/distros on github and discord and adding the -mxsave flag
suggested by turtleli seems to fix the issue.

Fixes #2669
2018-12-27 04:55:50 +01:00
pgert
eb7824e6ff PCSX2: updates & improvements of Scandinavian translations 2018-12-27 02:00:02 +01:00
lightningterror
d1c8808797 GSdx-d3d: Add texture shuffle check in DATE selection.
It ensures the code cases are hit properly for all DATE selection cases.
Texture shuffle case with Slow DATE is not yet supported so keep using
the old DATE method.
2018-12-26 18:45:11 +01:00
lightningterror
6575fe7cce GSdx: Disable/uncheck "Large Framebuffer" option by default.
Some games don't play nice with the option and have huge amounts of
ram/vram spikes that can even lock up the system so it's better to have
the option disabled by default.
2018-12-26 13:43:37 +01:00
lightningterror
d5bd5db072 GSdx: Fix OpenCL detection.
Fixes an issue when the plugin detects an opencl ini value for the
render. It used to throw a "GS plugin failed to load" error when opencl
was disabled but the ini value remained the same. The render will
fallback to D3D11 now.
2018-12-26 05:13:15 +01:00
Daniel Nowak
b3006e2a6a Dev9ghzdrk: MAC updated to work with XLink 7.4.32 2018-12-25 22:57:19 +01:00
lightningterror
a020c98421 GSdx: Cleanup file includes.
Remove GSCrc.h include in GSRendererHW and GSRendererDX11, file is
already included in GSState.h.

Remove GSRenderer.h include from renderers except Null and CL, file already
included in TextureCache hw/sw.

Remove resource.h include from GSRendererDX11, already included in GSDevice11.

Remove GSOsdManager.h from GSDeviceOGL, already included in GSDevice
2018-12-25 20:12:29 +01:00
Kojin
a5564896ea gsdx-d3d11: remove useless gs creation method 2018-12-25 13:38:19 +01:00
Kojin
e0c598f38e gsdx-d3d11: Enable HLSL debugging on development builds
Enable HLSL compile flags that allow devs to use tools such as NSight or VS Graphics debugging for HLSL.
2018-12-25 13:38:19 +01:00
lightningterror
4076e3387e GSdx-osd: Change default font color to blue/cyan.
It matches the color theme of the emu better.
2018-12-25 02:35:49 +01:00
lightningterror
29941f3e0d GSdx: Partially re add Bully crc hack.
Game has upscaling issues so let's only add the hack for upscaling,
also merge the two regions together.
Hack will be disabled on native res if crc is below aggressive, upscaled
is set to partial level.
2018-12-24 15:25:06 +01:00
lightningterror
e299ac1ffa GSdx: Update GSC_DBZBT2, GSC_DBZBT3 crc hacks.
Purge dbz bt3 crc hack that removed outlines, I don't want to mix it
with the depth effect hack that I also moved to aggressive.
Move depth hacks for ntsc region to aggressive state.
2018-12-23 18:48:17 +01:00
lightningterror
59ecfb23d7 GSdx: Purge GSC_Bully, GSC_BullyCC crc hacks. It's the same game.
Depth and texture shuffle render the effects correctly.

Dump shows the game look splending compared to before on d3d11.
2018-12-23 17:55:27 +01:00
lightningterror
154dea1557 GSdx: Purge OI_SMTNocturne hw hack.
The hack was used when depth emulation was not supported or when depth
is disabled.
It causes graphical glitches with the faces when depth is disabled.
2018-12-23 17:12:10 +01:00
lightningterror
da76440c14 GSdx-TC: Get rid of nasty ZWriteMustNotClear hack.
d3d11 supports depth now.
2018-12-23 16:03:28 +01:00
Kojin
dc2eed6ca1 gsdx-d3d11: Fix CopyOffscreen bug
Update CopyOffscreen to accept the ps_shader value when doing StretchRect.
This fixes an issue where it was selecting the wrong PS for depth cache read.

Should (hopefully) fix SMT.
2018-12-23 15:20:04 +01:00
lightningterror
f6df6b350b GSdx-d3d: Disable MSAA unti it's properly fixed.
MSAA causes a lot of graphical issues when enabled with the recent
accuracy changes so better disable the feature until it's properly
fixed.
2018-12-23 14:21:44 +01:00
lightningterror
83da33e2ab GSdx: Remove d3d9.lib and d3d9.dll from common.props. 2018-12-22 22:53:09 +01:00
lightningterror
cb59794b8d GSdx: Remove d3d9 header include from stdafx.h 2018-12-22 22:53:09 +01:00
lightningterror
1ae4b5d0ba GSdx-d3d: update blend table to use src1 blending and remove the nasty hack which we couldn't before because of d3d9. 2018-12-22 22:53:09 +01:00
Kojin
5e9ffc4a94 GSdx-d3d: Adjust D3D11Blend, get rid of some casts. 2018-12-22 22:53:09 +01:00
lightningterror
bf4997b6a5 GSdx: Update/remove useless d3d9 comments. 2018-12-22 22:53:09 +01:00
lightningterror
48007350b6 GSdx-ogl: Update blend table and remove d3d9 code, remove useless defines and directly use gl code. 2018-12-22 22:53:09 +01:00
lightningterror
4644a16c5b GSdx-d3d: Update blend table enums from D3D9 to D3D11.
GSDeviceDX.
2018-12-22 22:53:09 +01:00
lightningterror
7e8360efbc GSdx-d3d: Rename d3d9 blendtable and variables to d3d11. 2018-12-22 22:53:09 +01:00
lightningterror
6a5bb5df83 GSdx: Remove support for D3D9 device on ps1 emu compatibility.
Note: Resolution scaling is unavailable right now so I disabled the
option, if someone feels like fixing it they can do so.
2018-12-22 22:53:09 +01:00
lightningterror
e12447101f GSdx: Get rid of d3d9 adapter code from GSSettingsdlg and GSDevice. 2018-12-22 22:53:09 +01:00
lightningterror
48b8d78139 GSdx-osd: Lower default font size from 28 to 25. 2018-12-22 21:56:35 +01:00
Kojin
a2f3b78bac gsdx-d3d11: Fix Depth FST
Texture scaling for x/y values wasn't being set in all cases.
This ensures that it is to fix a bug in finding nemo (and possibly others).
2018-12-22 15:53:20 +01:00
lightningterror
1957cf13c2 GSdx: Purge GSC_Black crc hacks.
Effects are rendered correctly with depth and texture shuffle on all
renders.
2018-12-21 07:32:20 +01:00
lightningterror
eb000f0f41 GSdx: Move GSC_GTASanAndreas crc hack to aggressive state.
Can be used as an upscaling hack, but it removes some nice effect so
Aggressive only.
2018-12-21 05:03:45 +01:00
lightningterror
f41b536682 GSdx: Adjust GSC_DemonStone crc hack.
Move back to partial level, half screen issue.
2018-12-21 02:28:59 +01:00
lightningterror
11f09d4944 GSdx: Purge GSC_SuikodenTactics crc hacks.
Depth effects are rendered properly on all renders.
2018-12-21 01:06:47 +01:00
lightningterror
691eae755f GSdx-gui: Might bea good idea to also change Auto to Automatic for interlacing option to keep it consistent with the other options. 2018-12-21 00:05:05 +01:00
lightningterror
02bde2f386 GSdx-gui: Add Default name tags to default options for Anisotropic Filtering and Interlacing. 2018-12-20 23:49:28 +01:00
lightningterror
c23d256f02 GSdx: Purge GSC_LordOfTheRingsTwoTowers crc hacks.
Depth effects properly rendered on all renders.
2018-12-20 23:11:42 +01:00
lightningterror
526faf9193 GSdx: Move GSC_MetalGearSolid3 to Aggressive crc state.
Half screen bottom issue, hack needs to be updated to skip less effects.
2018-12-20 22:13:39 +01:00
lightningterror
606944a127 GSdx-gui: Update MSAA tooltip. 2018-12-20 22:05:50 +01:00
lightningterror
4a0697fda2 tfx.fx: Remove commented out code in clamp_wrap_uv function. 2018-12-20 18:41:30 +01:00
lightningterror
0901f0a848 GSdx: Remove some crc hacks for GSC_IkkiTousen.
Remove depth hacks that skipped shadow rendering, shadows work properly
on all renders.

Upscaling hack needs to be further tested.
2018-12-20 18:31:53 +01:00
Kojin
e51eadaf16 gsdx-osd: Update m_font to use unique_ptr 2018-12-20 15:32:04 +01:00
Shanoah Alkire
a4f794f3a6 GSdx: Add color to OSD, move it to its own tab, and change the widget defaults on the dialog box. 2018-12-20 15:32:04 +01:00
lightningterror
58be50d978 gsdx-osd: Update Linux dialog
Update linux dialog to match Windows.
Only color is missing.
2018-12-20 15:32:04 +01:00
Kojin
f8ae0f7e19 gsdx-osd: Update osd gui
Add support for color picker, remove font selector, enable the menu for dx11 and some other tweaks.
2018-12-20 15:32:04 +01:00
Kojin
3819e22432 gsdx-osd: Add support for custom colors 2018-12-20 15:32:04 +01:00
Kojin
1b0112de22 gsdx-osd: Rename log speed to log timeout
Linux/Windows GUI to be updated in later commits.
2018-12-20 15:32:04 +01:00
Kojin
038ae8c7fc gsdx-osd: Switch to opacity
Switch to using opacity since this is how most software works.
Transparency is simply confusing to the average user.

Linux/Windows GUI to be updated in later commits.
2018-12-20 15:32:04 +01:00
Kojin
d624927022 gsdx-osd: Scale based on window size
Switch to scaling on the window size instead of a hardcoded monitor res
2018-12-20 15:32:04 +01:00
Kojin
5e75a66f82 gsdx-d3d11: Port RenderOsd function from opengl to support osd on d3d11 2018-12-20 15:32:04 +01:00
KrossX
83d293d41c gsdx-d3d11: Port OSD shader from OGL 2018-12-20 15:32:04 +01:00
Kojin
5713993777 convert.fx: Add color support to IA
Support color input in vs and ps.
Skipping dx9.
2018-12-20 15:32:04 +01:00
Kojin
e683ce2994 gsdx-osd: Update manager to support DX11
Fix an issue with w coordinate values being 0 which caused issues on DX11.
2018-12-20 15:32:04 +01:00
lightningterror
63bbf52219 GSdx-d3d11: Adjust DATE code, and remove rtCopy.
Remove DATE shader macro and bit.
Remove useless HasStencil case. If DATE is enabled stencil is also
enabled, this check is useless.
Remove leftover rt and rtCopy code case from d3d9.

Remove traces of rtCopy and sampler in slot 2.

rtcopy
2018-12-20 14:42:56 +01:00
lightningterror
cdeacafd27 tfx.fx: Remove datst (DATE), and RTCopy.
Code was never hit on D3D11. D3D11 uses stencil operations.
Also Remove VS_RTCOPY which was used only by d3d9.

Remove RTCopy Sampler from the shader.

tfx rtcopy
2018-12-20 14:42:56 +01:00
lightningterror
8ec184d265 GSdx: Set some enum values correctly.
Previous commit broke the values with the removal on the d3d9 code.
2018-12-20 14:16:47 +01:00
lightningterror
824473a34b GSdx-gui: Remove some leftover D3D9 code in the gui. 2018-12-20 14:00:03 +01:00
lightningterror
d4d95e2f10 GSdx: Adjust some of the crc hacks comments and what category they fall under. 2018-12-20 13:55:26 +01:00
lightningterror
697aa5e4b7 GSdx: Purge GSC_SpyroNewBeginning, GSC_SpyroEternalNight crc hacks.
Effect correctly emulated with texture shuffle on all renders.
2018-12-20 13:22:12 +01:00
lightningterror
f0fec02eec GSdx: Purge GSC_StarWarsBattlefront and GSC_StarWarsBattlefront2 crc hacks.
Channel shuffle emulates the effects correctly on all renders.
2018-12-20 12:34:09 +01:00
lightningterror
6f6e5eb325 GSdx: Purge GSC_SoulCaliburGames crc hacks.
Depth emulation renders the background properly and the stage is no
longer dark.

Shadows are still missing on D3D11, colclip emulation perhaps.
2018-12-20 12:09:57 +01:00
lightningterror
6899fc74f9 GSdx: Purge GSC_HeavyMetalThunder crc hacks.
Depth renders effects properly on all renders.
2018-12-20 03:05:05 +01:00
lightningterror
415e27136e GSdx: Adjust/remove crc hacks GSC_FrontMission5, GSC_HauntingGround.
Remove one crc hack for GSC_HauntingGround. It skipped some depth
effects. Correctly rendered now

Remove all crc hacks for GSC_FrontMission5.
Texture shuffle, depth emulation and enabling Preload Frame Data
emulates the effects correctly.

Add a note for GSC_Tenchu for future testing.
2018-12-20 02:13:11 +01:00
lightningterror
d9da9f4bc2 GSdx: Purge GSC_FinalFightStreetwise crc hacks.
Depth is emulated correctly on all renders.

Blending issues remains.
2018-12-20 02:01:57 +01:00
lightningterror
fce3918562 GSdx: Purge Direct3D9 Render entirely. (#2762)
And the time has come to say good bye (good riddance?), this build removes Direct3D9 entirely from GSdx. D3D9 is/was holding us back in some D3D11 fixes that we want to further implement.
The last build that supports D3D9 is v1.5.0-dev-2779-g1a61148b0 for anyone still interested.

"Press F to pay respect.
2018-12-20 00:54:51 +01:00
lightningterror
e091f4233a GSdx-d3d11: Remove commented out code for int_fst.
VS FST is already enabled, values are inverted on D3D11.
2018-12-19 19:59:23 +01:00
Kojin
0353273733 tfx.fx: Update Vertex and Geometry shaders to support the new
depth sample state.

Note this breaks D3D9 but we will be purging it shortly after
so there's nothing to worry about.
2018-12-19 19:59:23 +01:00
KrossX
3b11164637 tfx.fx: Add tfx shaders to support depth sampling.
Add clamp wrap uv depth,
Add sample depth.

Sample shaders depth fmt 1 and 2 are based on convert shaders.
2018-12-19 19:59:23 +01:00
lightningterror
1ad71a9b85 GSdx-gui: Remove Direct3D9 option from the gui.
D3D9 will be broken once #2756 is merged so let's disable it to avoid
any potential crashing if the render is selected.

Complete D3D9 purge will shortly follow afterwards.
2018-12-19 17:17:39 +01:00
lightningterror
1a61148b00 GSdx-d3d11: Redo destination format and alpha output.
Dfmt in texture shuffle function already picks the 16 format on slot 2
so it's better to let it call the shader instead of aout.

We can keep old aout code until FbMask emulation is added on d3d11. We
can purge aout along with alpha hack then.
Added fixme note.
2018-12-18 12:55:23 +01:00
lightningterror
0c0e0e9266 GSdx-d3d11: Add support for dfmt shader macro. 2018-12-18 12:55:23 +01:00
lightningterror
59752120d6 tfx.fx: Add support for dfmt to pick the shader for 16bit alpha output. 2018-12-18 12:55:23 +01:00
Kojin
5527bcb13e GSdx-debug: Do some casts and fix warnings. 2018-12-17 15:52:27 +01:00
lightningterror
bf0106d2bc GSdx-d3d: Add remaining code for RGB channel.
Enable channel shuffle on GT3, GT4, Tourist Trophy and Tekken5.
And with that we reach OpenGL accuracy on this specific feature.
2018-12-17 11:50:16 +01:00
Kojin
ef0ebd6517 gsdx-d3d11: Copy render target when it matches texture in slot 4
Needed for channel shuffle, this copies the render target when it's
the same as the resource texture bound on slot 4.
2018-12-17 11:43:15 +01:00
Kojin
554b797b92 gsdx-d3d11: Move shader/sample state set to it's own function 2018-12-17 11:43:15 +01:00
Kojin
84dbdd6b18 gsdx-d3d11: Add CopyRenderTarget function 2018-12-17 11:43:15 +01:00
Kojin
1427d55b08 gsdx-d3d11: Store shader resource textures on GSDevice11 2018-12-17 11:43:15 +01:00
Kojin
a743707728 gsdx-d3d11: Store render target texture in GSDevice11 2018-12-17 11:43:15 +01:00
Kojin
07989a0a17 gsdx-d3d11: Add equality check for GSTexture11 2018-12-17 11:43:15 +01:00
lightningterror
c2fd67b1cb GSdx-d3d11: Add remaining psm.depth code.
Fixes recent regression on Soul Calibur.
It helps isolate psm.depth when it should and shouldn't run even if
sampling isn't supported yet.

Finding Nemo depth issue remains.
People can use the option to disable depth for now on that game.
2018-12-17 07:17:17 +01:00
lightningterror
93f1dc2804 GSdx-d3d: Remove psm.depth skip on d3d.
I'm seeing better results with this skip not included.
So far DBZBT, God of War, Haunting Ground seem better.
Depth sampling is still not yet added.

Also fixes a regression in GT4 when depth was enabled because the skip
function was misplaced. Other games might've been affected as well.
2018-12-16 20:32:05 +01:00
lightningterror
7d938834d2 GSdx: Add crc id for ZettaiZetsumeiToshi2 EU.
SLES-54587 Raw Danger!
2018-12-16 16:02:50 +01:00
lightningterror
bb0f08b2c1 GSdx-d3d: Simplify aout for reading. 2018-12-15 05:46:15 +01:00
lightningterror
a8c2076d04 GSdx: Adjust God of War 1 and 2 crc hacks.
Move texture shuffle (shadows) hack to aggressive state.
Adjust water/hell effect crc hack - don't enable hack on native res if
crc is below aggressive, enable if resolution is higher on dx and gl
state.
2018-12-14 15:16:26 +01:00
lightningterror
e87a6b9ccd GSdx-d3d11: Plug the TOA and Urban Chaos code in to channel shuffle.
On Tales of Abyss it fixes blur,
On Urban Chaos it fixes fog/transparent layer.

Note: Depth needs to be enabled on d3d11.
No support for d3d9 ofc.
2018-12-13 22:14:49 +01:00
lightningterror
a1f4d2ca3f GSdx-d3d11: Add support for Tales of Abyss and Urban Chaos shader bit and shader macro. 2018-12-13 22:14:49 +01:00
KrossX
013c47950d tfx.tx: Add support for Tales of Abyss and Urban Chaos HLE shader.
Add sample_depth function, note only Tales of Abyss and Urban Chaos
depth sampling is supported, full depth fmt will need to wait a little
longer.
2018-12-13 22:14:49 +01:00
lightningterror
50b71f69da GSdx-d3d: Add fixme note fo rPSSetShaderResource slot 4 channel shuffle. 2018-12-13 01:47:10 +01:00
lightningterror
7215618621 GSdx-d3d11: Add support for depth convert format in texture sampler.
Idea is to allot partial support of depth fmt on the new depth convert
format, this way we can utilize channel shuffle on Red, Blue or gXbY
channels with depth shader conversion.

Terminator 3 hits this code path and seems to fix a transparent wall.
Other games will probably benefit from this as well.
2018-12-13 01:47:10 +01:00
lightningterror
3a9ff840cf GSdx-d3d11: Add support for depth_fmt bit as well as macro for shader. 2018-12-13 01:47:10 +01:00
lightningterror
abb1cc5fe7 tfx.fx: Add shaders support for PS_DEPTH_FMT on channel shuffle.
Red, blue and gXbY channels support it.
2018-12-13 01:47:10 +01:00
lightningterror
c511ce80d2 GSdx-d3d: Add support for channel shuffle in GSRendererDX.
Split the code from GSRendererDX to GSRendererDX9 and GSRendererDX11. We
ensure d3d9 doesn't blow up with regressions, add required code to
GSRendererDX11 to properly support channel shuffle.

Note the feature is still not yet complete, copy function needs to be
implemented (suggested by Gregory) but it can be done at a later date,
this still fixes a bunch of issues on various games.
2018-12-13 01:47:10 +01:00
lightningterror
c7aca64642 GSdx-d3d: Add support for ChannelShuffle in PS constant buffer.
Needed for GXBY channel.
2018-12-13 01:47:10 +01:00
lightningterror
c8f53f32fc GSdx-d3d11: Add the shader fetch in GSTextureFX11.
Allows us to fetch the channel from the tfx shader.
2018-12-13 01:47:10 +01:00
lightningterror
cd5132d201 GSdx-d3d: Add the channel bit to support channel shuffle. 2018-12-13 01:47:10 +01:00
KrossX
d38bd9c950 tfx.fx: Port channel shuffle shaders from OpenGL.
Port RGBA shaders to support channel shuffle on Direct3D11.
2018-12-13 01:47:10 +01:00
Chromaryu
4669e1423d Localization: Update ja_JP localization
Got reported that VSync translation is missing.
2018-12-12 19:17:51 +01:00
Shanoah Alkire
0e43803562 SaveSlots: Initialise the crc to 0, as well as serialName being an empty string. 2018-12-11 23:34:24 -08:00
Shanoah Alkire
73209c520c Some annoying logs about COP0 are now COP0 Logs. 2018-12-11 21:22:41 -08:00
lightningterror
46989a0c6c GSdx: Forgot to remove OI_TalesOfLegendia from header file. 2018-12-11 23:19:02 +01:00
orbea
aa5c0ebb95 GSdx: Remove OI_TalesOfLegendia HW hack. (#2747)
The hack caused glitches to appear on the right side of the screen, the hack was used as a workaround to properly display game ui elements however it is no longer needed on opengl and d3d11. The ui elements are rendered properly with Depth Conversion.
Shadow issues are solved with at least partial level crc hacks.

See https://github.com/PCSX2/pcsx2/issues/2692 for more detailed information.
2018-12-11 19:36:15 +01:00
Kojin
b2155f82f4 pcsx2-git: Update ignored files
Ignore all .vs directories and not just the top-level one
Ignore OpenGl debug logs
2018-12-11 19:24:21 +01:00
Alessandro Vetere
fe845aee58 GSTextureCache: Initialize palette texture if needed and not done yet.
Also comment on the reason behind palette texture is always created with size 256x1.
2018-12-11 16:36:14 +01:00
Alessandro Vetere
0a5b1eb75d GSTextureCache: Attach palette if needed (psm.pal > 0) also when reading part of framebuffer as texture. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
f605012659 GSTextureCache: Refactor and fix palette management (v2).
1) Refactor palette comparison fast path mechanism to avoid using mutable member of Source,
2) Attach palette to texture as soon as needed,
3) Bugfix attach CLUT copy only when pal > 0.
2018-12-11 16:36:14 +01:00
Alessandro Vetere
c183368d72 GSTextureCache: Refactor code to avoid using local shared pointer. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
894ce5b7d6 GSTextureCache: Centralize CLUT comparison logic in PaletteKey equality operator. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
c368afd6d2 GSTextureCache: Reformat code and adjust comments. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
e1dff69a43 GSTextureCache: Compare also pal value in PaletteKey eq operator. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
774373cc65 GSTextureCache: Add ASSERTs on pal value to ease debugging. 2018-12-11 16:36:14 +01:00
Alessandro Vetere
acbe6c24a0 GSRendererOGL/GSTextureCache: Improve ICO hack by using palette cache for depth sampling, removing only point of creation of palette textures outside TC. 2018-12-11 16:36:14 +01:00
lightningterror
202945aa49 GSdx: Add proper Jak1 game to Automatic mipmapping.
I added Jak X: Combat Racing by mistake thinking it's Jak1.
Don't include Jak X, we don't know the status yet.
2018-12-11 13:44:54 +01:00
lightningterror
bc524d5e56 Gsdx: Adjust Burnout crc hacks to work on progressive mode.
NTSC only.
I don't know what the "impact screen" crc hack did since the dump didn't
show any difference so that may need to be updated as well.
Note: I only tested the JP version.
2018-12-11 12:59:18 +01:00
Shanoah Alkire
bea4e56d5d Saveslots: Initialize serialName to a blank string. 2018-12-10 19:55:54 -08:00
lightningterror
80af99bb44 GSdx-ogl: Switch shader numbers main18 and main19.
Allows us to port feedback write (DoMerge function) to D3D11 without
adding dummy shaders for osd.
2018-12-10 18:31:59 +01:00
lightningterror
0704b73c2f GSdx-TCOGL: Adjust depth format cases in Texture Cache GL.
Get rid of duplicate code in switch cases.
2018-12-10 03:11:34 +01:00
arcum42
d05163a26f Remove gigaherz old wip 'new' iopdma code. (#2703)
* Remove gigaherz old wip new iopdma code.

* Second pass removing dma code I missed last time.
2018-12-09 18:00:04 -08:00
lightningterror
ecbd8d9f2f GSdx-gui: Enable "Disable Depth Emulation" option for Direct3D11. 2018-12-10 00:17:04 +01:00
Kojin
ade00f8a70 GSdx-d3d: Support depth as texture.
- Create depth as typeless format and bind shader resource flag.
- Create depth and shader resource view using proper typed formats.
2018-12-10 00:17:04 +01:00
lightningterror
eb3a423f80 GSdx: Enable Texture Cache and RendererHW to support depth on Direct3D11. 2018-12-10 00:17:04 +01:00
lightningterror
4328d099c4 GSdx-d3d: Add support to write in depth buffer.
Add support for dss_write.
Enable writing in depth buffer for dss_write,
when depth conversion is active data will be writen in the depth buffer,
if not then use the old method (don't write).
2018-12-10 00:17:04 +01:00
lightningterror
9a5bf12c0b Gsdx-d3d: Allow Direct3D11 to skip psm.depth on texture sampler.
depth fmt is not yet supported. This ensures there are no regressions,
and we are skipping the draw calls for depth fmt not yet supported.
2018-12-10 00:17:04 +01:00
lightningterror
7928cff354 GSdx-TC11: Add support for depth formats in Direct3D11 Texture Cache.
Add depth formats for Direct3D11 to properly support depth.
2018-12-10 00:17:04 +01:00
KrossX
c3a1cc3801 convert.fx port main10-16 shaders from Opengl to Direct3d11.
Adds support to do depth conversion through the shaders.
2018-12-10 00:17:04 +01:00
arcum42
af742a753e spu2-x: Fix warnings regarding initializing with memset/memzero/etc... (#2682)
* spu2-x: Fix warnings regarding initializing with memset/memzero/etc...

* Use fill_n instead, per turtleli's suggestion.

* spu2-x: Comment out StereoOut initialization.

* spu2-x: As requested, remove commented out code.
2018-12-09 14:09:22 -08:00
Shanoah Alkire
3a094604f6 onepad: Add support for the Nintendo Switch Horipad controller. 2018-12-09 13:20:33 -08:00
lightningterror
71ac570f32 GSdx-gui: Correct Large Framebuffer tooltip.
Wording/typos.
2018-12-09 17:04:29 +01:00
lightningterror
b6d06f53d6 GSdx-gui: Update Large Framebuffer tooltip.
Include games that don't play well with the option (cause ram/vram
spikes).
2018-12-08 14:48:55 +01:00
lightningterror
4da3f567f4 GSdx: Reduce some code checks for dbz bt hacks. 2018-12-08 13:49:06 +01:00
arcum42
959d652dbb Switch to using the current cmake policies, not deprecated ones. (#2642)
* Switch to using the current cmake policies, not depreciated ones.

* Bring the cmake version up to 3.0.2, and get rid of the depreciated policies.
2018-12-07 22:18:12 -08:00
Shanoah Alkire
38da174670 zzogl-pg: Don't include GLWin32.cpp when compiling for Linux. 2018-12-07 14:28:15 -08:00
lightningterror
1fa68071d8 GSdx: Add Nickelodeon: Barnyard to automatic mipmapping. 2018-12-06 12:35:28 +01:00
lightningterror
f8ec61a3fc GSdx: Add crc ids for Burnout: Takedown and Revenge.
Jap discs.
2018-12-06 05:31:19 +01:00
lightningterror
417ba188bd PCSX2: Change EE Cyclerate, Cycle Skipping speedhacks gui level colors.
0 - Green - no change
-1/+1 - Orange
-2/+2 - Light Red
-3/+3 - Red - no change.
2018-12-05 21:27:58 +01:00
lightningterror
e4e93bd7f5 GSdx: Remove bloom crc hack for Haunting Ground.
Effect is already handled better in Texture Cache. No need for a
duplicate function.
D3D9 might look a bit worse but nobody cares about D3D9.
2018-12-05 13:21:54 +01:00
lightningterror
cf97c304ac GSdx: Revert DBZ BT3 Ghosting/Blur hack.
The game still has a bunch of depth and other issues even on gl and it
doesn't play nice with the blur effect as well. Perhaps the hacks can be
changed to work better but for now enable it on native as well.
2018-12-02 05:28:34 +01:00
lightningterror
8307cfc54d GSdx: Ease crc hack for DBZ BT2.
Fixes ground corrupt textures caused by the hack on the EU version.
US works fine with skip 5 but not 4. Didn't spot any regressions on both
so far. Might need extra testing by users.
2018-12-01 16:06:36 +01:00
lightningterror
8747781bdc GSdx: Add JaX and Jak 3 to automatic mipmapping.
Jak 2 not included. See #2712

Close #2712
2018-12-01 12:53:04 +01:00
lightningterror
9abe96cba4 GSdx-d3d: Update Fast DATE and Alpha Stencil behaviour.
Idea is to allow Alpha Stencil to work with Fast Date.
Let Fast Date run for the supported calls since it's more accurate, let
Alpha Stencil take care of the rest.

This might fix some issues where Alpha Stencil caused some issues making
it a bit more accurate.
2018-11-30 10:44:25 +01:00
Chromaryu
5035869d96 PCSX2: Apply updated ja_jp translation. (#2724) 2018-11-30 08:21:05 +01:00
lightningterror
f687f993cc GSdx-d3d: Replace DATE one calls with a variable. 2018-11-29 20:29:28 +01:00
lightningterror
6c34f6c334 GSdx-d3d: Partial port for DATE one (Fast Date) and Fast Accurate Date.
It fixes a bunch of shadow/transparency issues.
Fast DATE doesn't rely on the gui option and is always on.
Confirmed fixed issues: Persona 3 shadows on d3d11,
Digital Devil Saga Transparency d3d9/11.

Fast accurate date works the same/similar to OpenGL.
Confirmed fixed issues: DBZ BT3 ground shadows, Fifa Street 1 shadows
on all d3d renders as well.

Also this option doesn't cause other transparency issues like the
Alpha Stencil hack.

Note: If Alpha Stencil is enabled Fast Date and Fast Accurate Date will
be disabled.

Note2: Full Accurate Date is not implemented so the code fallbacks to
Fast mode instead.

Commits:
3ab12cef2f
584397a3fd

This will probably be the last feature d3d9 gets before getting purged.
2018-11-29 20:29:28 +01:00
lightningterror
b33418f270 GSdx: Ease crc hack for DBZ BT3.
Fixes some ground black texture flickering on some stages on the ntsc
version.
2018-11-29 18:24:08 +01:00
Chromaryu
31c2d2a654 PCSX2: Update ja_JP translations. (#2721) 2018-11-28 17:58:18 +01:00
lightningterror
f183ca12d9 GSdx-gtk: Move around some options to better match windows gui.
Move Enable User Hacks at the top. Otherwise spacing looks weird.
Large Framebuffer should be next to Allow 8 bit textures.
Move Accurate Date and Accurate Blending at the bottom (similar to windows).
2018-11-28 08:21:13 +01:00
lightningterror
584397a3fd GSdx-ogl: Implement a fast Accurate Date algorithm.
Suggested by Gregory.
Change the checkbox to a drop down list Off, Fast, Full.
Off and Full do the same as before, the Fast option is new. Most of the
time users don't actually need full Accurate Date so why not reduce that
cost and use a fast mode instead, plus it can also be used on a gpu with
a limited driver. Also change the default value to Fast instead of Off.
2018-11-28 08:21:13 +01:00
Ryudo300
8a04f5f52c SPU2-X-gui: Replace logo. (#2719)
Update the logo to match the changes with the rest of the updated logos (namely GSdx).
2018-11-27 23:21:33 +01:00
lightningterror
ef9570003e Gamedb: Purge FMVinSoftwareHack gamefixes for Silent Hill 2.
Direct3D11/OpenGL properly render it with Unscale Point and Line.
2018-11-26 19:34:20 +01:00
lightningterror
9899d0d6b7 GSdx: Always enable Unscale Point and Line.
Always enable unscale point and line hack on upscaled resolutions, and
purge the gui option.

It was discussed in the past with Gregoy that it can be enabled without
causing any issues which will be beneficial to getting rid of 1 less
option and fixing a bunch of fmv issues without relying on a gui toggle.
2018-11-26 17:13:45 +01:00
iMineLink
8ff0249213 GSVector4i: Fix compare64 function.
Fix GSVector4i::compare64 function by adjusting the number of iterations
needed to cover the comparison of all the elements of the input arrays,
where the number of bytes to compare is indicated in the size parameter
of the function.
The function is used only in GSdx-TC to compare CLUT arrays.
On one hand this fix closes the recent #2706 and possibly the color
regressions indicated in #2702 (which were both introduced with the new
PaletteMap mechanism, which partially replaced the GSVector4i::update
logic with the bugged GSVector4i::compare64).
On the other hand this might impact long standing wrong texture cache
lookup when palette was involved with 8-bit palette disabled (to be
verified which ones).

Close #2713
Fixes #2706
Fixes #2715
2018-11-26 10:01:10 +01:00
lightningterror
9a10612f0b GSdx: Adjust Frame Buffer Conversion tooltip and TC comment to match recent changes. 2018-11-25 13:35:00 +01:00
lightningterror
c8f52b0ba3 GSdx-ogl: Move rgb channel 7 to empty slot 5. 2018-11-25 04:06:04 +01:00
lightningterror
193bda164b GSdx: Make OI_TalesOfLegendia hack active only when depth is not supported/disabled.
Fixes right half screen issue on TalesOfLegendia. UI elements of the
screen are properly emulated with depth emulation on gl (possibly fixed
by
1cc696ab31).
Shadows will be glitchy if crc hack level is below partial level.
I'm not even sure if the hack is useful at all anymore since it
introduces issues now.

Issue #2692
2018-11-24 13:40:36 +01:00
lightningterror
3b96e98eac GSdx: Add crc id for Tenchu Fatal Shadows JP. 2018-11-24 02:34:02 +01:00
lightningterror
f0c064261b Gamedb: Ease Ghost in the Shell COP2 patch.
Makes character shadows work properly.
Also remove crc check to make the Russian version work.

Testing was also done by @ivan89el.

US and EU regions only.
2018-11-24 01:26:33 +01:00
lightningterror
ee89fa5eec pcsx2: Add StaticLine between Zoom and Disable window resize border. 2018-11-22 06:19:15 +01:00
lightningterror
57a90e5fa5 pcsx2: Purge leftover commented out code for exclusive fullscreen.
Keep the comment references as they provide some good info.
2018-11-22 01:46:54 +01:00
Chromaryu
3d6921d9ca GameDB: Fix Ace Combat V NTSC-J Patch Address. (#2700) 2018-11-21 16:40:57 +01:00
pgert
651d287f1d Minor README edit by TheTechnician27 2018-11-20 02:35:02 +01:00
lightningterror
ec6b5a12e3 pcsx2: Fix some issues on FMV Aspect Ratio Override.
gui: Move the Off option to the top instead of bottom for FMV Aspect Ratio Override.

It's not ideal for it to be at the bottom.

Adjust the logic how the button works, there was an issue if both aspect ratios
were the same the aspect ratio chosen was selected to Fill.
Also adjust the code so the button better responds to realtime toggling.

If disabling the button realtime during a fmv then the normal aspect ratio
should be chosen.

There's still an issue left where if the fmv button is changed first and then
the aspect ratio button the button would would not work. Switching it off
seems to reset and make it work again.
2018-11-19 17:03:45 +01:00
Chromaryu
252458d5bd GameDB: Add Ace Combat 5 COP2 Patch on NTSC-J. (#2694)
This'll potentially fix "Unplayable Bug" caused by COP2. (This patch exists in NTSC-U, but confirmed this patch work on NTSC-J.)
2018-11-19 16:08:34 +01:00
lightningterror
c6abc08b5f PCSX2: Correct FMVAspectRatioSwitchNames ini labels.
Small follow up correction from #2690, the ini options were inverted.
2018-11-18 21:15:29 +01:00
FlatOutPS2
fd7a862226 PCSX2: "FMV Aspect Ratio Switch/Override" feature.
Change "Switch to 4:3 aspect ratio when an FMV plays" to
"FMV Aspect Ratio Override" drop down menu.

The option temporarily changes the Aspect Ratio to either
16:9 or 4:3 depending on the option that is selected,
and depending on the Window Aspect ratio that is selected.

Original commit:
8d471e1f16

Co author: lightningterror.
2018-11-18 19:26:07 +01:00
lightningterror
292e7a6573 GSdx-osd: Remove/purge OSD Indicator code.
The code was never working properly ( tested by @tadanokojin ) so let's
clean up and remove it. If someone actually wishes to maintain it then
they can re add it and update the code to a functional stage.
2018-11-18 14:15:17 +01:00
lightningterror
a092806d38 GSdx-gtk: Adjust some spacing, ocd satisfaction and preparation for the next commit. 2018-11-18 14:15:17 +01:00
lightningterror
40e9ce9036 Gamedb: Add gamefix patch for SpongeBob SquarePants: Battle for Bikini Bottom.
PAL only, ntsc seems to be fine according to the compatibility reports.

Patch by Prafull.

Close #2689
2018-11-18 01:43:54 +01:00
lightningterror
9994111173 Gsdx: Adjust GSC_Oneechanbara2Special (Zombie Hunters 2) crc hack.
Add a few crc ids (ntsc-j and eu).
Adjust hack, crc hack won't be active on native res if crc level is
below Aggressive state.

Issue #2007
2018-11-18 01:16:50 +01:00
lightningterror
11ddfefb60 GSdx-TC: Adjust comment for PaletteMap when 8-bit texture is disabled.
Follow up to the requested comment changes at
https://github.com/PCSX2/pcsx2/pull/2681#pullrequestreview-174683105
2018-11-17 21:38:35 +01:00
lightningterror
0161c2838e GSdx: Add some extra comments for GSC_HauntingGround crc hacks. 2018-11-17 21:20:27 +01:00
lightningterror
ae2642e55a GSdx: Remove blur/ghosting crc hacks for GSC_ShadowofRome.
Upscaling issue. Half Pixel Offset hack solves the issue.
2018-11-17 20:33:39 +01:00
lightningterror
d8702a9523 GSdx: Add google translated comments for crc hacks in GSHwHacks.cpp.
Cutie Chinese comments, they were removed in commit

21522e71b2

It's better to have google translated comments than nothing, at least we
have something to go on when doing future testing.

Also ghosting and blur crc hacks might need to be updated as they may
not be necessary on native res only.
2018-11-17 03:09:43 +01:00
lightningterror
210829f633 GSdx: Remove/purge commented out hacks "GSHwHacks.cpp.
List: GSC_Tekken5, GSC_TombRaiderUnderWorld, GSC_XE3, GSC_AceCombat4,
GSC_SoTC, GSC_ResidentEvil4.

Note: I left GSC_ValkyrieProfile2 in there because it might need to be
re enabled for dx, someday will look in to it when I'm up for the task.
2018-11-17 02:19:36 +01:00
Shanoah Alkire
cfb61c71dd GSdx: Prevent Null Renderer from crashing in Linux. 2018-11-16 14:50:25 -08:00
arcum42
2e1db411fa GSdx: Folder Reorganization. (#2657)
This pull request is for the pending reorganization of the folder structure on GSdx,
making it better organized and easier to work with.

Also remove unused GSTextureFX.cpp file.
2018-11-16 19:41:37 +01:00
Jonathan Li
15733ed8cf gsdx: Fix memory leak
The memory was allocated with new so it should be freed with delete and
not _aligned_free. Fixes the destructors not being called.
2018-11-16 02:00:42 +00:00
Shanoah Alkire
51ceec74a3 A bit of cleanup. 2018-11-15 00:55:49 -08:00
Jonathan Li
ca68ddd0d0 ci: Fix Travis CI builds 2018-11-14 13:03:09 +00:00
iMineLink
42aee34482 GSdx-TC: Use PaletteMap also when 8-bit texture is disabled by caching only clut copies. (#2681)
Enabled caching of clut copies with PaletteMap also in the case 8-bit texture is disabled, which is the default (on #2344 the caching of clut copies and palette textures was done only when 8-bit texture was enabled).
Brings moderate speedups ~10% in the most concitated parts of the ZoE2 Anubis benchmark, but may improve performance in all the cases when there are many Source objects created with clut copies to be stored.
The quality of the comments has been improved to better highlight the mechanics of the caching system.
2018-11-13 19:22:13 +01:00
lightningterror
ef3802b67a GSdx-d3d: Rename Blend Selector to better match opengl code.
Use member name.
om_bsel - > m_om_bsel
2018-11-13 01:56:11 +01:00
lightningterror
41459e6a2c GSdx-d3d: Rename Depth Stencil Selector to better match opengl code.
om_dssel - > m_om_dssel

Blend selector next.
2018-11-13 01:25:15 +01:00
lightningterror
63f9d419f8 GSdx: Rename some variables in GSHwHack.cpp.
GSC_TombRaider -> GSC_TombRaiderAnniversary,
GSC_Burnout - > GSC_BurnoutGames,
GSC_GetaWay - > GSC_GetaWayGames,
GSC_Castlevania - > GSC_CastlevaniaGames.
2018-11-12 21:15:12 +01:00
lightningterror
a26dc73836 GSdx-gui: Switch places for "Alpha Correction" and "Logarithmic Z" on d3d9. 2018-11-12 20:13:47 +01:00
lightningterror
48d90a988a GSdx-d3d: Remove not yet used rt parameter in channel shuffle function. 2018-11-11 23:59:11 +01:00
lightningterror
b26ed0db60 GSCrc: Small comment correction that I didn't notice before. 2018-11-11 03:45:06 +01:00
lightningterror
3280860ca9 GSdx: Add a couple of GT3/4 crc ids.
Rare demo/beta discs.

Source:

https://forums.pcsx2.net/Thread-Testing-out-games-not-in-the-database?pid=593185#pid593185
2018-11-11 03:42:35 +01:00
iMineLink
292dbbb6ac GSdx-TC: Remove virtual specifier from PaletteKeyHash operator, PaletteKeyEqual operator and Palette destructor. (#2680)
Small follow up corrections from #2344 highlighted by @turtleli
2018-11-10 18:50:19 +01:00
Dmitry
1b0b89776f GSdx: Removed crc id 0x7D4EA48F (multiloader). (#2677)
Removed crc id 0x7D4EA48F and mentions of that id and it's duplicates. The id is from a multiloader when packing images, and not an actual crc id from a game(s).
2018-11-10 02:27:38 +01:00
Jos van Mourik
56fb12878e PCSX2: Update Dutch Translations. (#2678) 2018-11-09 14:36:50 +01:00
PSISP
9e7b2ed153 Debugger: Make EE kernel region accessible to debugger. (#2559)
Currently, none of the EE kernel is viewable from the debugger, which poses issues when debugging code that makes use of syscalls. This PR should allow the memory region 0x80000000 - 0x800FFFFF to have readable disassembly.
2018-11-08 23:17:30 +01:00
Silent
b8b6a55952 Removed hack - use xinputNotInstalled as a flag instead of reusing pXInputEnable 2018-11-08 10:26:00 +00:00
Silent
c280d69d6f Call XInputGetState only when XInputGetExtended is not 2018-11-08 10:26:00 +00:00
Iritscen
a3c6ad636b PCSX2: Add ability to pass launch arguments to games with CLI option '--gameargs="-arg1 -arg2 -etc (#2576)
For more information please check the PR (#2576) since it's a bit detailed.
2018-11-07 19:07:17 +01:00
Christian Kenny
d1dc12f6b0 GameDB: Remove CRC check for Forbidden Siren 2 patch allowing it to work with another version as found in https://forums.pcsx2.net/Thread-bug-report-Forbidden-Siren-2-Pal?page=2 2018-11-05 23:08:30 +01:00
iMineLink
9fa1b290ba GSdx-TC: Palette management rework. (#2344)
This follows the 4th point of #2310.
The idea was to rework the current palette texture management to improve performances with games that uses multiple palettes for the same data texture.

The new management shows small to none performances improvement in almost every game in terms of FPS, and it lowers the GPU BUS usage by some percentage points in games like Baldur's Gate: Dark Alliance (9% to 7%) which uses many palettes.

The hot topic is that the performances in Zone Of The Enders 2 skyrocketed (2x), because of the fact that the game uses many palettes and a small number of textures to render it's effects.

For more detailed information check the PR  #2344
2018-11-04 22:06:24 +01:00
pgert
77a924ee7d PCSX2: Update of Brazilian-Portuguese Main mo-file 2018-11-04 00:13:13 +01:00
Dmitry
3ccc53ee74 GSdx: Add a CRC id for RedDeadRevolver RU. (#2673)
Add missing RU crc id: RedDeadRevolver
2018-11-03 22:40:49 +01:00
Guilherme Dias
5faed17d21 PCSX2: Update Brazilian/Portuguese translations. (#2672)
Fixed typos, grammatical errors, several inconsistencies with words and terms, changed some words that had a wrong translation or could be improved according to context and translated some untranslated terms.
2018-11-03 21:33:27 +01:00
lightningterror
9fdb7f6cd5 GSdx-gui: Remove "Recommended" word from crc hack levels Partial and Full.
Some users get confused and change the setting to a recommended option.
This can cause some issues when switching different hw render types.
Most of the time users shouldn't change the option and leave it on
Automatic.
Also remove ICO from crc Aggressive tooltip.
2018-11-02 14:54:24 +01:00
lightningterror
96ccdb40f1 Gamedb: Change the Kings Field 4 comments for the patches a bit to explain what the issue is. 2018-11-01 13:57:42 +01:00
lightningterror
6052614233 GameDB: Add patches for King's Field IV PAL/NTSC-U.
Fixes central tower level loading.
Patches by Wgarvin.
2018-11-01 12:41:53 +01:00
lightningterror
fd75085111 GSdx-gui: Increase the vertical size for the drop down list for crc hack level, blending accuracy, and TV shader.
Gets rid of scroll bars appearing on GSDumpGui, also fixes TV Shader
drop down list issues.
2018-11-01 00:08:39 +01:00
Silent
c5edd38681 3rdparty:wxwidgets: Cache strings for "Next>" or "Finish" buttons in wxWizard so locale stays consistent throughougt wizard's lifetime (#2664)
When updating from a higher wx release this change needs to be rechecked. The change was also included on the current 3.1.2 branch https://github.com/wxWidgets/wxWidgets/pull/1000 so this is essentially a backport (to 3.0.2 I believe pcsx2 uses ? ).
2018-10-31 09:57:57 +01:00
Shanoah Alkire
8f52d82e58 Refresh the save slots if either the crc *or* the serial number are different. (Needed for ps1 saves.) 2018-10-28 16:03:50 -07:00
Akash
fc1d9aef09 GSdx-GUI: Disable large framebuffer for custom res
No longer needed after I combined the aligorithm in my previous commit.
2018-09-27 15:41:52 +05:30
Akash
dce6d3f451 GSdx-HW: Remove inefficient scaling algorithm
Only impacts custom resolution, there used to be a much weaker algorithm
which doens't consider scissor sizes and gives a minor performance boost
in costs of accuracy (which was used when large framebuffer was disabled
in custom resolutions)

I've removed this as the performance tradeoff is rather negligible after
the implementation of #1942 and the older one is no longer necessary.
Also added an extra parameter for considering the horizontal scissor,
I'm not sure where this might be useful so this is disabled in code for
now till I discover a testcase where this helps or run it on random data
ensuring it's working properly.

Also porting this to the general scaling function might help with memory
spikes which are experienced when large framebuffer is enabled.
2018-09-27 15:34:26 +05:30
Shanoah Alkire
122871654e Expand out a define to get rid of a warning. Get rid of other compiler warnings. Re-indent so that it doesn't look like a statement is part of an if statement when it isn't. 2018-10-27 02:49:03 -07:00
Shanoah Alkire
6710b0c906 Get rid of a few GSdx warnings. Remove some extra newlines in Sio's console output. 2018-10-27 01:59:53 -07:00
lightningterror
0cbbf2daf9 GSdx: Add an enum for channel fetch. 2018-10-23 16:52:47 +02:00
lightningterror
a25f3ccdda pcsx2-gui: Align some of the buttons/options in GS Window.
They look a little bit more tidy now.
2018-10-22 21:22:43 +02:00
lightningterror
bb5d120a3b GSdx-d3d: SetupDATE - > use pretty enum names. 2018-10-20 21:12:16 +02:00
lightningterror
6dca3656ed GSdx: Add Harry Potter and the Half-Blood Prince to automatic mipmapping. 2018-10-19 22:16:00 +02:00
KrossX
df307bed02 GSdx-d3d: Add macro to support ScalingFactor in shaders. 2018-10-19 11:36:23 +02:00
lightningterror
5ef53b4587 GSdx-d3d: Partial port of the ICO HLE workaround.
We can't do a full port because channel shuffle and depth sampling need
to be ported to d3d but at the very least we can do a partial port that
skips the bad draw calls.
This way we can remove all the remaining crc hacks for ICO in GSHwHacks.
2018-10-19 07:15:06 +02:00
lightningterror
6ab47c934d GSdx: Revert disabled crc hack on native res for SFEX3.
I forgot that it's not an upscaling issue.
2018-10-18 16:13:45 +02:00
lightningterror
a8e8cb9b6e GameDB: Add GIFFIFOHack to Mana Khemia 1 and 2.
SLUS-21735
SLUS-21890
Fixes flickering sprites.
Close #2645
2018-10-18 11:58:56 +02:00
lightningterror
411e434baf GSdx-d3d: Move around some functions in DrawPrims to better match ogl.
IsOpaque(), EmulateChannelShuffle, dfmt check for 24bit alpha channel.
2018-10-18 07:02:45 +02:00
lightningterror
c92e76b17e GSdx-gui: Change internal resolution drop down list names.
This should make things a bit easier for users when picking resolutions.

Native (PS2)
2x Native (~720p)
3x Native (~1080p)
4x Native (~1440p 2K)
5x Native (~1620p 3K)
6x Native (~2160p 4K)
8x Native (~2880p 5K)
Custom (Not Recommended)
2018-10-16 16:48:50 +02:00
Shanoah Alkire
322290b19c Reenable the new saveslots. Disable the logging for them. 2018-10-15 23:57:33 -07:00
Shanoah Alkire
8f986828e7 Revert "Saveslots: This version is still commented out, and somewhat broken at the moment. If you uncomment it, after loading a game, pause and then resume to force the save and load menus to update."
This reverts commit 49b91ea78f.
2018-10-15 23:46:41 -07:00
lightningterror
77ac35058c pcsx2: small string typo fix. 2018-10-16 01:08:12 +02:00
lightningterror
933e43cb58 GSdx: Change how crc hacks work on native res.
Change the code so that some crc hacks on some games that remove
ghosting/blur issues on upscaled resolutions are disabled on native
resolution if crc hack level is below Aggressive state (most of the time).
They aren't needed then so why don't we aim for better accuracy.
2018-10-15 20:41:23 +02:00
lightningterror
5f9ddd2f83 SPU2-X: Adjust NextA case comments a bit. 2018-10-15 15:16:12 +02:00
lightningterror
eb955592ee SPU2-X: Also include the registers from case 5 since it makes more sense to have both NextA writable.
Continuation from:

6b22450a1b
2018-10-15 13:15:40 +02:00
lightningterror
6b22450a1b SPU2-X: Fixes a regression with Wallace And Gromit: Curse Of The Were-Rabbit sound cutting off.
Follow up from PR #2315
Partially reverts commit:
https://github.com/PCSX2/pcsx2/commit/57cbc901b
2018-10-15 13:03:31 +02:00
lightningterror
06f4b77f63 PCSX2: Add tooltip warning for Widescreen Patches.
Close #1733
2018-10-15 09:14:57 +02:00
Daniel Nowak
21f0752ce7 Dev9ghzdrk: Postinst for deb to add network capabilities 2018-10-15 07:26:53 +02:00
Shanoah Alkire
49b91ea78f Saveslots: This version is still commented out, and somewhat broken at the moment. If you uncomment it, after loading a game, pause and then resume to force the save and load menus to update. 2018-10-14 02:41:41 -07:00
Shanoah Alkire
cb05daf437 Add some logging for the saveslot changes, and the option to turn on just the extra ui update calls without the other saveslot changes, for testing. 2018-10-13 18:43:41 -07:00
Shanoah Alkire
6ad4345a39 A few more flags that slipped by the last commits. 2018-10-13 14:45:13 -07:00
Shanoah Alkire
149f30c7fa Removing some warnings from GSdx and pcsx2 because gcc 8 spams them mercilessly. They should probably be fixed properly, but in the meantime, this'll prevent them from masking other compiler warnings. 2018-10-13 13:56:38 -07:00
pgert
802ae36a66 PCSX2: update of Scandinavian translations 2018-10-13 20:42:43 +02:00
Shanoah Alkire
70033020a3 Update compiler flags, as a number of plugins didn't have them set. Setting -Wno-parentheses across the board to suppress warnings about gtk from gcc 8. 2018-10-13 11:05:27 -07:00
Shanoah Alkire
af646895f4 onepad_legacy: Separate the wx dialog code from the linux code here, too. 2018-10-12 23:09:24 -07:00
Shanoah Alkire
a892a95af7 onepad: Start to separate wx dialog code from linux code, as wxWidgets is multiplatform. 2018-10-12 22:29:38 -07:00
pgert
48d9763d26 PCSX2: GUI textstring corrections 2018-10-10 23:40:11 +02:00
lightningterror
fa53968b3c GSdx-gui: Forgot to update the buttons in Capture Settings. 2018-10-10 21:44:11 +02:00
lightningterror
f3610b7c5c GSdx-gui: Minor spacing changes to some buttons. 2018-10-10 21:35:00 +02:00
Shanoah Alkire
b5e8a2166b Onepad_legacy: Add missing header copyright notices. 2018-10-09 23:25:40 -07:00
Shanoah Alkire
7837d69021 Remove the -fpermissive flag, as it doesn't actually seem necessary, and it generates a compiler warning. 2018-10-09 23:13:31 -07:00
Daniel Nowak
a84a315473 Dev9ghzdrk: Get host mac correctly on Windows. (#2619)
Follow up from #2586 which ensures that MAC address is unique on Xlink Kai when using Windows.
Previous build was returning last two bytes as 00:00 rather than last two bytes of host adapter's MAC.
2018-10-09 20:37:41 +02:00
lightningterror
eac7527b93 GSdx-d3d: 24bit no alpha channel port from OpenGL.
Commit:

419dfe0544
2018-10-09 20:25:37 +02:00
lightningterror
54ddf5becb GameDB: Add patches for Ice Age 2 to make the games playable.(ntscu and pal).
Patches provided by Kozarovv.
Close #2628
2018-10-09 16:49:15 +02:00
lightningterror
b360c07253 glsl, fx: Update point sampler comment. 2018-10-09 09:07:45 +02:00
lightningterror
b1ca6ba528 GSdx-d3d: Use a pretty enum for ate_second_pass. 2018-10-08 23:58:15 +02:00
lightningterror
0dcd60b524 GSdx-d3d: Remove point sampler from d3d9.
It did nothing.
2018-10-08 21:22:34 +02:00
lightningterror
c337ab6a66 GSdx-d3d: Use Colormask instead of GSDXRecoverableError on d3d9 texture shuffle.
Might be better.
2018-10-08 21:12:05 +02:00
Jos van Mourik
897b17d259 PCSX2: Added complete Dutch translations. (#2625) 2018-10-08 18:22:35 +02:00
Sunderland93
1bd26f6fc9 Fix 2018-10-08 11:09:07 +02:00
Sunderland93
904ffb5d20 Enable dev9ghzdrk plugin for Linux build 2018-10-08 11:09:07 +02:00
lightningterror
201e7d1430 GSdx-d3d: Reformat GSRendererDX11.cpp. 2018-10-08 07:19:07 +02:00
lightningterror
e5565d32b1 GSdx-d3d: Port directly set impossible mode in the blending table from OpenGL.
Commit:
97b38d9e1b
2018-10-08 01:06:45 +02:00
Shanoah Alkire
f965502187 onepad_legacy: delete dead code. 2018-10-06 23:05:01 -07:00
Shanoah Alkire
896c9cccec onepad_legacy: reformat code. 2018-10-06 22:54:47 -07:00
Shanoah Alkire
f800ed9c2e Onepad-legacy: Even if std is used all over the place, lets not put the entire project in std's namespace. 2018-10-06 20:01:23 -07:00
lightningterror
e44fc33d48 GSdx-d3d: Add some comments in blendmap enums. 2018-10-06 08:26:45 +02:00
lightningterror
4a2549ef24 GSdx-d3d: Make blend enums easier to read.
Easier on the eyes this way.
2018-10-06 08:00:25 +02:00
Shanoah Alkire
8defe54e3b Redo how the saveslot code works. Still leaving disabled until it's been tested. 2018-10-05 22:21:54 -07:00
Shanoah Alkire
db18a01a7b Update Onepad's controller list. 2018-10-05 13:48:18 -07:00
lightningterror
379d9e4b88 GSdx-d3d: optimize colclip 0 port from OpenGL.
Commits:
7979dec5b0
15b934eb2a
2018-10-05 08:40:01 +02:00
lightningterror
d5700a8508 pcsx2: Update some redirect links. 2018-10-05 02:01:53 +02:00
KrossX
5719c6c3c0 glsl: remove signed int cast side (masks and offsets are unsigned to begin with.
Issue #2617
2018-10-04 20:47:03 +02:00
Daniel Nowak
281b6861e1 Update Travis CI for Linux networking addition 2018-10-04 16:15:00 +01:00
lightningterror
614209be2d GSdx-d3d: Change DATE variable to local. 2018-10-04 05:39:01 +02:00
lightningterror
940263d490 GSdx-gui: Adjust space/rows on some tooltips so they fit better, rename Auto to Automatic list on adv. gl settings in hw hacks. 2018-10-03 15:27:42 +02:00
KrossX
2d094cbc3b tfx.fs: Remove whitespaces. 2018-10-03 15:21:46 +02:00
KrossX
9d562a454b GSdx: Limit Wrap negative UV when PS_FST is 0 only. 2018-10-03 15:21:46 +02:00
Daniel Nowak
da1eb056a3 Add network capability for Linux (#2586) 2018-10-02 21:37:34 -07:00
lightningterror
694546e870 GSdx-d3d: Add colclip_wrap variable. 2018-10-03 05:50:54 +02:00
lightningterror
ef29daa9d0 GSdx-d3d: purge GSDrawingContext* context and GSDrawingEnvironment env from GSRendererDX.h
Not used anywhere in dx code and the code is already defined in
GSState.h with member variable names.
2018-10-03 04:41:17 +02:00
Shanoah Alkire
7641d6726f New helper include for gtk for use in plugins. Mostly based on the gtk 2/3 helper functions I added to spu2-x for the moment. 2018-10-02 01:20:54 -07:00
lightningterror
08a270a429 GSdx-d3d: Reformat GSRendererDX.cpp.
Let's keep the file clean and use 1 type of formatting and not a bunch.
It's easier to read this way and looks tidy.
Also correct some commented out code in Texture Sampler.
2018-10-02 02:16:38 +02:00
lightningterror
2aedb97796 GSdx: Add a crc id for Burnout Revenge EU. 2018-10-01 23:29:46 +02:00
lightningterror
f6ba6cc3a9 GSdx-gui: Remove Xenosaga tooltip from TC Offset hack.
No longer needed since the issue is fixed.
Commit:

629d2bd425
2018-10-01 22:42:17 +02:00
KrossX
629d2bd425 GSdx: Wrap negative UV on region repeat wrap mode.
Makes UV coord be on the range [0, SIZE) before applying mask and
offset. This fixes Xenosaga's hair for example, which has negative UV
coords.
2018-10-01 22:38:22 +02:00
Shanoah Alkire
92484a8416 Disable the new saveslot code. (It can be reenabled by uncommenting the define in Saveslots.h) 2018-09-30 02:46:44 -07:00
Shanoah Alkire
042311a827 Make it easy to turn on and off the new saveslot code. Comment out a UI update that doesn't look needed that could have been causing issues. 2018-09-29 14:27:58 -07:00
KrossX
e90c87a8ef GSdx-d3d: Keep fract in [0;1] range port from OpenGL.
Fixes texture flickering in Oni on d3d11.

Commit:
a8968257db
2018-09-28 02:33:58 +02:00
Christian Kenny
d632454a23 GameDB: Add VU Clamp Mode and GIF FIFO Hack to SOCOM 1. Resolves bad shadows/random HUD and sprite corruption. 2018-09-26 14:37:19 +02:00
KrossX
560966c539 GSdx-d3d: Update nvidia hack with vendor id detection.
Hack will no longer be active on Intel or AMD gpus.
Also remove UserHacks_disable_NV_hack. sprite hack
basically does the same thing so it's kinda useless.
2018-09-25 08:35:05 +02:00
KrossX
e063be3043 GSdx-d3d: Port mipmap max_layer calculation from opengl to direct3d.
Fixes texture corruption on direct3d when full mipmapping was used.
2018-09-25 08:35:05 +02:00
pgert
a275cf8e57 PCSX2: update of Scandinavian translations 2018-09-23 11:07:09 +02:00
Jonathan Li
3fe9ff7ac8 gsdx: Split TC offset hack into X and Y components 2018-09-20 01:01:49 +01:00
Jonathan Li
2f5ba10e6b gsdx:hw: Move TC offset variables to GSRendererHW
Also rename them for consistency.
2018-09-20 01:01:49 +01:00
lightningterror
728fa2c1a4 GSdx-d3d: tfx.fx correct texture shuffle shaders.
Some values were incorrect, now I'm no expert but looking at the code
and behavior seemed a bit wrong compared to gl.

Improves d3d rendering on Sonic Unleashed, the purple screen is gone
matching it with gl visuals.
2018-09-17 14:26:08 +02:00
Jonathan Li
7433ee7fc1 pcsx2: Warn if GameDB section start tag is incorrect
This helps avoid patches not being applied due to whitespace mismatches.
For example:
[patches ]
[ patches]
[patches  =  012345678]
2018-09-17 08:41:53 +01:00
Jonathan Li
f47321c287 pcsx2: Improve GameDB multiline section parsing
If the entry separator (line of dashes) is found, assume the multiline
section end tag is missing or incorrect and stop parsing so that it
doesn't affect subsequent database entries.

Also improve the error messages so it is slightly more clear what the
error is.
2018-09-17 08:41:53 +01:00
lightningterror
8acc319a4a GSdx-d3d: Mask alpha channel on 24bit format.
dfmt is not supported but we can use the variable to select the
frame buffer format and later disable writting to the alpha channel.

MGS3 sees an improvement, and possibly other games as well.
So far didn't spot any regressions.
2018-09-16 12:54:47 +02:00
arcum42
f3d738d771 Remove an extern that goes to a function not in the code. 2018-09-16 00:40:07 -07:00
arcum42
914573a5c3 Restore wxInvalidDateTime, and fix the call that was crashing debug. 2018-09-15 23:51:52 -07:00
lightningterror
14a62c3a3f GSdx-tc: Update fb conversion hack comment with latest d3d changes.
D3D10/11 now supports fb conversion through a shader but only on native
res for now.
Nobody cares about D3D9 so don't ask :).
2018-09-15 14:27:04 +02:00
arcum42
e9ae9cacd8 Using wxInvalidDatetime does not get along with debug builds. Using 1/1/1970 instead. 2018-09-15 03:52:41 -07:00
lightningterror
577bfaa8cd GSdx-d3d: Move Selector reset states in to a separate function.
Also move vs_sel def in header file and rename it using the member name.

Code is easier to read/move/adjust similar to GL.
2018-09-15 05:49:18 +02:00
lightningterror
f40c1de919 GSdx: GPU accelerate 8 bits texture conversion port from OpenGL to Direct3D11.
Commit:
d29e375f72

Only native res is supported currently, but it's still great progress.
Someone needs to port the ScalingFactor to D3D from commit:
6121677aa1

Credits to KrossX for porting the shader.
2018-09-13 19:56:59 +02:00
lightningterror
6b52cc9829 GSdx-gui: Minor osd gui adjustments.
Grey out scrolling speed and maximum onscreen messages when
Enable Log is not checked.
2018-09-13 03:23:36 +02:00
lightningterror
ad143d92da GSdx: Add Yakuza ntsc-u demo crc id. 2018-09-12 11:33:07 +02:00
arcum42
9cb35a8972 PCSX2: Save/load slot improvements.
With these changes, saveslots will be labeled as either empty or
with the date that the file was last updated on. The menu items
for loading them are also disabled if the slot is empty.

It's possible if you are very fast to access the menu before the
slots change. It updates when the crc changes. When you save a saveslot,
the menu item also changes to show the time you told it to save until the
file is actually done saving.

Also fix an issue with backup saveslots not working properly from the
gui on first load.
2018-09-11 00:39:33 +02:00
lightningterror
6e3f41f164 build.sh: correct some tab/space issues left by arcum from previous commit. 2018-09-10 05:54:15 +02:00
arcum42
d8e6ba4274 Add a new option to build.sh to not generate translations while building the project. 2018-09-05 21:38:38 -07:00
Jonathan Li
a977f1e6c1 pcsx2|utilities; Revert ambiguous wxString related commits
This reverts
93d5b52df3
f3e78b8267
55155ca7f1.

Unfortunately wxString stuff is a PITA to deal with. Breaks FreeBSD
compile, but there are probably more issues that just haven't been
reported yet...
2018-09-04 21:57:27 +01:00
refractionpcsx2
d520f3852b Missed some more code from testing.
I do know what I'm doing I swear
2018-09-04 20:52:17 +01:00
refractionpcsx2
50e3474b60 Missed a debug log. 2018-09-04 20:51:07 +01:00
refractionpcsx2
3c5fad7ef6 Reverted shift register stuff back to how it was, my changes made no difference now and it was slightly more optimal before.
Also fixed spaces (blame PSI :P )
2018-09-04 20:45:28 +01:00
refractionpcsx2
f7fb0f686b Fixed MFSA/MTSA, of course there's a game that abuses it (Rayman 3) 2018-09-04 20:26:36 +01:00
Jonathan Li
55155ca7f1 utilities: Fix compile when using --enable-stl wxWidgets builds
Regression introduced in 93d5b52df3.
2018-09-03 20:30:14 +01:00
Jonathan Li
f3e78b8267 utilities: Split thread internal callback function
__try is used in pthread_cleanup_push when CLEANUP_SEH is used as the
pthread cleanup model. That can't be used in functions with objects
that have destructors, so move it into a separate function.

Fixes a non-release build compile error on Windows. Regression was
introduced in 93d5b52df3.
2018-09-03 20:30:14 +01:00
lightningterror
6b2fcbd070 SPU2-X-gui: Small corrections requested by turtleli. 2018-09-03 20:58:26 +02:00
lightningterror
c39dc3dd78 GSdx-gui: Minor adjustements.
Purge unused IDC_CHECK_DISABLE_ALL_HACKS tooltip from old GSdx versions.

Rename TC Offsets to Texture Offsets.
2018-09-03 20:48:17 +02:00
lightningterror
e1fcd569e7 SPU2-X: More gui adjustements.
Adjust gui accross various gui windows.
Adjust naming, positioning of buttons, spacing ...etc.
The different windows should look more similar and not be different.

Also purge IDD_XAUDIO2 window that wasn't used anywhere.
2018-09-03 11:31:41 +02:00
lightningterror
96a62351ac GSdx: GSHwHack.cpp adjust a few lines I forgot in the previous commit. 2018-09-03 04:51:53 +02:00
lightningterror
38366c084e GSdx: Adjust Yakuza games crc hacks and do some reformatting.
Add a missing crc id for the US version,
, move the crc to DX level - effect is emulated correctly on OpenGL with
depth,
merge the two Yakuza hacks together and reformat it making it easier to
be read.
Skip 3 also seems to work on Yakuza 2.
Related commit:

7f0f19ee02

Reformat the code a bit, ocd satisfaction.
2018-09-03 04:36:11 +02:00
Jonathan Li
93d5b52df3 pcsx2|utilities: Remove ambiguous wxString-related overloads
Avoid some function overloads that can accept char*, wxChar* and
wxString as a parameter. wxString can be constructed with either of
those parameters, so the function overloads may actually result in
ambiguity errors. Keep the wxString parameter versions and remove the
rest.

Fixes some compile errors on FreeBSD.
2018-09-03 01:56:35 +01:00
lightningterror
5b9e93c652 GSdx: Add Sly2 Internal prototype disc crc id. 2018-09-01 03:03:20 +02:00
lightningterror
37d84a7148 Gamedb: Tidy up remaining tab spaces and some other cleaning.
I believe there are no more tab space issues.
Also purge commented out patch for Final Fantasy VII - Dirge of
Cerberus.
2018-08-31 20:33:59 +02:00
lightningterror
ada5daf7c7 Gamedb: Merge duplicate patches, the only difference is the crc id, the patch codes are the same.
Tekken 4 ntsc-j, pal
Growlanser Generations ntsc-u
2018-08-30 16:48:14 +02:00
Jonathan Li
b374b1bca6 GameDB: Remove trailing whitespace
The GameDB multiline section parser is rather flaky as it will not
recognise a closing multiline section tag if there is trailing
whitespace.

Fixes an issue where 136 games are devoured by the parser (9632 -> 9768).
2018-08-30 00:13:56 +01:00
Jonathan Li
81faa33a38 debugger: Reset breakpoint skip on boot
Fixes an issue where the first breakpoint after rebooting a game may
be skipped if the following sequence takes place:
 - The first breakpoint after booting the game is triggered once.
 - The user hits run to resume the game
 - The user reboots the game without any other breakpoint being
 triggered.
2018-08-29 23:04:56 +01:00
Jonathan Li
a922a0b1f5 pcsx2: Don't store the GameDB serial in the key list
It's already available in the id field, so storing it again is a waste
of space and CPU cycles.
2018-08-29 22:26:09 +01:00
Jonathan Li
4dcb47d829 pcsx2: Remove GameDB blocktable
It doesn't provides much of a performance improvement over directly
using an unordered map. This change also means that if there are
duplicate GameDB entries then they'll be merged together instead of
having only the last entry take effect.

Also increase the unordered map reserve size.
2018-08-29 22:26:09 +01:00
Jonathan Li
fcda371f9a utilities: Remove HashMap
It's now unused.
2018-08-29 22:26:09 +01:00
Jonathan Li
6e3d6a1b17 pcsx2: Simplify GameDB hashing
Converting the string to lowercase is unnecessary when the actual entry
is still case sensitive.

Also just use std::hash of std::string and std::wstring instead, which
fixes a FreeBSD compile error (cannot convert to const char*).
2018-08-29 22:26:09 +01:00
Jonathan Li
bde62436fa pcsx2: Simplify Game_Data member functions
There's no need to have a lot of overloads accepting wxChar*, char* cand
const wxString&. Keep only the const wxString& versions and remove the
rest. This fixes an infinite recursion warning on FreeBSD.

Also simplify sectionExists and getSection to avoid unnecessary
conversion to and from wxString.
2018-08-29 22:26:09 +01:00
Jonathan Li
76a75efef1 pcsx2: Remove GameDB write related code
There's no use for it now that the database editor has been removed.

Also remove the Game_Data POD comment because I don't think it makes
sense and remove an unused variable.
2018-08-29 22:26:09 +01:00
lightningterror
846f31851e GSdx-gui: Grey out Texture filtering and Interlacing on Null. 2018-08-29 02:12:00 +02:00
Jonathan Li
22f1048e8f gsdx:windows: Show different adapters for each renderer
OpenGL does not allow an adapter to be selected, and the available
adapters for D3D11 and D3D9 may be slightly different.
2018-08-29 00:48:16 +01:00
Jonathan Li
e4dd0069ca gsdx:windows: Don't refer to D3D10
Direct3D11 is used even if the user's GPU only supports Direct3D feature
level 10.0.
2018-08-29 00:48:16 +01:00
Jonathan Li
05004450a0 gsdx:windows: Refactor D3D11/9 adapter enumeration code
Move the code into separate functions.
2018-08-29 00:48:16 +01:00
Jonathan Li
3e8f9ac518 gsdx:windows: Init hacks dialog member variables in constructor
The skipdraw variables can now be initialised in the constructor as the
dialog no longer preserves state when it is reopened.
2018-08-29 00:48:16 +01:00
Jonathan Li
4d8dea0892 gsdx:windows: Open sub dialogs using temporary objects
This prevents the dialog from preserving state after it is closed, which
simplifies the logic slightly for reopening the dialog.

Also remove an unused variable.
2018-08-29 00:48:16 +01:00
Gregory Hainaut
eb104f60e2 round count in constructor (to squash) 2018-08-28 15:30:56 +02:00
Gregory Hainaut
b6db0a3c30 gsdx ogl: allow to reallocate the vertex/index buffer
Replace some raw pointers with unique_ptr

When Vertex buffer is updated, we should set again the layout
2018-08-28 15:30:56 +02:00
Gregory Hainaut
5694ef56ca gsdx ogl: use vector for layout parameter of Vertex Array
And keep the state in the object
2018-08-28 15:30:56 +02:00
Gregory Hainaut
8a93a71504 i10n: update pt_BR translation 2018-08-28 15:27:01 +02:00
lightningterror
d09ac6d589 GSdx: Add some crc ids for HarryPotterATPOA KO/JP. 2018-08-27 21:26:19 +02:00
lightningterror
5a77123a15 Gamedb: Add Harry Potter and The Prisoner of Azkaban KO/JP gamefix patches.
Makes the games bootable.
EETimingHack wasn't added, needs to be verified first.
2018-08-27 21:20:40 +02:00
lightningterror
98ac329cf5 Gamedb: Correct misspelled SkipMPEGHack for Paris-Dakar Rally. 2018-08-27 20:49:11 +02:00
lightningterror
122f730608 glsl: Replace leftover tabs with spaces in shaderboost.
I believe all glsl files are cleaned up now.
2018-08-27 14:01:25 +02:00
Souzooka
7963f418c1 Add System Out as a logging source. (#2563)
* Enable logging from new source, PS2 system output

* Enable printf formatting with (up to only 7 currently)

* Fix fallthrough bug in SYSCALL switch/case

* Remove unnecessary memread32 call in sysPrintOut case
2018-08-27 13:56:48 +02:00
Jonathan Li
4eaee45d1a pcsx2:gui: Remove Game Database dialog and panel
It has too many issues:
 - It's in an incomplete state. The ListView isn't connected up and I'm
 not sure what it was supposed to do.
 - Comments are stripped from the database when changes are saved.
 - Some key value pairs do not show (EE/VU clamp/rounding and
 MemCardFilter).
 - It doesn't work well on Linux (though this one seems easy to fix).
2018-08-26 22:31:49 +01:00
arcum42
7c33694c1a SPU2-X (Linux): Lets try this again. GTK 3 fixes. Volume slider added. Latency slider shows ms. Debug button disables and reenables. Various dialog box tweaks. 2018-08-25 15:20:14 -07:00
RedPanda4552
4dc4892588 Rename VU Cycle stealing to EE Cycle Skipping, and change tool tips for
EE Cycle Stealing and EE Cycle Skipping
2018-08-25 18:50:26 +02:00
Jonathan Li
0a62461515 ci: Disable clang-format checks on Travis CI
Unfortunately it's better to disable this for now, due to problems with
clang-format version mismatches between what devs use and what the
buildbot uses. There's also problems with availability of specific
versions on non-Windows systems.
2018-08-25 10:26:19 +01:00
arcum42
78282c7ed7 Revert my last couple commits because they don't meet a robot's code formatting standards. 2018-08-24 19:34:48 -07:00
arcum42
33db759a77 Attempt to placate evil spirits. 2018-08-24 18:58:43 -07:00
arcum42
10ac426fd5 Spu2-x(Linux): Debug button greys out when appropriate. Minor cleanup on last commit. 2018-08-24 16:09:37 -07:00
arcum42
4c9525c9d9 Spu2-X (Linux): Dialog cleanup. Add volume control. Switch Ok/Cancel buttons to be the same as other plugins on Linux. Add in code for GTK 3 to get rid of depreciation warnings. 2018-08-24 13:41:56 -07:00
lightningterror
bcb7805c11 GSdx-gui: Don't disable Anisotropic Filtering on gl when Allow 8-bit textures is enabled.
Anisotropic works even with 8bit textures enabled.
2018-08-24 13:12:26 +02:00
lightningterror
1aeec47b30 glsl: Replace leftover tabs with spaces in tfx_fs. 2018-08-22 20:12:53 +02:00
lightningterror
d7cdbf6f27 Gsdx: Point Sampler changes.
Re add point sampler to OpenGL. Fixes graphical issues when
Allow 8-bit textures is enabled on AMD gpus.
Issue: https://forums.pcsx2.net/Thread-GSDX-Hardware-mode-Bug-Report-Allow-8-bit-Texture

Adjust the code to be easier to read, and execute the gl code only on amd - suggested by Gregory.

Remove useless ATI_SUCKS define in tfx shader.It wasn't used anywhere outside of the shader.
2018-08-22 20:12:53 +02:00
lightningterror
4060bcf9c9 [skip ci] Update all links to https on README.md. 2018-08-22 17:27:49 +02:00
Rafael Fontenelle
f09837f939 Translations: pt_BR: fix typo in pcsx2_Iconized.po (#2561) 2018-08-22 12:15:21 +02:00
arcum42
7bcfc9827e Get rid of AppConfigDialog.cpp. 2018-08-21 11:48:48 -07:00
lightningterror
cf222d1ccf GSdx: Add Ape Escape 2 to automatic mipmapping. 2018-08-21 17:28:14 +02:00
lightningterror
937fee84f4 GSdx-gui: Put TC Offset X Y hacks in one line similar to Skipdraw Offset 2018-08-21 14:35:17 +02:00
lightningterror
11bad7b07a GSdx-d3d: Reduce state change - port from GL.
Commit: 37f9bcf9cb

Don't dirty aref when a fog color is uploaded.
Only set clamp mode in clamp mode (region clamp is handled in shader).
2018-08-21 13:56:06 +02:00
lightningterror
6eb385fd9b GSdx-d3d: s/sample_4a/sample_4_index/ 2018-08-21 13:56:06 +02:00
lightningterror
188a1f1416 GSdx-d3d: Drop an useless min in FS - port from GL.
Commit: a1957a685d

GPU will clamp color anyway. It reduces the number of instruction of 25%
(4->3).
2018-08-21 13:56:06 +02:00
FlatOutPS2
1498f538dd gsdx:hw: Enable skipdraw hack to skip a range of draw calls
Enhance the skipdraw hack by allowing skipdraw to skip a range of draw
calls.

For example: When the broken effects are at frames 90-100, the default
skipdraw always skips 0-100, possibly skipping several functioning
effects as well. By enhancing the skipdraw feature, it is now possible
to skip just frames 90-100.

For the example given above set the first box to 90 and the second box
to 100 to skip frames 90-100.

coauthor:turtleli (Linux GUI + tidy/simplify Windows GUI code)
2018-08-20 23:35:01 +01:00
lightningterror
fc1d88cb51 GSdx-gui: Revert spacing between Texture filtering and Hardware settings.
I forgot all about OpenCL which caused some overlapping with the OpenCL
device option.
2018-08-20 02:10:00 +02:00
lightningterror
51cf02d27b GSdx-gui: Adjust main gui spacing.
Decrease spacing between Hardware Settings and Texture Filtering
slightly. It was a bit too much before,
Adjusted spacing to be equal between options, some had incorrect
spacing.

Maybe Accurate Date and Blending Unit Accuracy can be swapped.
2018-08-19 23:05:02 +02:00
arcum42
04ff2aff65 Add the Logitech Rumble Gamepad F510 to onepad's database. 2018-08-18 12:11:01 -07:00
arcum42
c695d6a3a3 Make the dialog for zzogl-pg GTK 3 compatible. 2018-08-17 19:13:51 -07:00
Jonathan Li
890d7ab953 utilities: Restrict pxWindowAndFlag templates to wxObject derived classes
Fixes a compile error (C2666) on VS2017 15.8 caused by ambiguity issues.
The sstream header uses

constexpr auto _both = ios_base::in | ios_base::out;

Without the extra type restrictions the compiler cannot tell whether to
use the template or the built-in | operator (the const wxSizerFlags &
parameter will accept ints).
2018-08-17 22:37:39 +01:00
Jonathan Li
b84a2cfaf6 cmake: Add -mxsave flag to compiler flags
Fixes compilation when using GCC8.2 to compile a non-native build.

Fixes #2554.
2018-08-16 08:33:57 +01:00
Jonathan Li
d258ef6275 gsdx:gtk: Improve dialog for small screen resolutions
Makes all the tabs scrollable, which makes the dialog more usable (the
OK button should always be present unless the screen is absurdly small).

Only checked on GTK3.
2018-08-12 19:38:21 +01:00
Jonathan Li
546eac4646 gsdx:gtk3: Fix fetching of monitor resolution
The user may not have configured a primary monitor, so get the
resolution of the monitor that the mouse cursor is currently located on.
2018-08-12 19:38:21 +01:00
Jonathan Li
8391b08e8f gsdx:gtk+3: Adjust visual layout
Use hexpand instead of expand, and use margin-start instead of
margin-left (margin-left is deprecated in GTK+ 3.12). IMO it looks
better this way.

Also, set the properties using gtk_widget_set_* instead of g_object_set.
2018-08-12 19:38:21 +01:00
Jonathan Li
c28353e01f gsdx:gtk3: Switch to non-deprecated GTK3 API
The widget expanding issue seems to have resolved itself (probably a
change on the GTK3 end).
2018-08-12 19:38:21 +01:00
Jonathan Li
e8ed18feba common: Use GCC's _xgetbv definition from GCC 8.2 onwards
The _xgetbv bug was fixed, so avoid using our own definition (again).
2018-08-12 18:07:13 +01:00
Christian Kenny
39b405648a GameDB: Add XgKickHack to Warhammer 40K. Fixes corrupted graphics. 2018-08-12 07:49:04 +02:00
Souzooka
d00e0ed605 Debugger: Display ACC register. (#2527)
Displays/allows ACC VU0f register to be set.
2018-08-11 16:14:08 +02:00
lightningterror
8a4cfe9b23 SPU2-X-gui: Update gui interface.
Adjust/tidy up the gui to make it more appealing,
some bad positioning has been fixed.

Properly grey out Audio Expansion Mode text when
the option is inactive.
2018-08-09 20:22:10 +02:00
Jonathan Li
29eb9f05de spu2-x:gtk3: Fix hbox/vbox deprecation warnings 2018-08-08 00:27:49 +01:00
Jonathan Li
811605fcb5 spu2-x:linux: Reduce non-timestretch minimum latency to 3ms
This matches the Windows GUI behaviour.
2018-08-08 00:27:49 +01:00
lightningterror
ca35e707c4 GSdx-gui: Properly grey out Anisotropic Filtering text when the option is inactive. 2018-08-07 13:12:24 +02:00
lightningterror
352fbf0c1f GSdx-gui: Update CRC Hack Level tooltips.
Update Aggressive level tooltips.
Display the correct games that have Aggressive level crc hacks.
2018-08-07 11:41:28 +02:00
Jonathan Li
8b6ffc3f45 gsdx:ogl: Remove unused variables
Fixes some clang warnings.
2018-08-07 00:15:10 +01:00
Jonathan Li
cdee1875a5 pcsx2: Avoid trigraphs
Fixes a -Wtrigraph warning on clang.
2018-08-07 00:15:10 +01:00
Jonathan Li
354b11c619 onepad|spu2-x: Avoid -Wmissing-braces on clang 2018-08-07 00:15:10 +01:00
Jonathan Li
c10d6c3ed1 pcsx2: Add override to SysTraceLog functions declarations/definitions
Makes it clearer what is being overridden. Also avoids a
-Winconsistent-missing-override warning on clang.
2018-08-07 00:15:10 +01:00
lightningterror
a0f96189d3 GSdx: Adjust God of War II crc hack.
Extend the hack to remove the water / hell effect (vertical lines) on
interlaced mode.

Close #2533
2018-08-04 20:07:26 +02:00
lightningterror
27d39d98d3 GameDB: Add eeClampMode gamefix to Destroy All Humans 2 (ntsc).
EEClampMode to full.
Fixes material stretching across screen that appears for a split second.
Other regions could probably need the gamefix but need to be tested
first.

Close #1436
2018-08-03 18:53:26 +02:00
lightningterror
9255f785da GameDB: Add EE and VU clamping mode gamefix for A.C.E. 3 the final.
EEClamping mode to Full,
VUClamping mode to Extra+Preserve Sign.

Fixes hangs/freezes on mission 2 loading.

Close #777
2018-08-03 15:41:38 +02:00
lightningterror
6cfe287c70 GSdx: Add/adjust crc ids.
Add God of War Demo ntsc,
Add Burnout Takedown E3 Demo ntsc,
Adjust regions for Harry Potter ATCOS/ATPOA,
Add comment for crc 0x7ACF7E03 - multiloader.
2018-08-03 12:35:26 +02:00
ivan89el
f80af64a2b GSdx: Adjust ShinOnimusha crc hack. (#2521)
The hacks remove smoke/fog effects. They are rendered correctly so let's move the hacks to Aggressive crc state. They can be used as speedhacks.
2018-08-01 11:25:24 +02:00
howjun
d9fa7f7d34 Grammar corrections in readme-Docs.txt (#2529) 2018-07-31 21:12:46 +02:00
lightningterror
4a7304de50 GameDB: Add patches for Harry Potter (Chamber of Secrets, Prisoner of Azkaban).
Chamber of Secrets/Prisoner of Azkaban: Add gamefix patches to make the
games playable/bootable. Some regions that don't have the patches added
still need testing for verification.

Add some missing regions to the DB for the above two games.
2018-07-31 20:00:42 +02:00
refractionpcsx2
8b0114596b Just adding some comments to MMI fix. 2018-07-31 18:48:51 +01:00
refractionpcsx2
1e0b0605a6 Corrected MMI PMADDW and PMSUBW on the Interpreters thanks to DobieStation for finding the fix 2018-07-31 18:45:32 +01:00
lightningterror
59ec48a120 GSdx: Add games to automatic mipmapping, add some crc ids.
Automatic mipmapping: Harry Potter (Chamber Of Secrets,
Prisoner of Azkaban,  Order Of The Phoenix), The Incredible Hulk:
Ultimate Destruction.

Add some missing crc ids for GT4 demo discs.
2018-07-31 02:43:21 +02:00
atomic83GitHub
b5d6ccace1 GameDB: Conflict 4, K-1 WorldGP 2006 and Mahou Sensei Negima! Kagai Jugyou fixes.
This PR add an emotion engine rounding fix for Conflict 4 which solve bad character behaviour, 2 VU Xgkick timing adjustment for K-1 World GP 2006 which solve missing colors on the fighters, 1 VU Xgkick timing adjustment for Mahou Sensei Negima! Kagai Jugyou which solve bad rendering, comment adjustment for Socom 2 fixes and a missing entry.
2018-07-30 22:09:30 +02:00
Souzooka
4e429b27be Debugger: Display/set correct VU values (#2526) 2018-07-30 09:20:37 +01:00
Christian Kenny
0efbd283c4 GameDB: Apply EE Clamp gamefix to Kenran Butousai. Fixes missing graphics. 2018-07-23 20:20:39 +02:00
Jonathan Li
1b5f2639a0 pcsx2:windows: Fix path issues
Fixes some issues with opening files if the path contains characters not
present in the current codepage.
2018-07-23 00:51:02 +01:00
Jonathan Li
219519b578 spu2-x:linux: Fix ini path issue
Fixes an issue with opening ini files when a non-ASCII path is used.
2018-07-23 00:51:02 +01:00
Jonathan Li
286e7293fa gsdx:windows: Fix screenshot/GS dump path issues
Fixes an issue with screenshots/GS dumps not saving if the path contains
characters not present in the current codepage.
2018-07-23 00:51:02 +01:00
Jonathan Li
c9dbd4118b misc-plugins:windows: Fix ini/log path issues
Fixes some issues with opening ini/log files when the path contains
characters that are not present in the current codepage for the
following plugins:
SPU2-X
LilyPad
cdvdGigaherz
Dev9null
USBnull
FWnull
2018-07-23 00:51:02 +01:00
Jonathan Li
27d0995a8b common: Add plugin compatibility file
Adds a helper function for converting UTF-8 to UTF-16 on Windows. Also
adds a fopen wrapper function for pathnames that may contain characters
that are not present in the current Windows codepage.
2018-07-23 00:51:02 +01:00
Jonathan Li
126bfa3ee7 dev9null|fwnull|usbnull:windows: Export *setLogDir
Now changing the log directory actually works.
2018-07-23 00:51:02 +01:00
Jonathan Li
b2ae86d142 pcsx2: Pass UTF-8 pathnames to plugins
Fixes empty log and ini directory paths being passed to the plugins on
Windows when the pathnames contain characters not present in the current
system codepage.

Fixes the inability to create snapshots when the pathname contains
non-ASCII characters on Linux (Windows requires more pathname handling
fixes).
2018-07-23 00:51:02 +01:00
ivan89el
d09737dbb5 GSdx: Adjust Spartan crc hack, add missing crc id. (#2510)
Adjust Spartan crc hack: Combine/ease the hacks in to one.
Only remove the glow/yellow bloom effect and don't skip any other effects that shouldn't be skipped. UI and some other post processing effects work properly now.

Add crc id CrashBandicootWoC RU.
2018-07-19 19:33:06 +02:00
Christian Kenny
6d1d32cd83 GSdx: Add Harry Potter Order of the Phoenix to automatic mipmapping. 2018-07-19 04:37:14 +02:00
Dmitry
dca7bf5edc GSdx: Add/adjust some CRC ids. (#2512)
Add some missing RU crc ids: Onimusha3, ICO, TombRaiderUnderworld, SoulReaver2, LegacyOfKainDefiance.

Removed crc id 7ACF7E03 and mentions of that id and it's duplicates. The id is from a multiloader when packing images, and not an actual crc id from a game(s).
2018-07-19 00:53:22 +02:00
ivan89el
4ebfceffd2 GSdx: Add some missing crc ids.
Add FinalFightStreetwise RU, SoulCalibur3 RU. Correcting the wrong id TenchuFS RU (the elf was modified widescreen cheat, sorry). Delite Kunoichi RU (the elf was modified widescreen cheat, the original coincides with the EU).
2018-07-15 22:03:08 +02:00
refractionpcsx2
69888e5ab0 EE Rec/Int: Removed micro optimisation in QFSRV/MSTAB/MSTAH. Reverted functionality to match the documentation. There were some scenarios that weren't really accounted for, like developers doing what they're told not to do. 2018-07-15 13:14:46 +01:00
refractionpcsx2
46662b0436 MFIFO: Fix Tadr position on END tags with data. An Empty interrupt needs to be fired at DMA end for FF7 DoC, but the formula doesn't work out normally since we don't increment TADR on END tags (due to Soul Calibur 2 & 3 breaking), so a special case is made for MFIFO 2018-07-14 14:32:02 +01:00
Christian Kenny
d300d85787 GameDB: Disable mVU Flag hack for Full Spectrum Warrior. Remove EE Timing hack from Full Spectrum Warrior games. (#2504)
Remove the EE Timing hack from the Full Spectrum Warrior Series, my tests show that it doesn't do anything.

Disable the mVU Flag Speedhack for Spectrum Warrior: Ten Hammers. This fixes bad graphics in FSW.
2018-07-12 22:35:02 +02:00
ivan89el
75264ee423 GSdx: Adjust Kunoichi crc hack (#2502)
Move a hack that removed burning/hot air effect. The effect is rendered properly but causes slowdowns so it's best to move it to aggressive for now.

Add comments explaining what the crc hacks do.
2018-07-12 20:31:24 +02:00
Jonathan Li
fb7c2c1837 dev9null|fwnull|usbnull: Switch to new null config code 2018-07-12 01:05:09 +01:00
Jonathan Li
9d4f8a322c common: Add common null plugin config code
This adds code that allows modifying the log options via the GUI
(Windows, Linux) and also saving and loading the log options in a
reusable form.
2018-07-12 01:05:09 +01:00
Jonathan Li
ac7cbdf6c3 dev9null|fwnull|usbnull:windows: Remove snprintf define
Not necessary anymore with recent VS versions.
2018-07-12 01:05:09 +01:00
Jonathan Li
7cdec614c7 dev9null|fwnull|usbnull: Remove *About()
It's unused.
2018-07-12 01:05:09 +01:00
Jonathan Li
43f461cc36 common: Remove PluginNullAbout
It's unused.
2018-07-12 01:05:09 +01:00
Jonathan Li
ceb383628b fwnull|usbnull: Remove unused Windows-specific stuff 2018-07-12 01:05:09 +01:00
Christian Kenny
278f6e5941 GameDB: Fix missing game board in Monopoly Party, add Gene Troopers 2018-07-09 22:58:48 +02:00
ivan89el
46866268ed GSdx: Add some missing crc ids. (#2498)
Kunoichi\Nightshade RU,
Tenchu Fatal Shadows RU,
Urban Reign RU,
Ghost In The Shell SOC RU.
2018-07-03 18:37:12 +02:00
atomic83GitHub
d73741c9b8 GameDB: Drakengard 2 fixes, Mvu flag fix for Full Spectrum Warrior and missing serials. (#2490)
This PR add an Emotion Engine clamping fix for Drakengard 2 (tested by Shadow Lady), and Mvu flag fix for Full Spectrum Warrior (Tested by CK1) along with missing serials entries.

It also adds MemCardFilter for Galaxy Angel II - Mugen Kairou no Kagi to be able to recognize the progression acquired from the first disc.
2018-07-02 22:52:56 +02:00
ivan89el
cbf8f22b62 GSdx: Adjust Ghost In The Shell SOC crc hack. (#2492)
Ease the crc hack and skip less effects, makes shadows and some other effects work properly.

The game experiences a bit more upscaling issues which can be resolved with Merge Sprite and Wild Arms offset HW hacks.
2018-07-02 22:42:56 +02:00
lightningterror
1fefb4897e GSdx: Add crc id for Shadow of Rome Demo (NTSC-U). 2018-07-01 04:34:08 +02:00
lightningterror
7b8d2d1945 GSdx: Add crc id for ICO Demo (NTSC-U). 2018-06-30 15:30:14 +02:00
lightningterror
be4b06ef3e GSdx: Add crc id for The Getaway Black Monday Demo (NTSC-U). 2018-06-30 14:13:06 +02:00
Robert Neumann
f41e5da94b IOP: VBlank handler small fix 2018-06-28 18:08:10 +02:00
atomic83GitHub
7761ec5584 GameDB: Various patches update. (#2487)
This PR brings some patches to fix various unplayable games (made by Prafull).
It also adds comments for Savage skies to warn users to use the interpreter + cache, a missing rounding fix for some versions of Shin Megami Tensei 3, and an Emotion Engine timing fix for NBA Shootout 2003 (tested by someother1ne).
2018-06-27 21:18:24 +02:00
Akash
bb1c225e66 Counters: Fix vsync hsync cycles calculation for rounding error
In games like ICO where the render and blanks both need to be rounded,
one was prioritized over the other one leading to a truncated value in
the total vsync cycles. This patch fixes it, it's more or less for a
trivial cycle accuracy rather than a signfifcant change which might
influence games. (Not sure, maybe it would?)

Potentially it might be nice to revamp the whole vertical blank
calculation system to make it more readable (discussed about this with
ref), but it's not of much priority right now.
2018-06-27 19:55:33 +05:30
lightningterror
387db6d4ba GSdx: Add Nicktoons Unite to Automatic Mipmapping.
Game is still broken but a bit better now.
2018-06-26 20:23:12 +02:00
lightningterror
5c483df3e8 GSdx: Add crc id for The Getaway Black Monday (NTSC-J). 2018-06-26 19:13:57 +02:00
lightningterror
2af05a92f8 GSdx: Add crc id for Ratchet And Clank 3 Regular Demo (NTSC-U). 2018-06-25 22:14:07 +02:00
lightningterror
f22843816b GSdx: Add crc id for Ratchet & Clank 2: Going Commando & Jak II Demo disc (NTSC-U). 2018-06-24 21:45:58 +02:00
Jonathan Li
54b0edbb13 ci: Update Travis CI configuration
Remove python dependency workaround.
Use clang 5 (provided by Travis CI).
Add GCC-8 and remove GCC-6.
Remove unused clang stuff in 64-bit script.
2018-06-22 01:22:34 +01:00
Jonathan Li
fa7822fbbf common: Call va_end after vfprintf in PluginLog
The C spec states that the va_arg argument value is indeterminate after
returning from vfprintf. va_end and va_start must be called before the
variable is reused.
2018-06-22 01:20:40 +01:00
refractionpcsx2
ba1689f6d6 Mild improvement to VIF MFIFO logging, got rid of a useless global variable \o/ 2018-06-20 22:01:10 +01:00
lightningterror
150b1e8423 GSdx: Add Sly 3 PAL demo crc id. 2018-06-18 21:02:44 +02:00
Luminar Light
74aefcb918 GameDB: Add Jak X Beta Trial to DB and a patch that makes it able to boot. (#2482) 2018-06-18 19:55:19 +02:00
lightningterror
abdd847fbe GSdx: Add some missing crc ids.
Ratchet And Clank NTSC-U: E3 Demo and EB Games Demo,
Soul Calibur 2 NTSC-U: Demo.
2018-06-18 00:53:49 +02:00
pgert
62b7097731 PCSX2: Update Scandinavian translations. (#2481) 2018-06-13 17:05:25 +02:00
Jonathan Li
6bd5afea8f cdvdgigaherz:gtk: Simplify GUI dialog
Avoid always setting the dialog to the centre of the screen - the GTK+3
documentation advises against it.
Avoid using a GUI callback - it's unnecessary since the value can just
be retrieved afterwards.
Simplify the GUI construction - a container to handle layout isn't
necessary due to the GUI's lack of complexity.
2018-06-11 02:15:47 +01:00
Jonathan Li
6778fa2b71 cdvdgigaherz: Replace use of deprecated wstring_convert
wstring_convert is deprecated in C++17. Use MultiByteToWideChar() and
WideCharToMultiByte() instead.
2018-06-11 02:15:47 +01:00
Jonathan Li
4ab97be693 cdvdgigaherz:windows: Adjust CD read success condition
IOCTL_SCSI_PASS_THROUGH_DIRECT will return success even if the read
fails (I'm not sure when it'll return failure). Assume the read is
successful only when the read length is correct.
2018-06-11 02:15:47 +01:00
Jonathan Li
83ffbc2d3d cdvdgigaherz: Remove unused mode parameter/member variables 2018-06-11 02:15:47 +01:00
lightningterror
2b9c368fa8 GSdx-d3d: Rearange PSSelector(GSDeviceDX.h).
Rearange PSSelector shader list in GSDeviceDX.h
to match GL format.

Easier to read and will make someone's life easier.
2018-06-11 01:08:36 +02:00
lightningterror
6f4212320b GameDB: Moorhuhn Fun Kart 2008.
Add Moorhuhn Fun Kart 2008 to DB.
eeClampMode = 3 // Fixes falling through ground.

Close #2479
2018-06-11 00:01:40 +02:00
lightningterror
bb5f989c05 GSdx: Purge leftover SSX3 crc ids no longer needed. 2018-06-10 18:34:24 +02:00
lightningterror
af3e55af63 GSdx: Also update Tekken 5 ntsc-j crc hacks to work on progressive mode. 2018-06-09 10:15:55 +02:00
lightningterror
1c58d5acff GSdx: CRC hacks for Tekken 5 NTSC-U should work on progressive mode as well now. 2018-06-08 22:54:56 +02:00
Robert Neumann
6f2ded8222 psxmode: move pgifInit() over to EE reset; start porting recent (later than ~2001) changes in CdRom.cpp, starting with labels; add a note on missing video timing recalculation when entering psxmode 2018-06-08 21:53:36 +02:00
Robert Neumann
30b722b807 psxmode: actually apply the new iop / cd read timings; add seek delays that mimic real ones; altogether this at least fixes fmv playing way too quickly (music in Chrono Cross intro is fine now, for example) 2018-06-08 03:57:14 +02:00
Akash
a9af0ee5a0 GameDB: Remove Rounding modes on Teen Titans
This isn't the right fix for this game, the text issue is caused due to a bug on GSdx depth test, and is not a
core issue. These rounding modes for some reason only partially alleviate the issue (https://forums.pcsx2.net/Thread-GSDX-Software-mode-Bug-Report-Teen-Titans-Load-Game-menu-not-displaying-text-where-it-should)
while not fully fixing it, ZeroGS on the other hand doesn't have this issue even without these rounding mode changes.

TL;DR - Issue is on GS, and it's troublesome when a GS issue is masked like this.
This reverts commit 4765770dc8.
2018-06-06 12:20:06 +05:30
Christian Kenny
4765770dc8 GameDB: Add gamefix to restore missing text in Teen Titans. 2018-06-05 18:58:17 +02:00
lightningterror
9c1224b045 GameDB: Add/adjust DOA2 Hardcore patch.
Add iop patch to fix the sound on the US version as well.
Original IOP EU patch by Kozarovv ported to US version by Refraction.
2018-06-02 12:55:25 +02:00
lightningterror
140a61692d GameDB: Add EE patches for Spyro NB/EN.
Add EE patches for Spyro New Beginning and Eternal Night NTSC/PAL.
Fixes HUD and menu display in hw/sw mode.
Original patches provided by Kozarovv, improved by Refraction.
2018-06-02 12:38:49 +02:00
lightningterror
f244706cc2 GSdx: Purge Spyro NB /EN hw hack fixes.
Purge Hw hack fixes for Spyro New Beginning and Eternal Night that fixed
HUD and menu display.
They will be replaced with EE patches in GameDB that work for both
software and hardware mode. A much better alternative and less GSdx
hacks.
2018-06-02 12:38:49 +02:00
lightningterror
ba463ed076 GSdx: Disable Alpha hack gui option on D3D9.
Hack is only used on D3D10/11.
2018-05-31 21:22:12 +02:00
Jonathan Li
61406a4349 cmake: Fix GSdx EGL build libX11-xcb linkage issue
Prevents a XGetXCBConnection undefined symbol error.
2018-05-31 01:02:26 +01:00
lightningterror
6ef793545d GSdx:Port better support of palette from GL to D3D10/11.
Port from commit b0af54d3

Fixes shadows in Star Ocean 3.

Note: It works properly on native res only just like on GL.
Upscaling will cause some issues.

Only Direct3D10/11 supports it, D3D9 doesn't support integer operations
so we can't reuse the code.
2018-05-30 14:47:06 +02:00
refractionpcsx2
c78b5b706d MFIFO: Refactor of some of the VIF/GIF MFIFO functionality. Centralised the MFIFO resume function which should have been separate anyway.
Added some more memory address safeguards.
Logging now makes a bit more sense to look at.
2018-05-30 01:29:23 +01:00
lightningterror
810bec2d65 GameDB: Clean up/reformat db a bit more.
Whitespaces and comments.

Slowly getting there.
2018-05-27 15:27:36 +02:00
atomic83GitHub
e0029270e3 GameDB: Rayman Revolution fixes + missing demo entry
This PR add an Emotion Engine Rounding fix Rayman Revolution (nearest).
- Tested by @atomic83github @prafullpcsx2 and @Helium-4

It also add a missing demo entry along with dedicaced comments for some demo issues.
[skip ci]
2018-05-27 10:45:36 +02:00
refractionpcsx2
823431599f Previous fix for Eragon was incorrect. Game makes PATH3 busy then performs a reset, allowing VIF to continue, this is the fix I should have made ;) 2018-05-26 16:00:37 +01:00
Timothy O'Barr
342c10bd85 PS1 mode: Adjustments to processor clock speed and CD read speed. (#2447)
switch IOP clock, CD read speed and EE/IOP cycle ratio for PSX mode
2018-05-26 13:20:02 +02:00
lightningterror
a6db486afe Gamedb: Clean up db partially.
Remove disabled patches for GT4 and Wallace & Gromit.
Reformat code (Adjust whitespaces, empty rows, code comments).

It should look much cleaner now, there's still a lot more to be done but
it's a good start.
2018-05-24 20:03:36 +02:00
lightningterror
48ebfea17b Gamedb: Add Giffifohack gamefix to NFL Street 3.
Fixes corrupted textures.
NTSC/PAL.
2018-05-23 18:10:54 +02:00
lightningterror
dc2779b385 GSdx: Adjust Sky Gunner crc hack.
Move hack back to Partial (GL level).
Huge vram usage on both gl and dx - maybe not a channel
effect or channel effect not yet detected.
2018-05-22 20:08:45 +02:00
lightningterror
8c2a79ab54 GSdx: Add some missing crc ids.
Sky Gunner US Regular and Trade Demo.
2018-05-22 20:05:14 +02:00
refractionpcsx2
6bf87d7eff VIF FIFO: Hacked the hack. Fixes Downtown Run. Tested all known games that need the hack, they still work *phew* 2018-05-21 21:54:00 +01:00
lightningterror
d900917bfa GSdx-OSD: Adjust messages.
Change font size from 32 to 28 default.
Change log speed from 6 to 4 default.
Change max log messages from 3 to 2 default.
2018-05-21 17:56:14 +02:00
lightningterror
c5f94fbced GSdx: Adjust Spyro New Beginning crc hack.
The hack should now work on the PAL version as well.
2018-05-21 02:33:46 +02:00
lightningterror
c4068e5188 GSdx: Update Spyro Hw fix/hack.
Revert merge of Spyro Eternal Night / New Beginning hw hack.
Update Spyro New Beginning hack - fixes menu/hud flicker in HW mode.

SW mode still has issues with the menu/hud elements.

Improve #1490
2018-05-20 16:30:32 +02:00
lightningterror
ff3052935e GSdx: Adjust Sonic Unleashed crc hacks.
Move crc hacks back to Partial (OpenGL) level.
Game experiences improper texture shuffle emulation and half screen
bottom issue.
2018-05-19 08:48:24 +02:00
refractionpcsx2
9b82449542 Fixed optimisation problem on branch in branch delay slot. Fixes Dropship - United Peace Force. Props to MrCK1 for finding the issue. 2018-05-19 02:23:58 +01:00
lightningterror
290397d1af GSdx: Add a missing crc id for CrashNburn EU. 2018-05-16 01:09:56 +02:00
atomic83GitHub
ade38d4f85 GameDB: Code cleanup/ Vampire Night EE Timing Hack removal/ Armored Core fixes
This commit remove the EETimingHack for Vampire Night wich is not anymore needed due to a fix in PCSX2 0.99, add fixes for various Armored core games as well as some code cleanup.
[skip ci]
2018-05-15 23:30:56 +02:00
Christian Kenny
8b6751943e GSdx: Remove Hummer Badlands CRC Hack. 2018-05-15 20:52:05 +02:00
Jonathan Li
171e7f016d common: Work around GCC8 _xgetbv bug
clang and earlier GCC versions do not provide the _xgetbv intrinsic.
GCC8 does, but unfortunately it's broken.
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85684).

Re-use our _xgetbv implementation to avoid the bug, but rename it to
avoid compilation errors as well.
2018-05-12 12:05:20 +01:00
pgert
5ec5265ec4 GameDB: Scarface and Harry Potter COS Updates. (#2431)
Add ScarfaceIbitHack gamefix to Scarface The World Is Yours (NTSC-U) SLUS-21111 and SLUS-21492.
Change Scarface Compatibility to 5 to the above two games.

Add code comments to Harry Potter and the Chamber of Secrets (PAL) SLES-51192 and (NTSC-U) SLUS-20576 explaining that they both share the same CRC id.
2018-05-11 20:40:03 +02:00
lightningterror
78af562897 GameDB: Update Dead or Alive 2 gamefix patch.
Update the patch for Dead or Alive 2 Hardcore.
Previously the patch had a side effect of removing all sound effects in
the game, this new patch doesn't have that issue.
The patch was improved by kozarovv.

This patch is for the PAL version SCES-50003.
2018-05-10 23:24:18 +02:00
lightningterror
a17b0e5364 [skip ci] GSDumpGui: Adjust copyright information.
Add copyright header information to files that didn't
have any. The info is copied from files that already
had copyright information.

Add info for Alessio when he last commited.
Add PCSX2 Dev Team in copyright information.
2018-05-10 14:47:30 +03:00
lightningterror
3a8857a782 GSdx: Adjust crc hacks for Big Mutha Truckers.
Move crc hacks back to OpenGL(Partial) level.

Game experiences a half screen bottom issue and vertical stripes.
2018-05-09 18:42:49 +02:00
lightningterror
fbc0b1849d GSdx: Adjust crc hacks for Heavy Metal Thunder.
Move the hacks to DX Level(Full). OpenGL renders the effects properly
with Depth Emulation.
2018-05-09 00:07:59 +02:00
Christian Kenny
35a2c59181 GameDB: Add Prafull's Patch for Klonoa 2.
Adds an IPU patch to Klonoa 2 to prevent hanging in Volk City. Temporary workaround for #2349.
2018-05-07 18:34:25 +02:00
Jonathan Li
8f6a3d9fe8 gsdx: remove DirectCompute backend
It hasn't been accessible since OpenCL was added, and it was barely
updated since it was introduced.
2018-05-06 02:01:22 +01:00
Jonathan Li
15efe69e46 common: Fix multiple _xgetbv() error on GCC 8
GCC 8 now provides _xgetbv, so avoid using our own definition in that
case.
2018-05-06 00:52:47 +01:00
lightningterror
191219f7d8 GSdx: Purge crc ids/games no longer needed.
The following games in the crc list are not used anywhere so
we can clean this list up. If some are needed in the future then
they can be re added.

List of removed games:
CaptainTsubasa,
Dororo,
HarvestMoon,
Jak1,
JamesBondEverythingOrNothing,
NamcoXCapcom,
SDGundamGGeneration,
SeintoSeiya,
SengokuBasara,
SilentHill2,
SilentHill3,
Siren,
TalesofDestiny,
VF4,
VF4EVO.
2018-05-05 23:21:34 +02:00
Gregory Hainaut
1f21945d52 i10n: update mo files 2018-05-05 19:28:40 +02:00
lightningterror
e606958a43 Gsdx: Remove Captain Tsubasa crc hacks.
The crc hack broke graphics ingame, causing flickering/transparent
textures and other similar issues.

On a side note the game experiences upscaling issues that can be fixed
with Half Pixel offset hack.
2018-05-05 00:10:11 +02:00
lightningterror
34a94990c4 GSdx: Adjust crc ids.
Add a missing crc id for Captain Tsubasa-JP.
Rename WildArms5 to WildArms4 for crc 565B6170 Jap,
it was incorrect.
2018-05-05 00:10:11 +02:00
lightningterror
3f916f440a GameDB: Add Harry Potter patch for the PAL version.
Makes the PAL version playable as well.
Patch is the same as NTSC version including CRC.
2018-05-03 00:32:03 +02:00
pgert
4de2df2865 GameDB: Minor info-alterations (#2379)
* GameDB: Minor info-alterations

* CRC removal

* Correction of a regional-code.

* Deleted some incorrect info

* Oops - re-added some info

* Minor alterations.

* A minor alteration.

* Minor alterations.
2018-05-02 14:09:48 +02:00
lightningterror
a3f07e6baf GameDB: Add XgKickHack for Crash Twinsanity (NTSC-J).
Fixes bad geometry on character.
Follow up from #2372
2018-05-01 00:05:58 +02:00
Jonathan Li
17027c16cd gsdx-legacy: Copy GSdx baseclasses changes
So it compiles. Bit of a pain though.
2018-04-29 02:19:17 +01:00
Jonathan Li
ab9bdb009b baseclasses: Move from unfree to 3rdparty
Update it to the version found at
https://github.com/Microsoft/Windows-classic-samples , which is in an
MIT licensed repo, and add the LICENSE file (edited to remove the SIL
Open Font LICENSE part since that doesn't apply).

Some modifications have been made to reduce the diff/stop git
complaining (not including any file that wasn't in the previous version
and removing the related header includes in streams.h, and fixing some
but not all of the whitespace issues).
2018-04-29 02:19:17 +01:00
Jonathan Li
b84b2808f4 baseclasses|gsdx: Move code from baseclasses to GSdx
Moved code seems to be from Gabest. Only the code that is currently used
has been kept.
2018-04-29 02:19:17 +01:00
Jonathan Li
7ea0273119 gsdx: Remove code that does nothing 2018-04-29 02:19:17 +01:00
Jonathan Li
dc53278163 pcsx2: Remove theming support
It's incomplete, and there's not much that is actually themeable
(basically only the background logo and icons can be changed).
2018-04-28 01:18:12 +01:00
lightningterror
6496e6db11 Gsdx: Adjust Front Mission 5 crc hacks.
Move CRC hacks do DX level.

Hack that fixes shadows:
Shadows/glitchy black ground textures can be fixed with Preload Frame Data.

Hack that removed vertical stripes:
D3D10/11 correctly emulates texture shuffle but also needs depth support.
2018-04-27 17:59:24 +01:00
Jonathan Li
1d7cef08a7 pcsx2: Fix potential return of uninitialised value 2018-04-26 01:15:44 +01:00
Jonathan Li
908a37598c pcsx2: Use enums instead of hardcoded integer
Might prevent future breakage.
2018-04-26 01:15:44 +01:00
lightningterror
c8c9731262 GSdx: Update D3D fbmask emulation on texture shuffle.
Improves accuracy on Sly series.

Rendering is still bad and needs a lot more work but
it's a little bit better.
2018-04-24 22:42:59 +01:00
lightningterror
0f5d3d2f1b GSdx: Add Sly 3 demos crc ids.
Regular Demo US,
E3 Demo US.
2018-04-22 23:51:56 +01:00
Christian Kenny
011cd90fbe GameDB: Add vuClampMode hack/remove eeClampMode hack for Pac-Man World Rally. Fixes bad geometry. This also replaces the EEClampMode hack in the NTSC-U release which didn't appear to do anything. 2018-04-19 12:19:40 +01:00
Ryudo300
f99711cdc2 PCSX2-GUI: 'About' Logo
Updated the About page's logo to match our current logo.
2018-04-17 12:29:49 +01:00
Ryudo300
630177ef4c PCSX2-GUI
BackgroundLogo update, also in preparation for use in other places. Used zopflipng to compress the file.
2018-04-16 16:28:49 +01:00
Christian Kenny
28fd47dd22 Add missing names to About Box, removed duplicate, misc. formatting 2018-04-15 18:56:50 +01:00
Christian Kenny
2c11acf40c GameDB: Add vuClampMode hack to Katamari/SkipMPEGHack to Arctic Thunder. 2018-04-15 18:55:43 +01:00
lightningterror
230a497a12 GSdx-TC: Don't skip depth lookup on Jackie Chan Adv and SVC Chaos.
Don't skip draw calls on Jackie Chan Adv and SVC Chaos,
fixes regressions on Jackie Chan Adv and SVC Chaos.

Gregory: The correct fix would be to trace all textures writes to
be sure of the source. But it is a much bigger work.
2018-04-15 00:42:07 +01:00
lightningterror
6073a26f5d GSdx: Add some missing crc ids.
Add SVC Chaos: SNK vs. Capcom EU/JP,
Add Jackie Chan Adventures EU.
2018-04-15 00:42:07 +01:00
lightningterror
b622474adb Update widescreen patches/cheats.
This syncs the cheats_ws.zip widescreen patches archive with Devina's
archive from 22.02.2018.

Compared to the previous content of cheats_ws.zip:
- 4 files deleted 9C4BA2CE, 113035B9E, C565E79E and duplicate 1429EB9F (2)
- 142 files modified
- 760 new files
- 2294 files identical to before
- 28 files that were removed from the forum archive that contained hunting/fishing
games have been re added. Separate archive provied by FlatOut.

The zip now has a total of 3200 patch files, compared to 2440 before.

7zip with the Ultra compression method was used to compress the archive.
2018-04-14 23:41:42 +01:00
TotalCaesar659
834cd08f8c Updated Russian translation (#2377)
Updated Russian translation
2018-04-13 21:16:33 +01:00
lightningterror
0e329347cf PCSX2: Update gamefix tooltip.
Remove mention of Crash Tag Team Racing from VU I bit gamefix tooltip.
Not needed since the gamefix has been removed for the game as it causes
more issues.
2018-04-11 19:37:29 +01:00
lightningterror
e27ef3c081 GameDB: Revert Crash Tag Team Racing gamefix.
Revert ScarfaceIbitHack Gamefix.
Regression was introduced in #2326.
Caused hard freezes making the game unplayable and required an emulator
restart without gamefixes enabled.
Without the fix the game experiences short freezes but the game is still
playable.
2018-04-10 20:43:56 +01:00
Christian Kenny
1292cd505e GameDB: Add XgKickHack for Crash Twinsanity (NTSC-U) 2018-04-07 02:21:16 +01:00
lightningterror
0e39caaad3 GSdx: Adjust Naruto series crc hacks
Purge CRC hacks that removed lighting on maps.
Games: Naruto - Narutimate Hero 3,
Naruto Shippuuden: Narutimate Accel.
2018-04-03 16:01:22 +01:00
lightningterror
b6a73f6db3 Gsdx: Add some missing crc ids.
Tenchu Fatal Shadows US,
God Hand EU,
The Getaway EU,
The Getaway Black Monday EU.
2018-04-02 11:39:45 +01:00
lightningterror
4cb164b795 GSdx: Adjust CRC hacks.
Purge Sengoku Basara crc hacks. Texture shuffle is emulated correctly on
d3d11/ogl. d3d9 skips the bad draw call.

Move Eternal Poison crc hack to d3d level. Not needed on ogl since
the game is emulated correctly.

Move hack that removes texture shuffle for Demon Stoneback back to ogl level,
half screen bottom issue remains.

Extent CRC hack for The Getaway and The Getaway Black Monday to work on
EU regions.
2018-04-02 11:39:45 +01:00
FlatOutPS2
ee3038c5b7 SPU2-X: Fix UI regression
Fixes regression. Audio Expansion Mode was no longer available in the UI when using XAudio2 on Windows versions before 8.
2018-03-31 00:52:18 +01:00
lightningterror
efc1274b2c GameDB: Add Quake 3 Revolution patch.
Removes intro and end credits FMVs.
Fixes hanging caused by FMVs.[skip ci]
2018-03-27 15:33:00 +01:00
lightningterror
014e27bc20 GSdx: Add Quak3 Revolution to Automatic mipmapping. 2018-03-27 15:11:08 +02:00
lightningterror
312db7755b GSdx: Adjust CRC hacks.
Move CRC hack that removed shadows to Aggressive, shadows are misaligned
when upscaling - can be fixed with HPO. We can use the hack as a
speedhack for Aggressive state.

Add correct FBP code for Sly 2 E3 Demo. CRC hack should work properly now.

Purge God of War 1/2 CRC hacks that fixed/removed the vertical red lines.
No longer needed since the issue is fixed accross all renders.
Also useless to be kept for speedhacks.
2018-03-27 15:11:08 +02:00
lightningterror
9769f19ebe GSdx: Remove fbmask handle in GSRendererDX.
It's already handled in texture shuffle code.
2018-03-27 15:11:08 +02:00
lightningterror
0e83b89dbd GSdx-D3D: Texture and channel shuffle improvements.
Texture Shuffle changes:
Always Enable Texture shuffle on D3D10/11.
Previously Texture shuffle was enabled if CRC hack
level was below Full, this was kinda not good since
D3D also relies on CRC hacks on Full so you could either
stick with texture shuffle or crc hacks.

Texture shuffle is not supported on D3D9, however we can do a partial
port where instead of vertical lines with the effect we get the effect
on the entire screen. Better than nothing I suppose.

Ported some of the code from OpenGL to D3D
( just a copy - paste job :) ),
part of the code misses a dedicated shader but we can still
use it to fix various issues on many games.

List of affected games tested so far:
The Godfather, Final Fight Streetwise, The Suffering Ties that Bind,
Urban Chaos have their vertical lines issues fixed
(highly possible for other games as well), MGS and Stolen see an improvement
but they are still broken without crc hacks. Other games that suffered
similar issues are probably affected as well.

Channel Shuffle changes:
Update Channel Shuffle detection. A lot of games should see an improvement,
MGS, Urban Chaos, Stolen have their top left corner issues resolved.
Other games should be affected as well that use similar logic.
They still miss a shader so some effects are still broken/show glitches
but it's a nice improvement for D3D users.

Shared changes:
Texture Shuffle and Channel shuffle have been moved to their
own dedicated functions. Should make things a bit cleaner.

Move part of the code for Texture Shuffle to GSRendererHW to be shared
across all HW renderers, should aboid copy paste/duplicate code.
2018-03-23 13:38:34 +01:00
lightningterror
2ad5db2279 GSdx Adjust/Replace crc hack for Final Fight Streetwise.
Replace/remove an old crc hack that was used to fix the red vertical
lines issue, the hack is no longer needed. The new hack removes depth
effects on D3D only.
Note: The game has another vertical lines issue that can be fixed with
texture shuffle on D3D.

Add comments to Simple2000Vol114 explaining what the hacks do.
2018-03-22 14:46:31 +01:00
lightningterror
99350d6caa GSdx: Add some missing crc ids.
Sly 2 E3 Demo US, Sly 2 JP.
2018-03-22 14:46:31 +01:00
refractionpcsx2
1f0de9a1ce Merge pull request #2332 from atomic83GitHub/Patches-fix
GameDB: Patch update for multiple games. Closes #1496
2018-03-20 10:12:12 +00:00
Christian Kenny
40f7d6c95b GSdx: Add Shox to Automatic Mipmapping 2018-03-19 01:00:26 +05:30
atomic83GitHub
f6637ff958 GameDB: Updates
-Removed patches for Drakan - The Ancients' Gates, out of place hack for a hardware renderer issue.
-Added patch for Yoake no Mariko 2nd Act, fixes initial hang.
-Added patch for Batman Vengeance (PAL), fixes hang in certain scenarios.
-Added patch for Weakest Link, fixes game hanging at start.
-Added patch for Crashed, fixes hang at start and ingame.
-Added patch for Titeuf Mega Compet, fixes Sheep screen freeze.
-Added patch for The Spiderwick Chronicles, fixes hang at boot.
-Added patch for Drift Champ, fixes the hang at start of chapter 2.
-Added patch for Ice Age 2 (NTSC-J), fixes intro screen freeze.
-Added patch for Harry Potter and The Chamber of Secrets (NTSC-U - NTSC-J), fixes initial/ingame hang, flickering graphics and speed up loading.
-Added patch for Mafia (NTSC-U), fixes hang before molotov party and a crash in The priest mission.
-Added patch for ESPN - College Hoops 2K5, fixes hang at loading.
-Added patch for Harvest Moon - A Wonderful Life [Special Edition], fixes hang at shipping shed.
-Added patch and EE Timing Hack for Ruff Trigger - Vancore Conspiracy, fixes ingame freeze.
-Added patch for Major League Baseball 2K5 [World Series Edition], fixes hang at start.
-Code reformatting, cleaned up comments/whitespaces.
[skip ci]
2018-03-15 22:03:10 +01:00
lightningterror
6aaae6970e GSdx: Cleanup hacks in GSRendererHW.
Merge identical code for Spyro Games in to one to avoid duplicate code.

Rename hacks name for Jak series from OO_Jak to OO_JakGames since there
are multiple games added.
2018-03-13 18:56:30 +05:30
lightningterror
f4fa115c82 GSdx: Remove GT3/Concept CRC Hacks.
This follows PR #2304.
The CRC hacks are no longer needed due to the partial port of channel
shuffle on D3D.
They cause higher vram spikes  now.
2018-03-13 18:56:30 +05:30
lightningterror
bd0947e7a3 GSdx: Add/adjust CRC ids.
This follows PR #2330.

Add some missing regions: Tomb Raider Legend JP,
StarWars Force Unleashed EU, SuperMan Returns EU, Valkyrie Profile 2 FR.

Rename GT3/Concept titles, they were incorrect.

Adjust Harley Davidson region id from NoRegion to US.

Add some missing regions to automatic mipmapping:
FIFA 03 US, FIFA 04 EU, FIFA 05 EU.

Reformat a few comments.
2018-03-13 18:56:30 +05:30
pgert
432999fae8 PCSX2: Minor lingual correction on tooltip (#2328)
Small correction to trace logging tooltip string.
2018-03-08 23:24:37 +05:30
refractionpcsx2
6d7e2c56d9 Gif: Allow flag setting for PRIM/REG transfers on 0 length packets. Fixes Reservoir Dogs 2018-03-07 22:23:01 +00:00
Christian Kenny
f6e4a3081d Console Window: Reset the titlebar when the VM is shutdown. 2018-03-05 20:17:01 +05:30
refractionpcsx2
de1584b9f2 Merge pull request #2334 from MrCK1/gamedb_spongebob
GameDB: Add GIF FIFO hack for Spongebob: Creature From the Krusty Krab
2018-03-05 08:49:14 +00:00
Christian Kenny
a132d923ce GameDB: Add GIF FIFO hack for Spongebob SquarePants: Creature From the Krusty Krab (fixes bad graphics) [skip ci] 2018-03-04 14:51:43 -05:00
lightningterror
73f1d7d099 GSdx: Rename HW hacks drop list options.
Add "Default" nametag for default list options for the hacks: Sprite,
Round Sprite, GL Advanced settings, HPO.

Should help users know which options are the default ones with less
confusion.
2018-03-04 20:54:10 +05:30
Christian Kenny
a9168fed56 PCSX2: Remove the "DisableOutput" option. (#2298)
It's been broken/unused for some time.
2018-03-04 14:03:50 +00:00
refractionpcsx2
084530eeca Merge pull request #2122 from PCSX2/target_load
GSdx-TC: Fix load size calculation in target update Fixes #1972 Fixes #2110 Fixes #2138
2018-03-03 03:31:25 +00:00
Jonathan Li
fb4f274882 gsdx: Remove inappropriate comment 2018-03-02 23:41:46 +00:00
lightningterror
38aa4e1745 GSdx: GSCrc.cpp reformat comments and whitespaces. 2018-03-02 10:10:31 +05:30
lightningterror
2be9cf060d GSdx: Add/adjust CRC ids.
Add CRC id for FFXII US, SFEX3 EU,
GT4 CH and GT4 Online Beta US.
Adjust BullyCC region from US to EU.

Add Missing regions for Ratchet & Clank,
Ace Combat, Destroy All Humans and Soul Reaver
series to Automatic Mipmapping.
2018-03-02 10:10:31 +05:30
Jonathan Li
faa4be49c7 gui: Fix trace logging panel misc section behaviour
This enables/disables the misc section when the master trace log toggle
checkbox has changed state.
2018-02-28 01:19:12 +00:00
Jonathan Li
8dfeeb354f pcsx2: Fix Trace Logging enable/disable behaviour
This disables SIF logging if the master trace logging switch has been
disabled.
2018-02-28 01:19:12 +00:00
Jonathan Li
c3dbc4e945 gui: Fix apply button on Trace Logging dialog
Instead of binding all checkbox events to an event handler, bind only
the master trace log toggle checkbox event and continue processing the
event after it has been handled. This fixes the non-functional apply
button and is also more efficient.
2018-02-28 01:19:12 +00:00
Jonathan Li
629bb23832 utilities: Fix CheckedStaticBox behaviour
Avoid enabling the child windows when SetValue is called if the window
is currently disabled.

Also continue processing the checkbox event after it has been handled,
which allows the event to propagate to the parent window.
2018-02-28 01:19:12 +00:00
refractionpcsx2
ff68ad61e7 Merge pull request #2309 from pgert/master
GameDB: Scarface
2018-02-27 18:40:44 +00:00
atomic83GitHub
0c20385ccf Fr translation update (#2270)
update the Fr translation.
2018-02-27 17:25:57 +00:00
refractionpcsx2
ed0fba174e Merge pull request #2231 from atomic83GitHub/Beyond-good-and-evil-fix
GameDB: Max Payne, Klonoa 2, Evolution Snowboarding, Mana Khemia and Fifa Street 2 fixes
2018-02-27 17:24:06 +00:00
refractionpcsx2
b3a1345bb8 Merge pull request #2326 from FlatOutPS2/1_GameIndex
GameDB: Update Crash Tag Team Racing
2018-02-27 17:20:11 +00:00
FlatOutPS2
41f6337bfa GameDB: Update Crash Tag Team Racing
Fixes performance drops and short freezes in adventure mode.

Alas, there is no Crash Tag Team Wrestling, so I replaced it with the
correct title.

Updates Gamefixes Panel entry of VU I bit Hack.

Closes #1785
2018-02-27 01:06:30 +01:00
bositman
333e0cc82f Merge pull request #2302 from MrCK1/gamedb_ck1
GameDB: VU rounding fixes for Guitar Hero series and Hitman Contracts.
2018-02-25 16:50:57 +02:00
bositman
afd6541ca4 Merge pull request #2324 from altiereslima/master
Portuguese-BR translation update
2018-02-24 22:59:44 +02:00
altiereslima
de0f36fe78 Portuguese-BR translation update 2018-02-23 23:12:45 -03:00
Christian Kenny
ee57605f77 GameDB: VU rounding fixes for Guitar Hero series and Hitman Contracts.
Guitar Hero Series: Fix cut-off numbers and restore missing whitespace in combo meter

Hitman Contracts: Fix missing light shafts under lamps
2018-02-22 19:00:24 -05:00
Christian Kenny
10ebe16653 GSdx (OGL HW): Perform a texture shuffle when the address of the framebuffer and the texture are the same.
Tomb Raider: Angel of Darkness relies on this behavior to produce a distance fog effect.

Closes #2215
2018-02-22 00:20:54 +05:30
FlatOutPS2
c1fd01545a GSdx: Remove GT4/Tourist Trophy CRC hacks
Removes GT4/Tourist Trophy CRC hacks. The hack had already been moved to
aggressive due to VRAM spike issues, but is no longer necessary at all
due to the in-game brightness/contrast setting issue being moved to
behind the frame buffer conversion hack for Direct3D and being resolved for OpenGL.
2018-02-21 17:08:48 +05:30
lightningterror
768a4412d5 Gsdx: Adjust Ikkitousen CRC hacks.
Move hacks that disabled shadows to DX level since OpenGL renders
shadows properly with Depth Emulation.

Some other upscaling issues appear with the disabled hack like a small
black border on the bottom of the screen or some ui elements but those
can be fixed with TC X,Y Offset hack.
2018-02-21 17:06:16 +05:30
refractionpcsx2
64442379aa Merge pull request #2251 from atomic83GitHub/Game-db-Missing-games-add
GameDB: Final Fantasy X fix Closes #760
2018-02-20 19:25:48 +00:00
Huud
4e3730f8f4 Utilities: Fix subtraction operation function in FixedInt class (#2313) 2018-02-20 15:39:34 +05:30
atomic83GitHub
7667635752 GameDB: Fix for many games
EE clamping mode to full fix Max Payne from crashing and freezing. Tested on NTSC-U/Pal-M4

VU clamping mode to extra fix some reflection issues in Klonoa 2. Tested on Pal-M5

OPHflaghack fix the "press start" screen from freezing in Evolution Snowboarding. Tested by MrCK1 on NTSC-U

EE round mode to nearest fix some jumping issue in Mana Khemia. Tested by Schtolteheim (PCSX2 forum) on NTSC-U

Gif fifo hack fix some flag corruptions and characters garbages ingame on Fifa Street 2. Tested on Pal-M6
[skip ci]
2018-02-16 20:41:31 +01:00
atomic83GitHub
78d4e5a3bf Final Fantasy X fix, Compat update
EEround mode to negative for Final Fantasy X (fix reverse boss/gameplay issue).
[skip ci]
2018-02-16 20:36:00 +01:00
pgert
5aba06f354 More Relocations 2018-02-15 13:41:59 +01:00
pgert
b8257d2c58 Relocations 2018-02-14 17:09:33 +01:00
pgert
15c9006f0d GameDB: Scarface 2018-02-13 16:38:57 +01:00
Jonathan Li
41c49faa81 cmake: Improve wxWidgets and SDL linkage check
If wxWidgets is linked to SDL, check what version it's actually linked
against instead of assuming it's linked to SDL1.2 (which isn't true on
Fedora 27).
2018-02-13 12:26:00 +01:00
Akash
c23241c5f4 PCSX2-Counters: Fix rounding of blank and render
I guess the intention of the older logic was to get the truncated part
by comparing with the original value, but that went wrong due to using
the pre-normalized value (before the division) for comparison.

Hence let's just do a modulo for rounding the render and blank.
2018-02-10 16:10:41 +05:30
Akash
785fe6b2e3 Counters: Fix Hblank calculation for DVD videmodes
Previously, the DVD variant NTSC/PAL modes used the horizontal blanking
interval calculation algorithm used by digital video modes, which
shouldn't be used and also rounding error check was neglected.

Added the DVD variant modes to the list in analog video mode finder
subroutine. This should impact timing/vertical synchronization in PSX
games significantly.
2018-02-08 15:56:00 +05:30
refractionpcsx2
5fdc9da885 Merge pull request #2299 from FlatOutPS2/1_GameIndex
GameDB: Update Silent Hill 3
2018-02-07 22:15:01 +00:00
FlatOutPS2
ca22aadca9 GameDB: Update Silent Hill 3
Adds vuClampMode = 2

This fixes some lighting/shadow artefacts. Most light sources like the
Flashlight are unaffected and don't cause any artefacts.
2018-02-06 22:37:01 +01:00
Akash
b10c357065 GSdx-TC: Fix load size calculation in target update
Previously, the calculation for the size of data to be loaded was done
based on the rendering target buffer size and scaling multiplier, which
was totally wrong. This led to different resolutions having different
load sizes while the size of the real GS memory is common regardless of
the scaling variancies.

Hence use the default rendering target buffer size for the load size
independent of the scaling values. I've also removed a buffer height saturation
code which seemed unreliable.

Note: The accurate version of the code can be enabled using the macro
provided in config.h (which is more intensive on resources), the current
code goes along with the approach of maintaining a decent performance
level along with a formidable accuracy.
2018-02-06 18:00:22 +05:30
Jonathan Li
743caf46f2 pcsx2: Fix string truncation on Windows 2018-02-06 00:04:52 +00:00
Jonathan Li
f64488f818 gsdx:d3d: Fix fbmask conversion on texture shuffle
Port of 6580f4922f.
2018-02-06 00:03:25 +00:00
Jonathan Li
75c803df11 cdvdgigaherz:windows: Refactor to use early returns 2018-02-05 23:31:24 +00:00
Jonathan Li
5c158b4df9 cdvdgigaherz:windows: Avoid unneeded DVD ioctls
Avoid using the IOCTL_DVD_START_SESSION and IOCTL_DVD_END_SESSION ioctls
- it's not necessary to obtain an Authentication Grant ID (AGID) before
requesting the DVD physical format layer descriptor.
2018-02-05 23:31:24 +00:00
lightningterror
85c59fdb5e GSdx: Adjust DBZ BT2 CRC hack and id, add R&C3 EU to Automatic Mipmap.
Adjust region id for BT2.
Move the sky texture(depth) hack back to Partial level only for the EU
regions.  Effect is still not rendered correctly and causes a half
screen bottom issue.

Add R&C3 EU to Automatic Mipmapping.
2018-02-05 23:03:19 +00:00
lightningterror
86a8cbf402 GSdx: Change Skipdraw Maximum limit value.
Previously the limit was 1000, now 10000 in the GUI. It should help in
some rare cases where a higher number is needed without the need of ini
editing and value reset issues caused by the GUI.
2018-02-05 23:03:19 +00:00
Christian Kenny
94b822df3b Resolve cases where GUI values are not updated when adjusting sliders with the scroll wheel. 2018-02-05 22:49:09 +00:00
Christian Kenny
a5db116d00 Remove unused 'About Box' references on Linux and Windows from SPU2-X/CMakeLists, ect. 2018-02-05 22:49:09 +00:00
Christian Kenny
168402217f Make GUI more user-friendly by disabling some options when they aren't used. 2018-02-05 22:49:09 +00:00
FlatOutPS2
af74a75c54 Plugins: Move Xpad and USBqemu plugins to old plugins solution
The XPad plugin has been superseded by the LilyPad plugin, and is known
to cause control issues.

The USBqemu plugin is an dead plugin with no functionality.

Close #106
Close #2293
2018-02-05 22:34:29 +00:00
viciousShadow
27c45fc995 pcsx2: Fix copy bytes patch command
This adjusts the copy bytes command format from
5aaaaaaa nnnnnnnn
00000000 bbbbbbbb
to
5aaaaaaa nnnnnnnn
bbbbbbbb 00000000
so that it matches the copy bytes command format used by PS2 cheat
devices (GS/CB/XP/AR2).
2018-02-05 00:56:59 +00:00
FlatOutPS2
8600ada735 PCSX2: Avoid SYSTEM.CNF error message in PSX mode (#2286)
Avoid error on non-empty last line of file.
2018-02-03 16:08:49 +01:00
bositman
081676bcd8 Merge pull request #2276 from altiereslima/master
Portuguese-BR translation update
2018-02-02 15:03:05 +02:00
lightningterror
ab44ebd7e0 PCSX2: Add configurable Cheats folder to Components Selectors.
Add GUI option to Plugins Components Selectors to change the default
"Cheats" folder location. Similar to savestates/logs/..etc.
2018-01-27 23:26:11 +00:00
Jonathan Li
eeca9f61bf cdvd: Fix writing of CD blockdumps
Write the full CD sector (not including subchannels) to a blockdump
instead of just a partial CD sector that isn't offset correctly.
2018-01-27 22:28:29 +00:00
Jonathan Li
79d57e2949 cdvd: Fix and switch to writing v2 format blockdumps
Switch to using vector for the dump sector table, and also fix a bug
where memory was not allocated when writing to a v2 format block dump,
causing a null pointer dereference.

Also switch to using the v2 block dump format, which generally produces
smaller dump files (the dumps also seem smaller than the ones generated
by cdvdiso, which seems to repeat sectors).
2018-01-27 22:28:29 +00:00
refractionpcsx2
f7c0a910f8 Gif: Don't set state on NOP packet. Fixes #2277 2018-01-26 23:02:23 +00:00
altiereslima
63bbe55ecd Portuguese-BR translation update 2018-01-24 23:14:18 -02:00
FlatOutPS2
24b83fd96c PCSX2: Memory card minor code improvements
- Adds tooltip for Convert memory card button in the memory card dialog
- Updates several memory card console writes.
- Adds 2018 copyrights to the updated files
2018-01-18 23:04:50 +00:00
FlatOutPS2
c749f961ef PCSX2: Add keyboard shortcuts to memory card dialog right-click menu 2018-01-18 23:04:50 +00:00
FlatOutPS2
1ad6fd8297 PCSX2: Update PSX memory card file extension
Changes the file extension used by PSX memory cards to the common .mcr
instead of using the same (.ps2) extension used by PS2 memory cards.

Updates the extension listed in Create memory card dialog when a PSX or
PS2 memory card is selected.
2018-01-18 23:04:50 +00:00
FlatOutPS2
f8e2c65cef PCSX2: Replace PSX memory card checkbox
Replaces the awkward checkbox for a PSX memory card in the bottom left
of the Create Memory Card dialog with a radio button like the other
memory card types.
2018-01-18 23:04:50 +00:00
lightningterror
acc9530d66 GSDumpGUI: Update the GUI interface
Rearranged/updated many GUI elements.
Reduce height of window to make it more appealing for laptop users.
Add OpenGL HW/SW options to Renderer Override.

[skip ci]
2018-01-18 21:50:54 +00:00
lightningterror
039d035952 gsdumpgui: s/GSDX/GSdx/ 2018-01-18 21:50:54 +00:00
Jonathan Li
8fff11fdee gsdumpgui: Improve renderer override handling
Instead of faffing around with strings and having to handle a lot of
edge cases when trying to override the renderer, just let
WritePrivateProfileString do all the hard work for us instead.
2018-01-18 21:50:54 +00:00
Jonathan Li
fad0a2a55f cmake: Remove old macro substitution workaround
The workaround was used to prevent macro substitution occuring on paths
containing "linux", but it's no longer necessary since "linux" is not
set as a predefined macro when a "-std=" option is passed to gcc.

Fixes #2268.
2018-01-18 20:50:58 +00:00
Russ K
43d0bd99cb Enhance "Assemble Opcode" to be pre-populated by existing instruction. (#2244) 2018-01-14 02:47:00 +01:00
lightningterror
4aa25c4971 GSdx: Disable Merge Sprite on native resolution.
Previously if HW hacks were enabled Merge Sprite was active(if checked) on
native resolution even if the GUI option was disabled, which in result
caused glitches in games on native resolution.

This should address that issue.
2018-01-13 23:18:57 +05:30
refractionpcsx2
5d61f656eb Merge pull request #2264 from FlatOutPS2/SPU2
SPU2-X: Prevent volume check from altering volume
2018-01-12 14:21:20 +00:00
FlatOutPS2
57cbc901b7 SPU2-X: Prevent volume check from altering volume
Fixes issue in Tokyo Xtreme Racer Zero where checking the left master
volume would alter it.
2018-01-12 14:37:40 +01:00
FlatOutPS2
fe27d3b25a GSdx: Add Dark Cloud CRCs to automatic mipmapping 2018-01-12 13:28:43 +05:30
lightningterror
9dc7930ff2 GSdx: Merge CRC hacks of Wild Arms 4 and 5
It's better to avoid duplicate code so let's merge these two together
as well.
2018-01-12 13:25:40 +05:30
orbea
49cd6bc782 cmake: Don't print a git describe error with shallow clones. 2018-01-10 15:09:59 +01:00
lightningterror
fbdd0f4394 GSdx: Remove/move/merge CRC hacks.
Remove Aggressive CRC hacks for SSX 3. Was used to remove the red lines
on older versions but no longer needed since the issue has been fixed.
Offered 1fps or less speed bump but it's not worth keeping for such a
minimal increase.

Merge all FFX CRC hacks in to one. They share the same code so it's
better to have one to avoid duplicate code.

Move CRC hack for Bleach Blade Battlers to Aggressive. It removes the
character shading. It can be used as a speed hack since the gains are
quite good from it. Around 15-30%.
2018-01-10 08:10:56 +05:30
lightningterror
29ef586f91 GSdx: Move CRC hacks for Soul Calibur 2&3 to DX level.
Add missing CRC ids for Soul Calibur 2 and 3.
Move CRC hacks to DX level. They are not needed anymore on OpenGL since
Depth Emulation fixes depth issues (shadows).
2018-01-09 20:36:14 +05:30
Akash
36a1c7a265 PCSX2-WX: Display the video mode on titlebar
I found it might be useful for looking into issues at certain cases
where users provide a screenshot covering the titlebar, so we can easily
identify which video mode is being used.

Especially useful for looking into PCRTC issues.
2018-01-07 13:32:47 +05:30
Jonathan Li
e0ec8b3be1 iop: Fix booting ELF files on a different drive
Fixes a regression introduced in b3b1f3ac68,
where ELF files on a different drive to PCSX2 would fail to load.
2018-01-07 06:22:42 +00:00
Russ K
854246846d Fix mouse click focus in debugger near functions ending in a branch. (#2250)
This code updates the DisassemblyFunction objects to only include Delay Slots when they are within the bounds of the function.
2018-01-06 11:05:42 +01:00
Russ K
74282b46ff Corrected MipsOpscodes table for unconditional branch. (#2247)
The assembler was previously assembling instruction "b i" as an alias to "j I".
This caused unexpected behavior when attempting to assemble an
unconditional branch. The previous behavior would cause
position-independent code to fail due to the distinction between
the absolute address of a jump vs. the offset of a branch.
2018-01-04 10:01:48 +01:00
altiereslima
e10ac8cbec Portuguese-BR translation update (#2209)
Translated new strings and few updates.
2017-12-28 11:11:23 +05:30
atomic83GitHub
18ea36adc4 GameDB: Fixes and compatibility status update (#2223)
- Added proper clamping/rounding modes for Star Wars Bounty Hunter
- Added VIF FIFO hack for Petz - Horsez 2 to resolve hang at loading screen
- Update to compatibility status of few games

[skip ci]
2017-12-28 11:01:52 +05:30
Leucos
13526fc679 Italian translation update (#2155)
- Translated new strings
- Various fixes and improvements
2017-12-20 09:51:04 +05:30
atomic83GitHub
bea611e805 GameDB: Add proper rounding mode for Beyond Good and Evil v2 (#2214)
Apparently the nearest rounding mode is necessary to fix some effects which weren't fixed in positive rounding.

[skip ci]
2017-12-20 09:48:20 +05:30
lightningterror
687c0b45e2 Gsdx: Tekken 5 Channel effect and CRC Hacks
Move CRC hack to Partial that fix the half screen
bottom issue since the effect is not rendered correctly.

Move CRC hack to Aggressive. These hacks are only
needed when running upscaled resolution. They skip the
blur effect which cause ghosting and some other screen issues.
Side effect is they also remove the channel effect on OpenGL
which is emulated correctly so let's put them on Aggressive.

Comment out a hack, it's unknown what the hack does atm.
If there are new issues then it will be added back.

Added comments what the hacks do.

Partial port for channel shuffle effect to Direct3D for Tekken5.
The effect is skipped and not rendered but now the top left
screen glitch has been resolved.
Note: At least Minimum CRC level is required for this to work.
2017-12-13 13:31:49 +01:00
lightningterror
41051f3cfe GSdx: Add hidden option to disable Nvidia hack
Add hidden option "UserHacks_DisableNVhack" to disable
the Nvidia hack on Direct3D which added black lines on the right
and bottom of the screen. Could be useful for Intel and AMD GPUs.

A better solution would be to add Vendor Id detection instead,
but this will do for now.

To disable the Nvidia hack add UserHacks_DisableNVhack=1 in GSdx.ini
2017-12-10 21:37:00 +05:30
RedPanda4552
5fec900861 Make PSX cards appear as Pocketstation devices. (#2208)
Fixes memcard access in Final Fantasy VIII, and likely in other PSX
games supporting the Pocketstation peripheral. This makes inserted PSX cards show up as PocketStation devices in the PS2 browser, which is okay for now.
2017-12-10 17:03:26 +01:00
atomic83GitHub
4558dd9e28 GameDB: Add proper rounding mode for Beyond Good and Evil (#2210)
[skip ci]
2017-12-10 21:04:30 +05:30
Christian Kenny
7a71b6f3d0 Flag XP as an unsupported OS. 2017-12-02 23:47:08 +00:00
Jonathan Li
bc8d9d40bd ci: Fix Travis CI build issues
Add python:i386 to gcc 32-bit builds to avoid a strange dependency
issue with the gcc-4.9 and gcc-7 builds.
Remove chrome workaround since it's not needed anymore.
Change 32-bit clang dependency to gcc-7-multilib (no real reason, I just
feel like doing so).

[skip appveyor]
2017-11-30 23:56:11 +00:00
lightningterror
a74a5d95ab GSdx: Remove/move CRC hacks for Simpsons Game
Remove CRC hacks no longer needed.
Move CRC hacks to Aggressive level. Can be used as a performance hack.
2017-11-28 16:59:13 +05:30
lightningterror
3c74f0f907 GSdx: Extend support of "Preload Frame Data" for Direct3D.
Fixes glitchy water in Rogue Galaxy in Direct3D when the hack is
enabled.
Fixes Test Drive car reflection in Direct3D when the hack is enabled.

OTher games are affected as well.
2017-11-27 11:01:43 +01:00
Jonathan Li
025eef63b5 pcsx2:gui: Display '&' properly in recent ISO list menu
& is used to specify the keyboard shortcut key in menu labels. && must
be used to display an &.

Closes #2148.
2017-11-26 22:47:16 +00:00
Jonathan Li
c9abec7cbe cdvdgigaherz: Always read 2352 bytes from CD sectors
For some CDs (i.e. Suikoden), trying to read a 2048 byte "cooked" sector
does not work. However, reading the raw sector and then extracting the
required 2048 bytes works fine, so let's do that.

This also makes it easier to port CD/DVD disk reading to operating
systems that don't provide CD/DVD interface conveniences.
2017-11-24 00:08:26 +00:00
Jonathan Li
0a4ff90bfb cdvdgigaherz: Detect CD track mode correctly
In every CD data sector, byte 15 indicates what the CD track mode is.
2017-11-24 00:08:26 +00:00
Jackson Sommerich
eb796a13ce Update PCSX2_FAQ.doc to reflect changes made on the PCSX2 Forum (#2087)
doc: Update FAQ document

* Update system requirements to match README.md and remove references to v0.9.6
* Fix formatting issues, add link for DirectX and speed issues
2017-11-23 09:45:08 +01:00
bositman
be32e8940a Merge pull request #2142 from altiereslima/master
Updating Portuguese-BR translation
2017-11-22 13:52:23 +02:00
altiereslima
d179efc3ea Updating Portuguese-BR translation 2017-11-22 01:01:56 -02:00
lightningterror
49cea778a0 Translations: French
Update French translations.
By @atomic83GitHub
2017-11-20 09:56:49 +01:00
lightningterror
6d49bf6fc6 GSdx: Automatic HW Mipmapping option
Adds automatic HW mipmapping support.
It relies on CRC ids so if a game does
not have their CRC id but needs mipmapping
it will not work until the id is added.

Add GUI menu and tooltip for Automatic mipmap
"Automatic (Default)"
This option will be default option from now on.

Rename "Very Slow" text option to "Slow" for full mipmap
as it caused the text not to fit properly in the menu.

Credits also go to @RedPanda4552 and @ssakash for helping
with the code.
2017-11-20 09:54:56 +01:00
lightningterror
431b4f6f17 GSdx: Rearrange HW Hacks
Rearrange the two columns of HW hacks, new arrangement
is done in alphabetical order on Windows and Linux.

Rename some hacks on Linux to match the windows version.

Some other minor tweaks as well.
2017-11-20 09:54:32 +01:00
Víctor "IlDucci
ff30e15a4c Updating Spanish translation
- Removing accents on the word "solo" (New RAE rules)
- Improving the wording on some lines.
2017-11-20 09:54:19 +01:00
pgert
2aea8ee696 Swedish translation update 2017-11-20 09:54:02 +01:00
Christian Kenny
5956493684 GSdx: Remove CRC hack for James Bond Everything or Nothing. Thes hack was used to avoid a VRAM spike, but isn't needed anymore. 2017-11-19 12:58:48 +05:30
UlsterRose
3b122a1ba5 Add vuClampMode fix to EA Burnout titles. 2017-11-14 15:42:59 +05:30
lightningterror
b31c23b37b GSdx: Add/move CRC hacks for Street Fighter EX3
Add missing CRC ids.
Move CRC hacks to OpenGL since the effects aren't emulated properly atm.
2017-11-13 16:04:42 +05:30
Akash
6299d9efa9 GSdx-Capture: Grayout configure button for codecs
The following patch grays out the configure button when there's no
configuration dialog available for the selected codec. What's the use in
clicking it when no dialog pops up? :P (I've been tricked by it lots of
times)
2017-11-11 12:50:22 +05:30
Akash
849c2f36d9 GSdx-Capture: Format event commands in switch-case
Use switch-case over chained if statements for the event commands, makes
the code more readable in my opinion.
2017-11-11 12:50:22 +05:30
lightningterror
1cbd4c5387 GSdx: Add CPU Frame buffer Conversion Hack
Add HW Hack that enables Framebuffer Conversion on the CPU instead of the GPU.
Can fix broken textures on games but at the cost of slower performance.
List of games: Harry Potter games, FIFA Street games.
Games like Call of Duty, Kung fu Panda might also be affected as well as others
especially on Direct3D.
Add HW Hack GUI option on Windows/Linux for 4-bit and 8-bit Framebuffer conversion hack
named "Frame Buffer Conversion".
2017-11-02 10:38:07 +01:00
Christian Kenny
574e0a7531 Update SoundTouch lib to v2.0.0 2017-10-31 19:53:05 +00:00
Jonathan Li
96b412ebb8 pcsx2|common|gsnull: Remove GSprintf API
It's not really used, and the OSD uses a different API.

The specified calling convention (stdcall) is also incorrect since
variadic functions are caller-clean, not callee-clean. The compilers
ignore the stdcall and just use cdecl (I think), though it does trigger
a -Wcast-calling-convention on clang.
2017-10-29 01:01:49 +01:00
Jonathan Li
58f2b6c257 windows: Fix Devel solution configuration
The FreeType release configurations should be used for devel solution
configurations.
2017-10-14 22:54:40 +01:00
Akash
c783b6d7b5 PS2-HW: Remove address of non-existent registers
It seems not all DMA channels have the same set of 32 bit registers. Removed
addresses of registers which aren't actually present in the memory
space.

Example: Channel 0/1/2 have address stack registers but the other
channels lack it. According to documents, the remaining memory space of
the channels seems to be reserved. Which means, write access would be
disregarded and read access would return an unknown value.

Credit goes to Gregory and CK1 for notifying me about it, special mention to ssakash for actually pushing the change to github. Also I wasn't the one who introduced the non-existent registers into the code, these registers were present before under a different name.
2017-10-13 20:28:34 +05:30
Jonathan Li
9be61f83df cdvdgigaherz: Fix Q subchannel relative offset calculation
The wrong comparison was used, so all the relative offsets were
completely wrong. Fixes the wrong track issue in the CD player.

Regression introduced in f314c2a4d9.
2017-10-12 23:54:59 +01:00
Jonathan Li
1bcb7eccbc ci: Update Travis CI and AppVeyor configurations
Travis CI:
Replace GCC4.9 64-bit with GCC7 64-bit.
Replace GCC5 32-bit with GCC7 32-bit.
Move 64-bit to top of matrix so it gets built first (ccache doesn't work
on the 64-bit build and I don't know why (it works locally), so it takes
the longest to build).

AppVeyor:
Add VS2017 build job.
2017-10-12 23:54:12 +01:00
Brian
7a7844162d Add clear list option to ISO Selector 2017-10-10 22:43:40 +01:00
Akash
3356c63cdc PS2-HW: Fix DMA channel register addresses
The macro for address of channel 9 was wrongly having the address of
channel 8, fixed it. (Luckily MADR and QWC were unused so we should be
safe)

Thanks to Fireboyd78 for notifying us about this. (Closes #2091)

Also fixed some inconsistencies where some of the DMA channel register
addresses weren't defined for all the bitfields.
2017-10-10 19:54:48 +05:30
ramapcsx2
af2278c3c2 Merge pull request #2067 from RedPanda4552/master
Add PSX memory card support
2017-09-17 16:53:36 +02:00
Brian
e4777f6563 Allow PSX memcard creation, dynamic SIO delay type. 2017-09-15 11:19:33 -04:00
Jonathan Li
fe2dfdb3b9 gsdx: Remove "using namespace std" 2017-09-08 09:56:28 +02:00
Jonathan Li
82d1aba67f gsdx: Prefix std:: to ostringstream, pair, codecvt* 2017-09-08 09:56:28 +02:00
Jonathan Li
7ed360e06b gsdx: Prefix std:: to shared_ptr 2017-09-08 09:56:28 +02:00
Jonathan Li
0cde534e30 gsdx: Prefix std:: to min and max 2017-09-08 09:56:28 +02:00
Jonathan Li
54c320c724 gdsx: Prefix std:: to map
Also use auto when appropriate.
2017-09-08 09:56:28 +02:00
Jonathan Li
2ff67f3741 gsdx: Prefix std:: to list
Also use auto when appropriate
2017-09-08 09:56:28 +02:00
Jonathan Li
5415b7ad5b gsdx: Prefix std:: to vector
Also use auto when appropriate
2017-09-08 09:56:28 +02:00
Jonathan Li
2aeb406e38 gsdx: Remove hash_{map,set} macros
Also use auto when appropriate.
2017-09-08 09:56:28 +02:00
Jonathan Li
d57b812f36 gsdx: Prefix std:: to string and to_string 2017-09-08 09:56:28 +02:00
Ryudo300
ada0d57452 PCSX2-GUI: Logo Update (Wider image)
New logo for the main interface of PCSX2. (400px instead of 380)
2017-09-07 18:15:26 +02:00
lightningterror
d158ac5ffe GSdx-ogl:
Comment out driver version detection on amd as it was not working properly.
Rename bools for vendor ids.
2017-09-06 18:08:37 +02:00
lightningterror
481a884d25 GSdx - dx9: Edit Alpha Correction (FBA) tooltip.
Can cause graphical glitches in some games.
2017-09-06 18:05:21 +02:00
lightningterror
f14c78cf12 GSdx-ogl: Fix GSdx crashing on Intel igpus
Regression was introduced in #1954
GSdx caused the emulator to crash when the renderer was restarted.

It may have affected older gpus from nvidia/amd
with older OpenGL support as well.
2017-09-06 17:14:21 +02:00
lightningterror
91d8e7c7c6 GSdx-Windows: Grey out OSD and Shader Configuration
Grey out OSD Configuration button for Direct3D
since only OpenGL supports the feature atm.
Grey out Shader Configuration button in Core Benchmark.
2017-08-31 21:11:43 +05:30
Jonathan Li
854f3d5b85 lilypad: Fix Lock Direction/Input/Both features
Regression was introduced in 2ea078beb5.

Coverity CID 178405.
2017-08-30 22:25:06 +01:00
Jonathan Li
056cbbcdcd pcsx2: Fix inconsistent framelimiter/vsync interaction
If emulation is paused and resumed, vsync may become enabled even if the
frame limiter is currently disabled. This state persists until the
settings are changed or the hotkeys are used.

Fix the inconsistent framelimiter/vsync behaviour so that vsync isn't
enabled whenever the framelimiter is disabled, which matches the
behaviour in the rest of the code.
2017-08-30 21:08:54 +01:00
Jonathan Li
c02a545c7d pcsx2: Apply vsync changes immediately on settings change
Fixes an issue where changes to the vsync settings are not applied until
emulation is paused and resumed.
2017-08-30 21:08:54 +01:00
Jonathan Li
fecf8e3ed2 gsdx:ogl: Call swap interval function on rendering thread
The swap interval function must be called on the same thread that
rendering takes place on. This fixes an issue where the turbo speed and
frame limiter hotkeys fail to disable vsync when the OpenGL renderer is
used.
2017-08-30 21:08:54 +01:00
Jonathan Li
12e7eac1b4 ci: Fix Travis CI
[skip appveyor]
2017-08-30 19:11:34 +01:00
Alessandro Vetere
f8e89b694a GSdx GSLocalMemory: Reserve space required in the std::vector before adding elements to it. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
a0aa585afd GSdx GSTextureCache: Using FastList instead of std::list. Various other improvements.
Using range loops where possible (correctly).
Using auto where possible (minimize code changes whenever it's decided to change back to a std container).
Use more efficient erase pattern (where possible).
Minor code tweaks.
2017-08-30 11:43:18 +02:00
Alessandro Vetere
3300470a29 GSdx GSCodeBuffer: std::vector instead of std::list, to speedup linear scan. Using range loop on destruction. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
b2508dcb59 GSdx GSDevice: Using FastList instead of std::list. Using range loops (correctly). Using auto instead of declaring iterator type. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
798d6a9134 GSdx GSDevice11: Fix unsigned warning under VS2015 with DEBUG build enabled. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
965334350f GSdx GSTextureCacheSW: Ported erase iterator trick. Using FastList instead of std::list. Using range loops. Using more efficient erase pattern. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
676c7b89c7 GSdx GSFastList: Introducing the custom container template class. 2017-08-30 11:43:18 +02:00
Alessandro Vetere
b431d172b7 GSdx GSDirtyRect: std::vector instead of std::list, to speedup linear scan. Improved const-ness. Using range loop. 2017-08-30 11:43:18 +02:00
Akash
8fe8cad8f9 GSdx-D3D11: Avoid undefined behavior in swapchain
PCSX2 sends a negative value (-1) to GSdx when adaptive mode is
specified for Vsync, this mode is exclusive to OpenGL at the moment
and is unimplemented on the D3D11 renderer. Also the present function
of swapchain only accepts values from 0 to 4 as parameter, hence
passing negative values to the function is undefined behavior.

So let's fallback to standard synchronization method on D3D11 when
PCSX2 requests for adaptive mode.
2017-08-25 22:40:42 +01:00
lightningterror
420f111611 GSdx: Add missing CRC for GT3 2017-08-16 17:35:32 +05:30
ramapcsx2
9c8a48f38c Merge pull request #2038 from FiLeonard/master
Update German Translation
2017-08-14 12:03:19 +02:00
FiLeonard
50bb101abf small update 2017-08-13 17:55:29 +02:00
FiLeonard
21dcfc8dae correction 2017-08-12 18:59:52 +02:00
FiLeonard
24e5819f99 correction 2017-08-12 18:46:00 +02:00
Gregory Hainaut
64c197de47 glsl: miss color of SSO interface
It was added with the OSD

Fix #2037
2017-08-12 15:43:15 +02:00
Gregory Hainaut
c4bf09ad32 glsl: extension must be declared first
Mesa follows this rule of the standard.

Issue #2037

Shader compile fines now but SSO interface seems to be broken.
2017-08-12 15:37:29 +02:00
Gregory Hainaut
8c37418e44 onepad: print a more accurate message when only a single pad is detected 2017-08-10 22:00:33 +02:00
Gregory Hainaut
d6c27c190d onepad: fallback on 2nd gamepad for the 2nd player
Close #2039
2017-08-10 22:00:28 +02:00
Gregory Hainaut
0d0a54f095 Merge pull request #2040 from orbea/horipad
Add Horipad One config
2017-08-10 11:45:35 +02:00
orbea
590b75453c Add Horipad One config 2017-08-09 17:56:18 -07:00
FiLeonard
f80d17c2be revert kapitalized personal pronouns 2017-08-10 00:32:02 +02:00
FiLeonard
58b94d5a63 a few corrections 2017-08-09 21:36:33 +02:00
Akash
1d95dbe4a1 PCSX2-Git: Minor changes in issue template file
* Remove redundant mention of MTVU hack speedhack.
(It's grayed out at safest preset)
* Change ``Note 1/2`` into a single notes header with
multiple lists, also modified the "is in active development"
part as it's no longer the case.

[skip ci]
2017-08-09 20:10:17 +05:30
Akash
ebe9b3368e PCSX2-WX: Force disable MTVU hack on safest preset
The safest preset should ideally try to provide
the highest accuracy and stability when emulating the
PS2, allowing the manipulation of the MTVU hack could
just destroy both of these things, hence the following patch
force disables the hack on safest preset.
2017-08-09 20:10:17 +05:30
FiLeonard
504337d25e small update 2017-08-09 14:50:50 +02:00
FiLeonard
c53d11b2cd small update 2017-08-09 14:38:22 +02:00
FiLeonard
6de73c7ab3 small updates 2017-08-09 14:15:32 +02:00
FiLeonard
83fecb46f6 Update German Translation 2017-08-09 04:23:48 +02:00
lightningterror
20cc02c90d Update Translations (#2029)
Update tr_TR - credits to PyramidHead
Remove .mo files from locales for tr_TR and cs_CZ
2017-08-06 22:45:49 +05:30
Gregory Hainaut
41bfb6e80a Merge pull request #2000 from PCSX2/greg/vsync-take2
Greg/vsync take2
2017-08-05 11:44:41 +02:00
Gregory Hainaut
f5838c5178 pcsx2 gui: uses a combo box for Vsync
The possible values are
* Disabled
* Enabled
* Adaptive Vsync (the new possibility)
2017-08-05 11:00:41 +02:00
Gregory Hainaut
e8636136c8 core: add a getter for the vsync option
v2: allow all combinations of framelimiter and vsync options
v3:
* disable vsync when the user disable framelimiter with F4
* Use g_Conf->EmuOptions instead of EmuConfig
2017-08-05 11:00:41 +02:00
Gregory Hainaut
17d2d9217b gsdx ogl: test adaptive/late vsync driver support
Supported on GLX (but not Linux free driver) and WGL
2017-08-05 11:00:39 +02:00
Gregory Hainaut
2e4643a398 gsdx ogl: factorize SetVSync
Move common logic into base class
Add API to handle late Vsync (only stub)
2017-08-05 10:59:48 +02:00
Gregory Hainaut
2204885fbb gsdx ogl: factorize common context init code 2017-08-05 10:56:54 +02:00
lightningterror
66a87ce4d0 GSdx: Add missing CRC for Tomb Raider Underworld 2017-07-29 20:10:46 +05:30
Akash
31400b29c3 Merge pull request #2017 from lightningterror/dbzbt3-crcfixup
GSdx: Adjust CRC hack for DBZ BT3
2017-07-27 00:23:25 +05:30
lightningterror
f5b4ccf741 GSdx: Adjust CRC for DBZ BT3
Fix CRC hacks on PAL version.
PAL version will no longer experience very high brightness/contrast
issues on stages in hw mode caused by an incorrect CRC hack.
Moved a CRC hack back to OpenGL mode only for the PAL version
because texture shuffling does not work properly on PAL games.
2017-07-26 20:19:44 +02:00
Akash
59fa831542 PCSX2-Counters: Fix tracking of scalar limit
The scalar limit value was updated only during any turbo/slowmotion
toggle, let's also update it properly after any change in the emulation
settings.

This prevents the need of toggling from turbo/slowmotion to update to
your requested frame rate percentage.
2017-07-25 21:55:22 +02:00
Jonathan Li
4e19f7adbf lilypad: Fix button detection issue in Kung Fu Panda
Kung Fu Panda becomes stuck at an autosave warning screen since it
cannot detect button presses correctly. This fixes the issue, though
potentially it may negatively affect some other games (see #1831,
unfortunately no game titles weren't mentioned).

The issue was introduced in commit 3075ec2203

Closes #1965.
2017-07-24 00:46:00 +01:00
Akash
bd5e54e825 GSdx-Windows: Fix Shadeboost text bug
Forgot to replace `IDC_TEXT` with `IDC_VALUE` macros, due to this the
text containing the name of the options was being updated with the
current value of the option instead of updating the text designated for
holding the values.
2017-07-23 22:50:40 +01:00
puzzo888
1d983a6818 Update GSCrc.cpp (#2018)
gsdx crc: add Front Mission 5 CRC
2017-07-22 11:32:15 +02:00
Gregory Hainaut
390568ade9 onepad: add a first time wizard to notify that plugin auto-map the Gamepad/Joystick
It should avoid some bug reports of not-working-as-expected GUI

v2: English improvement
v3: ditto
v4: :)
2017-07-22 11:31:35 +02:00
Akash
c3ff1074bb GSdx: Rework framebuffer height calculation
DBY isn't an offset to the frame memory but rather an offset to read
output circuit inside the frame memory, hence the top offset should also
be calculated for the total height of the frame memory. Fixes software
mode regression in Beyond Good and Evil.

Also handle cases when GetFrameRect() is called without any paramerer to
avoid an illegal value access violation on the DISP register.
2017-07-13 17:53:29 +02:00
Akash
9af03035aa PCSX2-WX: Revert titlebar update behavior on Windows
Current behavior - The tilebar isn't updated when the user enters full screen mode and when the user returns back to windowed mode they have the older title bar values for a brief second, this sort of behavior is undesirable just in the cost of saving some overhead for updating title. (which is really negligent)

Hence reverting the code back to how it has been for the past 7 years (Yes, I did my research), I'm doing it only for the windows side at the moment as a code comment describes of some sort of Linux specific issue on wxWidgets side.
2017-07-12 22:07:37 +02:00
Akash
9e13b7da01 PCSX2-WX: Add restore defaults to GS panel 2017-07-12 22:04:37 +02:00
Gregory Hainaut
c5d35d434c glsl: reduce geometry shader complexity
output 1 strip of 2 triangles instead of 2 strips of 1 triangle.

Potentially it would reduce the geometry shader overhead. And it
might avoid a middle line in sprite in some AMD GPU/driver/OS
bad combination
2017-07-12 22:04:03 +02:00
Gregory Hainaut
38010432ee gsdx ogl: handle float integral coordinate for depth sampling
Fix depth effect regression on Nemo (issue #1979)
2017-07-12 22:03:47 +02:00
Gregory Hainaut
bab9826fb1 i10n: upload da_DK precompiled mo file 2017-07-03 19:22:03 +02:00
lightningterror
aaf03123f8 GameDB
Remove recent db fix for MGS3 Subsistence
Fixes #1992
2017-07-03 19:06:33 +02:00
pgert
46ab3ee24f Added Danish mo-files. 2017-07-03 19:06:21 +02:00
Jonathan Li
45ac69a1f6 gsdx:d3d11: Fix sprite geometry shader
Sprites always use flat shading.

Fixes #1980
2017-07-02 22:54:36 +01:00
Gregory Hainaut
b8f7e12bc0 onepad: Add platform:Linux on game db entries that miss it
SDL doc:
"Mappings not belonging to the current platform or with no platform
field specified will be ignored (i.e. mappings for Linux will be ignored
in Windows, etc)."

Issue #1978
2017-07-02 16:55:50 +02:00
Gregory Hainaut
2ced227ad3 i10n: upload cs_CZ mo binary files 2017-07-02 15:31:52 +02:00
Gregory Hainaut
392816fae3 gsdx: store vsync state into an integer
allow to support late vsync (Adaptive vsync).
2017-07-02 15:14:45 +02:00
Gregory Hainaut
36fd2b6854 gsdx: remove the unused GSsetFrameLimit API 2017-07-02 15:09:47 +02:00
Gregory Hainaut
1279112ac0 core: add hidden option EnableVsyncWindowFlag to add the WS_POPUP flag
Goal is to ease testing of Vsync/Tearing

v2:
Properly propagate the WS_POPUP flag
2017-07-02 15:08:16 +02:00
lightningterror
358954d69e GSdx-ogl: Printing console messages v2 (#1954)
GSdx-ogl: Console messages v2

Follow up to
commit/ec63b04719fd9c05a6aeeacb55dc1c54f5ef145b

Add intel broken driver wiki link message in console (OpenGL).
Print intel / amd buggy driver message once in console (OpenGL).
Pring texture barrier and viewpoint array info once in console (OpenGL).
2017-07-02 13:56:45 +02:00
František Zatloukal
f6c02262c4 cs_CZ update 2017-07-02 13:55:37 +02:00
Jonathan Li
6e029fc184 cmake: Fix NetBSD compilation
Closes #1973
2017-07-01 11:54:59 +01:00
lightningterror
5c7e2d103c GameDB: Add fixes to various games (#1977)
GameDB: Add fixes to various games

Add fix for R&C2 Going Commando
- fixes cinematic and crash
Add fix for Metal Gear Solid 3: Subsistence
- fixes screen artifacts
Add multiple fixes for Max Payne
Add / correct fix for Mercenaries 2
- Corrected incorrect title and added timing fix
Add fixes for Scarface
Add missing games to DB
2017-06-30 11:59:24 +02:00
lightningterror
f88972013f GSdx: Remove/move DBZ:BT3 CRC
Enables character outlines to partially work on Full CRC.
DX9 has a small issue where a small black line at the bottom shakes when outlines are enabled.
You can either use Aggressive crc or x,y offset to fix the issue.

Removed unnecessary crc hack that caused shadows on stationary objects (trees) to move on Direct3D in a weird
motion blur type way when the player moved slightly.
2017-06-29 16:54:11 +02:00
Akash
f2de553d63 GSdx: Cleanup warnings on MSVC
* Cast return value of IsEof() to bool. (Avoids int -> bool performance
warning error)
* Cast field and index to the required parameter type of AppendRawData.
2017-06-29 16:48:50 +02:00
Gregory Hainaut
7d75a73105 cmake: blacklist GCC 7.0 and GCC 7.1 (based on a small testcase)
GCC bug => https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80799

Close #1937
2017-06-29 14:51:50 +02:00
Jonathan Li
07c69ebed4 ci: Fix 32-bit Travis CI builds
[skip appveyor]
2017-06-23 20:50:14 +01:00
Akash
58102a39a4 PCSX2-WX: Add "Always ask when booting" option
When enabled, this option opens the file explorer to directly select the
ISO at each boot instances instead of relying on the Recent ISO list.
2017-06-19 23:33:29 +01:00
Akash
b75868cc7c PCSX2-WX: Increment max ISO count in recent ISO list
The default 12 is rather low and won't suffice for most cases, updating
it to 20 to give some extra space for additional ISOs. Incrementing it
to an even higher value might not be so good as it consumes lots of
vertical space, not a nice idea for people with smaller screens.
2017-06-19 23:33:29 +01:00
Jonathan Li
4a562401dc gsdx:d3d11: Fix incorrect geometry shader use
The sprite geometry shader was still being used even if the sprites were
converted on the CPUs.

Convert all sprites using the GPU - the fix isn't ideal, but it'll
likely have to do unless someone feels like porting over more of the
OpenGL changes to the D3D11 renderer.

Closes #1921.
2017-06-13 01:11:45 +01:00
Jakob5566
8b245c12ad Add Danish translation 2017-06-09 11:18:41 +02:00
Jonathan Li
f8787ca6b9 gsdx: Fix variable initialisation issue
Class member variables are initialised in order of declaration in the
class definition. Move native_buffer to the top of the class definition
to avoid initialising m_width and m_height to random values.
2017-06-05 01:12:41 +01:00
Akash
23fa0657a7 GSdx-HW: Move scaling code to separate subroutine
Move the custom resolution scaling code to a separate subroutine and
allow future RT buffer resize calls when the buffer size isn't enough.

(Example: when a game's CRTC/Framebuffer size changes. The older code
didn't consider such cases)
2017-06-04 17:10:25 +02:00
Akash
a04d9fa388 GSdx-HW: Revamp buffer size calculation
Added a more robust buffer size calculation mechanism for custom
resolutions. Improves performance in higher resolutions for games
which don't need a big buffer. There's a great boost in performance
at GS limited scenarios.

I don't even feel there's a need for the large framebuffer option right
now, For future - I plan on making the large framebuffer enabled version
as the default as the overhead is there only at situations when it's
necessary. Until then keeping the original code just to be on the safe
side in case any issue pops up.
2017-06-04 17:10:25 +02:00
Akash
266c114c1e GSdx-OGL: Extend ICO workaround to PAL videomode 2017-06-03 14:52:42 +02:00
Jonathan Li
11ed4de0aa gsdx: windows: Port xz dump readback
Also modernize and std:: a bit while I'm at it.
2017-06-03 14:52:01 +02:00
Jonathan Li
742b0edaa8 gsdx: Fix GS dump readback EOF handling
An EOF only occurs after attempting to read past the end of the file.
Account for this correctly, which fixes a potential infinite loop when
reading back an xz compressed GS dump.
2017-06-03 14:52:01 +02:00
Jonathan Li
a6ed698fca unix: Remove LZMA_SUPPORTED define 2017-06-03 14:52:01 +02:00
Jonathan Li
3912f3330f windows: Link GSdx to liblzma (xz) 2017-06-03 14:52:01 +02:00
Jonathan Li
97d99632a6 gsdx: Use std::vector for xz dump output buffer
By default, Windows has a 1MB stack size limit per thread, so array
cannot be used...
2017-06-03 14:52:01 +02:00
Jonathan Li
b170bddad9 3rdparty:xz: Add project and config file
The config file is currently just a straight copy of the one in the xz
repo.
2017-06-03 14:52:01 +02:00
Jonathan Li
a26afbe9a1 3rdparty: Add xz submodule
The submodule commit corresponds to the v5.2.3 release.
2017-06-03 14:52:01 +02:00
Akash
49840bb621 GSdx: Implement SYNCV register bitfields
Add the bitfield structure of the undocumented SYNCV register,
potentially might be useful in proper height determination of the output
circuit for some weird games which still get it wrong but still haven't
figured out how it might be useful. Maybe some sort of black magic
formula with the vertical synchronization values?

The differential phase value seems to closely resemble the display
height value of the video modes (480 for NTSC, 576 for PAL) but after
some investigating into the differential phase, I have no clue on how
they might be even related. Hopefully the mystery will be unveiled in
the near future.
2017-05-24 13:44:52 +02:00
Jonathan Li
e8f35f0bab onepad: Remove use of "using namespace std"
"using namespace std" was causing ambiguity issues and compile errors on
FreeBSD. Remove it.
2017-05-23 01:11:49 +00:00
Gregory Hainaut
802f1029e9 gsdx: dump gsdump in xz format directly
Reduce disk space. Easy to share.

It would be nice to port the code to Windows.
libzma code was taken from https://git.tukaani.org/xz.git

Note: only short dumps are supported so far. Big dump will freeze the interface during the compression.
Or will suck all the RAM.
Note2: a multithreaded encoder would badly impact the compression ratio

Thanks to Turtleli for all review comments
2017-05-21 23:45:35 +02:00
Gregory Hainaut
53b2fdf31c linux: requires liblzma (xz) to build GSdx 2017-05-21 23:45:35 +02:00
Gregory Hainaut
5c7d9d08e2 gsdx: defer init of GSUtil global object
Close #1935
2017-05-21 14:39:22 +02:00
Christian Kenny
b51eca87b6 Reformat version detection, move null plugins, force remove folder in uninstaller.
Null plugins are sad and lonely, put them with the others later

Minor tweaks, force remove Plugins folder because it can prevent $INSTDIR from being deleted (assuming we're doing a standard uninstall)

Rewrite version detection to search for 0.9.8 to 1.4.0 as well as future builds.

Remove offending whitespace
2017-05-16 09:39:12 +02:00
Christian Kenny
e043822a93 Added pre-install dialog, updated build instructions, fix RegKey in uninstaller, automatically backup old configuration folder, misc. changes.
Automatically backup old configuration folder to avoid conflicts, misc. changes.

Added reviewed changes
2017-05-16 09:39:12 +02:00
Christian Kenny
732dc881e4 Block installation on XP/fix an uninstaller regression and add ManifestDPIAware to the installer. Remove NSIS dirs from .gitignore.
Typo ;)

Remove XPStyle parameter. It isn't needed anymore

Updated copyright, added ManifestDPIAware for rich folks, removed IDOK true and Cheats folder from $INSTDIR as Turtleli suggested, formatting adjustments.

Gitignore: remove now unused NSIS directories

Fixed a nasty regression I introduced after a registry pointer was assumed to be incorrect. It contained UserMode data generated by the First Time Wizard. This was causing conflicts and the FTW to fail randomly when running PCSX2 after a reinstall due to old configuration data being read.

I added clarifcation below the original comment to reduce confusion in the future.
2017-05-16 09:39:12 +02:00
Christian Kenny
b896eed5d4 Split portable/pre-install and full installer into own scripts. Move shared definitions to their own files to reduce code duplication.
Move version check to own file

Split main installer into own script. Integrated changes for portable/standard installation.

Forgot to remove a message box
2017-05-16 09:39:12 +02:00
Christian Kenny
5298c2016f Remove unused SVN templates and condense installer files. Reduced compile errors by removing output folder dependency.
Forgot to add SharedRedtape changes to last commit

Remove unused SVN templates

Compile the installer to the NSIS folder so that the user doesn't need to worry about the output folder missing; and wonder why the installer won't compile ;)
2017-05-16 09:39:12 +02:00
Christian Kenny
833622c870 Check/Install DirectX redistributables on Win8.1 and older (so as long as they have admin privileges). Removed SSSE3 and AVX references from build instructions.
Remove old build targets from instructions

Don't install DXRedists on 8.1 and newer
2017-05-16 09:39:12 +02:00
Christian Kenny
b7659ea3a5 Implement version detection for previous installs, separate savestates/memcard categories in the uninstaller. Cleanup scripts and misc. tweaks.
Minor tweaks for SharedBase and SharedRedTape:

-Updated ${APP_VERSION} to 1.6.0 and tweaked uninstall_log for functionality with uninstall script in pcsx2_full_install.nsi

-Added !define for installer icon

-Replaced obsolete function with RMDir functionality, uninstaller speed improved marginally

-Added filepath for $DOCUMENTS to be removed if empty

Main installer tweaks/enhancements:

-Tested installer functions in NSIS 3.01

-Implemented uninstall script for future version detection. If an older or equivalent PCSX2 version is detected, the user is prompted to silently uninstall/overwrite or abort the installer. (The function is not compatible with any current stable releases because they lack the registry string required for version detection.)

-Added a new installer function so that we can launch PCSX2 directly from the installer.

-Supressed some errors related to unused plugins in MakeNSIS.

-Replaced File with CreateDirectory function (for Cheats only) because it can't be used on an empty folder and will cause MakeNSIS to fail.

-Removed unused /oname parameter that was leftover from SVN builds.

-Added option to install additional languages for those who desire to save 2MB of space.

-Condensed DirectX Packages into SectionGroup for neatness
2017-05-16 09:39:12 +02:00
Christian Kenny
5986cbcfe6 Add installer icon, update copyright and build instructions for NSIS 3.0.
Update copyright

Reformatted instructions, added info specific to NSIS 3.0
2017-05-16 09:39:12 +02:00
Gregory Hainaut
bc0b1a78e5 common: workaround to start ASAN with recent glibc
Issue: wait of the semaphore timedout. However semaphore was properly posted
counter is 1.

To workaround the issue, only throw an error if semaphore counter is 0.
Note: I reduced the timeout to 100ms by threads to avoid huge startup delay

Close #1939
2017-05-16 09:20:35 +02:00
Gregory Hainaut
9cb8c70434 gsdx linux: port to latest GTK3 API
* replace gtk_table by gtk_grid
  => it still misses some paddings
* Use 3.22 monitor API to query screen size
  => need to be tested
* directly add scrolled windows into a container without bothering with
  the viewport.

Code compile fine but wasn't tested.

v2: disable the code until I (or someone) get a chance to test and fix it.
2017-05-13 10:39:06 +02:00
Gregory Hainaut
02861fabc8 pcsx2|common: replace throw() by noexcept 2017-05-13 10:38:35 +02:00
Gregory Hainaut
33fb806f13 core: remove noexcept on destructor
It is the default on C++11
2017-05-13 10:38:35 +02:00
Gregory Hainaut
47264dc350 core: use = default for trivial destructor
Again not reported by clang-tidy and done with sed
2017-05-13 10:38:35 +02:00
Gregory Hainaut
2ff43f2ed8 core: remove throw specifier on destructor
It is the 'default' on C++11
2017-05-13 10:38:35 +02:00
Gregory Hainaut
1a9a65d4d0 common: use = default instead of trivial destructor
Strangely clang-tidy didn't report them.

Commit was done with a sed to it need careful review.
2017-05-13 10:38:35 +02:00
Gregory Hainaut
b951e24024 common: remove throw specifier on destructor
By default in C++11 destructors are noexcept.
Besides throw is deprecated
2017-05-13 10:38:35 +02:00
Gregory Hainaut
b15ab1b1cf gsdx: use = default instead of trivial constructor/destructor
reported by clang-tidy
2017-05-13 10:38:35 +02:00
Gregory Hainaut
94b50b85e7 core: use = default instead of trivial copy constructor 2017-05-13 10:38:35 +02:00
Gregory Hainaut
585ccc1b24 core: use = default instead of trivial constructor/destructor
reported by clang-tidy

Note: drop throw() specifier as it is the 'default' in C++11 for
destructor
2017-05-13 10:38:35 +02:00
Gregory Hainaut
d332bb1645 core/gui: use = default instead of trivial constructor/destructor
reported by clang-tidy

Note: drop throw() specifier as it is the 'default' in C++11 for
destructor
2017-05-13 10:38:35 +02:00
Gregory Hainaut
9e101c9ef0 common: use = default instead of trivial constructor/destructor
reported by clang-tidy

Note: drop throw() specifier as it is the 'default' in C++11 for
destructor
2017-05-13 10:38:35 +02:00
Gregory Hainaut
595ad99a5b Cmake: what should have been the previous commit 2017-05-12 19:38:51 +02:00
Gregory Hainaut
05763b3669 cmake: better gcc + gsdx integration
Only set fabi-version on older GCC (5.0 and below)
Disable broken optimization for GCC7+ (until we find a better solution)
2017-05-11 23:14:06 +02:00
Gregory Hainaut
ec63b04719 gsdx: only print once OpenGL status message
All credits go to @lightningterror

Fix #1882
2017-05-11 22:35:31 +02:00
Gregory Hainaut
0939424574 onepad: be sure m_unique_id is set even in case of early return
not important as the object will be deleted but please coverity
2017-05-11 21:47:39 +02:00
Gregory Hainaut
806ede241a onepad: remove useless code
reported by Coverity (I forgot to remove the code)
2017-05-11 21:46:28 +02:00
Akash
984fcfda2e Counters: Update videomode enum with proper prefix
Thanks to @colepcsx2 (https://github.com/PCSX2/pcsx2/pull/1896#commitcomment-21858717) for pointing it out!

I also updated the prefix in the inferior video mode detection of GSdx, I'm not even sure why we need the videomode info on the plugin side, might be useful someday.
2017-05-11 11:23:10 +02:00
Akash
7a2cbfd6bf GSFrame: Update title only after rendering starts
The title bar will display "progressive" for 1-2 seconds when booting an interlaced game at some cases, it's due to an uninitialized SMODE2 register, so let's wait till the rendering starts to allow time for the
SMODE2 init and get the proper values from games.
2017-05-11 11:23:10 +02:00
orbea
2dcc85d64c Allow building the player with the legacy GSdx. 2017-05-11 09:50:01 +02:00
Gregory Hainaut
9b0b325339 cmake: search /usr/bin/wx-config32 (for arch users...)
issue #1933
2017-05-08 09:53:46 +02:00
Akash
7a3239cba0 GSDX: Remove redundant parenthesis from combobox text
The third parameter of the GSSetting constructor already encloses the
text in parenthesis, so the right bracket here just messed up things.
2017-05-07 19:31:37 +01:00
Akash
5f449151a1 GSDX: Add missing grayouts to Shadeboost options
The shadeboost options text (Contrast, Brightness, Saturation) were not
grayed out when shadeboost was disabled, it was sort of inconsistent
compared to the behavior of external shader, so added grayouts to them
when shadeboost is disabled.

Also changed "OpenGL Very Advanced Custom Settings" to "OpenGL Advanced
Settings", the verbosity didn't help much in my opinion.
2017-05-07 19:31:37 +01:00
Gregory Hainaut
ecd7107ccb onepad: move KeyName in the dialog and remove the now useless dialog.h
Note: use C++ construct to avoid C buffer.
2017-05-03 16:42:03 +02:00
Gregory Hainaut
a71a549fa3 onepad: create a LUT for the pad key => SDL key mapping
Initial plan was to allow to remap the logical (SDL) key.
Unfortunately I feel some issues with the current enum.
* button/axis overlap
* trigger/axis must be handled differently

Nevertheless, code is easier this way
2017-05-03 12:33:42 +02:00
Gregory Hainaut
7597b31215 onepad: replace conf pointer by g_conf object 2017-05-03 12:03:56 +02:00
Gregory Hainaut
db4f28f4ca onepad: replace key_status pointer by g_key_status object 2017-05-03 12:03:56 +02:00
Gregory Hainaut
b09a82fb94 onepad: remove dead code 2017-05-03 12:03:56 +02:00
Gregory Hainaut
36528bb723 onepad: allow to save/reload SDL2 mapping from OnePAD2.ini file
SDL_GAMECONTROLLERCONFIG is nice but limited to a single entry. (Note it can still be used)

Option name is SDL2. Here an example

SDL2 = 03000000a306000020f6000011010000,PS2700 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,
2017-05-03 12:03:56 +02:00
Gregory Hainaut
03899a6240 onepad: drop useless goto statement 2017-05-03 12:03:56 +02:00
Gregory Hainaut
d8f88ee1e3 onepad: s/set_keyboad_key/set_keyboard_key/ 2017-05-03 12:03:56 +02:00
Gregory Hainaut
b9e62be3c1 modernize: use std::make_unique instead of std::unique_ptr
I didn't update GSdx and cdvdGigaherz because we need to pull
common include files
2017-05-03 12:03:38 +02:00
Gregory Hainaut
756176118b common: add make_unique for C++11
v2: fix windows compilation
v3: fix copyright date
2017-05-03 12:03:38 +02:00
Gregory Hainaut
6be52e435d build.sh: avoid duplicate on clang-tidy analysis 2017-05-03 12:03:38 +02:00
Gregory Hainaut
2159245224 onepad: add DUALSHOCK4 USB Wireless Adapator mapping
Close #1924
2017-05-02 10:07:17 +02:00
Jonathan Li
29eed182c2 pcsx2: Remove unnecessary aMax/aMin macros 2017-04-30 23:41:19 +01:00
Jonathan Li
1d364f1991 spu2-x: Remove outdated website text file 2017-04-30 23:31:08 +01:00
Gregory Hainaut
0d3f02ee34 svu: cast variable to int to avoid unsigned vs int comparison 2017-04-30 21:20:23 +02:00
Gregory Hainaut
3a04e3d003 gif: avoid (wrong) uninitialized warning
My guess is that GCC reports an warning because of the default case.

I don't think we support yet __builtin_unreachable on Linux
Nevertheless it will still be an issue in non-release build
2017-04-30 21:20:23 +02:00
Gregory Hainaut
dc00af8829 psx|spu2x|gsdx: shift negative value is undefined in C standard
Instead does the negation after the shift

v2: assert shift <= 15 in clamp_mix
2017-04-30 21:20:23 +02:00
Gregory Hainaut
9d99889703 pcsx2: remove unused variable 2017-04-30 21:20:23 +02:00
Gregory Hainaut
627212290e spu2x: comment unused variable 2017-04-30 21:20:23 +02:00
Gregory Hainaut
d9e43b5d8d gsdx egl: rewrite the EGL implementation
Split code in 2 parts
* Base class (GSWndEGL) that implement the core EGL and GL context
* Derived class (GSWndEGL_X11/GSWndEGL_WL) that implement the backend to handle native resources

Note: Most backend code is only useful for GSopen1/PS1 mode. GSopen2 only requires
the AttachNativeWindow implementation

Code is based around EGL_EXT_platform extension that allow to select the platform at runtime.
Note: I think the extension was integrated in EGL 1.5

The X11 backend was mostly converted to XCB
The wayland backend is only a placeholder for future code

I don't know if MS windows is/could be supported with EGL_EXT_platform API

Code validated on Mesa. Proprietary drivers aren't yet tested.
2017-04-30 14:04:24 +02:00
Gregory Hainaut
98a5492e37 Revert "pcsx2: call XInitThreads at init"
This reverts commit 99180f5afb.

Unfortunately Mint/Arch got segmentation fault in Xlib mutex locking...
Sadly Xlib will be back to thread-unsafe mode.

I'm cooking another solution based on EGL
2017-04-30 12:49:52 +02:00
Jonathan Li
a3b3b4f657 gsdx: Fix uptr size on Windows x64 build 2017-04-29 23:22:02 +01:00
Gregory Hainaut
413d1828eb gsdx: call XInitThread on Linux dump replay 2017-04-29 13:05:28 +02:00
Gregory Hainaut
4b5aabe6b0 onepad: move an ok button to the right corner 2017-04-28 23:24:49 +02:00
Gregory Hainaut
5b4c948e43 onepad: clean the gamepad/joystick interface
Remove return of empty function
Use final/override qualifier
Remove useless virtual

Thanks turtleli for the advices
2017-04-28 11:27:19 +02:00
Gregory Hainaut
f91faacc53 onepad: remove autorepeat deadcode
a9af374 onepad: don't touch autorepeat setup
2017-04-28 11:27:19 +02:00
Gregory Hainaut
e408b3ab02 onepad: replace pthred/queue with std::mutex/mt_queue
v2: based on turtleli feedback
rename m_q into m_queue
add includes
2017-04-28 11:27:19 +02:00
Gregory Hainaut
7d771229e2 onepad: add a GUI list box to select joypad based on UID
Note: remove the cancel management of the small modal
It is easier, it doesn't always work anyway
2017-04-28 11:27:19 +02:00
Gregory Hainaut
31d8142a0d onepad: plug uid instead of the index
ini must be recreated
2017-04-28 11:27:19 +02:00
Gregory Hainaut
3cff588eff onepad: add an unique identifier 2017-04-28 11:27:19 +02:00
Gregory Hainaut
a50766384b onepad: use range loop for hash iteration 2017-04-28 11:27:19 +02:00
Gregory Hainaut
c183de5662 onepad: add hot-plugging support
Note: pad to player mapping is done later

v2: remove the useless print
2017-04-28 11:27:19 +02:00
Gregory Hainaut
1b369520ed onepad: drop the pad if an error was detected
v2:
init m_no_error in gamepad constructor
2017-04-28 11:27:19 +02:00
Gregory Hainaut
2e09c7faf3 onepad: Move init/destroy code to constructor/destructor
* prefix remaining member with m_
* Use array for m_effect_id
* Properly Destroy/Close Haptic/Joystick/Game Controller
 (except on older SDL versions which are buggy)
2017-04-28 11:27:19 +02:00
Gregory Hainaut
4b24cfa5ea onepad: use external resource to support more joysticks 2017-04-28 11:27:19 +02:00
Gregory Hainaut
9da843c994 onepad: plug SDL2 API game controller 2017-04-28 11:27:19 +02:00
Gregory Hainaut
35b162adbf onepad: move enum first in .h file
It would avoid future compilation issue
2017-04-28 11:27:19 +02:00
Gregory Hainaut
94e19ac903 onepad: remove SDL1 manual detection code path 2017-04-28 11:27:19 +02:00
Gregory Hainaut
61182249f0 onepad: drop hacks/options for DualShock3
SDL2 will take care of correct detection
2017-04-28 11:27:19 +02:00
Gregory Hainaut
5c537fdbe3 onepad: properly indent comments
Clang-format doesn't like the double *
2017-04-28 11:27:19 +02:00
Gregory Hainaut
9c7e9cc6f2 onepad: use range loop and vector of unique_ptr to manage the joystick 2017-04-28 11:27:19 +02:00
Gregory Hainaut
873ae6717e onepad: add a game controller db resource
It will be used later by the SDL2 API
2017-04-28 11:27:19 +02:00
Gregory Hainaut
d3a3a8528f cmake: reindent onepad/CMakeLists.txt with space 2017-04-28 11:27:19 +02:00
Gregory Hainaut
41990a6402 cmake: create the macro add_custom_glib_res to handle resources 2017-04-28 11:27:19 +02:00
Jonathan Li
ffcac1bc3b spu2-x:xaudio2: Comment stuff to investigate 2017-04-28 10:12:50 +02:00
Jonathan Li
adb92ce349 spu2-x:xaudio2: Use unique_ptr
Also remove the unused constructor parameter from StreamingVoice and
rename the variables slightly.
2017-04-28 10:12:50 +02:00
Jonathan Li
14bd5a4f59 spu2-x:xaudio2: Improve cleanup after an exception
Initialise pointers to nullptr, move the LoadLibrary code into the try
block (where it should have been in the first place), and use Close()
to cleanup if an exception occurs. Also initialise/destroy the critical
section in the base class constructor/destructor.

This should avoid resource leaks if an exception occurs.
2017-04-28 10:12:50 +02:00
Jonathan Li
6c512c1973 spu2-x:xaudio2: Simplify XAudio2Error exception
Instead of creating a separate message function, just reuse what() and
pass the string to the std::runtime_error constructor instead.

Also catch a reference to a std::runtime_error instead, since it'll
allow for simpler cleanup.
2017-04-28 10:12:50 +02:00
Jonathan Li
3cb0e3bb13 spu2-x: Combine XAudio2 2.7/2.8+ code into an inline file
Avoids code duplication, though there's now messy ifdefs...
2017-04-28 10:12:50 +02:00
lightningterror
303564fd70 GSdx: Move/add GT4 CRC
Moved a CRC hack to Aggressive that can cause or fix VRAM and RAM spikes.
This way people can switch between each config if they experience problems with either.
Varies on userconfig , game version and maybe hardware.

Added missing CRC game version for GT4 pal.

Note: The issue might be the same on GT3 and GTConcept , the code might
need to be removed for those games as well.
2017-04-27 17:46:58 +02:00
Gregory Hainaut
99180f5afb pcsx2: call XInitThreads at init
X11 isn't thread safe by default. It make sense in 1990 but it is ugly nowadays.

The trick is that is must called before any X11 function. So the only
safe place is at the start of the main.  Pcsx2App::OnInit() is the
sooner that I've found.
2017-04-26 21:23:31 +02:00
Kazushim
201c9cd2a4 zh_CN mo files update 2017-04-23 16:00:19 +02:00
Kazushim
07df39c208 zh_CN po files update 2017-04-23 16:00:19 +02:00
Gregory Hainaut
b2a2a3ace1 cmake: update "check these lib..." strings
wx 3.10 is the minimum
sdl2 too for onepad
a recent glew/gtk2 version is enough
2017-04-23 10:59:33 +02:00
Gregory Hainaut
bb35261aca gsdx: don't request a depth buffer on the window
Code directly uses depth buffer attached to a frame buffer
2017-04-23 10:59:33 +02:00
Gregory Hainaut
2155f65478 gsdx: fix EGL build 2017-04-23 10:59:33 +02:00
Jonathan Li
16904d580d pcsx2: Fix booting ISO from commandline 2017-04-21 22:45:19 +01:00
refractionpcsx2
cca6e1dcae Merge pull request #1896 from ssakash/counterstuff
PCSX2-Counters: Detect DVD variant videomodes
2017-04-21 10:26:58 +01:00
FlatOutPS2
47c2f0a289 GSdx: Remove Dirge Of Cerberus CRC hack
Hack was used to remove garbage data rectangles from popping up on screen when objects and characters were added to or removed from the world.
This issue is now being handled by OI_DoubleHalfClear in GSRendererHW.cpp, so the hack is no longe necessary and has been removed.
2017-04-21 11:13:27 +02:00
FlatOutPS2
7392f52184 GSdx: Move Resident Evil 4 and The Getaway series CRC hacks
Moves Resident Evil 4 hack to Aggressive level as it is no longer
required to fix any issues, but does offer a decent speed boost.

Moves The Getaway & The Getaway Black Monday CRC hack to Full level, as the issue can be resolved
when using the OpenGL Hardware renderer.
2017-04-21 11:13:27 +02:00
Jonathan Li
620b9b3300 pcsx2: Avoid clearing current ISO when not autorunning with an ISO 2017-04-21 10:54:16 +02:00
Jonathan Li
92b1f3cf6d pcsx2: Fix "nodisc" commandline option
It was present in the help text but didn't actually do anything.
2017-04-21 10:54:16 +02:00
Jonathan Li
088aa2ffdc pcsx2: Fix autorun when commandline and current CDVD options differ
Fixes an issue where the game will either boot the wrong CDVD source or
fail to boot if the current CDVD option doesn't match the option
specified in the command line.
2017-04-21 10:54:16 +02:00
Gregory Hainaut
688f05ff26 gsdx sw: always enable the gs memory wrapping emulation 2017-04-21 10:53:05 +02:00
Gregory Hainaut
c115a4cf76 Merge branch 'greg/onepad-legacy' 2017-04-19 19:02:49 +02:00
Gregory Hainaut
ef3435441f onepad: create a legacy version for SDL1
The legacy version is the version 1.3

The new version is the version 2.0. It would be based on SDL2 only

Distribution information.
If you link wxWidget with SDL, you will need to be sure it is SDL2 or upgrade.

You can build wxWidget with SDL2 with the following trick

export SDL_CONFIG=/usr/bin/sdl2-config
./configure --with-sdl .....
2017-04-19 19:02:36 +02:00
Akash
73a879caad PCSX2-Counters: Detect DVD variant videomodes
Improved the video mode detection code by also detecting the DVD variant video modes of NTSC & PAL, PSX mode actually make use of these specific variants, as well as the BIOS. Previously, I just had them as a single bios video mode due to laziness. (I know, my bad)

After further research, it seems that these DVD variant modes have their own individual VSync timing values similar to the standard NTSC & PAL video modes, dealing with those timer codes might be essential in getting timing accuracy of the PSX mode games. (I kept it to default NTSC/PAL values for now, interested people can mess with it later)

I had planned to do this before but there some were concerns that two different video modes make use of 0x73 gate in SetGsCrt, which was rather weird (how the heck could two video modes be used in a single param value?)

 0x73- DVDPAL        ( 720 x  480 @ ??.???Hz)
 0x73- DVD480P       ( 720 x  480 @ ??.???Hz)

Hence, we had decided to use the CMOD bit from SMODE1 (AKA color subcarrier frequency) to detect whether it's an analog or digital video mode and update the necessary timing values but seems like it's no longer necessary, after further discussions from some PS2 developers, we've come to the conclusion that only DVDPAL is possible via 0x73 in SetGsCrt. (So I assume the DVD480p init possibility was fake info from Blue and those other GSM guys who were reverse engineering the PS2)
2017-04-19 21:49:43 +05:30
Kingcom
92aa270062 Align functions to up to 16 bytes in the function scanner 2017-04-19 08:34:03 +02:00
Jonathan Li
d23caa9b72 ci: Initialise git submodules in AppVeyor 2017-04-17 23:03:21 +01:00
Kingcom
4b9d409628 Make memory view row size configurable, store it and "Align window to row size" in settings 2017-04-15 22:48:33 +01:00
Gregory Hainaut
a378e307b3 common: drop pthread TLS emulation
thread_local is supported by all C++11 compliant compiler

Keep a way to disable TLS for shared object to avoid issue of DTV
slot shortage.
2017-04-14 17:18:20 +02:00
KousukeItsagame
11aebe465f common: Replace __threadlocal with C++11 thread_local 2017-04-13 19:59:00 +02:00
Gregory Hainaut
3b97137ccf linux: mesa full steam ahead !
Enable multithread openGL
* Might be slower until all improvements are merged to mesa

Disable error validation
* Not yet merged
2017-04-13 18:04:53 +02:00
Gregory Hainaut
24eb1627e5 gsdx: add GStempdir wrapper to get a tempory directory
Allow to use Linux compatible code for OpenCL
2017-04-12 18:39:11 +02:00
Gregory Hainaut
2b30e7880e gsdx: add GSmkdir for windows based on CreateDirectory
v2: use nullptr
2017-04-12 18:39:11 +02:00
Gregory Hainaut
2d0a61fc8d gsdx ogl: use load resource to load shader
* Windows behavior must be checked
* remove glsl_source.h

v2: fix missing include
Big thanks to Turtleli

v3:
fix indentation in gsdx-res.xml
add dependency in cmake
remove old res/glsl/fxaa.fx symlink
add tfx.cl for OpenCL support on Linux

v4, v5
fix cmake indentation
2017-04-12 18:09:06 +02:00
Gregory Hainaut
38c4f5b6e7 gsdx: always NULL terminate resources on Windows
It is done automatically on Linux. Strings are much
better with this NULL char ;)

All credits go to turtleli

v2: increase resize instead of push_back NULL char
2017-04-12 18:09:06 +02:00
Gregory Hainaut
ebae8b65f8 gsdx linux: implement GSdxApp::LoadResource based on g_resource
v2: use early return to reduce code/branch complexity
v3: use nullptr
2017-04-12 18:09:06 +02:00
Gregory Hainaut
1cbade511d gsdx: use vector of char as shader container
It will avoid various char cast on Linux.

v2:
remove cast on windows file and std prefix shader vector
v3:
forget to remove some char cast
2017-04-12 18:09:06 +02:00
Jonathan Li
cf131b51a2 cdvdgigaherz: Avoid LL after date in library name string 2017-04-11 00:31:14 +01:00
Gregory Hainaut
e91194994f gsdx ogl: remove useless glx/egl context print 2017-04-09 12:59:08 +02:00
Jonathan Li
9fa053cd88 pcsx2: Remove unused variables
I'm not sure these variables were ever used.
2017-04-09 00:44:16 +01:00
Gregory Hainaut
8555b9b5ec remove an old merge conflict file (that souldn't have been commited) 2017-04-08 14:40:55 +02:00
Gregory Hainaut
dad4ab1980 gsdx ogl: Deleted objects are automatically unbound/unmapped 2017-04-08 14:40:54 +02:00
Gregory Hainaut
12d2c6be56 gsdx linux gui: align gui with wndows (tooltip + checkbox)
add checkboxes for the 2 "new" hacks
    Wrap gs memory & merge postprocessing sprite

add tooltip for OpenGL options

v2: based on turtleli feedback
use gtk_scrolled_window_set_propagate_natural_height on GTK 3.22+
use the nicer GTK_CHECK_VERSION macro
2017-04-07 23:06:29 +02:00
Gregory Hainaut
83d83b9add gsdx linux gui: reduce height on/for small screen
* Remove the logo
* add a scroll on the osd panel
2017-04-07 23:06:29 +02:00
lightningterror
820919c0a9 GSdx ogl sw: Move GL_ARB_copy_image to optional
Move GL_ARB_copy_image to optional for OpenGL SW render.
It will allow Ivy Bridge to work with OpenGL SW as it's not required.

Sandy Bridge is not yet tested , would be nice if someone could test.
2017-04-06 18:14:59 +02:00
trostboot
2940320930 GameDB: Add GT3 memcard filter
Adds base GT3 serial to other release as per #1878
2017-04-06 15:09:56 +01:00
Gregory Hainaut
ad63c13cd1 gsdx sw: Update comment on the GCC bug
Add link to bugzilla. Bug will be fixed in GCC7

Close #1881
2017-04-04 19:04:21 +02:00
Gregory Hainaut
5b91dc45e0 gsdx ogl: reduce requirement for SW renderer
Clip Control is only used for the HW renderer.

It will help Nvidia DX10 GPU on Windows. Potentially old AMD GPU too.
Unfortunately Ivy bridge still misses texture copy

Note on Linux, you can use the free Mesa driver.

Otherwise, it is time to save money for a future upgrade :)
2017-04-04 18:37:26 +02:00
Gregory Hainaut
df32564bef gsdx: workaround AVX2 generated code by GCC
See commit for the full details.

v2: use a direct access to the union field instead of extract32
It gives us both optimal and working code.
2017-04-01 14:05:40 +02:00
FlatOutPS2
82405982f7 GSdx: Add merge sprite hack to GSdx hacks dialog
Adds merge sprite hack to GSDx hacks dialog

And ports merge sprite hack to Direct3D renderers.
Special thanks to my keyboards Ctrl, c and v buttons for all their hard
work in porting this hack.
2017-04-01 11:16:25 +02:00
FlatOutPS2
557b672232 GSdx: Unscale Point and Line Direct3D11 port
Ports the "Unscale Point and Line" hack to the Direct3D11 Hardware renderer.

And enables the "Unscale Point and Line" hack for Custom Resolutions with Direct3D11 and OpenGL.
2017-04-01 11:16:25 +02:00
FlatOutPS2
117c249595 GSdx: Add Windows GUI for split texture filtering option
Adds Windows GUI elements of the split texture filtering options.

Bilinear Texture Filtering is moved to the top section of the main GSdx window,
and Trilinear Filtering is moved to Hacks.
2017-04-01 11:16:25 +02:00
FlatOutPS2
cb0a430aa4 GSdx: Shader & OSD window update
Adds Texture Filtering Of Display option to the Shader dialog window Windows UI.

Updates the layouts of the Shader and OSD dialog windows to more closely resemble the Linux GUI.
2017-04-01 11:16:25 +02:00
FlatOutPS2
df5278df72 GSdx: Main & Hacks window update
Reorganizes Hacks dialog window.

Adds UI elements for the Memory Wrapping and HPO v2/Special commits

Adds advanced OpenGL functions "Geometry Shader" and "Image Load Store" to the Windows UI.

Renames "Configure Hacks" to "Advanced Settings and Hacks", to more closely resemble the Linux GUI.
2017-04-01 11:16:25 +02:00
FlatOutPS2
975441dfe9 GSdx: Direct3D port of HPO special/V2
Adds a port of the new Half-pixel Offset options for the Direct3D
Hardware renderers.
2017-04-01 11:16:25 +02:00
FlatOutPS2
2d591182c4 GSdx: Memory Wrapping Windows port
Adds GS Memory Wrapping hack to Windows. Enabling the hack will fix cut-off cutscenes in Wallace & Gromit: The Curse of the Were-Rabbit and Thrillville.
2017-04-01 11:16:25 +02:00
Gregory Hainaut
41fb11d846 gsdx: cpu detection take 3! Don't use 64 bits type in Xbyak::Cpu
Recent GCC uses SSE4/AVX code to optimize the 64 bits operation.
It is bad idea as it would generate an illegal instruction on
older CPU.
2017-04-01 11:14:18 +02:00
FlatOutPS2
bcc0160103 GameIndex: minor update
Update compatibility info for 2 games based on compatibility reports I
made earlier.

Fixes title for the PAL and NTSC-U releases of Tokyo Xtreme Racer Drift 2.

And adds a fix for Sled Storm(confirmed to be required for both the PAL(SLES-50683) and NTSC-U(SLUS-20363) versions).
2017-03-31 23:50:35 +01:00
FlatOutPS2
4c84a99f68 PCSX2: Console log widescreen patch folder message improvement
Improves the widescreen patch message when loading from the cheats_ws
folder instead of the archive.
2017-03-31 23:50:35 +01:00
FlatOutPS2
b4001e65e7 PCSX2: Console log plugin message update
Remove full path from every plugin binding and only add it to the
preceding "Loading Plugins..." line.
Instead the revision date and version number are printed for each plugin
to make it easier to identify issues with plugin versions.
2017-03-31 23:50:35 +01:00
FlatOutPS2
82ad1392ef GSdx: Move Ace Combat 4 CRC hack to aggressive level and fix spelling issues
Ace Combat 4 CRC hack removes clouds for a good speed boost, which removes both 3D clouds(invisible with Hardware renderers, but cause slowdown) and 2D background clouds.
Removes blur from player airplane.
This hack also removes rockets, shows explosions(invisible without CRC hack) as garbage data, causes flickering issues with the HUD, and in some (night) missions removes the HUD altogether.
The CRC hack has been moved to the aggressive level.

Aggressive is misspeled several times in the file, this has been adressed.
2017-03-31 23:36:35 +02:00
Jonathan Li
815ac8be04 gsdx:cmake: Fix logo dependency issue
Changes to the dependencies of the generated logo files did not trigger
a rebuild of the files. Use add_custom_command instead of
execute_process so build dependencies can be specified.

Also prevent the generated files from polluting the source directory.
2017-03-30 22:55:34 +01:00
Jonathan Li
ba94643f0f gsdx:linux: Fix missing logo on some Linux distros
The pixdata format loader has been removed from recent versions of
gdk2-pixbuf, so the logo doesn't load. Avoid preprocessing the data and
leave the logo as an embedded bitmap file.
2017-03-30 17:45:49 +01:00
Jonathan Li
ae73356ecf gsdx: Avoid const strings in header file
This prevents each .cpp file that included stdafx.h (IOW everything)
from having its own copy of the strings.
2017-03-30 01:10:48 +01:00
Akash
38c2de3ae3 GSdx-PCRTC: Minor modification to NTSC saturation
Allow the output circuit saturation to take place at cases where one of the output circuit is enabled with frame mode rendering, I'm not sure it would be safe to allow saturations when both of the output circuits are enabled with frame mode rendering. Unlike field mode rendering, frame mode doesn't use identical rectangles at same co-ordinates for output in two alternating fields and potentially they could use a much bigger output size when both of the output circuits are enabled and are separated without any intersection. So let's limit the saturation to only the cases where we detect a single output circuit for frame mode rendering.

Fixes a regression in Devil May Cry 3 and Sky Gunner.
2017-03-29 19:37:44 +02:00
willkuer
a18d624bcb gsdx: Add an automatic CRC hack level
If a user switches renderer they also have to remember to change the CRC
hack level for the best user experience with the selected renderer.

This commit adds a new automatic CRC level that autoselects the
recommended CRC level for the selected renderer, so that a user doesn't
have to make the change manually.

coauthor: turtleli
2017-03-28 23:05:24 +02:00
willkuer
439472d4f8 gsdx: Add template version of GetConfig
It allows static_casts to be avoided for enum classes
2017-03-28 23:05:24 +02:00
Jonathan Li
85ddf69042 gsdx: Improve OpenGL HW renderer checks
If OpenGL software is the saved ini renderer and F9 is pressed to toggle
to the hardware renderer, depth emulation will be disabled. This fixes
that issue.
2017-03-28 23:05:24 +02:00
Jonathan Li
a5282daf91 gsdx: Store the current renderer in GSdxApp 2017-03-28 23:05:24 +02:00
Jonathan Li
94f2ad9263 gsdx: Move renderer config loading from GSOpen2 to _GSOpen
Some duplicate logic is avoided this way.
2017-03-28 23:05:24 +02:00
lightningterror
6977658443 GSdx ogl: SSO Workaround for AMD buggy drivers (#1858)
GSdx ogl: SSO Workaround for AMD buggy drivers

All 2017 drivers are now blacklisted.
The BSOD/crash issue is still there so don't set Blending Accuracy to None!
Shortened the message in the console making it more appealing.
2017-03-28 23:02:19 +02:00
orbea
2aa33e2875 Add crc hack for project metafalica
Closes https://github.com/PCSX2/pcsx2/issues/1762
2017-03-27 12:51:43 +02:00
pgert
b123b6df89 Swedish translation update. 2017-03-27 12:51:10 +02:00
Jonathan Li
eb8ede38cf lilypad: Use l length modifier for wide character string
w is Windows specific. Fixes a gcc and clang warning.
2017-03-23 22:35:49 +00:00
Jonathan Li
f1eff358da gsdx:windows: Fix console output when replaying dumps 2017-03-23 01:33:35 +00:00
Jonathan Li
cf4194fef7 pcsx2: Remove unused Windows files
There's actually more (old cheats and patch browser?), but I don't know
whether they'd be useful so I'll leave those alone for now.
2017-03-22 18:15:07 +00:00
Jonathan Li
f174d71ac7 gsdx: Fix vsnprintf usage in format function
-1 is only returned when there is an encoding error, and the va_list
argument is indeterminate after being passed to vsnprintf.

Use the return value to determine the buffer length, and call va_end and
then va_start before vsnprintf is called again.
2017-03-21 23:21:26 +00:00
Jonathan Li
ae2e8469b4 gsdx: Remove ancient codeblocks file 2017-03-21 23:21:26 +00:00
Jonathan Li
4fff0e952c 3rdparty:freetype: Use zlib in 3rdparty instead of internal version
Reduces the GSdx DLL size slightly (14kb with VS2017)
2017-03-21 23:21:26 +00:00
Jonathan Li
67d9436f22 gsdx: Remove unused and incomplete GSDeviceSW 2017-03-21 23:21:26 +00:00
Jonathan Li
178f31f4c6 pcsx2:mainframe: Remove some comments and unused prototypes
The flag comment was wrong, the rest are mostly old leftovers/TODOs.
2017-03-21 23:21:20 +00:00
Jonathan Li
e344578a01 pcsx2: Remove unused MenuId_Sys_Restart and related code 2017-03-21 19:06:34 +00:00
Jonathan Li
1837d43d96 gui: Remove unused/incomplete panels/dialogs
Also rearrange the CMakeLists.txt slightly so things are easier to find
and to remove a duplicate entry.
2017-03-21 00:10:45 +00:00
Jonathan Li
fb174b482f pcsx2: Remove unused/incomplete stuck/wait for thread dialogs 2017-03-21 00:10:45 +00:00
Jonathan Li
448ca97d93 gsdx: Avoid "using namespace std" in spsc queue 2017-03-21 00:10:35 +00:00
Gregory Hainaut
9865270e68 gsdx: split GSVector.h into smaller files 2017-03-19 13:50:13 +01:00
FlatOutPS2
f3a89f59e4 LilyPad: General fixes and UI improvements
Some general fixes and UI improvements.

Adds Reset Configuration to Input/Force Feedback configuration screens that resets the configuration for the selected control(s).

Adds Restore Defaults button to the General tab that deletes all LilyPad
Settings and bindings and resets to the default settings.

Adds double-click functionality to the PAD list on the General tab,
which will now send the user straight to the corresponding PAD tab.
2017-03-16 22:43:53 +00:00
FlatOutPS2
84a8fdadc5 LilyPad: Fix F4 button (PCSX2 FrameLimiter toggle) getting blocked
Fixes issue where losing focus after pressing alt-tab would end up
blocking the F4 button (which is used for turning the PCSX2 FrameLimiter
on and off).

Fixes: https://github.com/PCSX2/pcsx2/issues/1797
2017-03-16 22:43:53 +00:00
FlatOutPS2
bd45bab34a LilyPad: Display a warning when all controls are inactive
Displays a console warning if no controls/controllers are active and the
emulation cannot be controlled.
2017-03-16 22:43:53 +00:00
FlatOutPS2
2ea078beb5 LilyPad: Add Quick Setup
Adds quick setup that allows for quickly setting up all the default pad
buttons without having to click on each one separately.

Hides special inputs(inputs that aren't available on a PS(2) controller) by default.
2017-03-16 22:43:53 +00:00
FlatOutPS2
3075ec2203 LilyPad: Improve analog/pressure sensitive detection
Improves detection of analog or pressure sensitive support, which previously made some games unable to detect the correct mode.
2017-03-16 22:43:53 +00:00
Gregory Hainaut
a3efc77255 gsdx ogl: use an HLE shader to avoid upscaling line in ICO
ICO uses a depth of field effect for the fog. Depth is extracted
into the alpha channel of a texture. And then used as blending factor.
You need a 1:1 texture/pixel mapping otherwise you will line at boundaries.

In order to extract the DoF, ICO moves the depth buffer around the GS
memory. Memory moves are implemented in the not-scaled world. It means
that we can't have the above 1:1 ratio. And we don't know anymore that
data are coming from the current depth buffer.

The solution: I reused an HLE channel shader to read the depth buffer directly.
This way I have the guarantee that pixel/depth are aligned.

Close #1816
2017-03-16 08:27:12 +01:00
Gregory Hainaut
1a768ca438 gsdx sw: sync thread if current target pages are already used by input texture
Otherwise you have a write before read typical race condition. It works
most of the time because textures are stored in temporary buffers (aka
texture cache). So the race condition requires texture invalidation in the mix.

I hope the perf impact will be small enough.

Fix #1691
Blood Will Tell: gray scale effect description

Frame is renderer in 0x700
Sync 0x700 (RT will be used as input)

Foreach page of frame
    // The missing Sync was this one. You can't copy new data to 0x2800
    // until you finish the rendering that use 0x2800 as input texture
    // (AKA end of this foreach loop)
    Sync 0x2800 (not the first iteration, texture will be used as a RT)
    Copy page from 0x700+offset to 0x2800

    Sync 0x2800 (RT will be used as input)
    Render Effect line1 from 0x2800 to 0x700
2017-03-15 18:30:46 +01:00
Jonathan Li
559f64ee4f pcsx2: Remove VS2013 ifdefs 2017-03-13 23:57:28 +00:00
Jonathan Li
c498833c27 gsdx: Remove VS2013 stuff 2017-03-13 23:57:15 +00:00
Gregory Hainaut
0af80b7c86 gsdx: restore the order of the texture filtering option
It was modified by mistake with previous filtering refactoring
2017-03-13 22:55:47 +01:00
Gregory Hainaut
4227a5bb59 debugger: add eu bios info 2017-03-13 19:41:19 +01:00
Gregory Hainaut
84222a9746 gamedb: wrong entry (duplicated)
Close #915
2017-03-13 19:24:40 +01:00
Gregory Hainaut
0e2d61d422 i10n: add nb_NO mo files 2017-03-12 23:36:59 +01:00
Jonathan Li
58df02e97f ci|mscompile: Remove VS2013 configurations
VS2017 hasn't been added to mscompile since a VC150COMNTOOLS environment
variable isn't set when VS2017 is installed.
2017-03-12 16:29:55 +00:00
Jonathan Li
5c1023a332 spu2-x:windows: Replace GUIDFromString with IIDFromString
Does the same thing.
2017-03-12 00:04:09 +00:00
DandelionSprout
4889e9783f Norwegian translation update (#1850)
i10n: update Norwegian po files
2017-03-11 17:41:55 +01:00
Akash
f423cf73c4 GSdx: Fix Alpha test value initialization
Alpha test should only be disabled when writes to all of the alpha bits in the Framebuffer are masked. Fixes a regression in Dragon Ball Z: Budokai 3 scouter image rendering.
2017-03-11 17:40:28 +01:00
Gregory Hainaut
7d3c850813 gsdx ogl: improve ST/Q precision
When a float overflow is detected, geometry shader is disabled. And ST/Q is done on the CPU

It will help
Issue 551
Issue 1684
2017-03-11 00:24:38 +01:00
Gregory Hainaut
6d6ed1a205 gsdx sw: do const q division in ConvertVertexBuffer
It allow to do the division before the size multiplication
It avoid a float overflow if T is too big.
Old behavior: (T * size) / Q
New behavior: (T / Q) * size

Performance Note:
* Rcp was replaced by a slow division (more accurate)
* At least we avoid a 2nd loop on the vertex buffer

It helps on Pro Soccer Club and Galerians Ash rendering

Tric Note:
SPRITE must be handled differently because the 'q' of first vertex could
be invalid
2017-03-10 20:45:14 +01:00
Gregory Hainaut
611239db5c gsdx: handle float overflow on Q in vertex trace
Replace the fast reciprocal with a slower division when we detect a too big Q value.

Improve #551, #1684
2017-03-10 20:45:14 +01:00
Gregory Hainaut
f862f5be03 gsdx sw: use accurate division for the C reference implementation
Speed isn't important here. It would allow to compare the rendering with
the JIT implementation. If it is necessary we could an option for the JIT.
2017-03-10 20:45:14 +01:00
Gregory Hainaut
b54a824abd gsdx: split texture filtering option
Bilinear applies to all renderer
* Common code done in GSVertexTrace
* Extend it with forced but sprite (trade-off between linear/upscale glitches)
* Linux GUI option was moved at the top with the renderer selection

Trilinear is moved to OGL hack

close #1837

Thanks to Flatout for the review and feedback.
It will take care to update the Window GUI :)
2017-03-10 18:05:34 +01:00
Akash
f443804b35 PCSX2-Git: Move the Q&A section content
Removed the superfluous table and moved the Appveyor, Travis CI and Coverity status boxes to the top to make it easily noticeable.
2017-03-10 00:00:06 +01:00
Akash
b1de70c526 PCSX2-Git: Move screenshots to a new section
The previous placement of the screenshots were inconsistent and they were just arbitrarily placed in different sections of the ReadMe file, moving them to a separate "Screenshot" section to make them look more organized.
2017-03-10 00:00:06 +01:00
bositman
05a186af82 Add new images 2/2 2017-03-10 00:00:06 +01:00
bositman
b538c8fe75 Removing broken images - Adding new ones 1/2
Because changing them with one commit fails for some magical reason -_-
2017-03-10 00:00:06 +01:00
Jonathan Li
ec7781f1f9 windows: Fix VS project file issues
Fixes "project out of date" issue for wx_config on VS2017.
Fixes whole program optimisation possibly not being applied on release
builds for USBqemu (it may have been applied, but I can't actually tell,
and now it at least shows properly in the VS property editor).
2017-03-07 19:47:54 +00:00
Gregory Hainaut
91f805675b gsdx: dump xyoffset register 2017-03-05 22:16:01 +01:00
Gregory Hainaut
0a5f796c33 gsdx sw: missing texture due to wrong optimization fix
Typical bug, missing/wrong texture on the SW renderer but working fine on the HW renderer

Debugged on ATV Quad Power Racing 2 but I suspect couple of game are impacted

Bug description:
GSdx flatten the Q value of sprite. So m_vt.m_eq.q is true when Q(2N+1) are the same.
Q(2N) values could be random. The fix replaces Q0 by Q1 for the uniform Q value.
2017-03-05 20:27:19 +01:00
Gregory Hainaut
438fbf31cf gsdx sw: rcp introduce bad rounding on the grandient
Division is slower but more accurate. Fix rendering issue on Xenosaga (batte slot)/Jak3 (skin color)

Coauthor:pseudonym

Fix issue #1769
2017-03-05 10:53:07 +01:00
Gregory Hainaut
ae8aa358e4 gsdx: move window creation before renderer/device setup 2017-02-26 19:09:16 +01:00
Gregory Hainaut
da2bf4e366 gsdx: reduce the complexity on window creation
Improve code sharing between OS
Use vector to handle priority
Throw in GSWndDX create in case of error
2017-02-26 19:09:16 +01:00
Gregory Hainaut
9ff385f6f3 gsdx: use shared_ptr instead of raw GSWnd* 2017-02-26 19:09:16 +01:00
Gregory Hainaut
714fcaaadd gsdx ogl: move the validation of the gl context in the window 2017-02-26 19:09:16 +01:00
Gregory Hainaut
b3836c58d2 gsdx ogl: properly plug the new HPO option 2017-02-26 19:04:00 +01:00
Gregory Hainaut
646c02a5e2 gsdx linux: update GUI based on previous commit 2017-02-26 19:04:00 +01:00
woj1993
4a6a3af418 gsdx windows: update gui to add a HPO v2 checkbox
Squash done by greg

v2: update tooltip
2017-02-26 19:04:00 +01:00
Akash
8f02052232 Plugin-Function: Add OSD for incomplete/corrupt savestates
Previously, the OSD neglected to mention any sort of message when the savestate load is failed, the following patch now also prints a message on OSD when detecting such cases of loading an incomplete/corrupt savestate.
2017-02-24 19:21:37 +01:00
refractionpcsx2
489a89ae8b Merge pull request #1835 from volodymyrkutsenko/vu0_cfc2_tpc_adjustment
VU0: fix for Street Fighter EX3 and R: Racing Evolution
2017-02-23 11:39:13 +00:00
Volodymyr Kutsenko
6862106dee VU0: added a special case to the CFC2 instruction if it copies the value
from the TPC register (fixes Street Fighter EX3 #954 and R Racing
Evolution the invisible cars issue)
2017-02-23 04:38:26 +02:00
uyjulian
607e01690c Make fps2bios compilable with latest PS2 toolchain 2017-02-21 10:55:18 +01:00
Akash
500d2e076d GSdx-PCRTC: Apply saturation only for field mode
Previously, the NTSC saturation was also applied for double scan mode (Interlaced and Frame) where the developers send double the height to the DISP registers, saturation shouldn't be performed at such cases as the developers could send a value of 780 while the real size of the output would be 390 due to double scan mode. Doing the saturation later after identifying the real size also seems a bit counter-intuitive as we haven't discovered any cases where double scan games require the NTSC saturation hack. So let's just apply the saturation only for Interlaced (Field) Mode and omit the saturation step for other modes.
2017-02-21 10:54:28 +01:00
Akash
17b33afd64 GSdx-PCRTC: Move hacks away from GetDisplayRect()
Isolate all the hacks into a separate subroutine and properly document about them, should make it easier for people to understand the display rectangle setup code, the hacks were totally messing up the readability of the function earlier.
2017-02-21 10:54:28 +01:00
Akash
319b3dabdf GSdx-Windows: Automatic CRC hack level selection
Default to "Partial" CRC hack level when the GPU's best renderer is determined as the OpenGL hardware renderer.
2017-02-21 10:54:03 +01:00
Akash
ff89619b09 GSdx: Add an Enumeration for CRC Hack level 2017-02-21 10:54:03 +01:00
Gregory Hainaut
726f9d5312 gsdx ogl: improve error message on windows
* Common function
* Print an error id
* Don't exit on bad setpixelformat (it is illegal to call it twice)
2017-02-18 22:25:27 +01:00
Gregory Hainaut
f3adf4bf57 gsdx ogl: texture barrier is optional too 2017-02-18 20:11:56 +01:00
Gregory Hainaut
193d9f838b gsdx ogl: mark 2 DSA functions as optional 2017-02-18 19:44:17 +01:00
Jonathan Li
1ff6eec1e3 isoreader:gzip: Avoid shallow copying z_stream objects
This prevents the internal state of the objects from becoming
inconsistent, which causes inflate() to fail with recent zlib versions
(1.2.9 and later).
2017-02-18 15:49:00 +00:00
Jonathan Li
c218ef3970 3rdparty: Update zlib from 1.2.8 to 1.2.11 2017-02-18 15:49:00 +00:00
Gregory Hainaut
674d22321a gsdx wgl: drop GL2.0 context and avoid a context leak
Namely detach/delete context before throwing
2017-02-17 19:20:42 +01:00
Gregory Hainaut
cdb71101a1 gsdx ogl: As Intel is too cheap to provide GL_ARB_direct_state_access on theirs expensive iGPUs
Add a "slower" emulation of the extension...

Hopefully it will allow to start openGL on haswell (maybe broadwell) and later.
2017-02-17 17:44:26 +01:00
Gregory Hainaut
26993380b1 gsdx-ogl: black list 2016/2017.1 AMD driver
Based on AMD feedback, I'm might blacklist all 2017 drivers too.
2017-02-17 17:32:53 +01:00
Gregory Hainaut
da1bb43618 cmake: Add various missing file in CMakeLists.txt
Add some windows code path. It would reduce the burden to port Cmake to windows.
(sill miss 3rdparty/some plugins/...)
2017-02-16 20:11:57 +01:00
Robert Neumann
f86ea9f19b GameIndex.dbf: Removed Shin Megami Tensei Digital Devil Saga series EE timing hack 2017-02-11 14:48:21 +01:00
Gregory Hainaut
0610690fa7 Merge pull request #1814 from PCSX2/greg/gsdx-wgl-context
gsdx wgl: retry to create a context without advance flag
2017-02-11 14:02:48 +01:00
Gregory Hainaut
de962d3e7e gsdx wgl: retry to create a context without advance flag
Hopefully it will support more drivers #1813
2017-02-10 22:26:41 +01:00
Gregory Hainaut
213fa1c148 gsdx sw: init completely m_scanline buffer
The buffer contains extra room to avoid a segmentation fault due to an overflow.
Unfortunately the end of the buffer wasn't initialized which can lead to unexpected behavior.

Based on issue #1806 it could impact Guilty Gear X2
2017-02-08 19:42:54 +01:00
Gregory Hainaut
2a2a022792 gsdx ogl: add a texture barrier when target is read back
Fix graphical corruption in Nouveau/BUA/devil may cry

Issue #1805
2017-02-08 19:42:54 +01:00
Gregory Hainaut
ba91c8f0c2 gsdx opencl: warning+compilation fixes 2017-02-08 19:42:54 +01:00
Gregory Hainaut
c232f90d6e cmake: add an option to enable openCL
Note: nothing work
2017-02-08 19:42:54 +01:00
Gregory Hainaut
d0b1162b15 gsdx ogl: drop fallback of GL_ARB_clear_texture
Mesa AMD was updated :)

all drivers[1] that support GL_ARB_shader_image_load_store got GL_ARB_clear_texture

[1] Intel driver misses others extensions to run GSdx
2017-02-03 21:56:24 +01:00
Gregory Hainaut
63944e8c43 gsdx ogl: allow to start without GL_ARB_texture_barrier
Rendering will be corrupted (for advance effects) if the driver doesn't support it.
However it allow to run with Mesa software emulation (or inside a virtual machine)

Note: mesa still requires an override of the buffer storage extension
MESA_EXTENSION_OVERRIDE=GL_ARB_buffer_storage
2017-02-03 21:56:24 +01:00
Gregory Hainaut
35ed991abe pcsx2: set the size of the vector in the constructor 2017-02-03 21:56:24 +01:00
Gregory Hainaut
23d081ab21 common: remove an old gcc workaround 2017-02-01 18:24:51 +01:00
Gregory Hainaut
6d7b1f9dbd common: move ssappendf in DisR59000asm.cpp
Legacy function to print EE opcode. It doesn't worth an extra file.
2017-02-01 18:24:51 +01:00
Gregory Hainaut
965fccaff0 common: use C++11 version vssappendf
* use std::vector instead of VLA
* remove windows code (optimization is useless here)
2017-02-01 18:24:51 +01:00
Gregory Hainaut
dc42c65dfb gsdx: requires/allow BMI instruction in AVX2 build
So far BMI is inclusive in AVX2 CPU. Help compiler to generate better code
2017-02-01 18:24:51 +01:00
Akash
eda22c241d GSdx: Improve robustness of ComboBoxInit()
Previously, the combobox will reach an indeterminate state whenever it's passed with a value out of range via ComboBoxInit(). To avoid such cases, let's initialize the current selection of the combobox with the front element of the settings vector whenever we detect an out of range value which is not declared in the vector.

To reproduce the issue, set "Renderer" to some sort of crazy value like 50 in the GSdx.ini file and it'll mess up the whole GSdx plugin dialog really bad. This patch prevents such undesirable behavior by simply selecting the front element in the vector when we read an unsupported value.
2017-02-01 11:29:38 +00:00
Huud
c56ac2cf3e PCSX2: Remove Unused And Unneeded Argument. (#1799)
EE interpeter: remove unused argument

rdd is neither used, nor needed. It appears it was there to pass the _Rd_ word to write to, but the writing was moved to PHMSBH() to have one "if (_Rd_)".

Add a note on undefined behavior
2017-02-01 11:30:41 +01:00
Jonathan Li
af38b8bf97 pcsx2: Avoid having to translate the same strings twice
Both strings have almost identical strings present elsewhere in the code,
the only difference being that they use one less space.
2017-01-31 22:30:08 +00:00
Jonathan Li
c65e467c83 pcsx2:windows: Fix unreferenced local variable warning
Also fix some typos in the warning messages.
2017-01-31 22:26:03 +00:00
Gregory Hainaut
5751e38180 gsdx: use range loop instead of for_each 2017-01-30 17:58:39 +01:00
Gregory Hainaut
cf71049bd4 gsdx tc: use unsigned constant
Help the compiler to generate better code

C code:
uint32 addr = (i >> 3u) % MAX_BLOCKS;
uint32 row = addr >> 5u;
uint32 col = 1 << (addr & 31u);

ASM Before
     f48:	mov    eax,esi
     f4a:	mov    ecx,esi
     f4c:	mov    edx,DWORD PTR [ebp+0x8]
     f4f:	sar    eax,0x1f
     f52:	sar    ecx,0x3
     f55:	shr    eax,0x12
     f58:	add    ecx,eax
     f5a:	and    ecx,0x3fff
     f60:	sub    ecx,eax
     f62:	mov    eax,0x1
     f67:	shl    eax,cl
     f69:	shr    ecx,0x5
     f6c:	lea    edx,[edx+ecx*4]

ASM After
     f48:	mov    ecx,edi
     f4a:	mov    eax,0x1
     f4f:	sar    ecx,0x3
     f52:	shl    eax,cl
     f54:	shr    ecx,0x3
     f57:	and    ecx,0x7fc
     f5d:	add    ecx,DWORD PTR [ebp+0x8]
2017-01-30 17:54:29 +01:00
Gregory Hainaut
da054a2aab gsdx: remove useless debug log 2017-01-30 17:54:21 +01:00
Gregory Hainaut
09b8aaed71 gsdx tc: extend the wrap option to the texture cache 2017-01-30 17:54:07 +01:00
Akash
bf10873405 GSdx: Remove useless check and add debug messages
IsEnabled() check is already done in GetDisplayRect, so it's pointless to do it here. Also updated a debug message in the GetFrameRect() function.
2017-01-30 15:29:28 +01:00
Akash
a2cdcb4e4d GSdx-PCRTC: Improve output circuit selection
Previously, the auto output circuit selection of the GSdx wasn't good, it simply defaulted to the second output circuit even when the first output circuit is also enabled. The new algorithm for auto selecting returns the merged rectangle dimensions when both of the output circuits are enabled and if the condition for merge is not satisfied then it returns the bigger output circuit.
2017-01-30 15:29:28 +01:00
Gregory Hainaut
bccc3ef253 Merge pull request #1770 from np511/gcc-cleanup
Cleanup GCC warnings - still needs some work
2017-01-30 15:28:33 +01:00
np511
e5e601eb75 Use GResources API instead of deprecated inline 2017-01-29 09:06:22 -05:00
np511
15d66cf337 Properly format 2017-01-29 09:06:21 -05:00
np511
936d9edc4c Remove old/pointless code 2017-01-29 09:06:21 -05:00
np511
de6216b37b Remove warnings about ISO C++11 conformance 2017-01-29 09:06:10 -05:00
Gregory Hainaut
72d54d3df6 Merge pull request #1792 from FlatOutPS2/Core
GameDB: Add game fixes for Silent Hill 2 and 3
2017-01-27 14:20:46 +01:00
FlatOutPS2
7ff28ab5ae GameDB: Add fixes for Silent Hill 2 and 3
Adds FMVinSoftwareHack gamefix to the game fixes list and activates it
for Silent Hill 2 and 3.
2017-01-27 13:05:41 +01:00
Gregory Hainaut
9393b20e13 Merge pull request #1791 from turtleli/remove-old-cdvd
Remove old cdvd plugins
2017-01-27 11:10:07 +01:00
Jonathan Li
754045b6f7 gsdx:windows: Remove SSSE3 and AVX configurations 2017-01-27 11:06:30 +01:00
Gregory Hainaut
972c907ac2 Merge pull request #1794 from turtleli/add-cdvd-block-dump-menu
pcsx2:gui: Add menu item for creating block dumps
2017-01-27 11:05:47 +01:00
lightningterror
f0393e50c2 GSdx: Windows gui updates (#1768)
* Rename CRC Hack Level "Full (Safest)" to "Full (Direct3D Recommended)"
* add link/info of AMD driver epic fail status
2017-01-27 11:00:23 +01:00
Jonathan Li
625c4a9a05 Merge pull request #1751 from FlatOutPS2/Lily
LilyPad: Another GUI update and add more new functions
2017-01-27 00:22:44 +00:00
Jonathan Li
56c2d20b90 pcsx2:gui: Add menu item for creating block dumps 2017-01-26 18:48:07 +00:00
FlatOutPS2
8d00ae25c4 LilyPad: UI restructure
UI restructure and improvements.
2017-01-26 19:46:37 +01:00
FlatOutPS2
6074d60a90 LilyPad: Replace Turbo hack
The "L3 Toggles Turbo" hack has been removed and been replaced by a
bindable Turbo button on the Pad tabs. The Turbo function in the input
configuration has been renamed Rapid Fire.
2017-01-26 19:46:36 +01:00
FlatOutPS2
6e54dfe5ba LilyPad: Remove outdated hacks
Removes Ignore Key(hasn't functioned since LilyPad 0.9.9 (PCSX2 0.9.6)),
and "Send escape on window close" hack (unnecessary for PCSX2 and caused
issues with other emulators).
2017-01-26 19:46:36 +01:00
FlatOutPS2
9163ed351c LilyPad: Add Exclude Input option
This new option on the pad tabs disables an input so it will be ignored
when trying to bind another input. This is helpful when binding controls
for a device with an input that's difficult to center like an
accelerator, or just always active like a faulty button or analog stick.
2017-01-26 19:46:36 +01:00
FlatOutPS2
f8a79e5d40 LilyPad: Add neGcon support
Adds neGcon as a new pad type.

For use with several PS1 and PS2 games like the Ridge Racer and Ace
Combat series.
2017-01-26 19:46:19 +01:00
lightningterror
1cf30584f0 CP update
Replace Gregory's name with PCSX2 Dev Team
2017-01-26 17:12:13 +01:00
lightningterror
1ecb5aed0f Update Copyright v2
Revernt changes , update Gregory's name
2017-01-26 17:12:13 +01:00
lightningterror
0b93aa5d12 Revert "Update Copyright notices/disclaimers 2017"
This reverts commit fc5bdb771f.
2017-01-26 17:12:13 +01:00
lightningterror
3d4e1c1246 Update Copyright notices/disclaimers 2017
Update all Copyright notices/disclaimers in scripts to 2017
2017-01-26 17:12:13 +01:00
Gregory Hainaut
096c9316b8 gsdx cl: fix various compilation issues and a couple of warnings
I didn't fix all the warnings (purpose was to realign code with "recent" update)

Linux note: only miss 2 major items
* res/tfx.cl loading
* device descriptor
* And various bug fixes ;)
2017-01-24 19:38:31 +01:00
Gregory Hainaut
d67b9cba14 gsdx tc: merge page coverage code
A function was already done for openCL. Use the same for others renderers
2017-01-24 19:38:16 +01:00
Gregory Hainaut
5c7c9452d6 onepad|gsdx: remove useless debug messages 2017-01-22 21:47:05 +01:00
Gregory Hainaut
1e7fd83ac5 gsdx|spu2x: fix %d/%u in printf (cppcheck) 2017-01-22 21:10:40 +01:00
Gregory Hainaut
077ae2e6a0 gsdx: use (void)(0) for empty statement
Reduce warning in cppcheck
2017-01-22 21:10:40 +01:00
Gregory Hainaut
28e1f87d9e build.sh: reduce the number of define for cppcheck analysis + add cdvd giga 2017-01-22 21:10:40 +01:00
Jonathan Li
1a5f01ca9f man-page: Update and use mdoc macros
[skip ci]
2017-01-22 18:38:50 +01:00
Gregory Hainaut
1d2ce62b2c gsdx tc: comment dead code 2017-01-22 16:52:14 +01:00
Gregory Hainaut
d9efbfb178 pcsx2: don't use npos as array index 2017-01-22 16:50:55 +01:00
Gregory Hainaut
6f9feee759 common: init m_vtune_id 2017-01-22 16:45:49 +01:00
Gregory Hainaut
701743a4ec gsdx boost queue: init all states 2017-01-22 16:43:35 +01:00
Gregory Hainaut
9183d1d2c6 gsdx osd: set m_face to null in case of error 2017-01-22 16:42:01 +01:00
Gregory Hainaut
9120c3bfb1 onepad: init all fields of objects 2017-01-22 16:34:27 +01:00
Gregory Hainaut
5d119bec31 vif: init field in constructor + remove empty function 2017-01-22 16:23:40 +01:00
Gregory Hainaut
ad7892bd15 svu: init all field of RANGE struct 2017-01-22 16:10:43 +01:00
Gregory Hainaut
33a7672196 spu2x: use default contructor of the compiler 2017-01-22 16:06:54 +01:00
Gregory Hainaut
44b5552231 MTVU: hide ring buffer pointer bug under the carpet
There is a bug lurking around (intro of SotC). Unfortunately, I didn't find it. So instead, I added a safety net
in the ring buffer reservation.
2017-01-22 15:42:14 +01:00
Gregory Hainaut
81adc3ef4d gsdx ogl: don't use per buffer blending
It increases the number of state that driver must handle.
2017-01-20 18:22:52 +01:00
Gregory Hainaut
3400d7eecc i10n: update es mo file 2017-01-20 18:22:52 +01:00
Jonathan Li
03acb22212 plugins: Remove cdvdlinuz
Superseded by PCSX2 internal ISO reader and cdvdGigaherz.
2017-01-20 00:04:14 +00:00
Jonathan Li
9b110d8c3c plugins: Remove CDVDisoEFP
Superseded by PCSX2 internal ISO reader and cdvdGigaherz.
2017-01-20 00:04:14 +00:00
Jonathan Li
0ad5abbbfc 3rdparty: Remove bzip2
Now unused.
2017-01-20 00:04:14 +00:00
Jonathan Li
cb64cb6abe plugins: Remove CDVDiso
Superseded by PCSX2 internal ISO reader.
2017-01-20 00:04:14 +00:00
Jonathan Li
6aef44271e plugins: Remove CDVDolio
Superseded by PCSX2 internal ISO reader and cdvdGigaherz.
2017-01-20 00:04:14 +00:00
Akash
0d659a1b46 GSdx: Improve captured screenshots naming
Previously, when F8 was triggered multiple times in a single second, the latest captured image would replace the previous captured one as it has the same name as the previous image.

The following patch detects such cases and adds a number along with the filename when new image capture is requested under the same time as the previous capture.
2017-01-19 23:47:34 +00:00
Gregory Hainaut
21612cafc1 Merge branch 'greg/mtvu-mtgs-lockless' 2017-01-18 19:12:26 +01:00
Gregory Hainaut
24c780c884 MTVU/GS: try to relax the readAmount atomic operation
I suspect it to be the same on x86

The real issue is the various atomic in FinishGSPacketMTVU which I'm afraid will create some cpu stall
2017-01-18 19:11:51 +01:00
Gregory Hainaut
e3d1871f86 MTVU: small thread scheduling improvement
* Use yield to avoid a spin loop during WAIT
* Don't flush the full buffer when we miss space
2017-01-18 19:11:10 +01:00
Gregory Hainaut
fff5230631 MTVU: redo properly atomic management around the MTVU ring buffer
The ring buffer is composed of severals read/write by transaction.

Atomic operations are only required at the start/end of the full
transaction. In the middle, you can use normal variable (optimization
opportunity for the compiler)

Use acquire/release semantics on isBusy and vuCycles to remain 100% safe
(relaxed might be doable but better be safe than sorry)

Use dedicated cache line for atomic variable to avoid any conflict between CPU
2017-01-18 19:10:47 +01:00
Gregory Hainaut
d589be9415 GIF: remove 'done' of the GS_Packet struct
The struct is copied in various ring buffer (hot path)
We only need the return status of the function so use a reference instead of
a state variable

Side note: if we align the struct to 16B maybe the compiler can use SSE to copy it.

Warning: it breaks save state compatibility
2017-01-18 19:08:29 +01:00
Gregory Hainaut
7b3984059a MTVU/MTGS: use a mutex free ring buffer
Most of the time the mutex was likely optimized. Now we have the guarantee that
thread won't block.
2017-01-18 19:07:01 +01:00
Gregory Hainaut
e4f4350bb4 boost ring queue: dedicate cache line for atomic variable
Bad for data cache ! But it might be better for atomic operation.
2017-01-18 19:07:01 +01:00
Gregory Hainaut
8779583bdb boost ring queue: use % to wrap the index
For power of 2, it is replaced with a single and instruction. If it potentially faster
than branch. But it worths a benchmark
2017-01-18 19:07:01 +01:00
Gregory Hainaut
725aaccf5c boost ring queue: extend the interface to ease replacement of dequeue class in core 2017-01-18 19:07:00 +01:00
refractionpcsx2
671a575216 refractionpcsx2
GameDB: Set VU rounding to nearest in Sonic R (Sonic Gems Collection).
2017-01-18 08:28:01 +00:00
Gregory Hainaut
253057a765 Merge pull request #1777 from IlDucci/master
Updating Spanish translation
2017-01-17 18:47:52 +01:00
Aced14
70cec30dcf GameDB: Set VU rounding to nearest in Sonic R (Sonic Gems Collection).
Fixes #1759.
2017-01-16 23:25:28 -05:00
Víctor "IlDucci
240191dff8 Updating Spanish translation
Updating the Spanish translation with the latest updates.
2017-01-16 22:03:29 +01:00
Gregory Hainaut
8fe94ec07e Merge pull request #1776 from FlatOutPS2/DX
Revert "gsdx tc: partial support of pseudo depth for Dx"
2017-01-16 19:43:16 +01:00
FlatOutPS2
fffd829f88 Revert "gsdx tc: partial support of pseudo depth for Dx"
This reverts commit
d6383e6c21

It created a regression in Everybody's Golf 4/Hot Shots Golf 4, breaking the renderering when depth emulation is disabled/when using a Direct3D Hardware renderer.
2017-01-16 19:15:46 +01:00
Gregory Hainaut
f9c2025149 gsdx tc: avoid any pitfall with 1 << 31
Based on Turtleli feedback
"1 << 31 is undefined in C++11, but defined in C++14"
2017-01-15 20:11:34 +01:00
Gregory Hainaut
87cf7b6d30 gsdx tc: implement a safe RemoveAt
The code is now a mirror of the ::add. So 1 insert == 1 erase

This way it won't crash on future update. And it will support future GS
memory wrapping improvement.
2017-01-15 20:11:34 +01:00
Gregory Hainaut
d1315b6187 gsdx tc: save list iterator to allow fast removal
ZoE2:
RemoveAt overhead plummet to 0.5%. It was 17% !

However insertion is a bit slower. Due to the begin() after the push_front

v2: use std:: for lists and arrays
2017-01-15 20:11:34 +01:00
Gregory Hainaut
87fc4c1e44 gsdx tc: skip draw call when input texture can't be fetched
Avoid garbage on Full Spectrum Warrior
2017-01-15 20:09:39 +01:00
Gregory Hainaut
2f972b91a3 gsdx tc: allow a hit on older depth buffer
Avoid an issue when rendering take some shortcut (Full Spectrum Warrior)

Close #1757
2017-01-15 20:09:39 +01:00
FlatOutPS2
3acac3203b GSdx: Remove/move CRC hacks
Removes Alpine Racer 3 hack. Issue has been resolved.

Moves NanoBreaker hack. Issue has been resolved for OpenGL and hack has
been moved to DX only.

Moves Tri-Ace games hacks. Hacks are also necessary for OpenGL with "Partial" CRC Hack Level to prevent massive slowdown.

Move Tales Of Legendia hack back as it's also necessary for OpenGL with "Partial" CRC Hack Level to prevent graphical issues.
Close: https://github.com/PCSX2/pcsx2/issues/1698

Added PAL and NTSC-U CRC's for Ar tonelico II.
2017-01-15 20:07:10 +01:00
Jonathan Li
52ec143a92 gsdx:windows: Fix deprecated ATL attributes warning 2017-01-13 23:52:25 +00:00
Jonathan Li
fe1947ea48 gsdx: Fix minor user visible typos
Well. it should be better; but my grammar is questionable at times,
2017-01-13 23:52:02 +00:00
Gregory Hainaut
696510d220 Merge pull request #1763 from guoyunhe/patch-1
Translate Simple Chinese in .desktop file
2017-01-12 14:44:42 +01:00
Guo Yunhe
f5e6c82e86 Translate Simple Chinese in .desktop file
Add Simple Chinese translation in .desktop file
Change "Playstation" to "PlayStation". (Official name)
2017-01-12 13:32:59 +02:00
Gregory Hainaut
8cf3a83dd7 gsdx: try to ask GCC to generate not dumb code
Unfortunately it requires at least GCC6. If a nice guy can check the generated code on GCC6.
I don't know clang status.

Here the only example, I have found on the web
https://developers.redhat.com/blog/2016/02/25/new-asm-flags-feature-for-x86-in-gcc-6/

Current generated code in GSTextureCache::SourceMap::Add

    38b3:	bsf    eax,esi
    38b6:	add    esp,0x10
    38b9:	test   esi,esi
    38bb:	jne    387e <GSTextureCache::SourceMap::Add(GSTextureCache::Source*, GIFRegTEX0 const&, GSOffset*)+0x6e>

BSF already set the Z flag when input (esi) is 0. So it would be better
to not put a silly add before the jump and to skip the test operation.
2017-01-11 21:36:05 +01:00
Gregory Hainaut
1fbee92044 gsdx tc: add a comment for a potential "ASM" optimization
I'm not sure it worth it yet. But a generic function would be nice for
future.
2017-01-11 20:13:53 +01:00
Gregory Hainaut
ced2dd9200 gsdx: hidden option disable_hw_gl_draw
OMG, Zone of Ender got a speed boost from 11 fps to 45 fps

Seriously, the goal is to allow benchmarking GSdx without too much overhead of the main renderer draw call

Note: unlike the null renderer, texture/vertex uploading, 2D draw, texture conversions are still done.
2017-01-11 18:54:36 +01:00
Gregory Hainaut
6dabc68c16 gsdx linux gui: compact the GUI for Nx768 display (seriously guy it is time to upgrade !)
* move the post-processing frame into the OSD tab
* Rename Global Settings to Renderer Settings
* put monitor and indicator check box on the same line

At least we have a similar number of options by tab
2017-01-11 18:32:02 +01:00
Gregory Hainaut
f5fbfe98bd gsdx: fix warning: variable ‘success’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] 2017-01-11 18:23:34 +01:00
Jonathan Li
62c21fd58f i10n: Update pt_BR (Brazilian Portuguese) .mo files 2017-01-10 21:11:15 +00:00
Jonathan Li
791dc84d49 gsdx:gtk: Update GUI
Set slider ranges to 0-100, which matches what Windows uses.
Add OSD maximum log messages option and tooltips.
2017-01-10 20:47:33 +00:00
FlatOutPS2
6a7c38f30d GSdx: Minor update to GS Settings Dialog
Update a few parts of the GS Shader dialog to reflect the improvements
from the OSD dialog code.
2017-01-10 20:07:29 +00:00
FlatOutPS2
da57014eb8 GSdx OSD: Add Windows UI and new option
Adds Windows UI and option to limit the amount of log messages on the
screen at the same time/in the buffer.
2017-01-10 20:07:29 +00:00
FlatOutPS2
d42759c641 GSdx OSD: Minor log improvements 2017-01-10 20:07:29 +00:00
Gregory Hainaut
83b5bdbd29 Merge pull request #1753 from josephgbr/master
Update Brazilian Portuguese translation
2017-01-10 11:46:48 +01:00
refractionpcsx2
b02cc6ecbe Whoops, over zealous with removing things. 2017-01-09 22:37:15 +00:00
refractionpcsx2
b0baa8d8f9 Revert CLUT change, seems it causes more problems than it solves. Leaving the comment for future investigation 2017-01-09 22:30:54 +00:00
Rafael Fontenelle
fcdc3a4745 Update Brazilian Portuguese translation 2017-01-09 09:53:02 -02:00
Gregory Hainaut
7c4a952ee0 Revert "gsdx tc: always clear a new depth buffer"
This reverts commit f77c1900fa.

Conflicts:
	plugins/GSdx/GSTextureCache.cpp

Another fix was done later for Jak cut scene (or FMV). One game got a regression (don't remember which)
2017-01-09 10:21:23 +01:00
Gregory Hainaut
3fab287e8d onepad: don't load joyid_map from the ini
Old option from the older GUI can cause issue.

Close #1139
2017-01-07 16:38:13 +01:00
Gregory Hainaut
5c6d10da96 i10n: remove build file 2017-01-07 16:02:15 +01:00
Jonathan Li
285bcbcec0 vifUnpack: Report the correct number of bytes
It now reports 6904 bytes instead of just less than 4GB.
2017-01-07 14:49:33 +00:00
Jonathan Li
c2e21fa30e gsdx: Don't use atomic for exit variable
All accesses are protected by locks, so there's no need for it to be
atomic.
2017-01-07 13:54:45 +01:00
Jonathan Li
cb2c9ce4e6 gsdx: Don't use separate count variable
It's only ever updated after the queue is updated, so its state will
always lag slightly behind it. It's sufficient to just use empty().

This seems to fix some caching issues that were noticeable on Skylake
CPUs (#998).
2017-01-07 13:54:45 +01:00
Jonathan Li
a583fafa37 gsdx: Use lock instead of loop to terminate threads 2017-01-07 13:54:45 +01:00
Jonathan Li
b244de73ca gsdx: Use separate mutex for waiting
In the previous code, the worker thread would notify the MTGS thread
while the mutex is still locked, which could cause the MTGS thread to
wake up and immediately go back to sleep again since it can't lock the
mutex.

Use a separate mutex for waiting, which avoids the issue.
2017-01-07 13:54:45 +01:00
Gregory Hainaut
93471d46df build: workaround to detect freetype on my Debian system
I don't know if recent Cmake/Debian work better.
2017-01-07 13:49:56 +01:00
Gregory Hainaut
648cc2bb39 Merge pull request #1693 from ssakash/framebuff
GSDX: Pass total height of framebuffer on GetOutput()
2017-01-07 13:48:35 +01:00
ramapcsx2
80be9d92ca Merge pull request #1709 from turtleli/cdvd-street-fighter-ex3
cdvd: Street Fighter EX3 (NTSC-J) black screen fix.
2017-01-06 22:21:03 +01:00
Akash
09c72375ab GSDX: Pass total height of framebuffer on GetOutput()
Some PSX games seem to store image data of the drawing results in an undeterminate area out of range from the current context buffer. At such cases, calculate the height of both the frame memory rectangles combined.

What happens on "Crash bash" -

* At first draw, scissoring is limited to SCAY0- 0 & SCAY1- 255
* At second draw, scissoring is limited to SCAY0- 255 & SCAY0-511

Previously, we limited the height to the value of one single output texture, so instead of that let's calculate the total height of both the two buffers combined to prevent such issues.
2017-01-04 22:17:26 +05:30
refractionpcsx2
98e8d93fa3 Merge pull request #1728 from ssakash/custom_regression
GSDX-TextureCache: Fix corner cases on custom resolution scaling
2017-01-04 16:21:18 +00:00
Gregory Hainaut
ecd00d377a Merge pull request #1729 from np511/master
Extend LTO support and remove warnings
2017-01-04 17:03:38 +01:00
np511
f55f3b94a1 Removes LTO warnings and sets -flto=number of cores. 2017-01-03 15:45:24 -05:00
Jason Brown
fce2814735 Added callbacks for OSD Log and Monitor. Added wrappers in PCSX2 main for callbacks. Added some basic info calls (e.g. Saving loading FPS) 2017-01-03 10:43:56 +01:00
Jason Brown
44e671bb0a Add an RGBA getter for ConsoleColors 2017-01-03 10:43:56 +01:00
Jason Brown
248ad0ddde Added config page to linux setting dialog 2017-01-03 10:43:56 +01:00
Jason Brown
b8a84d170a Added OSD Manager which depends on FreeType2. Added functions into GSDeviceOGL to render OSD and a point shader. 2017-01-03 10:43:56 +01:00
Jason Brown
4c084391fc Changed the GSBufferOGL interface from map and upload to map and unmap. This allows rendering directly into the OGL buffer instead of having to do copy at some point. 2017-01-03 10:43:56 +01:00
Gregory Hainaut
b87881c91b Merge pull request #1735 from FlatOutPS2/W
GSdx: Prevent FMV crash
2017-01-03 10:36:29 +01:00
FlatOutPS2
048b657c8f GSdx: Prevent FMV crash
Fixes FMV crashing PCSX2 in The Simpsons: Road Rage.
2017-01-03 00:46:38 +01:00
Akash
6c521c36dd GSdx-TC: Remove some old hacks
Previously, we only calculated the width of a single output circuit which lead to missing a single pixel from the other output circuit which in turn causes offset issues in Persona games, I have customized GetDisplayRect() to now also calculate the dimensions of the merged rectangle when both the output circuits are enabled through the PMODE register, so this hack is no longer needed. :)

TL;DR - The above commit of mine accurately handles the offset issues by calculating union of the rects, removing this stupid hack. (not insulting any other developers, this stupid hack was mine :)
2017-01-02 14:43:17 +05:30
Akash
b56ff3fce7 GSDX-TC: Pass merged output size for scaling
Passes the merged output circuit as the base size for texture cache scaling code. Helps fixing scaling issues where games use both of the output circuits for rendering.

Future Note: Alter the behavior of IsEnabled() check always preferring the second output circuit for some weird reason. I plan on changing it to a better auto-output circuit selection mechanism but that could probably be done some time in the future.
2017-01-02 14:42:32 +05:30
Gregory Hainaut
9d1b27cde8 miss a ;
I don't know what I compiled for my previous push !
2016-12-31 17:42:38 +01:00
Gregory Hainaut
1be3f48017 gsdx sw: minor fix on the thread management
* Upgrade the counter to signed 32 bits. 16 bits is too small to contains the 64K value.
* Read ThreadProc/m_count when the mutex is locked
* Use old value of the fetch instead to read back the new value
2016-12-31 16:59:38 +01:00
Gregory Hainaut
14a76a8499 cmake: don't use SSE2 suffix on libgsdx.so file
In debug build, SIMD is disabled, so it is dangerous (use wrong binary) to debug
2016-12-31 13:37:43 +01:00
Gregory Hainaut
761ce60a8e i10n: refresh translated based on latest string change 2016-12-31 11:40:46 +01:00
refractionpcsx2
7a61dc2c88 GSDX: CLUT temp old regression fix for the Romance of the Three Kingdoms games, until somebody who knows what they are doing fixes it properly :P 2016-12-30 22:00:54 +00:00
refractionpcsx2
8fecd3512c refractionpcsx2
GSdx Merge Circuit: Fix regression and issue
2016-12-27 12:08:18 +00:00
refractionpcsx2
c88cd1b065 Merge pull request #1720 from ssakash/rtc
PCSX2-Counters: Fix RTC counting in Progressive modes
2016-12-27 00:00:00 +00:00
refractionpcsx2
af3c1fc510 Gif MFIFO: Slight Optimisation for GIF MFIFO heavily used area.
Hopefully this translates well to slower systems :)

Tekken Tag:

Before: 79-81fps
After: 82-84fps

Front Mission 4 intro (as it pans over the roofs)
Before: 158-159fps
After: 165-166fps
2016-12-24 20:09:47 +00:00
Akash
c92830b103 PCSX2-Counters: Fix RTC counting at certain cases
Previously, the seconds variable of the RTC was updated on progressive modes after every 50 Vsyncs, which was obviously wrong. The code has been adjusted to update the RTC with respect to the vertical frequencies of various other video modes.
2016-12-24 11:54:25 +05:30
refractionpcsx2
7aa554b8eb GameDB: Adding Hugo: Magic in the Trollwoods 2016-12-22 21:12:16 +00:00
Akash
8038ce1aa9 GSDX: Cleanup warnings on MSVC (#1694)
Explicitly cast some bitfields/local loop variables to uint8 as these functions have uint8 as the parameter datatype.
2016-12-21 23:21:07 +00:00
Jonathan Li
10eb88f6fe Merge pull request #1706 from PCSX2/greg/vif-hash
Greg/vif hash
2016-12-21 22:30:27 +00:00
FlatOutPS2
9b6c3bd106 GSdx Merge Circuit: Fix regression and issue
Avoids graphical issues in EA NASCAR games and a regression in Time Crisis 2/3 split screen mode.
2016-12-21 01:28:43 +01:00
Jonathan Li
5a63a62454 cdvdgigaherz: Fix read past the end of the buffer 2016-12-19 23:56:48 +00:00
Jonathan Li
f2edc50675 cdvdgigaherz: Improve prefetch logic
Avoid reading past the end of the disk.
Avoid waiting when there are prefetches remaining.
Fix the maths so that the first prefetch after a request attempts to
read the next block of sectors and not the block of sectors that was
just read (which will just be skipped anyway because the data has just
been cached).
Avoid potential prefetch after disk is swapped (though disc swap doesn't
work properly if you just eject and insert a different disk).
Stop prefetching on disk read failure (Suikoden hits this case - 2048
byte reads are requested, but only 2352 byte reads will succeed).

Also reduce the read retry count to 2.
2016-12-19 23:56:48 +00:00
Jonathan Li
c1160f40d0 cdvdgigaherz: Rename variables/parameters in cdvdDirectReadSector
s/sector/sector_block
s/first/sector
2016-12-19 23:56:48 +00:00
Jonathan Li
3f89f4bd32 cdvdgigaherz: Use constant for sectors per read 2016-12-19 23:56:48 +00:00
Gregory Hainaut
58e4076620 vif: update alignment constraint
16B alignment is now useless for nVifBlock (no more SSE)
However update the alignment of bucket to 64B. It will reduce cache miss
probability in the find loop
2016-12-18 22:51:23 +01:00
Gregory Hainaut
d812222061 vif: use u32 code instead of u8/u16
It avoids memory stalls and greatly reduces the overhead of the dVifUnpack function

Here a vtune summary of this branch (done on SotC init)

dVifUnpack<1> was 14.5% of effective VU thread time
dVifUnpack<1> is now 3.8% of effective VU thread time

I hope it will translate to better fps
2016-12-18 22:44:24 +01:00
Gregory Hainaut
ef75b36013 vif: move back the cache seach in the unpack function
Avoid the various move to return the value (actually due to the pointer)
2016-12-18 22:44:22 +01:00
Gregory Hainaut
e4c2c53b19 vif: inline dVifsetVUptr function
It avoid a double cmp/jmp on the dynarec/interpreter mode.
2016-12-18 22:44:01 +01:00
Gregory Hainaut
6ae082dab2 vif: compute the length during the compilation stage 2016-12-18 22:44:00 +01:00
Gregory Hainaut
7a33cda122 vif: replace sse cmp code with standard cmp
Standard instruction are faster to execute besides the CPU can optimize the cmp/jne

SSE

  e0:	add    ecx,0x10
  e3:	cmp    eax,0x7
  e6:	jg     1b0 <void dVifUnpack<0>(unsigned char const*, bool)+0x1b0>
enter_loop:
  ec:	vpcmpeqd xmm0,xmm1,XMMWORD PTR [ecx]
  f0:	vmovmskps eax,xmm0
  f4:	cmp    eax,0x7
  f7:	jne    e0 <void dVifUnpack<0>(unsigned char const*, bool)+0xe0>

Standard cmp

  d8:	add    eax,0x10
  db:	mov    esi,DWORD PTR [eax+0xc]
  de:	test   esi,esi
  e0:	je     190 <void dVifUnpack<0>(unsigned char const*, bool)+0x190>
enter_loop:
  e6:	cmp    ecx,DWORD PTR [eax+0x4]
  e9:	jne    d8 <void dVifUnpack<0>(unsigned char const*, bool)+0xd8>
  eb:	cmp    DWORD PTR [eax+0x8],ebx
  ee:	jne    d8 <void dVifUnpack<0>(unsigned char const*, bool)+0xd8>

v2: use reference instead of a pointer for find parameter
2016-12-18 22:43:07 +01:00
Jonathan Li
f441efd776 cdvd: Set the data ready flag after a finished transfer
Fixes a black screen loading issue in Street Fighter EX3 (NTSC-J).
2016-12-18 16:27:05 +00:00
Jonathan Li
5c53708f43 cdvd: cdvdRead08 is interrupt reason, not status
It seems there was a bad copy paste that caused PwOff to be changed to
Status in bc9e0b08ad.
2016-12-18 16:25:52 +00:00
Jonathan Li
0708d7c539 onepad: Fix variable type
Fixes a type limits warning on a 64-bit build.
2016-12-18 14:32:13 +00:00
Jonathan Li
c974a0d888 pcsx2: Fix "ISO Selector" menu item removal memleak
Delete() deletes the menu item but keeps the sub menu. Remove() doesn't
delete the menu item.

Also use AppendSubMenu - using Append on a submenu is deprecated.
2016-12-18 14:31:27 +00:00
Gregory Hainaut
2320efeb55 vif: increase buckets number to 64K
It allow to compare only 8B in the lookup so SSE could be replaced with general instruction

As a bonus, it allow to compute the hash key with a mov rather than modulo (which was an 'and')
2016-12-18 14:05:55 +01:00
Gregory Hainaut
1a32062439 vif: repack nVifBlock struct
cl/wl can fit in a single byte. Add a 2B length field instead.
It will contains the pre computed length to reduce dVifsetVUptr overhead
2016-12-18 14:05:55 +01:00
Gregory Hainaut
d34e99b38b vif: handle the special case 0 in the compilation stage (rather than lookup) 2016-12-18 14:05:55 +01:00
Gregory Hainaut
555c96a941 vif: reorganize dVifUnpack
Inline the execution part
Add a num parameter to dVifsetVUptr
Use a local variable for the nVifBlock instead of a global struct state

The goal is to ease future update of the nVifBlock struct
2016-12-18 14:05:55 +01:00
Gregory Hainaut
10b3d429fe vif: new implementation of the hash bucket
Previous implementation saved the both the chain pointer and the chain size
Rational: size is useful to add new element and to detect the end of the chain
Vif cache is rarely miss. So 'add' is barely called and the end of a chain is
barely reached.

New implementation will add a null cell at the end of the chain. As a
cell contains a x86 pointer, if is null you could conclude that you
reach the end of the chain.

The 'add' function will traverse the chain to get the current size. It is
a cold path besides the chain is often short (< 4).

The 'find' function only need to check the startPtr bytes to detect the end
of the loop.

Note: SizeChain was replaced with a std::array
2016-12-18 14:05:53 +01:00
Gregory Hainaut
c58b04979f vif: remove the type template of HashBucket
The class is designed and optimized for the layout of nVifBlock.
Besides it will ease future improvement.
2016-12-18 13:41:14 +01:00
Gregory Hainaut
c368618d09 vif: use intrinsic cast instead of ugly define 2016-12-18 13:41:14 +01:00
Gregory Hainaut
1acc81c25d vif: don't allocate vifblock hash on the heap
Avoid an extra indirection to access the hash bucket (Find function)
2016-12-18 13:41:14 +01:00
Gregory Hainaut
3dc7dc0cdc vif: improve block compilation management
Safety:
* check remaining space before compilation
* clear hash if recompiler is reset

Perf:
* don't research the hash after a miss
* reduce branching in Unpack/ExecuteUnpack

Note: a potential speed optimization for dVifsetVUptr
Precompute the length and store in the cache. However it need 2B on the
nVifBlock struct. Maybe we can compact cl/wl. Or merge aligned with upkType
(if some bits are useless)
2016-12-18 13:41:13 +01:00
Gregory Hainaut
b0b5c27fec vif: remove useless state from nVifStruct 2016-12-18 13:23:07 +01:00
Gregory Hainaut
c2587abcea mVU: always call perf before leaving the compilation function
I misses some early return in my first tentative. Now VTune shows me
properly the time in VU recompiler.

Note: It seem some block overlap (likely due to the branching mess). But it is still way better than no data
2016-12-16 22:01:06 +01:00
Gregory Hainaut
632b4971de common: remove memset duplicates
Use standard memset instead of memset_8

Move memzero/memset8 in a common OS file.
2016-12-16 20:45:22 +01:00
Gregory Hainaut
b3474b5a71 MTVU/gif: prebuilt the fake packet
GS_Packet constructor calls memset which is quite slow and useless as data is overwritten

Vtune overhead of Gif_Unit::Execute goes from 5.8% to 3.0% (EE thread)
2016-12-16 10:31:23 +01:00
ramapcsx2
29d229264d Merge pull request #1696 from FlatOutPS2/master
psxmode: Correct exe name for several PSX titles
2016-12-13 23:54:58 +01:00
FlatOutPS2
ff98dac104 psxmode: Correct exe name for several PSX titles
Several PSX titles lack a backslash in the elf path, which made the disc
serial contain 'cdrom:', this caused savestate issues in those ganes.

Solves: https://github.com/PCSX2/pcsx2/issues/1692
2016-12-13 17:32:26 +01:00
Jonathan Li
61669d1f3f gsdx:png: Fix accidental resource leak
Oops.

Unfortunately it'll reintroduce the clobbering warning on gcc 4.9.
2016-12-12 23:08:30 +00:00
Jonathan Li
b178423166 gsdx-replayer:cmake: Reduce build time/filesize
Avoid building GSdx twice if the replayer is being built.
2016-12-12 18:54:54 +00:00
Jonathan Li
2c3fd160c3 gsdx-replayer:linux: Fix strict-aliasing warnings
Use a reinterpret_cast instead of casting the function pointer address
to a void** and dereferencing it.

Also remove an unnecessary (void) and avoid including stdafx.h.
2016-12-12 18:14:38 +00:00
Jonathan Li
d4a6e18c01 gsdx:png: Fix gcc clobber warnings
Don't adjust 'image' and just use an additional offset.
'success' was kinda unnecessary when true or false could just be
directly returned.
Move 'compression' clamping out to GSPng::Save instead.

And throw in a whole bunch of const for good measure.
2016-12-12 17:39:05 +00:00
Jonathan Li
415090d249 common: Avoid wchar_t in pxTextWrapper
wchar_t is 16-bits on Windows, which can't actually properly fit all
Unicode characters.

Use the wx3.0.x wxTextWrapper approach of using iterators that increment
by actual characters to fix the issue, and also switch to using the
std::string style functions in wxString.
2016-12-10 22:30:27 +00:00
Jonathan Li
afe86a5f66 cmake: Only use -fprofile-dir when PGO is used
It stops clang from warning that '-fprofile-dir' is not supported.
2016-12-10 21:51:21 +00:00
Akash
a83042d5c0 PCSX2-WX: Update strings in Language dialog 2016-12-10 12:35:57 +00:00
Akash
83eb79c9d9 PCSX2-WX: Proper source medium on menuitem
Previously the boot menu items always displayed "Boot CDVD" regardless of the current source medium, this behavior has been fixed to properly adjust the text when source medium is changed. Now it'll display Boot CDVD/ISO/BIOS with respect to the current source medium.

v2: Some instances of "Iso" have been changed to "ISO" for consistency.
v3: Remove the unnecessary "Reboot" on menu item labels, saves some string translations.
v4: Add a new shortcut key for the primary boot menu item.
2016-12-10 12:35:57 +00:00
Akash
b86518ef24 CDVD: Convert CDVD_SourceType into enum class
* Add a template function for underlying type conversions of enumerations
2016-12-10 12:35:57 +00:00
Akash
f367fa5a98 PCSX2-WX: Fix Shutdown menu item behavior
There is already a dedicated bind event to handle the gray out of the menu item, so let's just gray it out initially and let the bind event handler do it's thing.

The previous behavior would only gray out the menu item when all the plugins are in a non-active state which didn't seem ideal as the plugins were shutdown only when closing PCSX2 (or) switching plugins.
2016-12-10 12:35:57 +00:00
Akash
259b81317d PCSX2-WX: Disable HostFs for release builds 2016-12-10 12:35:57 +00:00
FlatOutPS2
947b6b5503 LilyPad: Add Device Select option
Adds a device select option that hides bindings and disables binding new
inputs from all non-selected devices on the bindings list. This also
avoids input conflict issues when one controller is recognized as
several devices through different APIs.
2016-12-10 12:16:44 +00:00
FlatOutPS2
872ab9d2b1 LilyPad: Add Configure on bind option
Part of the GUI update, this function switches to the configuration page
immediately after binding an input instead of staying on the bindings
page.
2016-12-10 12:16:44 +00:00
FlatOutPS2
1f8608f6dd LilyPad: GUI update
Updates the UI by reducing the height of the plugin window. This has
been achieved by removing some buttons below the diagnostics and
bindings list and incorporating those functions into the
lists(accessible by right-clicking in the list). The binding
configurations on the Pad tabs have been moved to a separate page, like
the Forcefeedback bindings, to separate the configuration from the
bindings.
2016-12-10 12:16:44 +00:00
FlatOutPS2
deaceb6b08 LilyPad: Add skip deadzone option
Adds a skip deadzone option to the Pad tabs.

With the normal deadzone, if the control input value is below the
deadzone threshold, the input is ignored.
However, some controllers also benefit from shortening the input range
by skipping a deadzone.
2016-12-10 12:16:44 +00:00
Akash
61a6fe9cd9 GSDX: Apply saturation only to interlaced video mode
JMMT uses a bigger display height on NTSC progressive scan mode, which is not really unusual hence adjust the saturation hack to only take effect on interlaced NTSC mode.

However, the whole double screen issue on FMV still exists. As a bit of information, this game has the second output disabled but seems to have some valid data inside of it, maybe the second output data is leaked into the first one? most likely a bug in the frambuffer data management rather than a CRTC issue (needs to be investigated)
2016-12-10 11:29:10 +01:00
np511
b9d57843eb Adds PGO support. Profile data is stored in a folder called profile
in the top-level source directory. The build folder should NOT be
transferred between computers when PGO is used, though I don't
see why anyone would be doing so anyway.

Also adds support for PGO and LTO to the build.sh script.
2016-12-10 11:26:16 +01:00
Gregory Hainaut
40ac87c9bc Merge pull request #1690 from PCSX2/greg/vtune
Greg/vtune
2016-12-10 11:25:58 +01:00
Gregory Hainaut
7f64f39c05 vtune: count the number of ERET to trigger a quick exit
The purpose is to stop vtune profiling in a predictable way. It allows
to compare multiple runs.

ERET is called every syscall/interrupt return so it is proportional to
the EE program execution.
2016-12-10 11:07:35 +01:00
Gregory Hainaut
031b6e6372 common: improve vtune merge support
Mapping the full buffer is killer on Vtune (either crash or requires a huge processing time).
Instead keep the same ID for code in the same buffers.

I think all buffers are correctly mapped now but I still miss the frame pointer
for VU code.
2016-12-09 09:28:19 +01:00
Gregory Hainaut
b9369e7c00 pcsx2: remove the reserve feature of recompiler memory
Cons:
* requires ~180MB of physical memory (virtual memory is the same so it
  doesn't impact the 4GB limit)

From steam: 98.81% got at least 2GB of RAM. 83.62% got at least 4GB of RAM.
That being said, it might not really increase RAM requirements as OS could put the
new allocation in the swap.

Pro:
* code is much easier
* remove at least half of the signal listener
* last but not least, it is way easier for profiler/debugger
2016-12-09 09:28:19 +01:00
Gregory Hainaut
903d3595e5 pcsx2: add a --profiling cli option
Disable Framelimiter and Vsync

So you can profile real data instead of the idle time between vsync ;)
2016-12-09 09:28:19 +01:00
Gregory Hainaut
0453e5cad8 cmake: improve vtune integration
Year is included in the path so search in order 2018/2017/2016

Not ideal but at least all logic is inside the FindVtune module
2016-12-09 09:28:19 +01:00
Akash
07d7905896 GSDX: Fix output texture height calculation
Previously, the height of the frame offset was also considered for the total height of the texture which was obviously wrong as the portion before the offset value isn't part of the frame memory.
2016-12-08 22:14:05 +01:00
Gregory Hainaut
4d39bbe329 Merge pull request #1688 from turtleli/gsdx-thread
gsdx: Use std::thread and std::function for GSJobQueue
2016-12-08 22:07:36 +01:00
Jonathan Li
ac78688a32 gsdx: Make GSJobQueue non-inheritable
In the previous code, the threads were created and destroyed in the base
class constructor and destructor, so the threads could potentially be
active while the object is in a partially constructed or destroyed state.
The thread however, relies on a virtual function to process the queue
items, and the vtable might not be in the desired state when the object
is partially constructed or destroyed.

This probably only matters during object destruction - no items are in
the queue during object construction so the virtual function won't be
called, but items may still be queued up when the destructor is called,
so the virtual function can be called. It wasn't an issue because all
uses of the thread explicitly waited for the queues to be empty before
invoking the destructor.

Adjust the constructor to take a std::function parameter, which the
thread will use instead to process queue items, and avoid inheriting
from the GSJobQueue class. This will also eliminate the need to
explicitly wait for all jobs to finish (unless there are other external
factors, of course), which would probably make future code safer.
2016-12-08 01:18:17 +00:00
Jonathan Li
cdeed349e3 gsdx: Replace platform-specific threads with std::thread
GSThread now doesn't seem to have a purpose, so it's been removed.
2016-12-08 00:36:32 +00:00
Jonathan Li
faa46bb62d gui: Fix Plugin Selector panel memory leak
SafeList is totally unsafe for non-POD objects.
2016-12-07 20:25:45 +00:00
Jonathan Li
592d4b024a cdvdgigaherz:linux: Swap Ok and Cancel button order
This now matches the usual GTK GUI button order.

Also bump the version number.
2016-12-07 01:40:44 +00:00
Jonathan Li
1d634f9b44 cdvdgigaherz:linux: Use pread instead of lseek + read
It'll make it unnecessary to use a lock when reading disc sectors.
2016-12-07 00:54:11 +00:00
Jonathan Li
5109687a31 gui: Remove "Restore Defaults" button tooltip on Speedhacks panel
It's incorrect, and the button is self explanatory - fixing it would
just mean having a marginally useful tooltip that would require
translating.
2016-12-07 00:46:56 +00:00
refractionpcsx2
cfb801345b Merge pull request #1681 from PCSX2/interrupt_mask_register
PCSX2-GS: Use interrupt mask register bitfields
2016-12-04 01:42:44 +00:00
Jonathan Li
24038f8ce7 3rdparty:wxwidgets: Use locale name directly
Upstream commit 713c3f9d1b10ac25fb3c4a1ff115e23c035851dba from the wx
master branch (3.1.x).

Fixes the crash when the current language is Korean and the Change
Language dialog is accessed.
2016-12-02 00:07:16 +00:00
Jonathan Li
56d0c51033 pcsx2:windows: Don't create console stdio menu item
It's not used on Windows and it causes Visual Studio to report a memory
issue.
2016-12-01 18:25:14 +00:00
Akash
a9b63a2106 PCSX2-GS: Use interrupt mask register bitfields
Previously, the code used a lot of "bitwise AND" to get specific bitfields of the interrupt mask control register, which makes the code look a bit hacky, also it's even more hard for normal people to calculate the value when hexadecimal values are used for the bitwise operations where the register is totally binary. Instead of dealing with all those mess, let's just get the bitfield values from the already implemented nice union of the IMR register. FWIW it also makes the code more readable.
2016-12-01 16:32:27 +05:30
Gregory Hainaut
f41bb8db5e common: forget to format common properly
Moral of the story, don't rely on the commit hook when it isn't installed correctly ;)
2016-11-29 22:59:06 +01:00
Gregory Hainaut
310181b97f common: remove a gcc 4.6 hack
Not supported anymore
2016-11-29 22:59:06 +01:00
Gregory Hainaut
2b8a808fe3 remove trailing white space (until I run clang-format on the full code) 2016-11-29 22:59:06 +01:00
Gregory Hainaut
704776027b gsdx linux: update gui to add a HPO v2 checkbox
Sort std hack & upscaling hack
2016-11-29 17:22:02 +01:00
Gregory Hainaut
a95adcb999 gsdx-ogl: correct texture coordinate by 0.5 when vertex position is -0.5
Avoid ghosting in Captain tsubasa
2016-11-29 17:22:02 +01:00
Gregory Hainaut
61a7c747e1 gsdx-ogl: alternate implementation of half pixel offset
The previous implementation of HPO adds an offset on vertex position. It
doesn't always work beside it moves the rendering window.

The new implementation will add a texture offset so that instead to sample
the middle of the GS texel, we will sample the middle of the real texture texel.

It must be manually enabled with
* UserHacks_HalfPixelOffset_New = 1 (keep a small offset as intended by GS effect)
* UserHacks_HalfPixelOffset_New = 2 (no offset)

v2: always apply a 0.5 offset in case of float coordinates (Tales of Abyss)
Might break other games but few of them uses float coordinates to read
back the target
2016-11-29 17:22:02 +01:00
Gregory Hainaut
c2229e3c0b gsdx-ogl: add a texture offset uniform parameter to vertex shader
It would be used for a new implementation of the half pixel offset hack

Hopefully it doesn't badly impact the perf on low end iGPU
2016-11-29 17:22:02 +01:00
Gregory Hainaut
f6cad2235b gsdx: defer GSScanlineConstantData init
Avoid AVX instruction in the middle

Issue #1677
2016-11-28 19:40:25 +01:00
Gregory Hainaut
4c3e98754e vif JIT: increment based on sizeof(T)
Struct on x64 will be 32B so +2 instead of +1
2016-11-28 19:07:04 +01:00
Gregory Hainaut
9862e5d207 vif hash: move bucket size check in the 'add' path instead of 'find' path
More logical this way
2016-11-28 19:07:04 +01:00
Gregory Hainaut
c9db1c6c4b vtune: plug PCSX2 core + add missing profiling (VU/VIF/TLB)
Doesn't fully work yet
* Unknown stack frame
* Outside any known module

Potential root cause:
* Nvidia driver
* VU code as ebp is required for emulation so likely no frame
2016-11-28 19:07:04 +01:00
Gregory Hainaut
4fca5f4d88 mvu: use static array for dispatcher code
I don't understand why but standard mmap blew up Vtune
2016-11-28 19:07:04 +01:00
refractionpcsx2
7ec8c7f9fe Merge pull request #1676 from FlatOutPS2/master
GameDB: Add fixes for EA Sports team games and more
2016-11-28 12:57:51 +00:00
FlatOutPS2
fadc727df4 GameDB: Add fixes for EA Sports team games and more
Fixes missing geometry in EA Sports team games.

All NTSC-J and the Madden NFL PAL versions unconfirmed, but extremely
unlikely to act any different.

And adds The Simpsons: Hit & Run lens flar fix (see issue
https://github.com/PCSX2/pcsx2/issues/1670)

Fixed title for NCAA College Football 2K3, game is not in compatibility
list.
2016-11-25 21:00:40 +01:00
Gregory Hainaut
aeef39a417 Merge pull request #1672 from np511/master
Fix LTO flags.
2016-11-25 17:09:54 +01:00
Gregory Hainaut
e4516ac9b8 cmake: add extra SSE4 and AVX2 build of GSdx when DISABLE_ADVANCE_SIMD is enabled
It will provide a speed boost on distribution that only enable SSE2
2016-11-25 16:35:40 +01:00
Gregory Hainaut
8431299b92 gsdx sw: port code to the new constant object 2016-11-24 23:03:26 +01:00
Gregory Hainaut
3b5bc9c38d gsdx sw: create a constant buffer
* Use POD type to avoid SSE/AVX compilation dependency
* global object to reduce cache miss
* dynamically object so give a chance to allocate below 2GB (allow x64
  optimization)
2016-11-24 23:03:26 +01:00
Gregory Hainaut
0f5529be18 gsdx sw: s/g_cpu/m_cpu/ 2016-11-24 23:03:25 +01:00
Gregory Hainaut
c3e38e46c7 gsdx sw x64: disable mipmap support on AVX
Until it is implemented (might never happen)
2016-11-24 23:03:25 +01:00
Gregory Hainaut
608bb5ccb2 gsdx sw x64: add AVX2 implementation for VS
FS was copied from 32 bits (require massive update)
2016-11-24 23:03:25 +01:00
Gregory Hainaut
15220c386a gsdx sw x64: setup prim miss some optimizations 2016-11-24 23:03:25 +01:00
Gregory Hainaut
e3bfa2be88 gsdx sw: factorize common draw scanline code
Ymm inherite from Xmm so it is useless to duplicate the code

Add a parameter to alltrue to test the good register
2016-11-24 23:03:25 +01:00
Gregory Hainaut
211c7745de gsdx: don't try to correct depth in primitive trace
Avoid to go above the maximum size allowed by the format

Issue #1674
2016-11-24 22:24:00 +01:00
Jonathan Li
230b470a3c pcsx2:freebsd: Disable aio use on FreeBSD 10.3 and earlier
A FreeBSD 10.3 user (meowthink) reported to me that games were not
working properly on their system. After some investigation, it was
discovered that aio was buggy on their setup. There's also bug reports
for other applications that involve aio too.

Workaround the issue by using a normal read and disabling the use of aio
on FreeBSD 10.3 and earlier. It'll remain enabled on FreeBSD 11.0 in the
hope that the aio issue has since been fixed.
2016-11-24 19:50:07 +00:00
Gregory Hainaut
df96361ded Merge pull request #1673 from FlatOutPS2/W
GSdx Merge Circuit: Fix regressions
2016-11-24 11:02:38 +01:00
FlatOutPS2
417d0a3606 GSdx Merge Circuit: Fix regressions
Fixes screen shaking in Tenchu: Wrath Of Heaven, and graphical issues in
NASCAR 09.
2016-11-23 22:14:44 +01:00
np511
46fb6e9b48 Fixes LTO flags. Disables the use of the "gold" linker as a few plugins fail to compile with "gold" and "gold" is not used outside of LTO currently anyway. 2016-11-22 16:10:25 -05:00
Jonathan Li
483b3d6368 cdvdgigaherz: Avoid holding lock during thread sleep
Fixes Coverity CID 127721: Program hangs

Change the sleep to a condition variable wait, which has the added
benefit of allowing the plugin to close ever so slightly faster if
there's no disc in the drive.
2016-11-22 21:26:41 +01:00
Jonathan Li
29c2ccb310 cdvdgigaherz: Use a queue to manage sector requests
Fixes a data race.

Also avoid copying from the cache when it's unnecessary to do so.
2016-11-22 21:26:41 +01:00
Jonathan Li
3919a32dc3 cdvdgigaherz: Avoid race condition by reading from cache/disk
Instead of reading from a buffer shared by multiple threads, just read
the correct data from the cache or disk instead.
2016-11-22 21:26:41 +01:00
Jonathan Li
31b0b53394 cdvdgigaherz: Read correct sector type in keepalive thread
It'll prevent errors messages when raw sector reading is used.
2016-11-22 21:26:41 +01:00
Jonathan Li
a34942c882 cdvdgigaherz: Only update cache if the read succeeds 2016-11-22 21:26:41 +01:00
Jonathan Li
bb25ce1c6a cdvdgigaherz: Add cache entry check function
Useful when you don't actually want the cached data.
2016-11-22 21:26:41 +01:00
Jonathan Li
23f48e07ed cdvdgigaherz: Change signs
Avoid some unnecessary casting.
2016-11-22 21:26:41 +01:00
Jonathan Li
008fea5d89 common|cdvdgigaherz: Fix API sign mismatch
The typedef and function declaration don't quite match.
2016-11-22 21:26:41 +01:00
Gregory Hainaut
0d275868a5 gsdx x64: quick fix for windows
Until we got a full implementation
2016-11-21 18:18:09 +01:00
Vladimir Jigulin
268b4d9f9f debugger: memory view improvements
Highlight memory location referenced by current register
Allow memory window not be aligned by row size
Use radio and checks in menu
2016-11-21 10:31:34 +01:00
Gregory Hainaut
dc85989553 cmake: only enable SSE2 on x64 build
SW will generate AVX code anyway
2016-11-20 23:27:13 +01:00
Gregory Hainaut
37379d5d1d gsdx sw x64: shuffle memory allocation
tex address is a3
vm address is a1

Could help to avoid REX prefix
Reduce prologue/epilogue register copy

Byte code size 41893 => 38912 (on my testcase)
2016-11-20 20:19:13 +01:00
Gregory Hainaut
b76305a0d2 gsdx sw x64: keep the copy of top in the stack for dthe
An extra stack access by pixel won't impact perf (only 16 bits game with dithering)
Allow to save 2 registers (a1/a3)
2016-11-20 20:19:13 +01:00
Gregory Hainaut
994274623b gsdx sw x64: use rip addressing on draw scan line
byte code 41997 => 41893

However it will allow to save 2 registers as future optimization
2016-11-20 20:19:12 +01:00
Gregory Hainaut
7c06e87d59 gsdx sw x64: use rip addressing on setup prim
byte code: 9017 => 8736

Save a register
2016-11-20 20:19:12 +01:00
Gregory Hainaut
923c297dfc gsdx sw: vinsert128 opcode require an XMM register
Reported as an error on lastest Xbyak
2016-11-20 20:19:12 +01:00
Gregory Hainaut
e674518c4e Update from xbyak 4.84 to 5.11
* bin2hex.h is removed
* vptest/vpblendvb YMM support integrated upsteam
* better support of rip for 64 bits
* AVX512 support (only miss the CPU now)

Local change: add BSD3 clause
2016-11-20 13:21:11 +01:00
Gregory Hainaut
681c09f25c gsdx sw: catch xbyak exception 2016-11-20 12:58:07 +01:00
Gregory Hainaut
0fd5346860 gsdx x64 linux: only mmap in lower 2GB code segment
Allow to use rip addressing
2016-11-20 10:38:15 +01:00
Gregory Hainaut
2252ba1bb7 gsdx: add the detected ISA on the name
As a SSE build could potentially uses AVX operations.
2016-11-20 10:38:15 +01:00
Gregory Hainaut
30a5922a0b pcsx2: reduce std padding to 1 for small screen 2016-11-19 21:52:08 +01:00
Gregory Hainaut
58c3794ce7 Merge pull request #1664 from PCSX2/greg/gsdx-64b
Greg/gsdx 64b
2016-11-19 18:12:41 +01:00
Jonathan Li
ef25502491 gsdx build: don't exclude AVX files.
Thanks for the patch :)
2016-11-19 17:01:36 +01:00
Gregory Hainaut
cc6d193e1d gsdx: Relax SSE/AVX constraint on 64 bits
The JIT will automatically select the best ISA (only AVX1 so far)
2016-11-19 17:01:29 +01:00
Gregory Hainaut
8fd46e96aa gsdx sw JIT: dynamically select ISA for SetupPrim 2016-11-19 17:00:33 +01:00
Gregory Hainaut
574a2c774e gsdx sw JIT: dynamically select between AVX1 and SSE code path (scanline) 2016-11-19 17:00:33 +01:00
Gregory Hainaut
6b78b8f9ce gsdx sw JIT: dynamically select SSE41 at runtime even on SSE2 build (scanline)
It won't give the full SSE41 speed boost but it is better than nothing
2016-11-19 17:00:33 +01:00
Gregory Hainaut
322473c295 gsdx sw: add a code example for gather instruction
It will requires a generic (register naming) linear interpolation to use it properly
Gather instruction requires an extra mask register therefore all registers name will be shuffled

Perf wise, initial haswell implementation seems to be microcode emulated.
2016-11-19 17:00:33 +01:00
Gregory Hainaut
2e20693583 gsdx sw x64: restore read texel optimization 2016-11-19 17:00:33 +01:00
Gregory Hainaut
e728a14c19 gsdx sw: factorize color split in split16_2x8 2016-11-19 17:00:33 +01:00
Gregory Hainaut
d58e43edbf gsdx linux: plug vtune as Windows 2016-11-19 17:00:32 +01:00
Gregory Hainaut
8abf242e2c gsdx: small x64 printf warning fixes 2016-11-19 17:00:32 +01:00
Gregory Hainaut
051c5c4bf7 gsdx sw x64: small stack optimization on linux
mov with the stack pointer require less bytecode
2016-11-19 17:00:32 +01:00
Gregory Hainaut
141c9e9c86 gsdx sw x64: prefer faster 32 bits operation when possible 2016-11-19 17:00:32 +01:00
Gregory Hainaut
a281bda9a6 gsdx sw x64: port the scanline generator on AVX
Based on Gabest's work.

* Miss mipmap

Note: dithering info
It is a bit tricky as a2 on linux was rdx register which overlap with fzm (dh/dl)
It might require dedicated windows code
2016-11-19 17:00:32 +01:00
Gregory Hainaut
8e29e09943 gsdx sw x64: update setup prim generator x64 SSE&AVX 2016-11-19 17:00:32 +01:00
Gregory Hainaut
4a47224ac1 gsdx: define the linux x64 ABI 2016-11-19 17:00:32 +01:00
Gregory Hainaut
e31ce87bb3 gsdx: SW JIT debug helper
Allow to compare 32/64 bits (and all ISAs too)
Allow to breakpoint (int3)
Print selector info
Print size of buffer and start (disabled by default)
2016-11-19 17:00:32 +01:00
Gregory Hainaut
633f7a1db9 xbyak: add int3 instruction
Very useful to stop the JIT
2016-11-19 17:00:32 +01:00
Gregory Hainaut
43b4cfc215 gsdx: separate dump directory for 32/64 bits 2016-11-19 17:00:32 +01:00
Gregory Hainaut
82d12691e1 gsdx: properly check SSE support
1/ Check all "levels"
2/ requires AVX for 64 bits
2016-11-19 17:00:32 +01:00
Gregory Hainaut
8b4da69861 cmake: always define avx on 64 bits build 2016-11-19 17:00:32 +01:00
Gregory Hainaut
0e2ec9c2cb pcsx2 gui: reduce the padding to 2 for low cost display 2016-11-19 11:27:20 +01:00
Gregory Hainaut
4aa79df402 pcsx2 gui: increase a bit the about box
It was too crowded
2016-11-19 11:21:07 +01:00
Gregory Hainaut
b251d47712 pcsx2 gui: use dynamic section sized for ee/vu cycle message
Static size is better aligned but it consumes too much space on the GUI

Besides, if a string (translation) is bigger that the static size it will be cut off.

VU/EE min sized are the same to keep a proper alignment
2016-11-19 11:21:07 +01:00
Gregory Hainaut
9c598fcd01 common: finally spot the text size bug
GetBestWrappedSize (hence the BestSize) computes the size of
the wrapped text based on box side minus padding.

So the width of the widget is already the good size for text wrapping
2016-11-19 11:21:07 +01:00
Gregory Hainaut
4ee942aba2 pcsx2 gui: use pxGetFixedFont helper instead of wxFont constructor 2016-11-19 11:19:24 +01:00
Jonathan Li
d64db65743 LilyPad: Add PS mouse support (#1660)
Adds Playstation Mouse as a new pad type.

For use with PS1 games only.
2016-11-14 13:37:00 +00:00
FlatOutPS2
8db9a27970 fix2 2016-11-14 13:55:55 +01:00
Gregory Hainaut
259521ec3e Merge pull request #1659 from PCSX2/greg/clang-format-common
reformat main common directory
2016-11-14 11:37:53 +01:00
refractionpcsx2
e0cd520837 VIF: Apply stall fix to VIF0 as well. 2016-11-13 12:15:18 +00:00
FlatOutPS2
d1788ac1e9 fix 2016-11-13 10:56:35 +01:00
FlatOutPS2
de8d3fb1eb LilyPad: Add PS mouse support
Adds Playstation Mouse as a new pad type.

For use with PS1 games only.
2016-11-13 01:23:59 +01:00
FlatOutPS2
a3478e02f4 LilyPad: Add tooltips (#1653)
Adds informational tooltips to several UI options.
2016-11-12 23:52:56 +00:00
Jonathan Li
f513ca2a28 cdvdgigaherz:linux: Check ioctl return value
Fixes Coverity CID 172718: Unchecked return value

Also avoid adding the sector leadout descriptor info to the TOC since it
actually isn't used.
2016-11-12 23:28:17 +00:00
Gregory Hainaut
c5d727da39 CDVD: check return value of ToLong
Reported by coverity
2016-11-12 19:36:44 +01:00
Gregory Hainaut
356429d0e7 Sio: use & 0xFF instead of u8 mask
Tentative to avoid various bad coverity reports
2016-11-12 19:29:10 +01:00
Gregory Hainaut
2da6cb263d pcsx2: Gcc warning in copy constructor of BaseMessageBoxEvent
../pcsx2/gui/MessageBoxes.cpp:62:1: warning: base class ‘class pxActionEvent’ should be explicitly initialized in the copy constructor [-Wextra]
 BaseMessageBoxEvent::BaseMessageBoxEvent( const BaseMessageBoxEvent& event )
2016-11-12 18:47:11 +01:00
Gregory Hainaut
5e5b927abd gzip reader: bad find interface
Find => return int
find => return size_t (behave as STL)

Thanks to gcc for the useful warning

+ a cast to avoid an useless warning
2016-11-12 18:41:07 +01:00
Gregory Hainaut
a7e76438b2 iop: use const on some variables
Avoid coverity warning
2016-11-12 18:26:28 +01:00
Gregory Hainaut
056ecb1c39 pcsx2: add some cast to fix gcc (int vs uint) warning
I'm pretty sure that .RMSK (which is an u32:31) warnings are false positives
2016-11-12 17:36:40 +01:00
Gregory Hainaut
63c825d0e0 pcsx2: check return value of std functions
Avoid noisy gcc warnings
2016-11-12 17:36:06 +01:00
Clang Format
1fba5cb580 reformat main common directory
Disable some reformat around emitter registers declaration and a massive cases.
2016-11-12 16:52:49 +01:00
refractionpcsx2
1053234507 VIF: Fix some stalls getting stuck in situations, fixes #1658
Gif FIFO: Improve reliability a little bit, especially when MFIFO is in use.
2016-11-12 12:36:04 +00:00
Gregory Hainaut
49d5c4260f gsdx state: post fix depth tracing
The main FindMinMax methods is perf critical so instead I created a separate function
to ensure the constness of the depth

Fix letter regression on Xenosaga3
2016-11-11 23:39:34 +01:00
Jonathan Li
1530effb29 gsdx: Catch bad_alloc exceptions 2016-11-09 22:41:02 +00:00
Jonathan Li
ae6f26f3ef gsdx: Skip texture cache read if any dimension is 0
Fixes a crash at the PSX logo if either the DX9 or DX11 hardware
renderer is used.
2016-11-09 22:39:53 +00:00
Gregory Hainaut
cf739d2493 Merge pull request #1655 from PCSX2/greg/git-rev-title
pcsx2 gui: use git desribe as version name
2016-11-08 23:42:15 +01:00
Gregory Hainaut
18f677d530 oups miss one minus 2016-11-08 23:11:12 +01:00
Gregory Hainaut
f6c27c2abf pcsx2: use ASCII minus 2016-11-08 23:09:20 +01:00
Gregory Hainaut
5596f69c0e pcsx2 gui: use git desribe as version name
Shorter than date and give all the useful info

Require windows test

close #1043
2016-11-08 22:44:39 +01:00
Gregory Hainaut
784f549339 pcsx2: always probe the ctrl/shift/alt key state
Event handling becomes messy when you press in the app but release outside of it (due to desktop change)

close #477
2016-11-08 22:42:42 +01:00
Gregory Hainaut
5b3dfc3f9e Merge branch 'greg/gcc-warning-iop-fixes' 2016-11-08 21:53:43 +01:00
Gregory Hainaut
6c3a4c6927 iop bios: fix gcc warnings
* return value of function can't be const
* use unique_ptr
2016-11-08 21:53:27 +01:00
Gregory Hainaut
f3e1ba5251 onepad gui: always assume rumble is supported on the GUI
close #1497
2016-11-08 21:23:56 +01:00
Gregory Hainaut
31b32d3b11 gsdx linux: don't require to hit enter for Texture Offset text entry
close #1292
2016-11-08 20:28:42 +01:00
Pseudonym
b3b1f3ac68 IOP: Convert most IOP memory access in the IRX HLE and debugging module to
safe access through iopMem* functions.
2016-11-08 19:08:51 +00:00
Gregory Hainaut
d3a748ce3a cmake: drop CDVDlinuz and CDVDiso
You can use cdvdGigaherz on linux now

close #464
close #465
2016-11-08 19:58:44 +01:00
Gregory Hainaut
ed3052dea5 gsdx: remove various assertion
Useless or wrong assertion
2016-11-08 18:58:10 +01:00
Pseudonym
809684e9de IOP: PSX bios console output filtering of repeated and empty lines. 2016-11-07 10:09:12 +00:00
Jonathan Li
a283e95fed cmake: Add cdvdgigaherz and dependencies
Only new dependency is libudev.
2016-11-07 00:08:23 +00:00
Jonathan Li
16b6cc41a4 cdvdgigaherz:linux: Add config and GUI code 2016-11-07 00:08:23 +00:00
Jonathan Li
747f4dc3fe cdvdgigaherz:linux: Add initial IOCtlSrc implementation 2016-11-07 00:08:23 +00:00
Jonathan Li
f13f50779c cdvdgigaherz: Export plugin interface when using gcc/clang 2016-11-07 00:08:23 +00:00
Jonathan Li
363b581926 cdvdgigaherz: ifdef Windows specific stuff 2016-11-07 00:08:23 +00:00
Jonathan Li
1573f513ce cdvdgigaherz: Move lba_to_msf to header
Also use proper inline keyword.
2016-11-07 00:08:23 +00:00
Jonathan Li
ae0577bc16 cdvdgigaherz: Fix write-strings warnings
Too bad I can't change PS2Edef.h to use a const char*.

Also remove SVN_MOD ifdef from version string.
2016-11-07 00:08:23 +00:00
Jonathan Li
cccf216dbb cdvdgigaherz: Use C++11 threads instead of Win32 threads 2016-11-07 00:08:23 +00:00
Jonathan Li
d872c0560a cdvdgigaherz: Use unique_ptr for src 2016-11-07 00:08:23 +00:00
Jonathan Li
f8f79788e4 cdvdgigaherz: Use condition variables for event waiting
Also use atomics for thread exit variables.
2016-11-07 00:08:23 +00:00
Jonathan Li
f678ff8cfd cdvdgigaherz: Replace critical section with mutex 2016-11-07 00:08:23 +00:00
Jonathan Li
b1850f2465 cdvdgigaherz: Move dllmain to a Windows only file 2016-11-07 00:08:23 +00:00
Jonathan Li
d7866831ae cdvdgigaherz: Use Unicode on Windows 2016-11-07 00:08:23 +00:00
Jonathan Li
5917bf31c3 cdvdgigaherz: Remove old config code 2016-11-07 00:08:23 +00:00
Jonathan Li
59247c7838 cdvdgigaherz: Switch to using the new settings system
Also refactor the default drive selection and GUI code so optical drive
detection is shared.

Note: This breaks the current config, but there's only one setting
anyway.
2016-11-07 00:08:23 +00:00
Jonathan Li
dce3c57e6a cdvdgigaherz: Add portable setting class
Can load/save inis (though functionality is very basic).
2016-11-07 00:08:23 +00:00
Jonathan Li
9c440ab6b7 cdvdgigaherz: Use bool return for ReadSectors*
More readable.
2016-11-07 00:08:23 +00:00
Jonathan Li
fc085c1758 cdvdgigaherz: Improve IOCtlSrc::ReadSectors2048
Don't use a RAW_READ_INFO struct when only the LARGE_INTEGER member is
used. Use SetFilePointerEx which is slightly simpler and doesn't require
checking GetLastError() in some circumstances to check whether the read
has actually failed.

Also use a mutex to prevent simultaneous access from both the read
thread and the keepalive thread to prevent overlapping SetFilePointerEx
calls from causing the wrong data to be read.

And print error messages should a failure occur.
2016-11-07 00:08:23 +00:00
Jonathan Li
fdd6ea3651 cdvdgigaherz: Simplify SetSpindleSpeed
Also set the max drive speed to 4x DVD and 24xCD (down from 8x DVD and
36x CD) - it seems to reduce pausing slightly since the drive doesn't
require as much time to spin up to the desired speed.
2016-11-07 00:08:23 +00:00
Jonathan Li
1834b7d0f9 cdvdgigaherz: Get disc info when disc is first ready
Also set the disc speed at the correct time - CDROM SET SPEED only stays
in effect till the disc is removed.

Also fix a memleak in CDVDopen when the drive cannot be accessed.
2016-11-07 00:08:23 +00:00
Jonathan Li
95b98c5a38 cdvdgigaherz: Use a formatted TOC instead of a raw TOC
It's simpler and provides almost the same information. The only
information that might be lost is the first track specific track type.
2016-11-07 00:08:23 +00:00
Jonathan Li
327515366f cdvdgigaherz: Don't calculate the track length
Not really necessary.

Also fix 2 off-by-ones.
2016-11-07 00:08:23 +00:00
Jonathan Li
1f60e3101e cdvdgigaherz: Reduce disc info ioctl calls
It's rather unnecessary to use the same ioctls multiple times per disc
when the info returned doesn't change. Just use each ioctl once and
read/calculate all the necessary info all at onace.

This also fixes an issue where the IOCTL_DVD_START_SESSION ioctl is
repeatedly used if the returned session ID is 0. The previous code
assumed that 0 was not a valid session ID and would repeatedly use the
ioctl to obtain a non-zero session ID. However, 0 is a valid session ID,
and it seems IOCTL_DVD_START_SESSION can repeatedly return a 0 session
ID even if the corresponding IOCTL_DVD_END_SESSION has not been called.
In our case, a DVD session is only necessary for DVD detection and
reading the physical format information. This fix seems to alter drive
speed behaviour.
2016-11-07 00:08:23 +00:00
Jonathan Li
f8e474a1c5 cdvdgigaherz: s/device/m_device/ 2016-11-07 00:08:23 +00:00
Jonathan Li
8f11049c9f cdvdgigaherz: Remove non-SPTI raw sector reading code
There doesn't seem to be any issues calling CreateFile with
GENERIC_WRITE access (which is necessary for SPTI) on a standard user
account, so the SPTI code should work in all cases.
2016-11-07 00:08:23 +00:00
Jonathan Li
f314c2a4d9 cdvdgigaherz: Simplify Q subchannel relative offset calculation
That way there's no need to calculate the track length for each track.
2016-11-07 00:08:23 +00:00
FlatOutPS2
5d90afe648 LilyPad: Add separate bindings for each pad type (#1609)
Adds separate bindings for each of the pad types (DualShock2,
Guitar,Pop'n Music). This allows the user to change the button
configuration to better suit the Guitar and Pop'n Music pads without
messing up the bindings already setup for the DS2.

Close #1576.
2016-11-06 21:59:19 +00:00
Gregory Hainaut
5ff9e94a2e gsdx linux: align mipmapping gui option on Windows 2016-11-06 16:39:40 +01:00
Gregory Hainaut
107251e099 gsdx: sort crc game list 2016-11-06 16:30:51 +01:00
Gregory Hainaut
f970090577 Merge pull request #1625 from ssakash/mipmap_ui
GSDX-Windows: Add mipmap combobox on GUI
2016-11-05 19:02:28 +01:00
Akash
1547dd4215 GSDX-UI: Add Mipmap combobox
Mipmapping is now supported on hardware renderers thanks to Gregory. Please report any observed hardware mipmapping issues on the forums (http://forums.pcsx2.net/Thread-New-feature-Needs-testing-GSdx-HW-mode-Experimental-mipmap-support) as potentially the HW mipmap code might still have some bugs.
2016-11-05 22:19:32 +05:30
Gregory Hainaut
253bd1aea3 linux compilation fix of previous iop change 2016-11-05 15:44:57 +01:00
refractionpcsx2
49b80a4916 Merge pull request #1383 from PCSX2/prafullpcsx2-eecache
EE-Int: Minor EE Cache changes
2016-11-05 13:30:31 +00:00
Pseudonym
8259b29896 IOP: PSX bios console output 2016-11-05 12:14:01 +00:00
Akash
f1c4b7d5df PSX-mode: Detect video mode via colorburst
Previously the video mode was initialized using the info fetched from SetGsCrt Syscall though unfortunately, it doesn't seem to work with PSX games as they don't use the SetGsCrt syscall. At such cases, we get the video mode info from the SMODE2 colorburst to properly maintain the timing as per the video mode. Might help some cases on PSX games where PAL/NTSC video mode was improperly set to a wrong limit instead of it's actual vertical frequency limit.
2016-11-05 10:29:29 +01:00
Akash
58ed49f3c9 GSDX: Clean up warnings on MSVC
* Explicitly cast w_pages and h_pages into uint32.
* Prevent signed/unsigned comparison by converting lod into unsigned integer, honestly how coud a mipmapping level be negative?
2016-11-05 10:28:04 +01:00
refractionpcsx2
ae57b960c2 Vif-Rec: Initialise IsAligned for VifUnpackSSE_Simple. Should fix the valgrind reported issue (no compatibility changes expected) 2016-11-04 22:31:07 +00:00
Gregory Hainaut
758cf25888 gsdx: wrap bp for block ptr
Fix massive flickering of Beyond Good&Evil on SW renderer (HW happily overflow)
2016-11-04 23:03:12 +01:00
Gregory Hainaut
3d65312999 gsdx hw: remove old assert
Code is working fine with all formats
2016-11-04 23:02:49 +01:00
Akash
437afbbbf3 GSDX-PCRTC: Move Saturation hack to displayrect()
Fixes custom resolution scaling on Tribes aerial assault.
2016-11-01 17:54:46 +01:00
Akash
b871c6b46f GSDX-TextureCache: Generalize scaling equation
Previously the dedicated custom resolution scaling equation was ignored for the second SetScale() call, generalizing the equations will also fix the DMC scaling issue on custom resolution. Also remove unnecessary checks for null on scale factors. The possibility for having a null scale factor value only exists on custom resolution and it will only happen on cases where the output circuit isn't ready yet. So the ideal way would be to handle all the required conditions of output circuit on "m_renderer->CanUpscale()" itself.
2016-11-01 17:54:46 +01:00
Akash
055f236aa5 GSVector: Add constructor to dispatch same values 2016-11-01 17:54:46 +01:00
refractionpcsx2
85fe24cede Merge pull request #1623 from Catarax/master
GameDB: World Rally Championship Freeze Fix (PAL)
2016-11-01 16:05:59 +00:00
Gregory Hainaut
8562409a92 i10n: upload new russian mo file 2016-11-01 13:47:20 +01:00
Gregory Hainaut
c9974b65c4 iop: remove kernelTTYFileDescrWrite debug function
Recommended by pseudo

Main issue is a buffer underflow when strlen(...) < 2
2nd issue is code is called based on hardcoded address of a single bios.
2016-11-01 13:41:54 +01:00
Gregory Hainaut
270d7191ce sio: increase buffer to avoid overflow
memcardWrite will use "sio.buf[data + 5] = mcd->term;" and data is 8 bits

Reported by coverity
2016-11-01 13:41:03 +01:00
Gregory Hainaut
aa4b2d9f3a gsdx sw: wrap GS memory
Cost ought to remain small. Worst case is 2 extra "and" operation by group of pixels in scanline renderer

I think PixelAddressN functions are mostly call in the init.
2016-11-01 13:33:11 +01:00
Pseudonym
233f66db5e Fixed effects area wrapping calculation, which was always buggy but this
wasn't evident until additional addresses were precalculated.
Not expected to improve compatibility.
2016-11-01 11:12:41 +00:00
Christian Kenny
d1ae298211 3rd Party: Update glext and wglext to the current revision 33248 (10-24-2016) 2016-11-01 10:02:29 +01:00
TotalCaesar659
5d1b160fe9 Fixed Russian translation 2016-11-01 09:47:21 +01:00
Jonathan Li
ba557e20a4 gsdx:recorder:unix: Fix thread leaking 2016-10-28 18:33:50 +01:00
Jonathan Li
7ab5cb20c8 gsdx: Don't close threads twice
CloseThread is called in the GSJobQueue destructor, so don't call it
again in the GSThread destructor.

Fixes #392, which was caused by a use after free.

Also prevents pthread_join() from being called twice for each thread
on non-Windows operating systems, which is undefined behaviour.
2016-10-28 18:33:35 +01:00
Jonathan Li
bc7aa1a500 spu2-x:freebsd: Enable SDL backends
portaudio currently isn't providing me with sound, even though it did
before.
2016-10-27 22:03:49 +01:00
Jonathan Li
86951aff9a build.sh: Fix for FreeBSD
"--jobs" isn't present in FreeBSD's make, but "-j" is.
2016-10-27 22:02:43 +01:00
refractionpcsx2
653d825083 Merge pull request #1640 from AniLeo/patch-3
Updates locales/templates readme
2016-10-27 15:24:33 +01:00
AnnieL
72fc467109 Updates locales/templates readme
Replaces the broken wiki link for the correct one
2016-10-27 14:19:36 +01:00
Jonathan Li
86a6f5d67c cdvdgigaherz: s/itob/dec_to_bcd/
There's no need to have 2 ways to convert a u8 to a binary coded
decimal. Remove the macro version.
2016-10-26 22:11:40 +01:00
Jonathan Li
852ed21e88 cdvdgigaherz: Remove no drive support
It's the same as "No disc" or having no disc in the drive.
2016-10-26 17:30:28 +01:00
Jonathan Li
c023d7676a cdvdgigaherz: Remove Source base class
Also remove virtuals from IOCtlSrc.
2016-10-26 17:30:27 +01:00
Jonathan Li
9f6c6d9917 cdvdgigaherz: Don't use GetFileSizeEx to get disk size
It doesn't seem to work for disks, and IOCTL_DISK_GET_LENGTH_INFO
usually succeeds instead.
2016-10-26 17:30:23 +01:00
Jonathan Li
9c643ae9ca cdvdgigaherz: Remove CDVDabout and SysMessage
It's not accessible from PCSX2. More importantly, I don't want to port
it.
2016-10-26 17:30:21 +01:00
Jonathan Li
fb3580efa1 cdvdgigaherz: Remove unneeded code 2016-10-26 17:30:16 +01:00
Gregory Hainaut
5dfb7d63dc gsdx: wrap gs page/block instead to skip them
Fix FMV of Thrillville when coupled with wrap_gs_mem = 1
2016-10-25 22:49:05 +02:00
Gregory Hainaut
db4b4fb166 gsdx ogl: keep a separate log for sw 2016-10-25 22:00:41 +02:00
Gregory Hainaut
cedc8aae44 gsdx: implement a shared memory to emulate the wrapping of the gs memory
Code can be enabled with "wrap_gs_mem = 1". Code only allow a single shared memory but
I don't think we need more anyway.

Linux only, Kernel panic expected with the HW renderer.

Fix FMV on Silent Hill 3 with the SW renderer
2016-10-25 20:29:38 +02:00
Gregory Hainaut
42b51611af gsdx: don't dump debug file if not requested 2016-10-25 17:10:57 +02:00
sudonim1
820462dbc0 Merge pull request #1635 from sudonim1/reverb
SPU2-X: Reverb rewrite
2016-10-24 17:17:48 +01:00
Gregory Hainaut
e80ca0fa92 gsdx ogl: of course some driver don't work with GL_ARB_enhanced_layouts
Windows and (AMD or Intel)
2016-10-23 12:48:23 +02:00
Gregory Hainaut
885ef7a46f gsdx ogl: reduce complexity of driver detection 2016-10-23 12:43:50 +02:00
Gregory Hainaut
565cb70875 gsdx ogl: don't request arb_texture_barrier for the SW renderer
Allow[1] to use the mesa software emulated driver to test EGL.

[1] also need export MESA_EXTENSION_OVERRIDE="GL_ARB_buffer_storage"
2016-10-23 12:13:57 +02:00
Pseudonym
1668392988 SPU2-X: Mass reverb register renaming. Hopefully I didn't screw up the
cross-channel reflection registers.
2016-10-22 19:16:11 +01:00
Pseudonym
9a51820dec SPU2-X: Experimental reverb based on Dr. Hell's
http://drhell.web.fc2.com/ps1/ and/or Martin Korth's
http://problemkaputt.de/psx-spx.htm reverse engineering.
Negate final reverb output (don't know why but it's an
improvement when comparing the waveform).
2016-10-22 19:16:11 +01:00
Gregory Hainaut
01f0f436ac gsdx linux replayer: allow to repack gs dump
linux_replay = -N will save N first frames to a new gs dump

Save disk space & debug time
2016-10-22 13:22:28 +02:00
Gregory Hainaut
99c43881df gsdx egl: report an error if we fail to bind the openGL API
It seems Nvidia added openGL support in 355 (whereas I have 352 on debian).

I don't know the status on AMD.
2016-10-22 13:22:28 +02:00
Gregory Hainaut
d4a163e9cc spu2: improve format consistency 2016-10-22 13:22:28 +02:00
Pseudonym
1f44c4be2f SPU2-X: PSX games should be able to read ENDX correctly now, which is
important functionality for many sound engines.
Fixed two other obvious errors in the psx compatibility merge, probably
inconsequential.
2016-10-20 04:17:03 +01:00
Gregory Hainaut
8fdf973e66 gsdx glsl: add basic support of GL_ARB_enhanced_layouts (GL4.4)
Hardcode location of interface to the location 0. If I understand the
spec correctly (unlikely), variable in interface will get successive
location.

Goal is to reduce driver work. Instead to compute some location based on
name matching approach (and silly validation), the driver can now use
static allocation.

Tests on future Mesa 13 are welcome
2016-10-19 23:03:39 +02:00
Gregory Hainaut
b1f2d27ddf gsdx: move Haunting Ground CRC to dx level 2016-10-19 21:10:44 +02:00
Gregory Hainaut
264b764d6e gsdx tc: improve haunting ground hack to remove the bloom effect
Just clear the buffer. The generic solution will be a copy from buffer A
to buffer B But it requires
1/ a big buffer A (otherwise it would overflow)
2/ a line width rescaling (+ the upscaling mess support)
2016-10-19 19:31:32 +02:00
František Zatloukal
8958b2042f Force GDK_BACKEND to x11 in .desktop 2016-10-18 11:15:26 +02:00
František Zatloukal
a9bc568217 Force GDK_BACKEND to x11
Fixes PCSX2 on Wayland
2016-10-18 11:15:26 +02:00
Gregory Hainaut
c2cf8e528c gsdx ogl: tekken5: only trigger channel effect shader when frame buffer is a single page
Fix missing model regression.
2016-10-17 19:34:55 +02:00
Clang Format
604d3bac3c clang format: set SpacesBeforeTrailingComments to 1 2016-10-16 21:42:31 +02:00
Akash
8945ace3f7 GSDX-UI: Remove Trilinear options at some cases
Currently the Trilinear option only works on OpenGL. Remove it from combobox when other renderers are used.
2016-10-16 17:36:30 +01:00
Akash
45be4626f6 GSDX: Add an enum for texture filtering
Also re-order the combobox to make it look consistent with the tooltip description.
2016-10-16 17:36:30 +01:00
Gregory Hainaut
cc4cc342c2 gsdx hw: add a special sub target invalidation for haunting ground
Fix a wrong blending/blooming

Based on CRC to reduce impact on others games (speed)
2016-10-16 17:32:57 +02:00
Gregory Hainaut
31248da3d1 gsdx sw: Fix 16 bits date test on SSE build
AVX Builds were fixed in this commit a1a842b07f
2016-10-16 16:48:23 +02:00
Gregory Hainaut
defdd27987 gsdx: set m_nativeres to true in replayer
Otherwise you can't compare draw call between native and upscaled
2016-10-16 16:48:23 +02:00
Robert Neumann
f5e096a66f spu2x: indicate pitch modulation and noise enabled status in the visual debugger 2016-10-16 14:15:12 +02:00
Gregory Hainaut
c284459382 gsdx tc: allow to search old depth/color in texture cache
But give higher priority to recent buffer.

Fix cut scene issue in Jak II (and potentially various game when EE/VU hacks are used)
2016-10-15 18:08:00 +02:00
Gregory Hainaut
7bb201a1d2 gsdx tc: move code to allow to lookup an older target if none was found
Next step is to enable it by uncommenting line 452
2016-10-14 22:03:29 +02:00
Catarax
978b3eca05 GameDB: World Rally Championship Freeze Fix (PAL)
Fix the random freeze in WRC for PAL release with the EETimingHack.
2016-10-14 21:02:16 +02:00
Gregory Hainaut
24684033ca gsdx: enable clut_load_before_draw option on Harley Davidson (CRC hack)
At least the game is good until we find how the HW really behave
2016-10-14 20:47:18 +02:00
Gregory Hainaut
2c0a4ac906 gsdx ogl: add an extra debug log level
Avoid too much log
2016-10-14 20:46:58 +02:00
Gregory Hainaut
3c30db965d gsdx gui: add a combo box on linux (below Interlace)
3 states are off/half/full. I'm too lazy to create a better combo box.

The hack option will be removed when Windows GUI is ready
2016-10-14 19:26:58 +02:00
Gregory Hainaut
37a1230c01 gsdx: reduce code duplication for key event 2016-10-14 19:26:58 +02:00
Gregory Hainaut
a4658eac24 gsdx hw: allow overlapping of texture (alpha) and framebuffer (RGB)
Fix HUD on Berserk

v2: use fbmask instead of hacking the target format to 24 bits.
2016-10-14 19:26:27 +02:00
Gregory Hainaut
25e76d0564 gsdx ogl: use an invalid value for stencil state
Fix shadow in WWE Smackdown Vs Raw 2006
2016-10-14 19:01:18 +02:00
Gregory Hainaut
51c64fcbe6 gsdx sw: trick GetFeedbackOutput to handle basic merge loopback
It is enough for Xenosaga.
2016-10-14 18:13:20 +02:00
Gregory Hainaut
deb2ed3d09 gsdx ogl: reimplement merge circuit to support feedback write 2016-10-14 18:13:20 +02:00
Gregory Hainaut
06055add5c gsdx merge: get a new buffer for the feedback write 2016-10-14 18:13:20 +02:00
Gregory Hainaut
317a464278 gsdx shader: RGB => YUV conversion
Required for write feedback emulation
2016-10-14 18:13:20 +02:00
Jason Brown
6ef5607d99 gsdx shader: add a shader to render text for OSD
Gregory: code extracted from the OSD PR to reduce conflict
2016-10-14 18:13:20 +02:00
Jason Brown
d84d30fe87 gsdx: Add color component to OGL shaders 2016-10-14 18:13:20 +02:00
Gregory Hainaut
7ca9ca9465 gsdx: new parameter for merge virtual function
* Add full PMODE register to replace slbg/mmod
* Add full EXTBUF register (will allow to emulate write feedback)
* Add a third source (which will actually be the destination of the
  write feedback)
2016-10-14 18:13:20 +02:00
FlatOutPS2
357dcdb55e GSdx: Move alpha stencil hack back to original location
Avoids skipping the alpha stencil hack.
2016-10-14 16:36:17 +02:00
Gregory Hainaut
fbf7ccbdda gsdx: by default new will throw std::bad_alloc
So catch/use it and don't bother with GSDXErrorOOM
2016-10-13 20:44:59 +02:00
Gregory Hainaut
c440c7c93a gsdx gui: update the filter combox box with new trilinear options
OpenGL only

v2: update setting tooltip based on turtleli feedback
2016-10-13 20:16:38 +02:00
Gregory Hainaut
5ced9c1f19 gsdx mipmap:ogl: plug trilinear/mipmap2 option
mipmap option 3. Actually maybe a separate tri-linear option will be better

m_mipmap == 2 => use manual PS2 trilinear/mipmap
Otherwise
m_filter == 3 => always use full automatic trilinear interpolation
m_filter == 4 => use automatic trilinear interpolation when PS2 uses mipmap
m_filter == 5 => like 4 but force bilinear interpolation inside layer
2016-10-13 20:16:38 +02:00
Gregory Hainaut
c2777ff989 gsdx state: split IsMipmapActive in 2 pieces
This way we can test if a draw call requires a triliner filtering.
It will be used in next commit to implement automatic trilinear
2016-10-13 20:16:38 +02:00
Gregory Hainaut
1b9b47dd6a gsdx mipmap:ogl: add capabilities to automatically generate mipmap layer 2016-10-13 20:16:38 +02:00
Gregory Hainaut
510eccd471 gsdx mipmap: enable fully tri-linear filtering
(when mipmap > 1)
2016-10-13 20:16:38 +02:00
Gregory Hainaut
a8a2db8eb1 gsdx mipmap:ogl: extend HW sampler with tri-linear filtering
v2:
* use nice enum
* use bilinear info when there is no mipmap (more accurate)
2016-10-13 20:16:38 +02:00
Gregory Hainaut
335d7f3ae5 gsdx: add a nice enum for min filter 2016-10-13 20:16:38 +02:00
Gregory Hainaut
7ea0e90678 gsdx mipmap:ogl: extend shader to support trilinear filtering 2016-10-13 20:16:38 +02:00
Gregory Hainaut
d185a85a07 gsdx ogl: replace simple_sample variable by the opposite shader_emulated_sampler
It feels easier to read this way
2016-10-13 20:16:38 +02:00
Gregory Hainaut
ae441e6a2c gsdx mipmap:HW: Update all valid texture layers 2016-10-13 20:16:38 +02:00
Gregory Hainaut
5d593dd948 gsdx mipmap:HW: save state of both min&max lod values 2016-10-13 20:16:38 +02:00
Gregory Hainaut
15b1d8d3f0 gsdx mipmap:tc: add code to update a single layer of a mipmap 2016-10-13 20:16:38 +02:00
Gregory Hainaut
dbb4bdf59f gsdx mipmap:ogl: add GL_TEXTURE mipmap support
* Allocate more memory for extra layers
* Allow to upload data in any layers
2016-10-13 20:16:38 +02:00
Gregory Hainaut
76bd968c59 gsdx mipmap: extend texture/cache to support a layer parameter 2016-10-13 20:16:38 +02:00
Gregory Hainaut
b695e0065a gsdx mipmap: use a 3 state option 2016-10-13 20:16:38 +02:00
Pseudonym
a415d59e2f Remove use of integer constants for iop events that I missed in the
previous commit (thank you @turtleli, I was mentally filtering this line
of code).
Fixes #1618
2016-10-13 16:30:05 +01:00
Pseudonym
733fd79f46 Removed internal iop event enum assignments which just confuse readers and
traces of an old hack.
2016-10-11 18:53:23 +01:00
Jonathan Li
679f3347bb cdvdgigaherz: Read raw CD sectors one by one (#1590)
A multi sector raw disk sector read that reads data from two tracks of
different types will not complete successfully. Reading the sectors one
at a time should fix the issue.
2016-10-10 22:33:15 +01:00
Gregory Hainaut
4d52c55784 QA: add a git hook script to validate the format & check spu2x format
Note: pre-commit hook is for linux, need to be manually installed in .git/hooks/

A windows solution is welcome
2016-10-10 20:43:30 +02:00
Clang Format
039573b133 clang-format spu2x
Note: it doesn't play well with define around forceinline (might need to fix the inline btw)
And a single macro in RegTable.cpp
2016-10-10 20:41:24 +02:00
ramapcsx2
0f022da98c Merge pull request #1615 from ramapcsx2/psxmode-rebase-spu2x
psxmode: SPU2-X backwards compatibility with the original SPU
2016-10-10 15:36:50 +02:00
Robert Neumann
9a832c7bcd Issue template now mentions psxmode is unstable and reports for broken PSX games are too early. 2016-10-10 00:01:15 +02:00
Robert
36631f2270 remove a useless define
cosmetics

more cosmetics

some more cosmetics? sure!

whitespaces

whiterspaces
2016-10-09 20:10:53 +02:00
Robert Neumann
3bc847a9f0 bad merge fix 2 2016-10-09 16:21:48 +02:00
Robert
95fe77a594 bad merge fix 2016-10-09 16:15:19 +02:00
Robert Neumann
19a8ed8b25 psxmode: Spu2x: more native SPU2 reghandlers. first "working" reverb! (everything before was just random data) 2016-10-09 15:52:47 +02:00
Robert Neumann
ee05137415 psxmode: Spu2x: add reverb register handling, fix a problem with the address translation, re-enable "VMIXEL" writing (which should just be named Echo/Effect ON or EON really) 2016-10-09 15:52:47 +02:00
Robert Neumann
1ec70f1df3 psxmode: Spu2x now working correctly. Kudos to pseudonym. Took him 30 minutes to fix this! 2016-10-09 15:52:46 +02:00
Robert Neumann
08b6edae80 psxmode: further spu2x work 2016-10-09 15:52:45 +02:00
Robert
3aabc1adbf spu2x work 1 2016-10-09 15:52:05 +02:00
Gregory Hainaut
9af34cc611 gsdx tc: miss a set scaling call
Likely impact issue #83/#694
2016-10-09 13:07:08 +02:00
Gregory Hainaut
3b733930fe gsdx: UserHacks_TextureInsideRt must be disabled by default
Likely a bad copy/past
2016-10-09 12:13:37 +02:00
Gregory Hainaut
344636d88e gsdx ogl: attach input texture before copy
Help to ensure with copy the good texture in debugger
2016-10-08 23:42:39 +02:00
Gregory Hainaut
22ebdcf1cf gsdx debug: create a nice dump function for kernel gs registers
Add missing register
2016-10-08 23:42:39 +02:00
Andreas
ab228c8484 Added missing CRC for Grand Theft Auto San Andreas. 2016-10-08 18:38:50 +03:00
Robert Neumann
ca59ce45c0 psxmode: Make cd read delays longer to avoid mdec glitches and possibly some other data corruption. Proper read timings can be added later using cdvd.cpp as an example. 2016-10-07 21:36:06 +02:00
Robert Neumann
f45527468f psxmode: silence "vsync timeout" spam 2016-10-07 18:22:37 +02:00
FlatOutPS2
db853b4462 GSdx: Add Jak 2 US CRC to GSCrc list.
Fixes issue: https://github.com/PCSX2/pcsx2/issues/1603
2016-10-07 13:14:15 +03:00
FlatOutPS2
5ca63a4e89 GameDB: Add Tiger Woods PGA Tour series VU Clamping Mode fixes
Fixes black textures on characters in Tiger Woods PGA Tour 2004, 2005,
and 06 through 10.

Known to fix the issue for the following serials: SLES-51887, SLUS-21877, SLES-52509, SLES-54253, SLUS-21483, SLUS-21002

Presumed to also fix the issue for serials(known to suffer from the exact same issue and use the same engine as the other games, so the fix should be the same): SLUS-20757, SLES-53541, SLUS-21264, SLUS-21646, SLUS-21772, SLPM-66191, SLES-54253, SLPM-66674
2016-10-07 13:14:15 +03:00
Gregory Hainaut
574a807678 gsdx tc: new hack to extract texture from rt
UserHacks_TextureInsideRt = 1 (don't look at Jak)
2016-10-07 01:43:04 +02:00
Gregory Hainaut
8873b27eb8 gsdx: let's keep the new clut option off
There are still issue with virtua fighter (albeit my dump is better...)
2016-10-06 22:05:03 +02:00
Gregory Hainaut
79666b26c0 gsdx sw: restore the const reference
It was removed for PSX hack which was removed a couple of commits ago
2016-10-06 20:02:22 +02:00
Gregory Hainaut
c66004bbb2 gsdx: hidden option to better support dual context clut
Option is on by default. Just a safety net in case of regression

Fix clut issue on virtua fighter (SW) and harley davidson (SW/HW).
2016-10-06 19:08:21 +02:00
Gregory Hainaut
9cd4984f7c gsdx debug: more log 2016-10-06 18:56:31 +02:00
Akash
b36dfb356e PCSX2-Git: Add an issue template file (#1567)
Merge issue template

[skip ci]
2016-10-06 00:04:16 +02:00
Gregory Hainaut
d827497403 gsdx: let's handle illegal 4 bits format too
In doubt if some games use them.
2016-10-05 22:07:49 +02:00
Gregory Hainaut
9b93c07339 gsdx: Handle illegal 8 bits format. Found the most silly GS dev trick
Fix Berserk #1526 Well done guys but we're more clever than you ;)

So instead to mask the color channels as any guy that RTFM, they decided to use the illegal 8H frame format
2016-10-05 22:07:43 +02:00
Gregory Hainaut
6fd46eb36a gsdx: move the validation of the texture format before the draw call
Avoid false positive when game write dummy stuff
2016-10-05 22:07:23 +02:00
Pseudonym
a0629587be gsdx memory: implement read texture of PS GPU24
convert the swizzled block as tightly packed 24 bits RGB

Then convert scanline to standard 32 bits RGBA

The HW renderer requires the preload data hack
2016-10-05 21:59:42 +02:00
Gregory Hainaut
1c900e780a gsdx memory: add a PS GPU 24 bits format
Same swizzle as 16 bits. But contains tightly packed RGB pixels.
2016-10-05 21:06:38 +02:00
Gregory Hainaut
1cc696ab31 gsdx hw: update TEST.ATE field after ATE optimization
Otherwise DoFirstPass/DoSecondPass will give you result based on pre-ATE optimization

Close #1607
2016-10-05 09:43:24 +02:00
Gregory Hainaut
3653a7746a gsdx psxmode: small hack to "see" video until we found a better solution 2016-10-05 09:43:24 +02:00
Gregory Hainaut
677f890c5c gsdx debug: static GSState::s_n
This way you can access the current draw call anywhere. Very useful for debug.
2016-10-05 09:43:24 +02:00
Gregory Hainaut
61333ecb40 gsdx debug: trace register access
I didn't include high frequency register such as vertex stuff

main goal is to give the possibility to trace the texture/clut update
2016-10-05 09:43:24 +02:00
Gregory Hainaut
1b8d6a38e7 Merge pull request #1586 from PCSX2/gsdx-refresh-gui-options
Gsdx refresh gui options
2016-10-04 18:30:48 +02:00
Gregory Hainaut
7d165da105 pcsx2: update credit box
Put turtleli in dev section
Add FlatOut in special thanks section

Thanks you very much for your hard work.
2016-10-03 22:25:59 +02:00
Gregory Hainaut
354aa6831b gsdx ogl: brain hang in the middle of the line
Only impact if bilinear is forced
2016-10-03 18:52:02 +02:00
Gregory Hainaut
5b72fab2e4 gsdx ogl: depth regression from 866173a481
Only mask depth if the min value is too big

Issue #1602
2016-10-03 18:32:54 +02:00
Gregory Hainaut
3be055a366 gsdx hw: remove code to detect an effect
It was a tentative to emulate GTA radiosity but the new hack is more generic
2016-10-02 18:29:23 +02:00
Gregory Hainaut
7dcf1cbf90 Merge pull request #1593 from PCSX2/greg/gsdx-hw-ate
gsdx hw ate
2016-10-02 18:22:02 +02:00
Gregory Hainaut
49c44db635 gsdx:dx: make filtering right
WMS/WMT 2 is the region clamping mode.

Hw unit can't emulate it right so it can give you bad filtering (Fix #1025)

Note: I only did the fix because I wanted to remove the TEXA hack. Otherwise
it is still recommended to use openGL
2016-10-02 18:21:52 +02:00
Gregory Hainaut
7f4791fa85 gsdx hw: improve no_ds detection
Support ZTST_NEVER as no depth read => psx mode speed boost
Use zm/fm to reduce further depth lookup
2016-10-02 18:21:52 +02:00
Gregory Hainaut
c3ac3ecbe7 gsdx hw: move try alpha test at the beginning
Will allow to use alpha test optimization to better optimize depth lookup

Require to do clut handling before
2016-10-02 18:21:52 +02:00
Gregory Hainaut
dc365e066d gsdx tc: remove old plain TEXA hack
It must work fine without it now.

From the google code comments:

It would be nice to test those games
* Ar Tonelico 2 (line in sprite regression?)
* breath of fire dragon quarter (overlayed user interface in the game)

v2: update Dx code to use the good format
2016-10-02 18:21:52 +02:00
Gregory Hainaut
cf13cccb1e gsdx: avoid useless spamming of INVALID PSM in release build 2016-10-02 18:21:41 +02:00
refractionpcsx2
471f33ceef Vif Unpack: initialise UnpkNoOfIterations before use. 2016-10-02 17:18:49 +01:00
refractionpcsx2
744d07b8a1 Vif: Fix MSCNT for MK: Shaolin Monks.
-Tested Baldurs Gate, Twisted Metal, Warship Gunner 2 and Downhill Domination, all seem to be fine still.
2016-10-02 15:35:06 +01:00
refractionpcsx2
59be0818e2 Gif: Fix MFIFO logic so it doesn't get caught in a loop (Tekken Tag) 2016-10-02 14:35:36 +01:00
Gregory Hainaut
955a69b16e gsdx ogl: fix GT4 regression (wrong texture on timing) 2016-10-02 12:16:48 +02:00
Gregory Hainaut
c7c6566bca gsdx hw: of course the full Jak series will kill me 2016-10-02 11:57:09 +02:00
Gregory Hainaut
b6638d4eec gsdx hw: forgot to comment an unused variable
Keep the code in case, we better solution is found to validate the depth/frame format
2016-10-02 10:18:15 +02:00
Jonathan Li
fd1cc2fdcb ci:appveyor: Don't use branch name to name directory
Fixes issues with using a / in the branch name, which causes the rename
command to fail because the parent directory isn't present.
2016-10-02 00:04:56 +01:00
Gregory Hainaut
3996fbe365 gsdx hw: reduce conplexity around TryAlphaTest
* As sw renderer, don't bother to bypass it when it is ATST_ALWAYS
* Don't update the ATE register value
=> It is a really bad idea. Next draw call will be wrong if TEST register isn't written.
The TryAlphaTest context could have been updated
2016-10-01 19:20:49 +02:00
Gregory Hainaut
c5f086b385 gsdx ate: separate the code that depends on TEST.AFAIL
Easier to read and allow a switch optimization

Add a shortcut for the common ATST_ALWAYS case
2016-10-01 19:20:38 +02:00
Gregory Hainaut
4612b79575 gsdx: add a warning on vertex trace
Due to a division by 2, depth lsb bit is always 0

I'm not sure it is critical but let's keep a note for the future
2016-10-01 19:16:44 +02:00
Gregory Hainaut
d1e07295e7 gsdx linux: add the missing gui option for unscale point/line primitive 2016-10-01 19:16:44 +02:00
Gregory Hainaut
5e1064da55 gsdx: remove the safe accurate blending hack
V2: Integrate Flatout patch to do the Window side
2016-10-01 19:15:52 +02:00
Gregory Hainaut
f77c1900fa gsdx tc: always clear a new depth buffer
Random data isn't a good idea for a depth buffer. It can cause flickering. (Jak2 FMV)

Hopefully it won't impact too much the speed.
2016-10-01 19:00:17 +02:00
Gregory Hainaut
9c84712640 gsdx hw: enable palette read back on Jak2 2016-10-01 18:47:21 +02:00
Robert Neumann
98c22b9acb psxmode: tried to put the hardware reconfiguration reset in the proper location. didn't work for some reason. 2016-10-01 12:16:56 +02:00
Robert Neumann
d8e0b9f541 psxmode: few comments and a missing hw write. 2016-10-01 11:41:07 +02:00
Jonathan Li
e8ab0f6e85 Merge pull request #1591 from turtleli/update-wx
3rdparty: Update wxWidgets to latest 3.0.x git branch
2016-10-01 02:34:45 +01:00
Gregory Hainaut
5d93a392e4 gsdx hw: xman half screen correction 2016-09-30 22:25:24 +02:00
Gregory Hainaut
29c25bc375 gsdx clut: disable some assertions often fired 2016-09-30 22:24:38 +02:00
Gregory Hainaut
34686394a6 gsdx hw: add an hack for Jak3
I'm disappointed...

Read back palette written by the GPU. Avoid strange color on the skin.
2016-09-30 19:22:16 +02:00
Gregory Hainaut
df2f8684d6 gsdx: improve TC cache log 2016-09-30 19:18:58 +02:00
Gregory Hainaut
8d24aa2b39 gsdx: GoW2 half screen bug
... Seriously ...
2016-09-30 19:15:25 +02:00
Gregory Hainaut
fc32b749dd onepad: fix a pad regression on odin sphere 2016-09-30 10:25:14 +02:00
Jonathan Li
7ad38057b5 symbolmap: Use C++11 recursive mutex
Newer wxWidgets versions call SetThreadUILanguage() on Windows, which
somehow causes our recursive mutex implementation to take ~1ms when
recursive locking occurs. So when a game boots up and the debugger is
loading the symbol map which can easily have 15000+ symbols, the GUI
locks up for 15+ seconds.

Switching to C++11 recursive mutexes seems to work around the issue. It
should be safe here since there's no direct interaction with the GUI.

Note: There is still a 1-2 second GUI lockup when booting a game on
Windows (it has existed for quite a while, and is more noticeable with
fast boot). It doesn't seem to affect Linux (or maybe it's harder to
detect).
2016-09-30 00:55:07 +01:00
Robert Neumann
a6eb615431 psxmode: kernel TTY (printf) 2016-09-29 19:02:57 +02:00
Jonathan Li
e511265cc9 gsdumpgui: Make it work even if it's not named GsDumpGUI.exe
Fixes #1592.

[skip ci]
2016-09-28 23:21:26 +01:00
Gregory Hainaut
8d4fadb3c8 Revert "gsdx state: TEX0 write behavior might depends on the context"
This reverts commit b34243fa7b.

Unfortunately we have a regression on GT4. I'm doomed
2016-09-28 20:00:56 +02:00
Gregory Hainaut
90ad9cf668 gsdx hw mipmap: tune the rounding + remove previous hack
GS really uses an invalid texture located at 0.

Improve the rounding for R&C. The idea is to avoid the corner case were only
the corner of the triangle touch the 7/16 edge.
2016-09-28 19:41:12 +02:00
Gregory Hainaut
adb8be3287 gsdx: add/update comment
Need to investigate why the number of vertex is different in upscaled resolution
2016-09-28 19:41:12 +02:00
Gregory Hainaut
749037346c gsdx: report an error if PSM is invalid 2016-09-28 19:41:12 +02:00
Gregory Hainaut
fea31f7422 gsdx: don't use virtual when it is useless 2016-09-28 19:41:11 +02:00
Gregory Hainaut
97172f5e51 gsdx debug: count draw call in a different way
* Always do +1 before the draw call
* Prefix texture name with i (as input) to keep them before the FB

Goal is to ensure that all renderers share the same draw call value.
2016-09-28 19:41:11 +02:00
Robert Neumann
fd58ee6289 psxmode: disabled a PGIF ringbuffer memset, added comments 2016-09-28 16:18:59 +02:00
Gregory Hainaut
c272359f20 Merge pull request #1550 from PCSX2/gsdx-dual-context-clut
gsdx state: TEX0 write behavior might depends on the context
2016-09-27 12:06:17 +02:00
Gregory Hainaut
b34243fa7b gsdx state: TEX0 write behavior might depends on the context
Game: harley davidson
* write tex0 ctx0
* write tex0 ctx1
* draw  ctx 0

Previous GSdx behavior will load the clut every write of TEX0. In the
above case the draw will take the wrong clut.

To be honest, it could be a wrong emulation on the EE core emulation.
The hardware likely got a single clut (1KB cache is quite expensive)
So clut loading must be skipped if the context is wrong.

Next draw will use the ctx1 clut so I apply TEX0 when the context is switched

Please test harley davidson :)

v2: detect context switch from UpdateContext function
V3: always set m_env.CTXT[i].offset.tex, avoid crash (Thanks to FlatOutPS2 that spot the issue)
V4: move bad psm correction code (rebase put it in the wrong place)
2016-09-27 10:04:09 +02:00
Gregory Hainaut
e0961d81a0 gsdx HW: use after free crash
Free bt
3 0xe676d194 in ~Source ../plugins/GSdx/GSTextureCache.cpp:1526
4 0xe676d194 in GSTextureCache::SourceMap::RemoveAt(GSTextureCache::Source*) ../plugins/GSdx/GSTextureCache.cpp:1990
5 0xe676f0fe in GSTextureCache::IncAge() ../plugins/GSdx/GSTextureCache.cpp:1022

Use bt
0 0xe6772a83 in GSTextureCache::LookupSource(GIFRegTEX0 const&, GIFRegTEXA const&, GSVector4i const&) ../plugins/GSdx/GSTextureCache.cpp:204
1 0xe66b0c9f in GSRendererHW::Draw() ../plugins/GSdx/GSRendererHW.cpp:579
2 0xe66fb43e in GSState::FlushPrim() ../plugins/GSdx/GSState.cpp:1509

Hypothesis the m_map array of list contains an invalid pointer
It is populated GSTextureCache::SourceMap::Add based on the coverage. The coverage is based on the offset.
So offset is potentially wrong. As mipmap code hack the offset value. It would be a nice culprit.

This commit avoids a potential bad transition between MIPMAP (which
overwrite the "offset") and the base layer (which wrongly keep an old "offset")

Conclusion, pray for my soul as it is very hard to reproduce
2016-09-26 20:34:38 +02:00
Gregory Hainaut
04d82d8127 gsdx: size doesn't count but 0.625 might change your life :p 2016-09-26 19:42:07 +02:00
Gregory Hainaut
be9995bd1e gsdx mipmap: improve robustness to avoid potential crash 2016-09-26 09:27:03 +02:00
Jonathan Li
43f5b5e2a6 3rdparty: Update wxWidgets to latest wx3.0.x branch
Fixes a whole bunch of warnings.

Updated to revision d77661c73bf6f9668077ac5a85b4854a1a2204ee.
2016-09-25 21:19:07 +01:00
Gregory Hainaut
ebb2a8ad5a gsdx debug: Add DISABLE_WIP_ASSERTION
To easily disable assertion on codes that only require investigation
2016-09-25 20:00:51 +02:00
Gregory Hainaut
ca4f265ce6 gsdx debug: dump mipmap register could be useful now :) 2016-09-25 20:00:51 +02:00
Robert Neumann
013940250b psxmode: color for mdec please! ;p 2016-09-25 19:55:44 +02:00
ramapcsx2
fdf5e7ab2a Merge pull request #1583 from PCSX2/ramapcsx2-psx-mode
PCSX2 rudimentary supports PlayStation 1 games now. Many thanks to user Wisi on the assemblergames.com forums. He researched and wrote the essential missing piece; The PGIF device!
Note: To use this in any form, SPU2-X needs to be fixed. ZeroSPU2 can be used to boot games for now, but without sound.
2016-09-25 12:51:29 +02:00
Gregory Hainaut
ef9a144437 gsdx hw: extra trick for the mipmap
Ratchet & Clank (the third) uses an address of 0 for invalid mipmap.

It would be very awkward to put the middle layer of texture in start of
memory. So let's use this information to correct the lod.

It make the game more robust on the lod rounding
2016-09-25 11:54:00 +02:00
Gregory Hainaut
78b2848622 gsdx: factorize the TEX0 generation for mipmap 2016-09-25 11:51:48 +02:00
Gregory Hainaut
ccd9ce1728 gsdx hack: move tales of legendia hack to full move
Also remove the OI hack which is handled by the generic double half clear
2016-09-25 10:17:08 +02:00
Gregory Hainaut
e229dc1549 gsdx hack: move Resident Evil 4 to full level
The CRC hack removes the fog, without the hack the screen turns green with D3D,, but the fog emulates correctly on OGL with hardware depth.
2016-09-25 10:13:21 +02:00
Gregory Hainaut
307c4a22ed Merge pull request #1579 from PCSX2/gsdx-generic-double-half-clear
Gsdx generic double half clear
2016-09-25 10:09:24 +02:00
Gregory Hainaut
ad8a84a532 gsdx hw: reduce hack of Spyro series
Based on the comment, it ought to be fixed with previous commit.
2016-09-25 10:08:55 +02:00
Gregory Hainaut
7f871b0cc6 gsdx hw: remove various CRC hack that ought to be fixed with previous commit
* SpidermanWoS
* TyTasmanianTiger
* TyTasmanianTiger2
* DigimonRumbleArena2
* XmenOriginsWolverine
* CallofDutyFinalFronts
* GoW2 (only in openGL)
2016-09-25 10:08:54 +02:00
Gregory Hainaut
1e343084e2 gsdx hw: group the double half clear with gs mem clear hack
It avoid redundant check of the GS context

You can disable the extra clear with UserHacks_DisableGsMemClear = 1
2016-09-25 10:08:54 +02:00
Gregory Hainaut
6c6ed5f443 gsdx ogl: trigger the special RW framebuffer shader when only Alpha is written (#1588)
* gsdx ogl: trigger the special RW framebuffer shader when only Alpha is written

It will work for both Jak and Ratchet&Clank and without CRC
2016-09-25 10:05:44 +02:00
Robert
5e460c57f8 psxmode: add all the rest on core side. psx mode works now.
- include a small game exe detection so pcsx2 doesn't believe it's running the bios
- cdrom.cpp has a hack to account for pcsx2's wrong iop dma timing when mixing mdec and cdrom dmas. This should be properly fixed for the benefit of all ps2 / psx software!
- dmasif2 is disabled since pgpu already handles it
2016-09-24 20:11:32 +02:00
Robert
277b8f3503 psxmode:EE: Plug SBUS PGIF register
v2: improve code integration
v3: fix conflict between sif2/pgif code
2016-09-24 20:11:32 +02:00
Robert
43e8796b2c psxmode:IOP: Init mdec and pgif 2016-09-24 20:11:32 +02:00
Robert
4047e34050 psxmode:IOP: plug in hardware read / write handlers for PGIF and MDEC
v2:
* Update sioRead8() to read a single byte  and add a comment on it
* Better code integration IOP REG

v3:
* only log the bad 16 bit access
2016-09-24 20:11:16 +02:00
Robert
35fa20d965 psxmode: changes to sio that allow psx pads to work 2016-09-24 20:08:46 +02:00
Robert
95be7cf505 build: cmake/MSVC add mdec.cpp/h files 2016-09-24 20:08:46 +02:00
Robert Neumann
f22a8126ed psxmode: prepare mdec 2016-09-24 20:08:46 +02:00
Robert Neumann
236c0c78c3 psxmode:MDEC: use dedicated MDEC_LOG 2016-09-24 20:08:46 +02:00
Robert Neumann
58fe959f85 build: cmake/MSVC add the 2 new files 2016-09-24 20:08:46 +02:00
Robert
280b036b91 psxmode: add PGPU.cpp/h code by user wise on the assemblergames.com forums. 2016-09-24 20:08:45 +02:00
Gregory Hainaut
6e2bf98d5f gsdx hw: round mipmap lod value
Will avoid some corruption based on distance/angle
2016-09-24 20:05:39 +02:00
Gregory Hainaut
719982e4a3 gsdx hw: forget to update a parameter
OMG, fixes various mipmap issues
2016-09-24 18:57:47 +02:00
Gregory Hainaut
76494e5f9c gsdx hw: add an userhack for hw mipmap 2016-09-24 12:39:31 +02:00
Gregory Hainaut
e38aba0dff gsdx: rename SW texture dump filename
* Use texraw for the unconverted texture (keep index fmt)
  => avoid bad filename order with the multiple texture layers
* add the real mipmap address
* Use a nice string format
2016-09-24 09:15:40 +02:00
Gregory Hainaut
f26842faa7 Of course I screwed up in the rebase!
It is a shame!
2016-09-23 18:08:51 +02:00
Gregory Hainaut
816e38db8e Merge branch 'pcsx2-gif-fifo' 2016-09-23 17:50:55 +02:00
refractionpcsx2
2734f53a79 GIF: Implement GIF FIFO on GIF MFIFO mode.
-Removed some obsolete code
-Tiny optimisation for the gifUnit
-Fixed a tiny bug on GIF MFIFO
2016-09-23 17:48:13 +02:00
refractionpcsx2
71601b88ff Fix & symbols in GameFixesPanel 2016-09-23 17:41:48 +02:00
refractionpcsx2
97a8cc7ce5 PCSX2/GameDB: Savestate version bump, Added GIFFIFO entries to GameDB
-RE Savestate version: Sorry, not sorry ;)
2016-09-23 17:41:48 +02:00
refractionpcsx2
0b83b849e7 GIF: Implement GIF FIFO - Enabled as hack as it is slow
-Fixes DJ Hero, Wallace & Gromit (properly), Hot Wheels (closer)
2016-09-23 17:41:48 +02:00
Gregory Hainaut
d89b09427f gsdx: gl logging is only available in MTGS thread
Fix crash in debug build
2016-09-22 17:54:44 +02:00
Gregory Hainaut
b00ae974d2 gsdx ogl: fix bad interaction between accurate blending and geometry shader
Recent optimization allow to use triangle to render sprite even when gs is supported

close #1574
2016-09-20 09:30:24 +02:00
Jonathan Li
c64e8f944e cdvdgigaherz: Fix printf sign mismatch warnings
Fixes warning C6340: printf sign mismatch

Only remaining warnings for cdvdGigaherz (using level 4 warning
settings) are:
C6258: TerminateThread does not allow proper thread clean up
C4201: nonstandard extension used: nameless struct/union (from the
lo/hi u128 struct in common/include/Pcsx2Types.h)
2016-09-20 01:24:23 +01:00
Jonathan Li
57d029f34a cdvdgigaherz: Use INT_PTR for dialog handler return type
BOOL is not the correct return type (though it works for 32-bit).
2016-09-20 01:23:47 +01:00
Jonathan Li
0ca36e8943 cdvdgigaherz: Fix value truncation warnings
Fixes warning C4244: conversion to smaller data type, possible loss of
data.
2016-09-20 00:47:15 +01:00
Jonathan Li
a61aa8ff0b cdvdgigaherz: Remove unreachable return
Fixes warning C4702: unreachable code
2016-09-20 00:46:33 +01:00
Jonathan Li
49cd751acf format-check: enable checking cdvdGigaherz 2016-09-19 19:53:06 +01:00
Clang Format
2967d5d3f1 cdvdgigaherz: Reformat with clang-format 2016-09-19 19:53:00 +01:00
Jonathan Li
60da39712c cdvdgigaherz: Remove unused code/macros/variables/etc
The SPTI code is unused, and it's simpler to just use the Windows
ioctls/API if they work (only raw disk sector reading is an issue and
the SPTI workaround is already in place).
2016-09-19 19:50:55 +01:00
Avi Halachmi (:avih)
52fbfdc5ab Revert most of "Updated some entries in the GameIndex (#1487)"
This reverts commit 07d54587 except for the updates of SCUS-97150 (Formula
One 2001 NTSC-U) - where we have a record of compatibility 5, and also
there's an agreement that the patch is not required anymore since ad61503 .

The reverted compatibility values are because we don't have any kind of
records to support them, no one tested them, and they also don't appear at
our online compatibility list.
2016-09-19 20:47:08 +03:00
Gregory Hainaut
b91bd3ea01 gsdx dx/gl: fix potential bug in alpha test handling
Depth test must remain disabled if write were masked.

Bug was detected on ICO (sea/sky) but the previous commit removes
the wrong ATE draw call.
2016-09-19 08:56:49 +02:00
Gregory Hainaut
6966e08306 gsdx: move alpha test optimization in base class
One code for all renderers :)
2016-09-19 08:48:32 +02:00
Gregory Hainaut
38b77397e0 gsdx hw: remove custom Ty Tasmanian Tiger / Simposons OI hack
Replaced by the generic OI_DoubleHalfClear. If OI_DoubleHalfClear is fast/safe enough, it
will enabled by default in the future.
2016-09-18 18:50:16 +02:00
Gregory Hainaut
6558317a7e gsdx: s/m_eq.xzyf & 4/m_eq.z/
Much better this way
2016-09-18 18:50:15 +02:00
Gregory Hainaut
7a40b27931 gsdx CRC: move GTA hack to full level
You can now emulate the radiosity effect with the UserHacks_AutoFlush hack.
2016-09-18 18:50:15 +02:00
Gregory Hainaut
0f387a8e3c Merge pull request #1535 from PCSX2/clang-tidy-macro-parenthesis
clang-tidy: use parenthesis around macro parameters
2016-09-18 18:48:04 +02:00
Jonathan Li
15fbd6fbf4 cdvdgigaherz: Remove ISO file reader (#1569)
It doesn't support dual layer ISO images, and the ini has to be edited
manually so it loads an ISO image ("$" has to be prepended to the ISO
path as well). The PCSX2 internal ISO file reader is probably better in
most/all aspects and I don't think it's worth copying the logic from
PCSX2 into the plugin.
2016-09-18 18:38:21 +02:00
Gregory Hainaut
310f13a2f7 gsdx ogl: only use geometry shader to convert big enough draw call (#1554)
gsdx ogl: only use geometry shader to convert big enough draw call

The purpose of geometry shader is to reduce bandwidth (72 bytes by sprite)
and CPU load.

Unfortunately it increases CPU load due to extra shader validations.

So geometry shader will only be enabled for draw call with more than
16 sprites (arbitrarily, smallest number before shadow hearts plummet)

v2: don't disable geometry shader in replayer.
It is easier to spot sprite rendering and to manually read vertex info.
2016-09-18 16:58:02 +02:00
Gregory Hainaut
2a60264e40 gsdx replayer: improve error message when file is corrupted 2016-09-18 16:52:35 +02:00
Gregory Hainaut
6e6eae7844 pcsx2:gsdx:spu2x: use parenthesis around macro parameters
For safety reasons.
2016-09-18 16:13:55 +02:00
Gregory Hainaut
b3d31869d6 recompiler: use a function to replace HWADDR macro 2016-09-18 16:13:55 +02:00
Gregory Hainaut
c448c2becb mtvu: use function instead of macro 2016-09-18 16:13:55 +02:00
Gregory Hainaut
d39f17bda3 FPU: replace check* macros by functions
v2: remove useless return after function call
2016-09-18 16:13:29 +02:00
Gregory Hainaut
9648e25018 pcsx2: don't obfuscate the template type with macro 2016-09-18 16:13:29 +02:00
Gregory Hainaut
64d499af6e pcsx2|spu2x: remove unused macro 2016-09-18 16:13:29 +02:00
Gregory Hainaut
02da178d5c pcsx2: replace macro in GameDb by function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
35cf2638e8 Vif: replace makeMergeMask macro with a function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
b1d446895b GSdx: replace IsTopLeftAligned macro with a function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
f0a54bf6e3 spu2x: replace EMITC macro with a function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
a5a2298c7d IPU: replace BUTTERFLY macro with a function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
796b2d4970 IPU: replace SATURATE macro with a function 2016-09-18 16:13:28 +02:00
Gregory Hainaut
ac1b3845b2 pcsx2:log: add MDEC_LOG trace capability 2016-09-18 15:35:59 +02:00
Gregory Hainaut
5ef2d538a0 gsdx hw: only keep a single half clear implementation 2016-09-18 13:16:59 +02:00
Gregory Hainaut
a0c1719695 gsdx hw: DoC takes 3
Add support for 16 bits format too. Fix shadows.
2016-09-17 12:06:43 +02:00
Gregory Hainaut
ebdf54a60b gsdx sw: don't enable auto flush hack in replayer
Otherwise we don't have same number of draw call in HW/SW which is
awful to compare
2016-09-17 12:05:05 +02:00
Gregory Hainaut
3546d54e3b gsdx hw: improve the vertical half clear for DoC
Previous assumption that crazyness was used to clear the buffer is wrong.

It was also used to write a constant color to the buffer.
2016-09-17 10:34:35 +02:00
Jonathan Li
639aafda12 ci: Remove Travis CI caching workaround
Travis CI now takes into account the environment variables when
generating the cache hash. So the workaround of appending random unique
stuff to "compiler" is now unnecessary.
2016-09-16 23:45:44 +01:00
Jonathan Li
4d5e051387 gsdx: Fix missing "\n" in rc file
It stops Visual Studio from asking to normalise the line endings
everytime the resource editor is used.
2016-09-16 23:42:54 +01:00
Jonathan Li
91b2e5bdbb Merge pull request #1564 from FlatOutPS2/master
GSdx: Add Windows UI options for HW hacks
2016-09-16 23:35:45 +01:00
Gregory Hainaut
7b9654f164 gsdx hw: CRC based solution to solve half screen issue on FFVII Dirge Of Cerberus
The trick is that the depth buffer is actually the right of the frame buffer
2016-09-17 00:02:32 +02:00
Christian Kenny
07d54587bd Updated some entries in the GameIndex (#1487) 2016-09-16 22:31:20 +01:00
FlatOutPS2
55b0be36cd GSdx: Add cancel button to Hacks dialog
Add a cancel button to the Hacks dialog to make it easier for the user
to exit the window without making changes.
2016-09-16 23:22:13 +02:00
FlatOutPS2
5420fcaf3a GSdx: Add Windows UI options for HW hacks
Add UI options for Auto Flush and Unscale Point Line HW hacks.
2016-09-16 23:19:05 +02:00
Nobbs66
6589feaacd Link Unconditionally (#1566)
EE Interpreter: Link Unconditionally on Branch and Link instructions
-Link instructions used to store the return address if the branch was
taken, but the correct behaviour is to store the return address whether
or not the branch is taken.
2016-09-16 09:58:37 +01:00
Gregory Hainaut
3994141d40 gsdx sw: always enable the auto flush hack on the SW renderer
There are enough option. Will remove it if too slow.

Positively impact Jak, GTA, Battlefield 2
2016-09-15 17:24:40 +02:00
Gregory Hainaut
1a1d6ab478 gsdx: handle the invalid format 0x3
International Super Star Soccer seems to use it.

It could be a core bug, in doubt uses the likely expected standard 0x13
2016-09-14 19:22:45 +02:00
Gregory Hainaut
4796803c33 pcsx2: Remove == true/false for boolean logic (#1556)
As discussed in #1553

Clang Tidy reports goes from 156 to 9.

Remain some macro in spu2x + a deadcode line
2016-09-10 20:08:14 +02:00
ramapcsx2
95063a7b65 Merge pull request #1559 from Kingcom/memview
Debugger: Fix various memory view issues
2016-09-10 16:51:53 +02:00
Kingcom
f2a0f9f61a Fix memory view scrolling, keep window start aligned to row size, and retain focus upon positioning it to the address accessed by an opcode 2016-09-10 15:44:25 +02:00
Jonathan Li
77e128aa11 Merge pull request #1557 from turtleli/freetype
3rdparty: Add Freetype and link to GSdx
2016-09-10 14:04:26 +01:00
Jonathan Li
72d3e4e03f windows: Add freetype to solution and link to GSdx 2016-09-10 12:36:56 +01:00
Jonathan Li
751fdb96da 3rdparty: Add FreeType 2.7
Customisations:
/: remove all non directories
/builds: Only windows/ftdebug.c retained, custom project added
/objs: Removed (custom project doesn't use the directory)
/docs: Only licence files retained.
/devel: Removed (unused)
2016-09-10 12:29:53 +01:00
Gregory Hainaut
4ebe739b44 pcsx2: remove various unused variable
Warning can be reenabled on GCC

A warning isn't fixed as potentially the code is wrong
../pcsx2/gui/MemoryCardFolder.cpp: In member function ‘void FolderMemoryCard::FlushFileEntries(u32, u32, const wxString&, MemoryCardFileMetadataReference*)’:
../pcsx2/gui/MemoryCardFolder.cpp:1027:10: warning: unused variable ‘filenameCleaned’ [-Wunused-variable]
     bool filenameCleaned = FileAccessHelper::CleanMemcardFilename( cleanName );
2016-09-10 00:09:05 +02:00
Gregory Hainaut
c8e9207879 svu: avoid a maybe uninitialized warning
False positive but compilers aren't reliable
2016-09-10 00:03:53 +02:00
Gregory Hainaut
ccf198a80b gsdx ogl: fix a regression on Okami
Strangely the game uses large texture to handle texture buffer.

I think it plays with WMS/WMT. I'm not sure texture shuffling is 100%
correct here. But without it, it's completely broken.
2016-09-09 21:51:23 +02:00
Gregory Hainaut
8c1722faa2 gsdx: add a note that Jak shadows can be handled with HW GL without auto flush hack 2016-09-09 21:08:15 +02:00
Gregory Hainaut
64a97483fb gsdx: add Jak3 US too 2016-09-09 21:05:00 +02:00
Gregory Hainaut
de480ec0f5 gsdx: add crc hack for Jak
* 0x9C712FF0, Jak1, EU
* 0x472E7699, Jak1, US
* 0x2479F4A9, Jak2, EU
* 0x12804727, Jak3, EU
* 0xDF659E77, JakX, EU

Please report me the CRC of the US version too so I can add them.

Please test the shadows rendering (openGL HW + accurate blending at least basic)
2016-09-09 19:44:04 +02:00
Jonathan Li
d540dbec79 cdvdgigaherz: Fix event handle memory leak
Also bump the version to 0.10.0.
2016-09-08 23:46:05 +01:00
Jonathan Li
303996818c cdvdgigaherz: Delete duplicate PlainIso file 2016-09-08 23:14:26 +01:00
Gregory Hainaut
d27d2dd520 fix compilation issue 2016-09-09 00:11:02 +02:00
Gregory Hainaut
c2b67ccb78 gsdx ogl: implement an alternate shader for Jak Shadows
The game sets the framebuffer as an input texture. So I did the same for
openGL. Code is protected with a CRC. It is working because the game want to sample
pixels.

For the record, I tested it GTA too, it doesn't work as expected because
the game will resize the framebuffer to a smaller one. So you don't have
the guarantee that pixel will be read before a data write.

Note: it requires at least accurate blending set on basic

Note: I need CRC of all Jak games that suffers of this issue. Thanks you :)
2016-09-08 23:58:13 +02:00
Gregory Hainaut
c03b388786 Merge pull request #1551 from PCSX2/clang-format-v2
Clang format v2
2016-09-08 22:53:21 +02:00
Gregory Hainaut
ac14db7b19 linux: use clang-format-3.8
Default is potentially an old version
2016-09-08 21:54:50 +02:00
Gregory Hainaut
36d2f96519 format checker: enable it for lilypad/onepad/cdvdiso 2016-09-08 21:54:50 +02:00
Clang Format
e503534ff4 reformat CDVDiso 2016-09-08 21:54:50 +02:00
Clang Format
d6ae5bfafa reformat lilypad
Note: I'm worried on the EXPORT/CALLBACK behavior on multiple OS
2016-09-08 21:54:49 +02:00
Clang Format
f06f44c30a reformat onepad 2016-09-08 21:52:49 +02:00
Clang Format
0abf686406 pre-fomat onepad
Clang doesn't move back the '{' if there is a comment on the if line
2016-09-08 21:52:49 +02:00
Clang Format
1f8a0db290 reformat null plugin with pointer symbol on the right 2016-09-08 21:52:49 +02:00
Gregory Hainaut
a678ae2529 clang format: put the pointer/reference symbol (*/&) on the right 2016-09-08 21:52:49 +02:00
Gregory Hainaut
f9d8cb97c0 Merge pull request #1508 from PCSX2/gsdx-allow-sso-amd
Finally AMD delivered the fix to support separate shader object !!!
2016-09-08 21:47:32 +02:00
Gregory Hainaut
6ee841319f gsdx: help stupid compiler to allow 32 byte move
Default copy-constructor is eight 32 bits move

GSRendererOGL::Lines2Sprites code shrinks from 510B to 398B
(loop of the function 296B => 181B). Hopefully it will reduce the cost
to convert line to sprite on the CPU (i.e. when geometry shader is disabled)
2016-09-08 20:01:05 +02:00
Gregory Hainaut
b282909c9e common: avoid silly compiler warning due to define redefinition
comma was updated in plugings (due to clang reformat)
2016-09-08 19:20:24 +02:00
Gregory Hainaut
aba0c733cd gsdx linux: add a gui check box to control previous hack 2016-09-08 17:34:28 +02:00
Gregory Hainaut
029d74f855 gsdx: add an auto flush hack to implement a Read Write GS effect.
It impacts all renderers. It ought to fix issue in GTA radiosity,
Shadows in Jak series. (note shadows will suck in upscaling)

Implementation is really brutal. Expect a massive slow down, but at least we can test the effect
easily.

Normally perf impact will remain reasonable if the game doesn't use a Read-Write effect

Performances number are welcomes (my guess is really awful in HW mode, slow in SW mode).
You can enable it with "UserHacks_AutoFlush = 1"
2016-09-08 17:25:59 +02:00
Gregory Hainaut
bcb951077d gsdx: c_str() is useless when parameter is a string
Reported by clang tidy
2016-09-07 22:10:50 +02:00
Gregory Hainaut
a6c25b7bff ipu: DATA is an u32 not a pointer
Fix compilers warning.
2016-09-07 22:06:27 +02:00
Gregory Hainaut
cac822f785 build.sh: also use ninja for coverity build 2016-09-07 18:58:31 +02:00
Gregory Hainaut
145d6e29c2 gsdx: increase the allocation of the GS memory
GS memory is only 4MB but rendering is allowed to be 2048x2048
with 32 bits format (so 16MB). Technically the frame/depth buffer can start
at the end of the GS memory. Let's not waste too much memory.

Fix crash with BASARAX

(game draws a 2048x1664 32 bits area)
2016-09-07 08:34:24 +02:00
Gregory Hainaut
c638e5ec87 gsdx debug: use a pretty format name when dumping texture
Much faster to read the format on the file name :)

+ remove a couple of useless ifdef
2016-09-07 08:34:24 +02:00
Gregory Hainaut
6abd806539 gsdx perf: print frame time distribution 2016-09-07 08:34:24 +02:00
Gregory Hainaut
244bb555f9 Merge pull request #1532 from ssakash/Coverity
PCSX2: Fix a bunch of coverity defects
2016-09-05 20:16:13 +02:00
Gregory Hainaut
cedc4f241d gsdx hw: add a crc hack for Dragon Quest & Final Fantasy in Itadaki Street
The hack only fix the HW renderer but not the SW renderer. However I'm not sure
the issue is from GSdx.

The hack will disable alpha test that used to generate empty draw call.
2016-09-04 19:41:31 +02:00
Gregory Hainaut
bb50b3419e Merge pull request #1542 from PCSX2/gsdx-texture-transfer-motocross
gsdx: save the blit buffer register when a transfer is started
2016-09-04 16:55:08 +02:00
Akash
022e650dc6 SuperVU: Initialize class members
CID 146985 (#1 of 1): Uninitialized pointer field (UNINIT_CTOR)8.
uninit_member: Non-static class member vuxy is not initialized in this
constructor nor in any functions that it calls
2016-09-03 20:29:50 +05:30
Akash
dc874a99cd LilyPad: Remove useless self assignment
CID 146888 (#1 of 1): Self assignment (NO_EFFECT)self_assign: Assignment
operation (this->devices[i]->virtualControls + j).uid =
(this->devices[i]->virtualControls + j).uid has no effect.
2016-09-03 20:29:46 +05:30
Akash
7e5bca3dfd Counters: Make the code behavior more explicit
CID 168623 (#1 of 1): Missing break in switch
(MISSING_BREAK)unterminated_case: The case for value
GS_VideoMode::Unknown is not terminated by a 'break' statement.
2016-09-03 20:29:40 +05:30
Gregory Hainaut
52a2bb5524 gsdx ogl: disable texture shuffle when a render a basic sprite
Fix shadow issue on "Shadow of Memories"
2016-09-03 12:18:52 +02:00
Gregory Hainaut
79209c31bf gsdx ogl: avoid bad logging of framebuffer/texture overlap 2016-09-03 12:18:51 +02:00
Jonathan Li
4d10eda308 Merge pull request #1545 from turtleli/cdvd-spti
cdvdgigaherz: Use SPTI to read raw CD sectors
2016-09-02 23:56:05 +01:00
Gregory Hainaut
a123e65185 gsdx sw: handle the invalidation of the palette when written by the GS
Manual gives all setup to upload a palette from the host. But nothing forbid to render
directly in the palette buffer. (GS rule nb 1, there is no rule ^^)

Fix Virtua Fighter 2 dark colors

However I'm not sure we can fix HW renderer. Rendering is done on the GPU but palette
handling is done on the CPU... So we need to read back data (ouch, and slow). A quick
test didn't get the expected results. Potentially there are others bugs (aka not gonna
happen on the HW renderer)
2016-09-03 00:21:56 +02:00
Gregory Hainaut
d01194da0b gsdx sw: help debug
* quick way to disable verbose fixed tex0
* use palette address/format when the palette is dumped :)
2016-09-03 00:10:23 +02:00
Gregory Hainaut
6323268f40 gsdx tc: reset dirty alpha flag when we lookup a frame
Fix black skin regression for haunting ground (at least on my gs dump)
2016-09-02 21:31:13 +02:00
Gregory Hainaut
774d98991c iop rec: fully enable COP2 support 2016-09-02 21:05:28 +02:00
Jonathan Li
3d8be787a2 cdvdgigaherz: Use SPTI to read raw CD sectors
IOCTL_CDROM_RAW_READ apparently does not work for some read modes on
some optical drives, which makes some CD-ROM games unplayable from the
disc.

Work around the issue by using SPTI to retrieve the raw sector data. The
old reading method has been retained in case SPTI cannot be used (if the
device could not be opened with write access).
2016-09-02 00:58:38 +01:00
Gregory Hainaut
b47c50ae5d iop rec: add the missing LWC2/SWC2 (CP2 reg from/to mem) 2016-09-01 21:50:13 +02:00
Gregory Hainaut
1ee0526e41 iop rec: add constant propagation for COP2
Inspirated from COP0
2016-09-01 21:16:43 +02:00
Gregory Hainaut
bdc29dbbbf iop rec: put cop2 comment in the good position... 2016-09-01 20:47:12 +02:00
Gregory Hainaut
c9a1558c60 gsdx: save the blit buffer register when a transfer is started
Fix motocross mania missing texture. Close #1319

As far as I understand, transfer is initialized in DIR. But the real
write only occured later so the blit buffer could have been overwritten
by a new value.

BLIT 0 13700
TREG 40 40
DIR 0 0
BLIT 0 13f00 <=== the bad guy
Write! ...  => 0x3f00 W:1 F:C_32 (DIR 00), dPos(0 0) size(64 64)

v2: set a value in m_tr.m_blit for load state
2016-09-01 09:59:38 +02:00
Gregory Hainaut
b546d096bd Finally AMD delivered the fix to support separate shader object !!!
v2: blacklist AMD driver from the start of 2016
Please note that it is highly recommended to upgrade to a stable&working driver
2016-09-01 09:47:57 +02:00
Gregory Hainaut
448fee76c1 gsdx ogl: move GS setup in SetupIA
Fix regression when geometry shader is disabled
2016-09-01 09:47:46 +02:00
Gregory Hainaut
165bcf5662 Merge pull request #1539 from FlatOutPS2/DX
GSdx DX: extend ATE to better support additional corner case DX port
2016-08-29 11:39:22 +02:00
Gregory Hainaut
19a9d639b1 Merge pull request #1538 from PCSX2/gsdx-improved-ate
gsdx ogl: extend ATE to better support additional corner case (issue …
2016-08-29 11:38:57 +02:00
Gregory Hainaut
da688114f4 Merge pull request #1522 from PCSX2/gsdx-issue-1438
gsdx tc: don't partially invalidate small target
2016-08-28 16:51:25 +02:00
Gregory Hainaut
e4337b6631 glsl2h: add input files in the header
Close #1404
2016-08-28 16:31:35 +02:00
Gregory Hainaut
a1cdf7189a gsdx tc: don't partially invalidate small target
It creates a regression on game that uses a small temporary target to
upload textures of various sizes. Inital code was done to handle direct
frame write (background, FMV) so big target
2016-08-28 16:24:02 +02:00
Gregory Hainaut
c71ef6fa4c i10n: refresh tr_TR (turkish) 2016-08-28 15:43:54 +02:00
FlatOutPS2
e5c6b2e952 GSdx DX: extend ATE to better support additional corner case DX port
Port for Direct3D renderers of PR #1538.
2016-08-28 15:13:15 +02:00
Gregory Hainaut
7103707aeb gsdx: new linux option linear_present
Purpose is to control the filtering when final image is displayed on the screen

Could improve the sharpness of the output in some games (ofc, it will be pixelated)
2016-08-27 19:23:12 +02:00
Gregory Hainaut
d78d515acb iop rec: plug GTE (aka COP2) in the recompiler
Code isn't enabled yet to avoid any breakage

Edit iR3000ATables.cpp line 1446
2016-08-27 17:23:37 +02:00
Gregory Hainaut
2b925e0103 gsdx ogl: extend ATE to better support additional corner case (issue #1499)
When depth primitive is constant and depth test is greater or equal, we can
execute the depth write after color (depth status will only depends on the initial
value)

New case for RGB_ONLY ate:
If the blending equation uses a fixed alpha or a source alpha. We can postpone the alpha write
in a 2nd pass.
If depth can also be postponed, we can guarantee the order of correctness of the value.
1st pass => do RGB
2nd pass => do Alpha & Depth

It fixed Stuntman letter rendering :) Remaining of the game is still broken :(
2016-08-27 14:46:10 +02:00
Gregory Hainaut
b6693c4345 gsdx dx/gl: fix depth optimization
4th bit is the fog value, not the depth
2016-08-27 13:57:39 +02:00
Gregory Hainaut
7b222768d4 build: check syntax of null plugins
Temporary hack to compute the number of commit in the branch

[skip appveyor]
2016-08-27 13:35:36 +02:00
Gregory Hainaut
c6d42c09d8 travis: check format in clang build
I created a dedicated target (before script). Might not be the best idea
2016-08-27 13:35:20 +02:00
Gregory Hainaut
411a25b610 Merge pull request #1531 from PCSX2/clang-tidy-empty-instead-of-size
pcsx2|common|gsdx: use empty() instead of .size() ==/!= 0 check
2016-08-26 10:05:01 +02:00
Gregory Hainaut
601c828562 Merge pull request #1530 from PCSX2/clang-format-plugin-v1
Clang format plugin v1
2016-08-26 10:04:52 +02:00
Gregory Hainaut
5a1cb00a07 Merge pull request #1517 from FlatOutPS2/DX
Gsdx alpha test improvement DX
2016-08-25 09:25:19 +02:00
Clang Format
eb18a2ac0f PADnull reformat 2016-08-25 00:16:29 +02:00
Clang Format
6613862aed CDVDnull reformat 2016-08-25 00:16:25 +02:00
Clang Format
25b0b63216 GSnull reformat 2016-08-25 00:16:21 +02:00
Clang Format
e61d14168a dev9null reformat 2016-08-25 00:16:15 +02:00
Clang Format
e3a2ad03bc SPU2null reformat 2016-08-25 00:16:11 +02:00
Clang Format
67e7d63f0f FWnull reformat 2016-08-25 00:16:07 +02:00
Clang Format
b246d13bae USBnull reformat 2016-08-25 00:16:00 +02:00
Gregory Hainaut
18941f1b80 clang-format: tune format after discussion
Use custom brace setup. So union/struct/class all behave the same.

Fix typo on 3rdparty
2016-08-24 22:55:37 +02:00
Gregory Hainaut
16f12bcfa5 build.sh: small improvement
Fix undefined variable in cpp check
Print current job on clang-tidy (ease replay of a single file)
Keep jobs order, ease diff between multiple run
2016-08-24 22:55:37 +02:00
Gregory Hainaut
2ec0f26122 build.sh:clang-tidy: drop the remaining ASM file 2016-08-24 22:55:37 +02:00
ramapcsx2
c1f45dafa5 Merge pull request #1507 from FlatOutPS2/master
PCSX2: IPU end of video freeze fixes
    Fixes end of video freeze in Enthusia - Professional Racing.
    Fixes end of video freeze with IPU Normal error in games like Enter The Matrix(#1494), Rygar, Freestyle Metal X, etc. Also fixes The Incredible Hulk and Bolt (thanks to @prafullpcsx2 for testing).
2016-08-23 12:56:21 +02:00
Gregory Hainaut
de32691b4e clang format: don't allow statement on single lines + disable resource.h too (generated file)
Following discussion in #1530
2016-08-22 18:21:17 +02:00
Gregory Hainaut
1fb2c66a21 gsdx ogl: Unscale line
Line thickness will be increased to N pixels (N is the upscaling factor).

Code will also be enabled by UserHacks_unscale_point_line = 1
2016-08-22 18:18:12 +02:00
Gregory Hainaut
018895067b gsdx ogl: restore code to unscale point
enabled by UserHacks_unscale_point_line = 1

Point will be transformed into a NxN square sprite. (N is the upscaling factor)
2016-08-22 18:18:12 +02:00
Gregory Hainaut
f3d14dadc7 Merge pull request #1524 from ssakash/SMODE2_Override
EE: Minor changes to syscall function
2016-08-22 11:37:13 +02:00
Gregory Hainaut
1a8825b374 pcsx2|common|gsdx: use empty() instead of .size() ==/!= 0 check
Enhance readability reported by clang tidy
2016-08-21 17:20:13 +02:00
Gregory Hainaut
8ee2d3d367 gsdx: use static assert when possible
reported by clang tidy
2016-08-21 15:22:09 +02:00
Nicolas Hillegeer
b2984cd3d0 build.sh: don't use -m option for parallel
My reasoning was off. The -m flag does avoid the clang-tidy startup
 cost (which isn't large), but it also increases tail latency because it
 allows a straggler command to run much longer. Suppose that many heavy
 .cpp files are bundled into one clang-tidy invocation.

Bench from Greg
with -m
./build.sh --dbg --clean --no-simd --clang-tidy  3886.45s user 12.04s system 1066% cpu 6:05.71 total
without
./build.sh --dbg --clean --no-simd --clang-tidy  4297.51s user 41.70s system 1497% cpu 4:49.86 total
2016-08-21 14:29:49 +02:00
Gregory Hainaut
27ea9c22bb Merge pull request #1529 from aktau/clang-tidy-parallelize
build.sh: parallelize clang-tidy
2016-08-21 13:30:44 +02:00
Nicolas Hillegeer
b45adb6e6a build.sh: parallelize clang-tidy
Also suppress spurious output from command -v.

[ci skip]
2016-08-21 13:29:08 +02:00
Akash
6bc6d20a87 R5900: Add an enum class for SYSCALL
v2: Fix indentation on switch-case.
2016-08-20 23:32:31 +05:30
Akash
95d70db153 Counters: Move interlace detection code to SetGsCrt
* More accurate to PS2 behavior and avoids an useless SMODE write function, it makes sense to also move this as video mode specific colorburst detection was already moved to SetGsCrt.
2016-08-20 23:32:20 +05:30
Avi Halachmi (:avih)
a0b014ecfc editorConfig: use tabs instead of spaces (indent stays 4)
The vast majority of PCSX2 files use tabs for indentations, and all new
commits also use tabs for indents and not spaces. Therefore, having space
.editorConfig makes it extremely hard to work on PCSX2 files with editors
which support this config file.

There were some concerns that github will make things harder for us
with tabs at .editorConfig, and if that indeed becomes an issue then
we'll have to address it somehow. For now, let's hope it won't.

Also, commented out the line which automatically removes trailing
spaces, since it affects the entire file and therefore makes changes
which the committer did not intend to make at places unrelated to the
commit.
2016-08-20 20:43:38 +03:00
Gregory Hainaut
fc996951cb build.sh: use $flags instead of "$flags"
Otherwise bash add tick around it and cmake doesn't understand what happen
2016-08-20 19:05:23 +02:00
Gregory Hainaut
2ae133e993 build.sh: use clang when clang-tidy is enabled
avoid tons of warning that options XXX isn't supported
2016-08-20 19:01:14 +02:00
Gregory Hainaut
a02937a67b Merge pull request #1528 from aktau/build-posixify
build.sh: simplify and semi-modernize
2016-08-20 18:32:51 +02:00
Gregory Hainaut
0f4cc3231a i10n: upload precompiled es file 2016-08-20 18:23:48 +02:00
Jonathan Li
2b2042e1c2 gsdx: Allow screenshot compression level to be changed
At higher resolutions it takes too much time to save a screenshot at the
maximum compression level. So let's allow the user to set the
compression level.

This re-uses the png_compression_level setting. The default compression
level is 1 for speed, but if the user wishes to increase the compression
level (without using an external tool) and doesn't mind if the
screenshot takes more time to save then they can increase the
compression level up to a maximum of 9 (which can take quite a while).

Fixes #1527.
2016-08-20 14:01:24 +01:00
Nicolas Hillegeer
57090e8ec5 build.sh: simplify and semi-modernize
1. All POSIX shells support $(...) syntax [1], including /bin/sh. shellcheck
   warns about it.
2. [[ won't work in /bin/sh [2], so use [ everywhere. I wonder why it worked
   now, perhaps the test was running on a system where /bin/sh -> /bin/bash.
3. In POSIX sh, string indexing is undefined. [SC2039]. Unfortunately, this
   means we require a subprocess: https://wiki.ubuntu.com/DashAsBinSh. Very
   ugly.
4. In POSIX sh, arrays are undefined. We seem to use $flags as an array
   after constructing it by string concatenation. I tried to verify that
   this has the same effect as just passing the quoted string in bash:

      bash-3.2$ flags="-DCMAKE_GOOK"
      bash-3.2$ flags="$flags -DCMAKE_MOARMA"
      bash-3.2$ flags="$flags -DCMAKE_URURURUR"
      bash-3.2$ ./argv $flags
      0: ./argv
      1: -DCMAKE_GOOK
      2: -DCMAKE_MOARMA
      3: -DCMAKE_URURURUR
      bash-3.2$ ./argv "${flags[@]}"
      0: ./argv
      1: -DCMAKE_GOOK -DCMAKE_MOARMA -DCMAKE_URURURUR
      bash-3.2$ ./argv "$flags"
      0: ./argv
      1: -DCMAKE_GOOK -DCMAKE_MOARMA -DCMAKE_URURURUR
      bash-3.2$

5. Enable exit on unknown variable (-u). All variables should be known,
   otherwise we have an error in the script. shellcheck doesn't warn so I
   think it's fine.

Apart from shellcheck(1), I also ran checkbashisms(1). The latter only
reported that "command -v" might not be available in other shells.
Apparently only ash(1) doesn't understand it.

NOTE: Why are we even trying to support pre-Mavericks (Darwin < 13) OSX? We
don't even support the most modern OSX (El Capitan) fully yet. OSX upgrades
are free and generally don't leave old machines behind. Most machines made
after 2009 can upgrade to El Capitan, AFAIK. I also believe that systems
that have all the utilities and libraries necessary to build PCSX2 will have
/bin/bash >= 3.x.

NOTE 2: Does cmake/ninja generate the same type of output in
compile_commands.json?

[1]: http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_03
[2]: http://serverfault.com/a/52050
2016-08-20 13:15:57 +02:00
Gregory Hainaut
d6b834e8af gsdx hw: don't execute blit fmv with target
Avoid invalid operation due to depth buffer
2016-08-20 12:56:30 +02:00
Gregory Hainaut
fa826b3167 gsdx tc: check compatible bit when wrote in middle of target
All maths are wrong otherwise. Fix half screen issue in WRC
2016-08-20 11:57:15 +02:00
Gregory Hainaut
a49b3c9bf6 gsdx tc: log more stuff on texture cache dirty & frame format 2016-08-20 11:52:22 +02:00
Gregory Hainaut
cdfbff9af0 build.sh: use command -v instead of which 2016-08-19 18:21:42 +02:00
FlatOutPS2
87eed3965e GSDx GSRendererDX code improvement
Replace local copies context and env with m_ prefix originals.
2016-08-19 16:02:49 +02:00
FlatOutPS2
c5cd716c20 Gsdx alpha test improvement DX
Port for the DX renderers of the alpha test improvement for OGL created by gregory38.
2016-08-19 15:59:54 +02:00
Gregory Hainaut
02cfe9aeeb Merge pull request #1520 from IlDucci/master
Updating Spanish translation
2016-08-19 09:55:41 +02:00
Gregory Hainaut
d87452ed21 build.sh: allow to replace make by ninja to speed up the build system
Quick benchmark. GCC debug mode
Full build: 6 second better, it can 2 additional cores :)
make : ./build.sh --dbg --clean  213.25s user 22.35s system 881% cpu 26.739 total
ninja: ./build.sh --dbg --clean  203.94s user 18.31s system 1085% cpu 20.474 total

No change build:: 1 second better :)
 make -C build_dbg -j 16 install  1.51s user 0.34s system 206% cpu 0.898 total
ninja -C build_dbg -j 16 install  0.05s user 0.02s system 98% cpu 0.074 total
2016-08-18 22:45:46 +02:00
Jonathan Li
029468e7b4 ci: Add clang 3.8 to Travis CI 2016-08-17 22:07:42 +01:00
Jonathan Li
c9a1097579 console: Remove buffered and wxerror console writers
Both haven't been used for a long time, and don't seem to hold any
advantages over the default stdout console writer.
2016-08-17 22:07:42 +01:00
Jonathan Li
f338ffea74 console: Remove scrollbar mouse drag pause behaviour
If the dev/verbose logging option is enabled and the game requires
automatic gamefixes, the console log will always scroll to the bottom
when the scrollbar is released since a new log message will be output
when emulation unpauses.

This could be quite annoying when checking a log while the game is
running. The behaviour doesn't seem to be all that useful anymore
(previously it was useful to work around a GUI bug where the automatic
gamefixes/widescreen patches/cheats menu options didn't apply
immediately) and only works on Windows, so let's remove it.
2016-08-17 22:07:42 +01:00
Gregory Hainaut
765b68458a gsdx: improve logging
Don't enable UpdateValidity print by default (+20~25% on log size)
Only useful in rare cases
2016-08-17 21:23:06 +02:00
Gregory Hainaut
15a4d1f0a9 pcsx2: fix gcc warning
MIPSAnalyst.cpp:124:9: warning: ‘takeBranch’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    else if (sure && !takeBranch)

False positive as sure will be false but safer this way
2016-08-17 21:23:06 +02:00
Gregory Hainaut
bf0e5dc5bd Merge pull request #1516 from PCSX2/emitter-manual-void-cast
pcsx2: manually cast function pointer to void*
2016-08-17 18:56:55 +02:00
Gregory Hainaut
19ceea4f1e Merge branch 'strict-aliasing' 2016-08-17 18:53:08 +02:00
Gregory Hainaut
cc68776069 pcsx2: manually cast function pointer to void*
Templace is nicer but give a hard time to compiler.

New version compile in both gcc&clang without hack

v2: add an uptr cast too for VS2013 sigh...
v3: use an ugly function pointer cast to please VS2013
2016-08-17 09:53:30 +02:00
Jonathan Li
d36002a02a gsdx:cmake: Use PNG_LIBRARIES instead of PNG_LIBRARY
PNG_LIBRARIES adds both libpng and zlib to the command line.
PNG_LIBRARY only adds libpng to the linker command line, and the cmake
documentation also suggests not to use it.
2016-08-16 20:35:21 +01:00
IlDucci
fa5effafcd Updating Spanish translation
Added the new shortcut identifiers. Warning: Some strings are shown in
English.
2016-08-16 13:40:09 +02:00
Gregory Hainaut
fa249a3f78 gsdx ogl: don't rely on the Z value in m_vt
Value seems wrongly rounded and you can't distinguish 0xFFFF from 0xFFFE

Instead check that depth is constant for the draw call and the value from the vertex buffer

Fix recent regression on GTA (and likely various games)
2016-08-16 07:30:52 +02:00
FlatOutPS2
c8f6d68d68 PCSX2: IPU end of video freeze fix
Fixes end of video freeze in Enthusia - Professional Racing.
2016-08-15 19:48:21 +02:00
Gregory Hainaut
44bbdbe49d common: use free directly instead of an Alloc(0)
Easier to understand the intent. And avoid false positive in coverity
2016-08-15 15:51:22 +02:00
Gregory Hainaut
252c043409 Merge pull request #1518 from PCSX2/pcsx2-high-level-fopen
Pcsx2 high level fopen
2016-08-15 15:41:27 +02:00
Pseudonym
07e21427b9 When PS1 loading was enabled, someone neglected to check that allowing the function to continue wouldn't cause any problems.
Fixes #1515
2016-08-15 14:23:43 +01:00
Gregory Hainaut
0f1c10230a CDVD: catch MEC/NVM file exception
It will stop the emulation and open a nice box with an error message instead of terminate PCSX2
2016-08-15 14:09:01 +02:00
Gregory Hainaut
deb7121fde CDVD: Use wxFFile API to handle MEC file too
again nicer, exception safe, less compilation warning :)

v2:
* check file is properly opened in write mode
* only print an error when result is bad
2016-08-15 13:08:54 +02:00
Gregory Hainaut
534e01e2d6 CDVD: Use wxFFile API to handle NVM file
Nicer, exception safe, less compilation warning :)

v2: check fp is properly open in write mode
2016-08-15 13:06:34 +02:00
Gregory Hainaut
5c7e2432bd gsdx-ogl: improve alpha test for GTA vice city (letters)
I don't understand why but it seems depth is rounded down even in 16 bits.
So uses 0xFFFE to enable ate_all_color_then_depth in 16 bits format too :)
2016-08-15 11:38:07 +02:00
Gregory Hainaut
5fbf702500 gsdx ogl: new optimization to bypass the alpha test
In FB_ONLY mode the alpha test impacts (discard) only the depth value.
If there is no depth buffer, we don't care about depth write. So alpha
test is useless and we can do the draw with a single draw call and no program
switch
2016-08-15 11:35:24 +02:00
Gregory Hainaut
b62859ffa2 gsdx ogl: only enable the alternate alpha test in FB_ONLY
RGB_ONLY requires to handle the alpha channel in the alpha test
2016-08-15 11:25:19 +02:00
Gregory Hainaut
2700f06fe7 Merge branch 'pcsx2-verbose-thread-error' 2016-08-14 22:31:28 +02:00
Gregory Hainaut
63ec74ebea build: remove most of the bashism
Various distribution still ship the true old shell to win 1 second at startup.
Besides, bash syntax is no way better

Not fully tested, some bashism might remain for some options but at least you can
do a standard build
2016-08-14 22:29:12 +02:00
Gregory Hainaut
9d8135cf1c x86emitter: allow strict aliasing optimization 2016-08-14 21:01:40 +02:00
Gregory Hainaut
2cc98191f0 common: allow strict aliasing optimization 2016-08-14 21:01:40 +02:00
Gregory Hainaut
0417a10483 gsdx: allow strict aliasing optimization 2016-08-14 21:01:40 +02:00
Gregory Hainaut
2e7fab7813 gsdx sw: avoid aliasing issue, clear function was wrong anyway
Value must be un-normalized. Function is only used with 0.0 so
API was updated to only use the 0 case.
2016-08-14 21:01:09 +02:00
Gregory Hainaut
ef7530af29 microVU: fix aliasing issue
Union is safer for the compiler
2016-08-14 20:49:12 +02:00
Gregory Hainaut
e8e66ec4b5 x86emitter: use memcpy to avoid aliasing issue
Code is only called once anyway.
2016-08-14 20:48:45 +02:00
Gregory Hainaut
90707f8d4e gsdx: avoid aliasing issue
Extend GSVector to support float move

Initial code likely used integer move for performance reason. However due to
the nan correction, register is now in float domain.
2016-08-14 20:48:34 +02:00
Gregory Hainaut
cc15a9480b clang format: disable vertical alignment
Avoid issue of bad alignment on some versions
To reduce change impact
2016-08-14 20:47:36 +02:00
Gregory Hainaut
447e0d0336 Merge pull request #1514 from PCSX2/gsdx-nouveau-driver
Gsdx alpha test improvement
2016-08-14 20:29:09 +02:00
Gregory Hainaut
15db7eeb81 gsdx: use correct format in printf
u => unsigned
d => signed

zu => size_t
2016-08-13 12:48:35 +02:00
Gregory Hainaut
0a1454ff6c gsdx: use prefix increment operator for non-primitive type
I think compiler is clever enough to optimize the code but it won't hurt
and it reduces the number of cpp check warning.
2016-08-12 23:11:26 +02:00
Gregory Hainaut
dc2864ad7a gsdx hw: avoid a null deferenced false-positive in coverity
It is a false positive because it supposes that PRIM->TME is both true and false.

It is the first Schrodinger's variable ;)
2016-08-12 23:02:06 +02:00
Gregory Hainaut
2d2fdd6e44 debugger: remove useless null check
It is done too late.
CID 168625 (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking this->cpu suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
2016-08-12 22:57:09 +02:00
Gregory Hainaut
f38cd9d80d onepad: add a missing break when CMD_CONFIG_MODE is true but configuration isn't enabled.
I hope it wasn't done on purpose.

CID 168624 (#1 of 1): Missing break in switch (MISSING_BREAK)
unterminated_case: The case for value CMD_CONFIG_MODE is not terminated by a 'break' statement.
2016-08-12 22:55:19 +02:00
Gregory Hainaut
1a09712f89 gsdx: init m_custom_width/height to a default value
Avoid useless warning on coverity
2016-08-12 22:48:20 +02:00
Gregory Hainaut
c41cf6c444 gsdx: init variable in constructor
CID 168626 (#1 of 1): Uninitialized scalar field
uninit_member: Non-static class member m_end_block is not initialized in this constructor nor in any functions that it calls.
2016-08-12 22:45:17 +02:00
Gregory Hainaut
39bf84a13c onepad: don't duplicate the "GamePad" base class code/member in the "JoystickInfo" derivated class 2016-08-12 22:37:37 +02:00
Gregory Hainaut
2d8a0dc59c onepad: fix a couple of ccpcheck warning
Yes I know formating suck
2016-08-12 22:36:17 +02:00
Gregory Hainaut
61eddca39d clang format: preliminary support
Add a .clang-format example file. Might need minor tuning. If people doesn't like the syntax

Add a basic script to validate current change is compliant with clang-format
* on master it will test last 20 commits
* on branch it will test all commits of the branch

Idea is to plug it into travis (might require clang 3.8). Everything is blacklisted. Use "ALL" parameters
to test all standard directories.
2016-08-12 20:28:00 +02:00
Gregory Hainaut
8fe65ec371 cmake: add -Wextra warning on GCC
Add 3 new warnings (first one must be fixed I think)

pcsx2/gui/MessageBoxes.cpp: In copy constructor ‘BaseMessageBoxEvent::BaseMessageBoxEvent(const BaseMessageBoxEvent&)’:
pcsx2/gui/MessageBoxes.cpp:62:1: warning: base class ‘class pxActionEvent’ should be explicitly initialized in the copy constructor [-Wextra]
 BaseMessageBoxEvent::BaseMessageBoxEvent( const BaseMessageBoxEvent& event )

plugins/GSdx/GSPng.cpp: In function ‘bool GSPng::SaveFile(const string&, GSPng::Format, uint8*, uint8*, int, int, int, int, bool, bool)’:
/home/gregory/playstation/emulateur/pcsx2_merge/plugins/GSdx/GSPng.cpp:64:14: warning: variable ‘success’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
         bool success = false;
              ^
plugins/GSdx/GSPng.cpp:44:58: warning: argument ‘image’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
     bool SaveFile(const string& file, Format fmt, uint8* image, uint8* row,
2016-08-12 19:30:14 +02:00
Gregory Hainaut
24ff2482a4 pcsx2: break when switch value is CoreThread_Indeterminate
Fix another GCC warning
2016-08-12 19:30:14 +02:00
Gregory Hainaut
6f64fc9f84 pcsx2: don't compare pointer with 0 2016-08-12 19:30:14 +02:00
Gregory Hainaut
41afd85a5d gsdx sw: fix GCC warning enumeral and non-enumeral type in conditional expression 2016-08-12 19:30:14 +02:00
Gregory Hainaut
5ad4cbace7 onepad|common: fix GCC warning type limit 2016-08-12 19:30:14 +02:00
Gregory Hainaut
88b7470c07 gsdx: use const qualifier to avoid gcc (false positive) warning
variable  might be clobbered by ‘longjmp’ or ‘vfork’

Only remains warning for 2 variables: success & image
2016-08-12 19:30:14 +02:00
Gregory Hainaut
f28ab4c280 pcsx2: gcc warning sign compare 2016-08-12 19:30:14 +02:00
Gregory Hainaut
214253c579 pcsx2: properly init structure with the { } pattern
Remove also 2 unused variables

GCC warning is still disabled as it generates lots of false positive. GCC5 and later will improve the situation

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36750
2016-08-12 19:30:14 +02:00
ramapcsx2
823670e4c5 Merge pull request #1513 from trostboot/g3mcfix
GameDB: Fix Grandia III MemCardFilter
2016-08-12 18:05:58 +02:00
trostboot
276bd01fcc GameDB: Fix Grandia III MemCardFilter
MemCardFilter for Grandia III NTSC-U Disc 2 was applied to the wrong
game. The serials for Disc 1 and 2 are SLUS-21334 and SLUS-21345,
respectively - I assume someone fatfingered when issuing the serials.
2016-08-12 16:12:39 +02:00
Gregory Hainaut
19e992869a Merge pull request #1512 from PCSX2/gsdx-dynamic-thread-height
gsdx sw: add extrathreads_height to control the quantity of pixels pr…
2016-08-12 15:52:13 +02:00
Gregory Hainaut
078577c7c5 common: try to print a nice error message when pthread_create is bad 2016-08-12 10:05:14 +02:00
Gregory Hainaut
332ef5892b gsdx: replace hardcoded constant with nice enum 2016-08-11 22:30:34 +02:00
Gregory Hainaut
8b94320524 gsdx ogl: implement another algo to handle alpha test
Fix rendering issue on letters on Kengo/burnout 3/...

Default algo will execute the alpha test in 2 passes. However due to blending
you can't handle accurately the color.

Fortunately for us, the rendering uses an always pass depth test so you
can execute first all the color rendering (which doesn't depends on the alpha test)
And then the depth part which depends on the alpha test.
2016-08-11 21:15:17 +02:00
Gregory Hainaut
866173a481 gsdx ogl: move zbuffer emulation code into a dedicated function
* Code was factorized a bit with the help of max_z
* Add an extra optimization if test is ZTST_GEQUAL and min z value is
the biggest value. Z test will always be pass.
Note: due to float rounding (23 bits mantissa vs 24 bits depth) the test
is done against 0xFF_FFFE and not 0xFF_FFFF. It is wrong but GPU will
also use float so impact will be null.
2016-08-11 21:14:58 +02:00
Gregory Hainaut
1fa9e3fc93 gsdx ogl: align shader self test to atst previous change 2016-08-10 11:30:13 +02:00
Gregory Hainaut
74822d6ba3 gsdx ogl: rework atst handling
* Move the rounding operation in the constant buffer
* Merge less with less equal. And merge greater with greater equal

Need test
2016-08-10 11:30:11 +02:00
Gregory Hainaut
9a188a87c2 gsdx ogl: move ATST emulation in a dedicated function
Future commit will try to reduce the number of Alpha Test possibilities
2016-08-09 20:53:44 +02:00
Gregory Hainaut
fb2182dd9b gsdx small nitpick 2016-08-09 15:15:30 +02:00
FlatOutPS2
59a4442880 PCSX2: IPU Normal error end of video freeze fix
Fixes end of video freeze with IPU Normal error in games like Enter The
Matrix, Rygar, Freestyle Metal X, etc.
2016-08-09 14:06:21 +02:00
Gregory Hainaut
0b86aad059 spu2x sdl: increase the number of samples
Avoid alsa error "buffer underrun"
2016-08-09 11:38:25 +02:00
Jonathan Li
efb5c85c76 3rdparty:portaudio: Fix module omission in Devel builds
Preprocessor defines were set for Release and Debug modes, but not Devel
builds. Broken since 259a39ef0c.

Fixes #1505.
2016-08-08 23:01:28 +01:00
Jonathan Li
5d6f9a316a cdvdgigaherz: Use null for event/thread handle init
CreateEvent and CreateThread return NULL on failure, not
INVALID_HANDLE_VALUE. This should have been done in
0477e03965, I didn't check thoroughly
enough.
2016-08-08 22:34:58 +01:00
avih
5a75906ce7 Merge pull request #1492 from ssakash/EE_Cyclerate
PCSX2-WX: Add a mild overclock option on the slider
2016-08-08 19:27:33 +03:00
avih
f35c5f1c91 Merge pull request #1491 from ssakash/VFrequency
PCSX2-WX: Add proper vertical frequency values on GS Frame
2016-08-08 18:44:49 +03:00
Gregory Hainaut
0dcce91a6e Merge pull request #1504 from ssakash/RemoveFunction
GSDX: Remove GetDeviceSize()
2016-08-08 16:15:07 +02:00
Akash
0ff7076d84 GUI: Convert text color for -1 value to red
* Only use dark green color for the default cycle rate. using a different color just for a single value (previously for -1) might be confusing for users.

* Use a constant RGB form of dark sea green color instead of the regular dark green color. these new RGB values have been *tuned* for perf...err perfection!
2016-08-08 19:20:51 +05:30
Akash
bc54e3d01b R5900: Add a mild overclock option
* Adds a mild overclock option to have the 0 at middle of the slider.
2016-08-08 19:20:44 +05:30
Akash
e738acbe3c R5900: Minor clean up (no functional change)
* Rename some variables as the previous names didn't make much sense.

* Convert unnecessary int data types to bool.
2016-08-08 18:45:00 +05:30
Avi Halachmi (:avih)
8e8b8f8ed5 widescreen cheats_ws.zip: 6 removed, 49 changed, 452 new, 2440 total
This syncs the cheats_ws.zip widescreen patches archive with Devina's
archive from 2016-08-07.

The zip file is the zipped content of folder cheats_ws at the archive,
after removing the following 10 known WIP patches: 00000000 1771BFE4
C77AF2CA DA3DD765 07652DD9 FDA1CBF6 CC96CE93 2545CA71 1CE1DA8A CD787D68

Compared to the previous content of cheats_ws.zip:
- 6 files deleted (07652DD9 1CE1DA8A 44D23E5F CC96CE93 CD787D68 FDA1CBF6)
- 49 modified files
- 452 new files (w00t!)
- 1939 files identical to before

The zip now has a total of 2440 patch files, compared to 1994 before.
2016-08-08 08:49:51 +03:00
refractionpcsx2
84f1b08033 VIF: Fix up some scenarios with Reverse VIF FIFO. Fixes #1502
-Also noted a scenario which isn't really handled correctly but unsure what would happen in those cases (if there are any). I guess we'll find out :)
2016-08-07 12:27:28 +01:00
Akash
bc24e90070 GSDX: Remove GetDeviceSize()
It's not used anywhere and it doesn't seem needed.
2016-08-07 12:43:03 +05:30
Akash
005f63d455 PCSX2-WX: Improve percentage calculation on GSFrame
Calculate the percentage value using the vertical frequency fetched from counters.
2016-08-05 18:24:03 +05:30
Akash
e7f66900fa Counters: Add a new function GetVerticalFrequency()
No functional changes done, the current commit helps us to pass vertical frequency values of individual video modes to GUI code for accurate percentage calculation on titlebar. (which is done on the succeeding commit)
2016-08-05 18:23:55 +05:30
Jonathan Li
0477e03965 cdvdgigaherz: Fix CreateEvent/CreateThread return value checks
CreateEvent and CreateThread return NULL on failure, not
INVALID_HANDLE_VALUE.

Spotted using Visual Studio Code Analysis Tools (Warning C6387)
2016-08-05 00:30:25 +01:00
Jonathan Li
a8286e7458 cdvdgigaherz: Remove unused variables 2016-08-04 23:46:26 +01:00
Jonathan Li
af60501fb6 windows: Remove unused solution files and property sheets
The solution files are unused and for ancient Visual Studio versions -
GSDumpGUI has its own solution file, and bin2cpp is included in the main
solution file.

The property sheets have either fallen out of use or were never used in
the first place.
2016-08-04 23:09:08 +01:00
Jonathan Li
869f4d1898 gsdx: Only set ini path in GSdxApp::Init() if it's empty
Fixes a regression introduced by 46ba9aa117,
where the Linux GS replayer would always use the options in inis/GSdx.ini
(or use the default options if that doesn't exist) to replay the dump,
instead of using the GSdx.ini from the specified ini folder.
2016-08-04 00:53:50 +01:00
Gregory Hainaut
e9e1b33884 gsdx: log a nice string instead of the hex format of PSM 2016-08-03 18:07:54 +02:00
Gregory Hainaut
ac9f2ed284 lilypad: fix the gcc warning take 3
Signed vs non-signed comparison
2016-08-03 18:06:27 +02:00
Gregory Hainaut
41bede60eb gsdx replayer: fix broken init in replayer
"regression" from previous defered init
2016-08-03 11:57:56 +02:00
Gregory Hainaut
27f313ee16 gsdx hw: limit OI_GsMemClear to large clear
Help to reduce the speed impact
2016-08-03 11:23:23 +02:00
Jonathan Li
f978f9a07d Merge pull request #1477 from turtleli/gsdx-defer-init
gsdx: Avoid illegal instruction crash on older CPUs
2016-08-02 23:00:19 +01:00
Gregory Hainaut
4eda5fb924 Revert "lilypad: use size_t instead of int for num* variable"
This reverts commit 87d73684fa.

Will do something that work ;)

close #1498
2016-08-02 22:40:03 +02:00
Gregory Hainaut
16affc9ef4 gsdx tc: potentially fix a regression
Update done on f712c5c6d0

Previous code use the size of the draw to compute latest block. I
don't know why I use .x/.y which are the origin offset so the start of the block.
2016-08-02 15:35:28 +02:00
Gregory Hainaut
2844facae5 FPU/sVU: Fix GCC warning
may be used uninitialized in this function

Jump pointer are false positive but it helps to make compiler happy
2016-08-02 15:29:38 +02:00
Gregory Hainaut
87d73684fa lilypad: use size_t instead of int for num* variable
Fix noisy GCC warning:  warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
2016-08-02 15:29:38 +02:00
Avi Halachmi (:avih)
4096e72835 gameindex.dbf: updated compatibility (1 new, 23 better, 0 worse)
Updated/synced from the online compatibility list.

- Update summary:
Not at dbf (and added): 1
Not at csv (but have compat info at the dbf): 258
Unchanged: 2560
Better compat: 23
Worse compat: 0

- Status before:
Imported entries: 9706
Compatibility 1: 7 games
Compatibility 2: 31 games
Compatibility 3: 48 games
Compatibility 4: 70 games
Compatibility 5: 2665 games

- Status after:
Imported entries: 9707
Compatibility 1: 7 games
Compatibility 2: 29 games
Compatibility 3: 48 games
Compatibility 4: 71 games
Compatibility 5: 2687 games
2016-08-02 16:22:04 +03:00
Gregory Hainaut
f19da94bfd Merge pull request #1476 from PCSX2/onepad-input-state
onepad 1.3: import lilypad state machine into onepad
2016-08-02 15:01:42 +02:00
Jonathan Li
44f90efb93 gsdx:psx: Fix illegal instruction crash on old CPUs
Check the instruction set first in GPUinit, GPUconfigure and GPUtext
to prevent unsupported vector instructions from being executed.

Move the vector initialisation in GPUinit to a separate function - it
avoids a vzeroupper instruction.
2016-08-01 19:38:23 +01:00
Avi Halachmi (:avih)
e329b6ffd0 boot: fix: show bios info at the console title
This is a regression from 6db18446 , which, due to correctly applying
the patches when the bios starts, also updated the console title (which
happens at the same function).

So when updating the settings and loading the patches, only update the
console title if we're already outside of the bios.
2016-07-31 20:56:00 +03:00
Avi Halachmi (:avih)
6db1844656 patches: load correctly for the bios on full boot
We already had loading of the patches (and applying patch=0) before the
game elf recompiles, now do the same when the bios starts too.
2016-07-31 20:05:04 +03:00
Avi Halachmi (:avih)
2aac8d875a patches: more consistency with console messages
If the dev/verbose console source is enabled then there's no change.

If it's not enabled (i.e. most users), then:
- Don't show patch info messages twice on boot (regression from 27e7ecce).
- Show patch info messages when loading a saved state (never worked).
- Don't show patch info messages for the bios.

It still doesn't print the info when patches/fixes/etc are enabled or
disabled while a game is running, because such actions while a game is
running can have unexpected effects regardless (for instance, it's
technically impossible to unapply a patch).

If one really wants to follow the exact timing and info about patch
loading, just enable the dev/verbose console source at the console menu.
2016-07-31 19:07:14 +03:00
Gregory Hainaut
92ae8a5be7 gsdx sw: print current draw call of GetSizeFixedTEX0
To easily detect compare with hardware renderer
2016-07-31 13:19:38 +02:00
Gregory Hainaut
1ea83ba3a7 gsdx debug: log current area of the draw
This way it is easier to see which part of the texture is read, and which part
of the framebuffer is updated
2016-07-31 13:19:38 +02:00
Adam Diffin
6376e8d6e7 Just a simple grammar fix. (#1489) 2016-07-31 01:23:35 +01:00
Avi Halachmi (:avih)
5e3c2f0c6a eeCycleRage: negligible fix for the milest underclock calculation
This now makes the mildest underclock really identical to before 90b11b2 .
2016-07-30 18:11:35 +03:00
Avi Halachmi (:avih)
460b7be47a eeCycleRate: add/restore a milder underclock value to the slider
Also slightly modify the textual description of the other underclock items.

All previous values available at the slider are still there, but since
the new value is now the mildest (slider == -1), it "pushes" the previous
-1 and -2 values one notch down.

This restores the mildest value to be identical to how it behaved before
90b11b2f , which is measured as about 75% speed.

Because the "balanced" preset uses the -1 slider value, it means this
restored mild value is now also used by the balanced preset.

As a note, while the message for the mildest value was always "reduce by
about 33%", before 90b11b2f it was actually about 25% reduction (75% speed,
like with this commit now), and after that commit it was about 40% reduction
(60% speed).

Also, since we add new value to the slider only on one side, the "0"
(default) slider position is now not at the exact middle. That's fine,
but maybe we could also add a milder overclock value on the other side
to have that symetric again.
2016-07-30 17:36:34 +03:00
Avi Halachmi (:avih)
67dc3eef4b gui: eeCycleRate: more accurate description based on measurements
The ee cyclerate percentage values at the slider text were inaccurate,
and sometimes wildely so.

Add some code to measure the actual speed at runtime (disabled by default)
and update the (static) slider text values according to the measurements.

Also change the description from increase/reduce "by AA %" to "to BB %".

This makes it slightly easier to grasp. E.g. "reduce speed to 10%" is
easier to grasp than "reduce speed by 90%", and similarly, "increase
speed to 300%" is easier to grasp than "increase speed by 200%".
2016-07-30 16:04:27 +03:00
Gregory Hainaut
140fe74ca2 gsdx ogl: fix bad blending regression
(when accurate blending is disabled)

Regression was introduced in 29c97a9bf2 (11th June)
2016-07-30 09:59:53 +02:00
Avi Halachmi (:avih)
e8e6d3bc77 game settings/patches: don't apply acidentally to the bios
While c782b62 added much more reliable game game startup detection, the
settings system did not yet gain that knowledge, but typically that's OK.

Typically the settings (and patches) are loaded according to the current
CRC, which happens once on bios boot (with general settings) and then again
when the game starts, which includes game-specific fixes, patches, etc.

However, if the setting are changed (and therefore also applied) after
the game CRC is known but before the game starts, such as if the user
presses Tab to change framelimiter while at the bios, then until now it
was accidentally applying the game's settings while still at the bios.

This commit makes the settings routine know whether or not the game actually
started, and apply the generic/game settings accordingly.
2016-07-29 20:55:58 +03:00
Pseudonym
c782b6222c More robust eeload hooking to monitor and interfere with bios and game loading.
Maybe some other cruft can go now this should be reliable.
2016-07-29 16:51:18 +01:00
Gregory Hainaut
242ac26299 Merge pull request #1485 from ssakash/HPO_Custom
GSDX-TextureCache: Port Half pixel offset hack for custom resolutions
2016-07-29 15:07:02 +02:00
Gregory Hainaut
55599e1802 Merge pull request #1486 from FlatOutPS2/master
GSdx: Star Ocean 3 depth issue fix
2016-07-29 15:06:35 +02:00
Gregory Hainaut
11cdb070c0 cmake: use only sse2 flag for ICC
Default is pentium4
2016-07-29 15:00:52 +02:00
Robert Neumann
eacd789a88 Fix an oversight (missing an include) 2016-07-29 14:06:27 +02:00
FlatOutPS2
02b0451d3c GSdx: Star Ocean 3 depth issue fix
Fixes issue #1475
2016-07-29 12:13:26 +02:00
FlatOutPS2
91e07727e3 GSdx Add missing CRC hacks 2016-07-29 12:12:52 +02:00
ramapcsx2
1068208887 Merge pull request #1484 from ssakash/annoying_warning
GSDX: Silence an implicit conversion warning
2016-07-29 10:11:31 +02:00
Avi Halachmi (:avih)
27e7ecce65 patches: load before recompiling the elf entry block
Commit 330704a added code which applies the patches before recompiling the
elf entry block, but because at that stage the patches for the current
CRC were not yet loaded, effectively it did nothing.

Now it actually loads the patches before applying them.

As a result, it should now be possible for patches (with place=0) to be
effective before the elf is executed.

This is a hack, because the emulation loads the patches while it's not
paused. It works, but it's not great. A better way would be to pause the
emulation once the entry point is detected, then make the setting get
applied normally (which also loads the patches normally), and then resume
the emulation.

This _should_ properly fix #627 (the test case works as expected now).
2016-07-28 22:25:00 +03:00
Avi Halachmi (:avih)
defbdcc2b8 AppCoreThread: small refactor (no-op)
In preparation for the next commit
2016-07-28 22:19:45 +03:00
Akash
dbad57b8e8 GSDX: Silence an implicit conversion warning
OMSetBlendState() doesn't accept passing a float value as it's argument
(AKA actual parameter).
2016-07-28 18:58:06 +05:30
Akash
47f69f694a GSDX-TextureCache: Port Half pixel offset hack for custom resolutions 2016-07-28 18:45:23 +05:30
Gregory Hainaut
620876e0e7 gsdx: fix compilation error with ICC
just require the -restrict compilation flag
2016-07-28 11:01:28 +02:00
Gregory Hainaut
76f38d3da0 onepad: fix ICC compilation warning 2016-07-28 10:48:43 +02:00
Gregory Hainaut
d714a2a393 lilypad: fix compilation on ICC 2016-07-28 10:46:40 +02:00
Gregory Hainaut
55bc7a678a pcsx2: ICC warning: type qualifier on return type is meaningless 2016-07-28 10:36:58 +02:00
Gregory Hainaut
64e8e02f54 cmake: add Intel's ICC compiler support
Full of compilations errors and warnings
2016-07-28 10:36:40 +02:00
Gregory Hainaut
48c4d54a6c onepad: support load/save state for the plugin
close #205
close #1375
close #1465

v2: don't bump PCSX2 savestate version
2016-07-28 09:48:44 +02:00
Jonathan Li
a9f9c1406c Merge pull request #1474 from turtleli/windows-64-bit-fixes
Windows 64-bit compile fixes
2016-07-28 00:19:04 +01:00
Jonathan Li
7e30d16797 gsdx: Use char array instead of string for name
"static string str;" causes a SIGILL signal on a "Nehalem" (SSE4.2)
QEMU VM when compiled with GCC 6.1.1.
2016-07-27 23:34:16 +01:00
Jonathan Li
46ba9aa117 gsdx: Defer GSdxApp initialisation on Linux only
vector push_back causes a SIGILL signal on a Nehalem (SSE4.2) QEMU VM
when compiled with GCC 6.1.1.

However, an empty constructor causes illegal instruction exceptions to be
generated on a Windows VM.

So here's an inbetween that looks stupid but works on what I've tested.
2016-07-27 23:34:15 +01:00
Jonathan Li
9f53987e3b gsdx: Use map for GSCRC::m_map
Visual Studio 2015 initialises unordered_map using vector instructions,
which can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li
e5ea4cc5d4 gsdx: Defer vector initialisation to GS/GPUinit
It can cause PCSX2 to crash if the instructions aren't supported.
2016-07-27 23:34:14 +01:00
Jonathan Li
d726d4d4aa gsdx: Add AVX2 to instruction set test
Also add a newline to the error message and report AVX/AVX2 instead of
SSE5.00 and SSE5.01.
2016-07-27 23:34:12 +01:00
Gregory Hainaut
7fa55c39f1 Merge pull request #1479 from ssakash/custom_fixes
GSDX-TextureCache: Add proper rounding when unscaling texture size
2016-07-27 22:31:21 +02:00
Avi Halachmi (:avih)
cff8cb137c patches: simplify by unifying patches/cheats (effectively no-op)
patches and cheats are exactly the same (pnach style patch line) but we
stored two sets of them depending on their source: "patches" for
GameIndex.dbf patches, and "cheats" for all the rest (cheats, widescreen,
etc).

Unify patches and cheats and keep only "patches", cleanup and rename the
public API at Patch.h, and add documentation.

Also: add some console messages on invalid "place" value, and when we skip
searching cheats_ws.zip because a pnach file was found at cheats_ws dir.

Also: removed checks before applying different kinds of patches/cheats
because we don't need them (we didn't have disabled patches loaded anyway).

The checks removal _shouldn't_ have any effect, except that the checks were
wrong and accidentally prevented loading widescreen hacks which have a place
value of 0. No one probably noticed it since all the widescreen patches
which I looked at have a place value of 1. So now ws patches with place=0
would load correctly too. If we'll ever have such.
2016-07-27 18:15:17 +03:00
Avi Halachmi (:avih)
eb1e890278 patches/cheats: document "place" value and use it explicitly
This commit doesn't change any behavior, but documents the "places" value
of the patch structure ("place" is 1 in patch=1,... and 0 in patch=0,...)
and also uses an enum to make its use explicit.
2016-07-27 14:21:37 +03:00
Avi Halachmi (:avih)
67aee8a19c patches: reset also patches on VM restart
This should fully fix #851
2016-07-27 14:21:37 +03:00
Avi Halachmi (:avih)
56adb85a87 cheats: reset cheats when restarting the VM
If cheats are enabled and loaded (pnatch files from the cheats folder, or
from the cheats_ws folder, or from cheats_ws.zip), then they were still
applied for some time while rebooting the emulation after a game is already
loaded (e.g. start pcsx2, boot fast, play, boot full). This could cause
the reboot to fail if some patches were applied (e.g. widescreen patches).

It seems that the offending application of the cheats happens at
SysCoreThread::VsyncInThread(), which possibly runs before the config
change event is handled (and re-load the cheats for the current crc).

So reset/invalidate the cheats when the VM is reset.

This should improve issue #851, but ultimately not fully fix it, since
the patches (from games db) are not reset yet with this commit, and we
don't have a function to do so. For now the non-cheats patches are only
reset/reloaded when a configuration change is being handled.

It would probably be a good thing if we can unify patches/cheats.
2016-07-27 14:21:37 +03:00
Gregory Hainaut
62aff1f2a1 onepad 1.3: import lilypad state machine into onepad
Not tested
* rumble

Save/load state will be implemented in the next commit

v2:
* Print current deteced pad mode
* fix dpad button tranmission

close #366
2016-07-27 08:55:27 +02:00
Gregory Hainaut
d6383e6c21 Merge pull request #1472 from PCSX2/gsdx-gta-depth-issue-1457
Gsdx gta depth issue 1457
2016-07-26 18:40:53 +02:00
Akash
d3ebd4b318 GSDX-TextureCache: Add proper rounding when unscaling texture size
Fixes flickering issues on Dragon Ball Z Budokai Tenkaichi FMV's on custom resolution, might also help prevent some crashes on custom resolution.
2016-07-26 18:28:07 +05:30
ramapcsx2
c592ccb3e5 Merge pull request #1435 from ssakash/Custom_TextureCache
GSDX: Improve scaling of custom resolution
2016-07-26 14:07:19 +02:00
Gregory Hainaut
20aee23edc onepad: fix gcc warning
warning: comparison between signed and unsigned integer expressions
2016-07-26 09:27:57 +02:00
Gregory Hainaut
0937526aac onepad: handle correctly the release state of analog pad
Axe ranges from 0 to 255 but the release state value is 127 not 128.

close #243
2016-07-26 09:27:14 +02:00
Jonathan Li
77b9f2c15e pcsx2: Initialise g_Conf->Mcd[].Type
Fixes a valgrind warning. Folder memory cards are autodetected later, so
it's safe to set it to a file memory card.
2016-07-24 22:41:54 +01:00
Jonathan Li
dbf6b38a2e windows: Remove intrin_x86.h from solution
File was deleted recently.
2016-07-24 22:25:08 +01:00
Jonathan Li
38c802a4ef pcsx2:windows: Remove unused sampling profiler
Visual Studio has a much more powerful performance profiler which can do
the same task and more.
2016-07-24 21:42:53 +01:00
Jonathan Li
ed47dca8a1 x86emitter:windows: Make cpu detection/affinity 64-bit compatible
Use DWORD_PTR since that works on both 32-bit and 64-bit builds. And
remove some empty unused functions.

Fixes a 64-bit compilation issue.
2016-07-24 19:05:18 +01:00
Robert Neumann
b8c1fa9b43 Fix warning in dev9ghz 2016-07-23 15:58:37 +02:00
Jonathan Li
043d2926fa pcsx2:windows: Disable SuperVU for 64-bit builds
Doesn't compile. Not going to make this work either.
2016-07-23 10:52:10 +01:00
Jonathan Li
f04dfe43a8 utilities:windows: Restrict memcmp_mmx to 32-bits
Fixes a 64-bit compilation issue.
2016-07-23 10:52:09 +01:00
Jonathan Li
8387de09e2 pcsx2: Use _M_X86_64 for Baseblock static_assert ifdef
Fixes a 64-bit compilation issue.
2016-07-23 10:51:56 +01:00
Jonathan Li
ac7e7a79c3 utilities:windows: Remove memset32 assembly
It's unused, and it doesn't compile in 64 bits.
2016-07-23 02:21:21 +01:00
Jonathan Li
768ed80ece utilities:threading:windows: Use intrinsic pause
Fixes a 64-bit compile error.
2016-07-23 02:21:13 +01:00
Jonathan Li
f40b2e641b spu2-x:windows: Use INT_PTR for DialogProc return type
Fixes a 64-bit compile error.
2016-07-23 02:19:29 +01:00
Jonathan Li
5719bddbb5 gsdx:windows: Change m_colorspace to INT_PTR
Fixes a 64-bit compile error.
2016-07-23 02:19:28 +01:00
Gregory Hainaut
aea75f51bd gsdx tc: partial support of pseudo depth for Dx
Fix #1457 (GTA)

The game uses a depth format for a pure color buffer (cokes do ravage
in gaming industry)

However I'm really afraid that it migth break another effect in other games.
2016-07-22 20:38:46 +02:00
Gregory Hainaut
d58c07d697 onepad: init event struct
Might help to reduce valgrind warning
2016-07-22 20:27:54 +02:00
Gregory Hainaut
fa12743c8e debugger: fix another missing init
==18373== Conditional jump or move depends on uninitialised value(s)
==18373==    at 0x825CC9B: CtrlMemView::render(wxDC&) (CtrlMemView.cpp:277)
==18373==    by 0x825DA19: CtrlMemView::paintEvent(wxPaintEvent&) (CtrlMemView.cpp:138)
==18373==    by 0x81F3A5F: Pcsx2App::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) (AppMain.cpp:614)
==18373==    by 0x40BC50B: wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const (in /usr/lib/i386-linux-gnu/libwx_baseu-3.0.so.0.2.0)
==18373==    by 0x426C654: wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) (in /usr/lib/i386-linux-gnu/libwx_baseu-3.0.so.0.2.0)
==18373==    by 0x426C752: wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) (in /usr/lib/i386-linux-gnu/libwx_baseu-3.0.so.0.2.0)

Reported by gcc too
2016-07-22 19:02:34 +02:00
Gregory Hainaut
5cf2688c0c common: remove useless x86_intrin.h
Yeah one less licence in the project :)
2016-07-22 18:47:51 +02:00
Gregory Hainaut
7d35e15fea Merge pull request #1444 from PCSX2/atomic-relax
Atomic relax
2016-07-22 18:36:02 +02:00
Gregory Hainaut
0f62bccb0b Merge pull request #1470 from ssakash/spu2_x_nitpicks
SPU2-X: Align GUI elements on debug dialog
2016-07-22 18:18:20 +02:00
Gregory Hainaut
9182a287e2 Merge pull request #1469 from PCSX2/valgrind-memleak
Valgrind memleak
2016-07-22 18:17:37 +02:00
Akash
8e2b19ada7 SPU2-X: Align GUI elements on debug dialog 2016-07-22 19:29:45 +05:30
Gregory Hainaut
55a408edad debugger: init resolvePointerStrings to a default value
Fix valgrind issue:

==3560== Conditional jump or move depends on uninitialised value(s)
==3560==    at 0x81F7949: CtrlRegisterList::OnDraw(wxDC&) (CtrlRegisterList.cpp:291)
==3560==    by 0x47826DE: wxAnyScrollHelperBase::HandleOnPaint(wxPaintEvent&) (in /usr/lib/i386-linux-gnu/libwx_gtk2u_core-3.0.so.0.2.0)
==3560==    by 0x4785969: wxScrollHelperEvtHandler::ProcessEvent(wxEvent&) (in /usr/lib/i386-linux-gnu/libwx_gtk2u_core-3.0.so.0.2.0)
==3560==    by 0x426CA0E: wxEvtHandler::SafelyProcessEvent(wxEvent&) (in /usr/lib/i386-linux-gnu/libwx_baseu-3.0.so.0.2.0)
==3560==    by 0x4710BAE: wxWindowBase::HandleWindowEvent(wxEvent&) const (in /usr/lib/i386-linux-gnu/libwx_gtk2u_core-3.0.so.0.2.0)
==3560==    by 0x44EF67D: wxWindow::GTKSendPaintEvents(_GdkRegion const*) (in /usr/lib/i386-linux-gnu/libwx_gtk2u_core-3.0.so.0.2.0)
2016-07-22 10:13:54 +02:00
Jonathan Li
fee374b0e9 Merge pull request #1462 from turtleli/tidy-vs-projects
Tidy Visual Studio project files
2016-07-22 00:30:52 +01:00
Jonathan Li
259a39ef0c windows: Update VS solution configurations
Use portaudio devel build for devel config - it fixes a warning that
occurs due to incompatible linker settings (incremental vs whole program
optimisation)

Also add 64-bit configurations.
2016-07-21 23:59:41 +01:00
Gregory Hainaut
53a70d9018 onepad: use modal dialog instead of frame
Avoid various pitfall such as #1387

v2:
* use stack object
2016-07-21 09:51:16 +02:00
Gregory Hainaut
1e3c46a6bb gsdx ogl: purge debug message in destructor
Allow to see latest error and avoid noise in Valgrind log
2016-07-21 09:51:16 +02:00
Gregory Hainaut
b6a55f50ab gsdx ogl: fully initialise PSConstantBuffer structure 2016-07-21 09:51:16 +02:00
Gregory Hainaut
b322ef286e CDVD: initialize a temporary buffer
I'm not sure to understand why Valgrind reports it as we populate the buffer
during the ReadAsync. Maybe Valgrind doesn't like async IO from the kernel.

In doubt, the init will avoid those warnings

==19897== Thread 6 EE Core:
==19897== Conditional jump or move depends on uninitialised value(s)
==19897==    at 0x80FE9E1: BlockdumpFileReader::DetectBlockdump(AsyncFileReader*) (BlockdumpFileReader.cpp:40)
==19897==    by 0x8109EE5: InputIsoFile::Open(wxString const&, bool) (InputIsoFile.cpp:229)
==19897==    by 0x810939E: ISOopen(char const*) (CDVDisoReader.cpp:57)
==19897==    by 0x810194E: DoCDVDopen() (CDVDaccess.cpp:359)
==19897==    by 0x80B651C: SysCorePlugins::OpenPlugin_CDVD() (PluginManager.cpp:1219)
2016-07-21 09:51:16 +02:00
Gregory Hainaut
3c0a97354c pcsx2:linux: leaking allocation isn't necessary 2016-07-21 09:51:15 +02:00
Gregory Hainaut
8b91aefd49 gui: add a destructor to CtrlRegisterList object
So we can free allocated memory
2016-07-21 09:51:15 +02:00
Gregory Hainaut
11e5fe8879 pcsx2 gui: fix a pseudo memory leak on SavestateEntryPack
It is a pseudo leak as it is a global object. Nevertheless it pollutes
the valgrind log.

v2:
* use an array of unique pointer
* use ArraySize instead of a constant
2016-07-21 09:50:28 +02:00
trostboot
dbda9292d8 Add EE clamp modes for Shadow Hearts (#1463)
GameDB: Full EE clamping is required in Shadow Hearts for characters to appear correctly in
various scenes throughout the game.
2016-07-20 11:56:10 +01:00
Jonathan Li
e271932f41 bin2cpp: Tidy VS project
Group common properties. This removes some of the optimisation
properties, which aren't really essential since bin2cpp is only used as
a tool to convert images to header files.
Add 64-bit configurations.
2016-07-19 23:25:12 +01:00
Jonathan Li
e25e8bc580 plugins: Tidy/standardise VS projects
Combine all the different configurations together so the project files
are more generic and maintainable.

Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).

Add 64-bit configurations.

Additional specifics:
spu2-x: FLOAT_SAMPLES preprocessor definition removed since it's unused.
2016-07-19 23:25:12 +01:00
Jonathan Li
f8605dda61 common|pcsx2: Tidy/standardise VS project
Combine all the different configurations together so the project files
are more generic and maintainable.

Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).

Add 64-bit configurations.
2016-07-19 23:25:12 +01:00
Jonathan Li
97e268e5a5 3rdparty: Tidy/standardise VS projects
Combine all the different configurations together so the project files
are more generic and maintainable.

Also standardise the layout so all the project files will be similar and
all have the same standard elements (even if empty).

Add 64-bit configurations.

Additional specifics:
wxWidgets: Common stuff into the property sheets.
pthreads: Fixes the LNK4068 warning.
portaudio: Devel config added.
libjpeg: Non-existent file removed.

Side note: libjpeg is barely used - wxWidgets uses it but doesn't have
to, ZeroGS uses it but we don't develop that anymore.
2016-07-19 23:25:12 +01:00
Jonathan Li
7c3cee0624 spu2-x: Rearrange lowpass.cpp header order
It allows VS to use the precompiled header for that file too.
2016-07-19 23:25:12 +01:00
Jonathan Li
296ef4184f 3rdparty: Use SolutionDir instead of SvnRootDir in property sheet
It's part of Visual Studio, and more importantly, I don't need to
specify a build output directory in the libpng project file.
2016-07-19 23:25:12 +01:00
Jonathan Li
7277074d9e windows: Fix incremental linking property sheet
Don't use "-dbg" target suffix - both Devel and Debug builds use the
property sheet, so it's incorrect.

Also don't set optimise references to false - it's incompatible with
incremental linking and causes compile failures.
2016-07-19 23:25:12 +01:00
Lena
5a17b95901 x86_intrin.h: fix build using GCC (#1468)
__GNUG__ is not defined while compiling this file,
this causes the build to fail.

Replacing this with __GNUC__ fixes this.
2016-07-19 23:13:24 +01:00
Akash
1e92c24847 SPU2-X: Convert inline assembly to intrinsics (#1464) 2016-07-19 23:11:12 +01:00
ramapcsx2
ddc68626d8 Merge pull request #1442 from ssakash/Counters
PCSX2-Counters: Improve video mode detection
2016-07-18 19:28:24 +02:00
Gregory Hainaut
e680a90e90 Merge branch 'intrinsic-cleanup' 2016-07-17 11:33:06 +02:00
Gregory Hainaut
6e306ee44f common: move _xgetbv with cpuid intrin
Besides, code comes from Gabest and not reactOS
2016-07-17 10:25:00 +02:00
Gregory Hainaut
e872552fdc spu2x|common: s/jASSUME/pxAssume/ allow to remove code and __debugbreak intrinsic 2016-07-17 10:24:29 +02:00
Gregory Hainaut
c56ca4a0fa common: include cpuid.h on unix
I tested both clang and gcc.
2016-07-17 10:24:29 +02:00
Gregory Hainaut
f9ebc0ba70 Merge pull request #1459 from frantisekz/master
Degrade GTK3 Fatal Error to Warning
2016-07-15 09:35:36 +02:00
Gregory Hainaut
25bc2dff07 gsdx: dump and log EE texture read
It gives a visual opportunity to detect a bad read of the texture cache
2016-07-14 19:45:06 +02:00
Gregory Hainaut
f76bf9dddc gsdx: dump and log EE texture read
It gives a visual opportunity to detect a bad read of the texture cache
2016-07-14 19:41:21 +02:00
Gregory Hainaut
10ea05bc6f common: remove old atomic wrapper
Use cross-platform std::atomic instead
2016-07-14 18:29:41 +02:00
Gregory Hainaut
812e41d578 common: relax atomic of m_IsBeingDeleted
Avoid the memory fence in the constructor
2016-07-14 18:29:41 +02:00
Gregory Hainaut
086dfc8a14 gsdx sw: use acquire/release semantics for atomic operation
* Avoid the generation of memory barrier (mfence)
2016-07-14 18:29:41 +02:00
Gregory Hainaut
567976e822 MTVU: port vuCycles to std::atomic
V2: use relaxed order as the variable doesn't carry load/store dependency
It is only used as a counter for the speed hack
2016-07-14 18:29:41 +02:00
Gregory Hainaut
3f0655c821 MTVU: port write pointer to atomic and optimize atomic access
Write pointer can be relaxed-read from the EE thread
Read pointer can be relaxed-read from the VU thread

Warning: AtomicExchange calls were replaced by release-store
However AtomicExchange generates a memory barrier (at least on linux)
So either it is useless and it will be faster, or it will explode ;)
2016-07-14 18:29:41 +02:00
Gregory Hainaut
ca46921796 MTVU: use acquire/release semantics for atomic operation
* Avoid the generation of memory barrier (mfence)
* Based on the fact that it used to work on previous code without any
  barrier

v2:
* keep basic code in reset path
* use relaxed access for isBusy. The variable doesn't carry load/store
  dependency but is instead an hint to optimize semaphore post
2016-07-14 18:29:40 +02:00
Gregory Hainaut
3b4c357aaa MTGS: avoid a potential very rare deadlock 2016-07-14 18:29:40 +02:00
Gregory Hainaut
4cdf05efac MTGS: use private member for RingBufferLock
Easier to understand the purpose of the 2nd lock
2016-07-14 18:29:40 +02:00
Gregory Hainaut
5913ff1bd8 MTGS: port read/write pointer to full atomic + optimize atomic access
Read pointer is only written by the MTGS thread so it can be relaxed-read
by the MTGS thread

Write pointer is only written by the EE thread so it can be relaxed-read
by the EE thread

Remove volatile stuff
2016-07-14 18:29:40 +02:00
Gregory Hainaut
6fb7beb58a MTGS: use acquire/release semantics for atomic operation
* Avoid the generation of memory barrier (mfence)
* Based on the fact that it used to work on previous code without any
  barrier

v2:
* keep "slow" and safe atomic on reset path
* use relaxed atomic for m_RingBufferIsBusy
The signal doesn't carry dependency with others load/store. Instead it is used
as an hint to awake the semaphore
As a side, there is a potential thread bug

T1 do
* wait sema
* busy = true;
* while (!queue.empty) do work...
* busy = false;
* go back to wait sema

T2 do
* post sema even if busy is false

If T1 stop after the while queue but before the busy, T2 won't post the
event. When T1 will wake up, it will block on the semaphore
2016-07-14 18:29:40 +02:00
Gregory Hainaut
d855bc5ca8 gsdx sw: improve exit condition of SW extra thread
Use a relaxed atomic to read the exit variable in the hot path

Wait that exit is deasserted in the destructor, so we are sure the
thread will "soon" return
2016-07-14 18:29:22 +02:00
Gregory Hainaut
abc9f7d096 gsdx tc: log unsupported LookupDepthSource 2016-07-14 18:29:22 +02:00
František Zatloukal
2c74ff1e54 Degrade GTK3 Fatal Error to Warning 2016-07-13 02:08:14 +02:00
ramapcsx2
093704f073 Merge pull request #1456 from NZJenkins/master
Zero out the skip bp
2016-07-12 12:15:09 +02:00
NZJenkins
b491f5cdc5 Zero out the skip bp
Fixes #1453
2016-07-12 17:51:56 +12:00
Gregory Hainaut
e642bbc426 gsdx sw: add extrathreads_height to control the quantity of pixels processed by a thread
Value could range from 1 to 9. Default is 4 and it is potentially the
best option.  Feel free to test some values on your system, behavior
might depends on the core number and thread number

Value is exponential so 4 is 2 times more pixels than 3.

Small value increased thread overhead, big value increase wait/sync latency
2016-07-10 17:48:10 +02:00
Gregory Hainaut
91eccb7bab gsdx sw: increase the size of the ring buffer 256 => 65536
memory overhead by thead is only 256KB

However it will reduce the probability to block the push thread to nearly 0

I tested a couple of dumps and only manage 4000 element with 1 extrathread.
2016-07-10 10:49:06 +02:00
Gregory Hainaut
85fb55a0e1 gsdx ogl: memory management take 3
Add a factor 2 on the VRAM to get the quantity of available memory for the textures.
The driver is allowed to put some textures in RAM. Of course it is bad for performance
but it won't crash.

Due to the 4GB by process limit, I keep a (reasonable) maximum of 3.8GB.

In order to avoid a crash when memory is too low an exception will be risen
with no guarantee on rendering and big performance impact. In this situation
you ought to reduce upscaling/disable large framebuffer.
2016-07-10 10:23:23 +02:00
Akash
2ed67f6d65 EE-SYSCALL: Move messages back to dev/verbose level
These messages are not needed anymore as we'll get the video mode
information from the console messages on Counters.
2016-07-09 21:50:41 +05:30
Akash
78bf5ad88e PCSX2-Counters: Move VideoMode init code from _gsSMODEwrite to SYSCALL
* Moving the code to SYSCALL enables us to detect all the video modes properly.
* Added proper detection of VESA,HDTV,BIOS video modes.
2016-07-09 21:50:38 +05:30
Akash
e7d4bc4506 PCSX2-Counters: Remove default video mode variable
* Fixes a bug where NTSC VideoMode was automatically used when videomode is uninitialized. the bug was only temporary till the SMODE register was written.
2016-07-09 21:50:37 +05:30
Akash
a1fdf1e625 PCSX2-Counters: Rename "GS_RegionMode" to "GS_VideoMode"
Technically there's no term called "RegionMode" and the values obtained through the SMODE1 register is actually used for identifying the video mode of the game not any region modes.

* Convert "GS_VideoMode" into an enum class
2016-07-09 21:50:28 +05:30
Gregory Hainaut
a37cd40ce3 gsdx ogl: only print an error when VRAM is low
Until a better solution is found or people buy better GPU :)
2016-07-09 11:43:28 +02:00
Gregory Hainaut
a2086ed458 gsdx profiler: drop latest frame time
Value is out of the chart. I'm not even sure it is a real frame so let's just remove it.
2016-07-09 10:03:21 +02:00
Gregory Hainaut
82d83ca579 gsdx: dull driver
Hopefully futur low-end GPU will get 4GB of VRAM
2016-07-08 21:53:42 +02:00
Gregory Hainaut
3f03f7333c gsdx: improve builtin profiler
* Does the first vsync (start counter) after the sleep
* Dump data after the rendering, avoid to count extra destructor,sleep time
* Dump data into a basic csv file (if people want nice graph)
2016-07-08 21:47:53 +02:00
Gregory Hainaut
8b3e04d1b6 onepad: fix keyboard on 2nd pad
There is only a single event queue, so you need to detect the pad based
on the configuration

Mouse/Wiimote is limited to first pad

Related to issue #1441
2016-07-08 19:07:42 +02:00
Gregory Hainaut
eefe3e8d4f gsdx ogl: reserve 200MB of the VRAM for various gl buffers (IBO/VBO/PBO/UBO) 2016-07-08 09:43:47 +02:00
Gregory Hainaut
df4645a84a gsdx ogl: Don't use NV extension on AMD
potentially the NV extension is wrongly used but can't test it with the free driver
2016-07-07 23:48:56 +02:00
Gregory Hainaut
d6e447a89c gsdx: fix for old gl header release (build bot) 2016-07-07 22:23:20 +02:00
Gregory Hainaut
d8050634f6 gsdx ogl: plug GL_NVX_gpu_memory_info and GL_ATI_meminfo
to query available memory on the GPU

Requirement
* dedicated GPU (ofc!)
* proprietary driver. Free driver supports r600, radeonsi
2016-07-07 22:05:15 +02:00
Gregory Hainaut
7e2b3da928 gsdx ogl: monitor global GPU memory texture usage
So far there is a hardcoded limit at ~3.7GB

In the future, the limit will be reduced for low-end GPU.
2016-07-07 22:05:15 +02:00
Gregory Hainaut
f450056626 gsdx: fix initialization list order
In file included from GSRenderer.cpp:23:0:
GSRenderer.h: In constructor ‘GSRenderer::GSRenderer()’:
GSRenderer.h:58:12: warning: ‘GSRenderer::m_dev’ will be initialized after [-Wreorder]
  GSDevice* m_dev;
            ^
GSRenderer.h:52:13: warning:   ‘GSVector2i GSRenderer::m_real_size’ [-Wreorder]
  GSVector2i m_real_size;
             ^
GSRenderer.cpp:32:1: warning:   when initialized here [-Wreorder]
2016-07-07 22:05:15 +02:00
Gregory Hainaut
a735e2b58f Merge pull request #1287 from mogaika/debug_window_improve
Debugger features
2016-07-07 19:59:33 +02:00
Gregory Hainaut
29c97a9bf2 gsdx ogl: only enable accumulation hack in HDR algo
Goal is to reduce shader permutations and improve perf when sw blending is disabled
2016-07-07 19:56:23 +02:00
Gregory Hainaut
16c2baa0df gsdx-ogl: don't hardcode the accumulation blend trick
Perf impact is bigger than expected
2016-07-07 19:56:23 +02:00
ramapcsx2
6b6821d0c6 Merge pull request #1433 from FlatOutPS2/master
Merge Circuit: Enhance offset detection of output circuit
2016-07-06 12:15:08 +02:00
Akash
309a8283b2 GSDX-TextureCache: Don't allow RT size below default value
Fixes upscaling issues on Burnout dominator where setting custom resolution of 640x448 looks way worse than the native resolution.
2016-07-05 19:15:23 +05:30
Catarax
31a74abebe GameDB: Kessen 2 refraction patch (NTSC-J/NTSC-K) (#1447)
Apply the refraction patch for Kessen 2 NTSC-J/NTSC-K releases.
2016-07-05 09:13:17 +01:00
ramapcsx2
5c614bceba Merge pull request #1446 from Catarax/master
GameDB: Syphon Filter (The Omega Strain) NTSC-K fixes
2016-07-04 14:45:20 +02:00
Akash
6085da91e2 GSDX-Dialog: Clamp custom res and sw threads values to input range (#1443)
Fixes crash on custom resolution when users select a value below 256 or above 8192
2016-07-03 22:04:16 +01:00
Vladimir Jigulin
7e91eb6616 debugger: some user-friendly improves in ui
Grouping bytes in debugger memory window, following pointers and history
Goto in register view
Printing strings in pointer registers
Memory view can be resized correctly by ctrl+wheel
Improvement in function 5900DebugInterface::isValidAddress
2016-07-03 22:01:09 +03:00
Catarax
8aa70f05ad GameIni: Syphon Filter (The Omega Strain) NTSC-K fixes
NTSC-U fixes of Syphon Filter (the Omega Strain) applied to the NTSC-K release.
2016-07-03 20:14:18 +02:00
Gregory Hainaut
a1a5f470f7 gsdx-ogl: fix builtin profiler frame counting 2016-07-03 15:54:58 +02:00
Gregory Hainaut
cc62e8c785 Merge pull request #1439 from ssakash/Cleanup_Warnings
PCSX2: Clean up warnings on MSVC
2016-07-03 15:45:39 +02:00
Akash
d69f2b6cc5 cdvdGigaherz: Clean up warnings on MSVC
SectorConverters: convert variables to u8.
2016-07-02 23:38:02 +05:30
Akash
1bcb5e0cc1 dev9ghzdrk: Clean up warnings on MSVC
pcap_io: cast ``pcap_io_running`` to bool.
2016-07-02 23:38:01 +05:30
Akash
264eb52d61 USBqemu : Clean up warnings on MSVC
usb-kbd: Remove unused variable.
usb-ohci: Add proper casts for the variables.
vl: Add proper casts for the variables.
USB: Add proper casts for the variables.
2016-07-02 23:37:37 +05:30
Gregory Hainaut
11eeeb6ab1 gsdx ogl: be sure sw blending is enabled in sw colclip
Hit the assertion on superman
2016-07-02 17:19:41 +02:00
Akash
4cfb2b248e GSDX: Clean up warnings on MSVC
GLLoader: cast passed parameters to required type.
GSDeviceOGL: cast variables to required type and silence warnings.
GSRendererOGL: cast variables to required type and silence warnings.
2016-06-30 16:50:10 +05:30
Akash
72661e7c16 PCSX2-Core: Clean up some warnings on MSVC
x86emitter : Convert variable type from u8 to bool.
recVTLB: Cast "sign" to bool to prevent a warning.
R5900OpcodeImpl: Cast all the values in array to u64 instead of s64.
2016-06-30 16:49:18 +05:30
Gregory Hainaut
a065a1d918 gsdx ogl: don't use GL_ARB_clear_texture for the depth buffer
It creates some slowdowns for unknown reason. My best hypothesis is
that stencil will be cleared too which is slow.

Let's keep the code for the future when stencil will be dropped.

Fix #1420
2016-06-30 09:40:07 +02:00
FlatOutPS2
1e3e343e43 Merge Circuit: Enhance offset detection of output circuit
If baseline and display rectangle offsets differ by small values then consider the status of frame memory offsets, prevents blurring on Tenchu: Fatal Shadows, Worms 3D, ProStroke Golf, Vexx
2016-06-29 22:35:53 +02:00
Akash
a5671f016a GSDX-TextureCache: Add proper scaling for custom resolution
* Improve frame buffer height management on custom resolution. Width seems to be fine with the same size as scaled image output.
* Prevent offset issues on Persona 3 based on the data from merge circuit.

Note: Fixes custom resolution upscaling on ICO 50Hz/60Hz mode when large frame buffer is enabled. previously 60Hz mode only displayed half of the screen and 50Hz mode only worked due to the scissor hack.
2016-06-30 00:35:10 +05:30
Jonathan Li
79d019b5bb utilities: Don't use TLS buffers in FastFormatString classes (#1430)
The TLS buffers used by the FastFormatUnicode and FastFormatAscii
classes seem to be responsible for PCSX2 not terminating properly on
Windows under certain conditions (using MTVU before commit
1111e03901, using CDVDgigaherz without a
disc, possibly other conditions).

When PCSX2 shut downs and the FastFormatBuffers are being cleaned up,
the call to pthread_key_delete() would end up calling
WaitForSingleObject(e, INFINITE) and waiting indefinitely for an event
to trigger. It never does get triggered (for reasons unknown) and
therefore PCSX2 doesn't terminate properly.

Remove the usage of TLS buffers in the FastFormatString classes - it
fixes the termination issue on Windows and doesn't seem to have much
effect on performance.
2016-06-29 13:13:51 +01:00
Gregory Hainaut
1f4f55bcc9 gsdx: tentative fix for 64 bits buildl 2016-06-26 18:27:50 +02:00
Gregory Hainaut
4ec941440d gsdx replay: use the new profiler data 2016-06-26 17:53:22 +02:00
Gregory Hainaut
d7c1faf563 gsdx ogl: add GPU timers to measure time between 2 vsync
So far only basic stuff (min/mean/max frame rendering time)
2016-06-26 15:34:36 +02:00
Akash
ce20544a4f GSDX-TextureCache: Remove hacks which caused scaling issues
* Ignore Frame memory offsets for calculating dimensions value of display rectangle.
* Remove hack which limited scaling size based on the scissor value.

Note: With the following commit, SilentHill 2 now properly outputs the desired resolution by the users on custom resolution. Previously if we set 1024 x 1024 , it'll output a lower height value which was caused by the hack removed on this commit.
2016-06-26 12:14:38 +05:30
Gregory Hainaut
79587215bb gsdx ogl: add the option force_texture_clear for test purpose
Might be completely useless.

1 => always clear framebuffers and textures to black (aka 0)
2 => always clear framebuffers and textures to red
2016-06-24 18:41:55 +02:00
Pseudonym
36dd50005a Changed the M[FT]P[CS] instruction decoding logic to match results from this test:
https://github.com/unknownbrackets/ps2autotests/blob/master/tests/cpu/ee_cop0/performance.cpp
2016-06-23 20:57:43 +01:00
Catarax
1a085788de GameIni: The Lord of the Rings: The Two Towers White Shiny Weapons Fix (#1429)
Force VU round mode set to Extra+preserve sign in The Lord of the Rings: The Two Towers : Shiny weapons will no more show as white texture in-game. For all PAL/NTSC/NTSC-J releases of the game. Fix the name of a japanese release and add the chinese release of the game to the database.
2016-06-22 09:50:30 +01:00
FlatOutPS2
896730ceda LilyPad: Fix regression in configure binding (#1426)
Fixes regression introduced by the pop'n music controller support PR.

When modifying the axis direction combo box in the Configure Binding
group, the modified binding's info would get deleted and replaced by the
next binding's info. This results in incorrect info being passed to
BindCommand().

This commit reverts the incorrect code so the binding info is backed up
before deletion takes place, therefore ensuring the correct info is
passed to BindCommand().
2016-06-21 22:54:52 +01:00
ramapcsx2
dce67351f9 Merge pull request #1416 from ssakash/Real_IR
GSDX: Add proper detection of internal resolution
2016-06-21 18:05:46 +02:00
Jonathan Li
185012b2b7 gui: Use newer wxWidgets event type names
Also add a comment about how the wxEVT_LIST_ITEM_DESELECTED bug only
affects Windows.
2016-06-20 00:00:26 +01:00
Jonathan Li
b8ac54052c gui: Use Bind instead of Connect for everything else 2016-06-19 23:25:09 +01:00
Jonathan Li
1c398c2b77 gui: Use Bind instead of Connect for menus
Also rearrange the order to (mostly) reflect menu ordering and remove
some bindings to non-existent menu items.
2016-06-19 23:14:55 +01:00
Gregory Hainaut
36e82abd12 Merge pull request #1411 from ssakash/PCRTC
Merge Circuit: Improve offset detection of output circuit
2016-06-19 13:45:51 +02:00
Gregory Hainaut
41c522104e Merge pull request #1414 from PCSX2/gsdx-single-pbo
gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
2016-06-19 13:40:38 +02:00
Akash
e05e7bee82 GSDX: Add proper detection of internal resolution 2016-06-19 17:10:03 +05:30
FlatOutPS2
ce8b9c153c LilyPad: Make D-pad buttons independent of each other (#1412)
Fixes games that require dance pad support (Dance Dance
revolution series).
2016-06-19 12:25:00 +01:00
Gregory Hainaut
4318b83414 cmake: lilypad requires wx library 2016-06-19 09:49:49 +02:00
Gregory Hainaut
113c78b67e gsdx ogl: replace eight 8MB PBO with a single fat 64MB PBO
It ought to be the same in performance but code will be easier this way

v2: print the sync status
v3: use a performance print so it doesn't spam the console
2016-06-18 14:59:19 +02:00
Jonathan Li
eddabf9dbc spu2-x: Remove unused DirectSound 5.1 module
It was copied over from SPU2ghz but never actually used.
2016-06-18 00:01:32 +01:00
Jonathan Li
0ecee3deda cleanup: Remove unnecessary rebuild files
They're used for converting the image files to header files, but they're
outdated and have been unused for quite a while.
2016-06-17 23:56:31 +01:00
Akash
ab1ab7b6f1 GSDX: Remove redundant "Null" string from GS Frame title bar (#1409)
* GSDX: Remove redundant "Null" string

* GSDX: Convert "GetConfigI" into "GetConfigB"
2016-06-17 14:25:09 +01:00
Jonathan Li
2436480d9b gui: Use Bind instead of Connect for panels and dialogs 2016-06-17 00:03:59 +01:00
Jonathan Li
3904c67e6e utilities: Use Bind instead of Connect 2016-06-17 00:03:58 +01:00
Jonathan Li
c10728319b utilities: Use Bind compatible event declarations/definitions 2016-06-16 23:49:34 +01:00
Jonathan Li
7ac47676e2 pcsx2: Use Bind compatible event declarations/definitions
Also remove some unused event types.
2016-06-16 21:37:45 +01:00
Jonathan Li
aee0d4c0c8 gsframe: Use Bind instead of Connect 2016-06-16 21:37:45 +01:00
Jonathan Li
2112e38886 gsframe: Use wx enum for left mouse button 2016-06-16 21:37:45 +01:00
Akash
4a0656e903 Merge Circuit: Improve offset detection of output circuit
* Fixes blurring / wrong resolution output on FFXII
2016-06-16 13:22:53 +05:30
Catarax
cf48e9d640 Guitar Hero III + Aerosmith : Crash & Graphics Fix (#1407)
Force Round Mode to Nearest on Guitar Hero 3 & Aerosmith version by default : Fix the random crash on PCSX2 while playing and fix all graphics issues in Software Mode. 
For all PAL/NTSC/NTSC-J versions.
2016-06-14 17:32:46 +01:00
Jonathan Li
5aa3d71eaf Merge pull request #1398 from FlatOutPS2/PS1
LilyPad PS1 analog mode fix and UI improvement
2016-06-13 22:39:16 +01:00
Jonathan Li
52a88a7bdf Merge pull request #1384 from ssakash/gsdx-default-renderer
gsdx:windows: Automatically determine best renderer
gsdx:windows: Only enable "Disable Depth Emulation" checkbox on OpenGL
2016-06-13 22:04:46 +01:00
Gregory Hainaut
08579021c5 gsdx ogl: 1 isn't used for WMT/WMS in shader
Stick it to 0 to avoid useless shader toggling
2016-06-11 13:35:32 +02:00
Gregory Hainaut
3234c8241b gsdx ogl: massively extend glsl self test
* Support Mesa Nouveau IR (free driver for Nvidia's GPU)
  => Print intermediate representation + final shader
  => Dump GPR usage
* Move dumped shader in /tmp/GSdx_Shader/<sub_dir>
  =>  Avoid the landing of 3 thousands of files in $PWD ^^
* Use function instead of macro
2016-06-11 13:34:37 +02:00
Gregory Hainaut
1c8de02c8d gsdx ogl: trace shader permutation
Too much permutation is bad for driver performances
2016-06-11 13:34:23 +02:00
Gregory Hainaut
5ffc911a69 gsdx: avoid crash in DX debug build 2016-06-11 01:13:20 +02:00
Gregory Hainaut
bbf046033c i10n: update precompiled files 2016-06-11 01:13:20 +02:00
Akash
c13fd1923b GameDB: Add Full Clamping for Toy Golf Extreme (#1399)
GameDB: Add clamping for Toy Gold Extreme to stop falling through tables. Fixes #1397
2016-06-10 15:46:08 +01:00
FlatOutPS2
d736dc1a0a LilyPad PS1 analog mode fix
Fixes issue where "Use analog mode if possible - PS1 only" would enable
analog mode when playing games that don't support it.
2016-06-10 11:30:30 +02:00
FlatOutPS2
60ece1ee72 LilyPad UI improvement
The layout of the buttons is improved to more closely resemble a modern analog controller/DualShock configuration, and the Device column of the list view has been reduced slighty so by default the horizontal scroll bar isn't visible.
2016-06-10 11:30:18 +02:00
Gregory Hainaut
8c4d8cfdca glsl: avoid an unset warning 2016-06-09 18:27:58 +02:00
Gregory Hainaut
df45c99f96 gsdx ogl: prefix member in GSUniform object with m_ 2016-06-09 18:27:58 +02:00
Gregory Hainaut
fca2661e05 gsdx ogl: add a pretty name to various opengl opengl 2016-06-09 18:27:58 +02:00
Gregory Hainaut
ff3d9bd373 gsdx ogl: add function pointer to name object
It could be nice to ease debug
2016-06-09 18:27:58 +02:00
Gregory Hainaut
415ce93425 gsdx ogl: rename the confusing function EmulateGS to Lines2Sprites 2016-06-09 18:27:58 +02:00
Gregory Hainaut
61075febae gsdx ogl: move selector as state variables
Will be easier to move code around if required in the future
2016-06-09 18:27:58 +02:00
Gregory Hainaut
1132230674 gsdx ogl: create m_require_one_barrier/m_require_full_barrier state variable
hopefully code will be more readable
2016-06-09 18:27:58 +02:00
Gregory Hainaut
7ece9b823d gsdx ogl: move texture management into a separate function 2016-06-09 18:27:57 +02:00
Akash
399ad3f450 GSDX: Gray out "Disable Depth Emulation" for renderers other than OpenGL 2016-06-09 15:27:18 +05:30
Akash
fdc10e13ec GSDX: Better detection of default renderer
* Better detection of default renderer based on the vendor ID ( Nvidia, AMD , Intel)
* GSUtil: Add a dedicated function for identifying best renderer
2016-06-09 15:27:11 +05:30
ramapcsx2
f5675fc0fe Merge pull request #1394 from PCSX2/revert-1368-Counters
Revert "PCSX2-Counters: Some Changes to Video mode counter stuffs"
Problem: New timings for HDTV modes make games run too slow. VSyncInfoCalc() needs to be checked first.
2016-06-09 00:57:32 +02:00
ramapcsx2
ec07571069 Revert "PCSX2-Counters: Some Changes to Video mode counter stuffs" 2016-06-09 00:44:14 +02:00
ramapcsx2
d482c5de91 Merge pull request #1368 from PCSX2-Alpha/Counters
PCSX2-Counters: Some Changes to Video mode counter stuffs / introduce proper names and differentiate between official PS2 video modes
2016-06-09 00:14:25 +02:00
FlatOutPS2
f1ba9c9d6a PCSX2-WX: MainFrame keyboard navigation improvement (#1388)
Adding shortcuts to all the menu options, that only some of the options
in the Config tab already had.

Also update translations so menus are still localised (well, mostly).
2016-06-08 21:48:16 +01:00
Jonathan Li
e6e8e2e4d5 gsdx-fx: Fix shader when using OpenGL 2016-06-07 00:14:48 +01:00
Jonathan Li
9e9505a732 linux: Fix hotswapping CDVD message truncation
Iso, Plugin, and NoDisc were truncated to I, P, and N. Fix the issue.
2016-06-06 23:35:05 +01:00
refractionpcsx2
c530858df3 GSdx: Move "isNative" check to DX11 context creation. Resolves speed regression in games that constantly change the viewport size. 2016-06-06 20:45:30 +01:00
Jonathan Li
7c205d7a1e windows: Don't use __declspec(dllexport) for plugin exports
Using __declspec(dllexport) causes duplicate export warnings to be
generated when compiling 64-bit builds. Name mangling also occurs on
functions that are exported this way, so it doesn't actually work with
the plugin system, which uses unmangled names.

The module definition file exports the functions without name mangling
and is sufficient on its own.
2016-06-05 22:57:42 +01:00
Jonathan Li
292c6810ad lilypad: Fix missing call to HidD_GetHidGuid
I accidentally removed it in a previous commit. It probably didn't
affect anyone though (you'd need to be using a DS3 via libusb, most
people will be using other methods).
2016-06-05 20:04:17 +01:00
Gregory Hainaut
2b00447a43 glsl: optimize the number of active constant buffer
Increase the performance on the free driver (Nouveau)

Currently the driver validates all UBO when only 1 is updated. It
is clearly a bad idea to put all UBO in a single common headers.
2016-06-05 16:45:11 +02:00
Jonathan Li
e6bf77d148 Merge pull request #1253 from turtleli/spu2x-xaudio
spu2-x:windows:Use XAudio2.8+ for Windows 8 and later
2016-06-05 00:28:26 +01:00
Jonathan Li
c7940856ce windows: Remove unneeded library dependencies
Some are unnecessary since they're already taken care of by project
references, while others are duplicates or unused.
2016-06-04 22:55:48 +01:00
Jonathan Li
8dd16b1fdb zerospu2: Remove unneeded preprocessor macros and properties 2016-06-04 21:35:55 +01:00
Jonathan Li
471722482e gsdx-legacy: Remove baseclasses
Use the baseclasses project in unfree instead.
2016-06-04 21:22:24 +01:00
Akash
f9b56bc354 EE-SYSCALL: Move messages back to dev/verbose level
Not needed anymore as we get another message from Counters for each
change in video mode. (refer previous commit)
2016-06-04 22:10:36 +05:30
Akash
1a41053c76 PCSX2-Counters: Improved video mode detection
* The detected values using the SMODE registers were for the video modes and not the region of the game, changed the variable naming to video modes to prevent any confusions.
* Fix a bug where 1080I was reported as progressive
* Convert GS_VideMode into an enum class
* Move VideoMode init code from _gsSMODEwrite to SYSCALL
* PCSX2 will now correctly report whether the video mode is NTSC/PAL/VESA/480p/576p/720p/1080i/1080p
2016-06-04 22:10:27 +05:30
refractionpcsx2
3b2b6a20aa eeCache: Flush cache entries on DXLTG
-SYNC.L should be called before this command forcing the cache to writeback to memory, but that would be slow to do every time, so we will do it on this command.
2016-06-04 12:57:14 +01:00
Gregory Hainaut
4768f912b8 gsdx linux: add vsync support for free driver 2016-06-04 13:17:59 +02:00
prafullpcsx2
8418d54ac7 Minor EE Cache changes
This seems to help games that require EE Cache. Please test Ice Age 2 and Evolution Snowboarding.
2016-06-03 12:00:55 +05:30
Gregory Hainaut
2b2412ca20 gsdx hw: disable OI_GsMemClear when framebuffer writes are masked. 2016-06-01 22:34:14 +02:00
Gregory Hainaut
7202cac7d0 gsdx ogl: remove the dual source blending workaround 2016-06-01 21:00:29 +02:00
Gregory Hainaut
08a8bfa76c gsdx ogl: plug new program compilation for bad driver 2016-06-01 21:00:29 +02:00
Gregory Hainaut
17988fc7de gsdx ogl: add code to compile a single shader 2016-06-01 21:00:29 +02:00
Gregory Hainaut
405f312fe8 gsdx ogl: format GSShader code
Move the Geometry Shader to the call of the function
2016-06-01 21:00:29 +02:00
Jonathan Li
5672d2b39e ci: Remove clang from Travis CI builds
llvm's apt repo is currently switched off so the builds are erroring
out.

[skip ci]
2016-06-01 18:05:00 +01:00
Gregory Hainaut
538bb418ce gsdx ogl: revert the removal of single shader compilation function pointer
(It doesn't mean I will drop SSO but that I will do some tests one day)
2016-06-01 09:29:56 +02:00
Gregory Hainaut
5d49a6b685 gsdx ogl: replace 4 VS shader variation by an AND mask
Perf will be roughly the same. However there is a single VS for all
the HW emulation.
2016-06-01 09:29:56 +02:00
Gregory Hainaut
959abe64f8 gsdx ogl: implement wildhack on the CPU
Speed impact is likely small and the plan is only to keep a single Vertex Shader
2016-06-01 09:29:56 +02:00
Gregory Hainaut
3d192b7f8d gsdx ogl: separate channel code into a separate function 2016-06-01 09:29:56 +02:00
pal1000
c6e1753803 gitignore: Add Visual Studio 2015 databases (#1380)
[skip ci]
2016-05-31 19:14:42 +01:00
Gregory Hainaut
6d2196125d gsdx: fix TVshader case option 2016-05-31 19:35:35 +02:00
Gregory Hainaut
564bf8a089 gsdx ogl: terminator 3 supports sampling from the depth 2016-05-30 19:39:52 +02:00
Gregory Hainaut
43a1c48f75 gsdx option: add missing default and fix case 2016-05-30 18:23:22 +02:00
Jonathan Li
c2b31c0987 Merge pull request #1377 from NZJenkins/master
GetBreakPointCondition handle temp breakpoints
2016-05-30 15:12:36 +01:00
NZJenkins
6bc02cbb45 GetBreakPointCondition handle temp breakpoints
Fixes #1374
temp bp were not previously handled
2016-05-30 16:16:32 +12:00
Gregory Hainaut
9c8b5e37a4 gsdx ogl: blacklist AMD 2015 drivers 2016-05-29 18:21:12 +02:00
Gregory Hainaut
12512f767b gsdx linux gui: disable the hack panel when user hacks are disabled
Move the user hack option to the main panel (Box with a single option doesn't look nice)

Hopefully it will be less confusing for linux users.
2016-05-29 18:09:22 +02:00
Gregory Hainaut
38a511e3e1 gsdx linux: some capture options are cross platform 2016-05-29 17:38:40 +02:00
Jonathan Li
e7745d13f4 spu2-x:windows: Add XAudio2 2.8 backend
On Windows Vista and 7, the XAudio2 2.7 backend will still be used.
Windows 8, 8.1 and 10 users will use XAudio2 2.8/2.9 (depending on OS).
2016-05-29 14:50:12 +01:00
Jonathan Li
5344c3f121 spu2-x: Rename SndOut_XAudio2.cpp to SndOut_XAudio2_7.cpp 2016-05-29 14:50:12 +01:00
Jonathan Li
de56e30bba spu2-x:windows:xaudio: Remove ifdefs and rename class/vars
This reverts commit 8a61c7d336.

The plan is to support both XAudio2 2.7 and 2.8+. This file will only be
used for 2.7, so let's remove the ifdefs and rename the class and vars.
2016-05-29 14:50:12 +01:00
Jonathan Li
c8162df936 spu2-x: Only XAudio2 2.7 requires the DXSDK
Use the newer Windows SDK for everything else.
2016-05-29 14:50:12 +01:00
Jonathan Li
5ea80b86db spu2-x:windows: Remove VersionHelpers workaround
We've moved to the non-XP toolkit - it can be removed.
2016-05-29 14:50:12 +01:00
Jonathan Li
8b74c108a4 Revert "gsdx:windows: Fix Windows 7 compile"
This reverts commit 7736c90457.

It wasn't actually a Windows 7 compile fix, but a bad build environment
workaround.
2016-05-29 14:33:58 +01:00
refractionpcsx2
67288b4735 A wild bracket has appeared! I choose you, delete button! 2016-05-29 14:13:45 +01:00
refractionpcsx2
bbecc3d0c2 microVU: Only spam "Reading VU1 Regs" warning in Dev mode and only when MTVU is enabled. It's useless when it isn't. 2016-05-29 13:23:25 +01:00
Jonathan Li
b20433c0be windows: Remove user.props references from all projects
find . -name *.vcxproj -exec sed -i -e '/user.props/d' {} \;

Microsoft recommends against using .user files. From
https://msdn.microsoft.com/en-us/library/669zx6zc.aspx :
"The best practice is to delete the reference to them in Property
Manager to ensure that your projects operate independently of any
per-user, per-computer settings. This is important to ensure correct
behaviour in a SCC (source code control) environment."

If you cannot compile SPU2-X after this commit (since that still relies
on the old DirectX SDK), you'll need to fix your build environment.
2016-05-29 12:21:52 +01:00
Gregory Hainaut
fb26254fbb gsdx ogl: implement a more generic HLE shader for terminator 3
Hopefully without regression for others games
2016-05-29 10:13:43 +02:00
Gregory Hainaut
f7ddd488e1 gsdx ogl: Extend uniform buffer with channel parameter
Instead to use the standard ps ubo which is used every draw call.
I reused a barely used buffer to reduce the extra cost of the upload
2016-05-29 10:13:43 +02:00
Gregory Hainaut
6f19d928f6 gsdx ogl: use the new uniform cache upload method 2016-05-29 10:13:43 +02:00
Gregory Hainaut
fa15d7fd26 gsdx ogl: generic code to cache uniform buffer
It will allow to skip a buffer transfer if the new content is the same
2016-05-29 10:13:43 +02:00
Jonathan Li
be7af60ab5 lilypad: Use Windows SDK headers for HID functions
Has been available since the switch to the Windows 8.1 SDK.
2016-05-28 23:30:28 +01:00
Jonathan Li
c6ed5ee9c6 windows: Make build work with non-English parent directory
Not a recommendation to do so. Alsorecommendnottousespaceseither.
2016-05-28 23:27:34 +01:00
Jonathan Li
36cd1ae3cc windows: Remove parameter from prebuild command
It's unused. Also convert to using SolutionDir instead of Svnwhatever.
2016-05-28 23:25:08 +01:00
Gregory Hainaut
58f04975e1 oups fix link 2016-05-28 18:49:49 +02:00
Gregory Hainaut
179681ef18 gsdx ogl: enable AMD driver blending workaround only on latest legacy driver
Legacy GPU:
Older driver will be broken.

Still supported GPU:
Please upgrade to the latest AMD driver 16.5.2 or 16.5.3 (and prey that future driver will still work)
2016-05-28 18:43:55 +02:00
Gregory Hainaut
7682bf9b49 Merge pull request #1370 from PCSX2/gsdx-default-option
Gsdx default option
2016-05-28 18:28:36 +02:00
Gregory Hainaut
a648e2db70 gsdx: switch to dx10/11 as default on Windows
1/ Detecting Dx level requires a DX context.
2/ Dx9 GPU market is 1-2% (I'm not even sure they can run latest windows 10)
2016-05-28 10:07:27 +02:00
Gregory Hainaut
c61e09e36a fix left over default 2016-05-28 10:07:27 +02:00
Gregory Hainaut
453ac88dce gsdx option: use CaptureWidth/CaptureHeight on linux too 2016-05-28 10:07:27 +02:00
Gregory Hainaut
a9c18c57e4 gsdx option: use the new GetConfig* function
v2:
add PSX stuff
ssakash review
2016-05-28 10:07:27 +02:00
Gregory Hainaut
03a6f2093e gsdx option: add multiple GetConfig to avoid overload issue 2016-05-28 10:07:27 +02:00
Gregory Hainaut
05818d70f4 gsdx option: centralize default configuration to a single file
Potential issue
* miss a default value
* Renderer is DX9 again on windows
* Case issue
* Same default for all code paths
* overload of GetConfig

v2: separate specific OS option
2016-05-28 10:07:26 +02:00
Jonathan Li
f888aa61fb lilypad: Remove local volume control
Windows Vista onwards provides application specific volume controls, and
the local volume feature only interferes with it. Any volume adjusting
stuff probably belongs in SPU2-X.

Closes #629
2016-05-27 23:55:45 +01:00
Jonathan Li
2aeceafb36 lilypad:windows: Remove keyboard hooks code
The code wasn't used, and generally low level hooks should be avoided
since they affect the responsiveness of all applications. On Windows 7
and later, the hooks may also be silently removed if they timeout, which
could be possible under heavy load.
2016-05-27 23:40:31 +01:00
Jonathan Li
4f24d22a68 lilypad: Disable close hacks when loaded by PCSX2
The close hacks don't work with PCSX2 - the WM_CLOSE message can't
actually be triggered for the rendering window. The hacks were also
designed as a workaround for some PSX emulator close window bugs, which
don't affect us.
2016-05-27 00:36:11 +01:00
Gregory Hainaut
d33bdc7da1 cmake: drop the now useless -no-integrated-as option
close #303
2016-05-26 19:40:02 +02:00
Gregory Hainaut
9150747df1 Merge pull request #1369 from PCSX2-Alpha/GSDX_PSX
GSDX: Move PSX code to an isolated path
2016-05-26 18:45:41 +02:00
Akash
2409817556 GSDX: Move PSX code to an isolated path 2016-05-26 19:04:17 +05:30
Jonathan Li
06dba2d258 Merge pull request #1372 from PCSX2-Alpha/Windows_GUI
GSDX-Windows: Add "Large Framebuffer" option
2016-05-26 08:57:33 +01:00
Akash
9ae6c2673a GSDX-Windows: Add "Large Framebuffer" option 2016-05-26 11:38:24 +05:30
Jonathan Li
352b61c741 gsdx: Allow normal assert to be used 2016-05-26 00:11:52 +01:00
Jonathan Li
db81925c4b Merge pull request #1335 from turtleli/freebsd
Support FreeBSD
2016-05-25 18:55:51 +01:00
Gregory Hainaut
60e0f3b9b5 Merge pull request #1234 from PCSX2-Alpha/Time_Crisis
GSDX: Improve CRTC width detection
2016-05-25 17:51:07 +02:00
Jonathan Li
68eb3774b9 GameDB: Add memcard filter for THAW (collector's edition)
The game saves using the SLUS-21208 serial (normal edition).

Fixes #1367.
2016-05-23 23:06:21 +01:00
Gregory Hainaut
b6da1bcb15 gsdx linux: add the new option checkbox 2016-05-23 19:38:44 +02:00
Gregory Hainaut
0c3324b6ef gsdx hw: create a large_framebuffer option
Enable it to ensure correct rendering (FMV)
Disable it to reduce GPU/memory requirement

Option will likely be removed when the perf impact will be reduced.
2016-05-23 19:38:44 +02:00
Gregory Hainaut
1f4439a89e gsdx: add some notes of potential optimization 2016-05-23 19:38:44 +02:00
Jonathan Li
d2e5c32c83 cmake: Disable SuperVU for non-Linux OS
Doesn't work on FreeBSD, would be annoying to port.
2016-05-21 23:26:19 +01:00
Jonathan Li
bde5960581 iop: Use count_leading_sign_bits for err, counting sign bits
Replaces the inline assembly and generic version with the unified
implementation.
2016-05-21 23:26:18 +01:00
Jonathan Li
eaa4abea45 ipu: Convert yuv2rgb sse2 inline assembly to intrinsics
It's more portable.

Use _mm_shuffle_epi32 instead of _mm_movehl_ps - I think it avoids
data bypass delays going from integer to float domains on older
processors, and Agner's tables indicate that the instruction has the
same latency and occasionally has higher throughput (depending on cpu).

And switch the _mm_xor_si128 and _mm_unpacklo_epi8 around so the same
constant can be used for both C bias and alpha.
2016-05-21 23:26:17 +01:00
refractionpcsx2
5c02636dd9 GameDB: Auto fixes for Bakugan - Battle Brawlers 2016-05-21 21:23:38 +01:00
Jonathan Li
571432a7aa gsdx:freebsd: Fix compilation 2016-05-21 13:34:18 +01:00
Jonathan Li
57cdf0bf16 gsdx:linux: Use clock_gettime instead of ftime
ftime is obsolete and not present in recent POSIX specifications.
2016-05-21 13:33:40 +01:00
Jonathan Li
da2046e90e gsdx: Use alignas instead of __aligned
__aligned is defined in FreeBSD headers and will cause compile errors.
2016-05-21 13:23:11 +01:00
Jonathan Li
6362b9c9b2 pcsx2: aio: Complete POSIX AIO reader 2016-05-21 13:23:10 +01:00
Jonathan Li
e10ed744bc pcsx2:freebsd: Fix build 2016-05-20 22:32:41 +01:00
Jonathan Li
5f6658ae9a common:freebsd: Kill some warnings 2016-05-20 22:32:41 +01:00
Jonathan Li
7aa6564dcc common:freebsd: Fix compilation 2016-05-20 22:32:41 +01:00
Jonathan Li
280ca1dd85 utilities: Add FreeBSD thread name implementation 2016-05-20 22:32:41 +01:00
Jonathan Li
e23b6e3484 cmake: Setup FreeBSD 2016-05-20 22:31:30 +01:00
Jonathan Li
f95c38f632 spu2-x:freebsd: Adjust cmake and ifdefs
For now the SDL backend has been removed, mainly cause it makes the
dialog code too messy.
2016-05-20 22:30:52 +01:00
Jonathan Li
f963fcfa66 onepad:freebsd: Adjust ifdefs 2016-05-20 22:30:52 +01:00
Gregory Hainaut
a7ba779ba8 gsdx ogl: another HLE channel effect for terminator 3
Same as before but with a different fbmask value (I don't know why but
I have the feeling that I might need the others value too)
2016-05-20 19:55:39 +02:00
Gregory Hainaut
1c21ea955c gsdx ogl: HLE channel effect for terminator 3
Unfortunately I think the game uses another similar effects
2016-05-20 19:45:20 +02:00
Gregory Hainaut
247d33a627 gsdx ogl: always clear depth buffer in FFX2
It avoid depth issues and I'm sure it won't broke other games this way.

Issue #1340
2016-05-19 17:53:46 +02:00
Akash
2166980f91 GSDX: Calculate dimensions of rectangle after merge
* Properly display rectangle size after passing through merge circuit on
GS Dumps and GS Frame titlebar.
2016-05-19 15:53:49 +05:30
Akash
58b43dbb6c GSDX: Rework video mode detection code
* Use some nice enums instead of macros
* properly detect 720P/1080I separately.
* Some code cleanup, extended variable names and added few comments
2016-05-19 14:02:50 +05:30
Jonathan Li
9537accb51 linux: Remove old recent ISO list workarounds
Seems to work fine now, no warnings or compile errors.
2016-05-19 09:08:13 +01:00
Gregory Hainaut
e258f3e2fa gsdx ogl: update accurate DATE behavior
* Fast accurate DATE is always enabled, it was faster than standard DATE

* The less fast version is always enabled too. It is likely barely used
  so perf impact will be small on few game that could hit this path.
  Nice rendering has a higher priority

* The "slow" path will depends on the date option.
Note normally it isn't too slow (-10%) if GL_ARB_shader_image_load_store
is supported but AMD crimson is an epic fail.
2016-05-19 10:03:46 +02:00
Jonathan Li
7b27be1306 gsdx: Consider horizontal offsets when merging output
Fixes games like Time Crisis 2/3, which use two half-width display
rectangles placed side by side in split screen mode by using different
DISPLAY.DX values.
2016-05-19 10:06:12 +05:30
Jonathan Li
203fb71851 linux:async-iso: Fix invalid file descriptor checks
-1 is returned when open() fails, not 0.
2016-05-18 23:31:32 +01:00
Jonathan Li
899784cbdc onepad: Only append -dev to library name for Devel builds 2016-05-18 22:58:15 +01:00
Jonathan Li
3a274e85f0 cmake:onepad: Add wxWidgets to dependencies 2016-05-18 22:56:59 +01:00
refractionpcsx2
ad61503d83 CDVD: Fix drive status on BREAK.
-Formula One 2001 expects the drive to be paused after break.
-The command breaks from the current command, it doesn't stop the drive :)
2016-05-18 21:44:13 +01:00
Gregory Hainaut
14fa797235 gsdx hw: always uses a big RT on snowblind engine game
Avoid headack to avoid conflict between 1280x1024 and 640x1280 resolution
2016-05-17 20:01:00 +02:00
Gregory Hainaut
156f1b70c3 cmake: disable avx2+ on debug build
Gdb (7.7.1) doesn't support it properly.
2016-05-17 19:33:12 +02:00
Gregory Hainaut
a4c7541092 gsdx ogl: tentative hack to make FFX go along with depth option
Issue1: Depth buffer is wrongly invalidated only the first page is detected.

Issue2: First page seems to be partially written. Could be a GSdx transfer bug.
Anyway, invalidation only support a page granularity.

So here a quick workaround that will clear depth buffer in case of very small partial write.

Might worth to check regression on nocturne/digital saga
2016-05-17 19:33:12 +02:00
Jonathan Li
df5035d975 ci:travis ci: Use ccache and add gcc 6 build config
Also make the build noisier to prevent some build failures when download
speeds are slow from whatever repository.

Note: The 64-bit devel build currently doesn't benefit from ccache for
whatever reason.

[skip appveyor]
2016-05-16 23:48:13 +01:00
Gregory Hainaut
37c049425d gsdx ogl: gl depth is written by default
Fix bad depth state in dump (yes the bug is 2 years old!)
2016-05-16 20:10:32 +02:00
Gregory Hainaut
f5b174f985 gsdx ogl: pitch is always the width of the transfer not the size of the texture 2016-05-16 19:20:01 +02:00
Gregory Hainaut
fa921215d9 gsdx ogl: add GL_ARB_get_texture_sub_image extension support
could help to read back a portion of a texture
2016-05-16 18:58:33 +02:00
Gregory Hainaut
e02753df46 gsdx ogl: oups, mandatory function pointer was wrongly optional 2016-05-16 18:58:33 +02:00
Gregory Hainaut
37e4d2bd48 gsdx ogl: update old comment 2016-05-16 18:58:33 +02:00
Gregory Hainaut
96b5170d8c Merge pull request #1317 from PCSX2/gsdx-array-coverage
Gsdx array coverage
2016-05-16 18:16:15 +02:00
Gregory Hainaut
ed0adf61d3 gsdx ogl: allow to define a debug context in windows.
Be aware: dev build will be slow and quite chatty
2016-05-16 17:08:20 +02:00
Gregory Hainaut
30ce6b0a6a gsdx ogl: check debug function exists
I'm sure they exists in the openGL renderer context but there are
also used in common code. So potentially in DX context.
2016-05-16 16:59:00 +02:00
Gregory Hainaut
99476f4b13 gsdx ogl: explain better previous clear vs framebuffer comment 2016-05-16 16:49:18 +02:00
Gregory Hainaut
08f7bd2dc3 gsdx: add crc hack for Ar tonelico 2
It would requires some texture dynamic width convert shaders.
So as a quick solution, let's add a new CRC hack.

For issue #1362 (granted the CRC is correct)
2016-05-16 10:55:02 +02:00
Gregory Hainaut
1522cba5b0 gsdx ogl: performance note of texture clear vs framebuffer clear
In case of render target. FB clear is better
2016-05-16 10:38:47 +02:00
Gregory Hainaut
e776118de9 gsdx-ogl: implement previous DATE optimization in a single shader pass
Faster :) Reduce further the cost of accurate date

The optimization will clear the stencil to 1. So all pixels will have a
single sample that pass both the depth & stencil test. No primitive
overlaps So the destination alpha test can be done directly in the
shader.
2016-05-15 17:44:40 +02:00
Gregory Hainaut
3ab12cef2f gsdx ogl: accelerate special case of accurate date.
Game often uses date to allow a single pixel pass. If this
use case is detected, stencil buffer will be cleared after first pixels
that pass both depth&stencil test.

It seems to reduce the load on the GPU.

Note: with the help of texture barriere, maybe we could implement the algo
with a single pass.
2016-05-15 17:22:58 +02:00
Gregory Hainaut
025be70c42 gsdx-ogl: allow to fallback to a slow accurate DATE when GL_ARB_shader_image_load_store isn't supported
The best is still to have a DX11 generation GPU
2016-05-15 16:29:29 +02:00
Gregory Hainaut
5b061e062c gsdx ogl: replace ClearRenderTarget_i by glClearTexSubImage
Avoid state change, avoid potential texture buffer reallocation

Note: require GL_ARB_clear_texture
2016-05-15 15:55:31 +02:00
Gregory Hainaut
82060320ef gsdx ogl: use draw list size for sprite instead of vertex number to select date algo
Latest overlap detection allow to draw multiple sprite instead of 1,
so the limit based on vertex number is too conservative.
2016-05-15 15:00:52 +02:00
Gregory Hainaut
c054b097e9 gsdx ogl: fix wrong depth clear
If a color buffer is still attached and is smaller than depth buffer,
the latter won't be fully cleared.

As a faster alternative, use GL4.4 clear texture function. Avoid to fiddle with
framebuffer and pixel tests.

Fix #1362x Ar Tolenico 2 map clip
2016-05-15 14:57:37 +02:00
Gregory Hainaut
caacb1dc9f gsdx-ogl: add texure clear function (GL4.4) 2016-05-15 14:57:11 +02:00
Gregory Hainaut
d47d9e5017 gsdx-ogl: fix a minor gcc warning 2016-05-15 13:10:46 +02:00
Gregory Hainaut
913e3d65d2 gsdx ogl: use glViewportIndexedf and glScissorIndexed 2016-05-14 17:18:16 +02:00
Gregory Hainaut
cd9ee3c468 gsdx ogl: emulate GL_ARB_draw_buffers_blend and GL_ARB_viewport_array
New functions only set the parameter to a single buffer whereas old function
set all buffers
2016-05-14 17:15:30 +02:00
Gregory Hainaut
4065730e36 gsdx ogl: merge sprite hack take 2
try to detect paving correctly. Avoid to break effect such as Heat effect in Tekken5
2016-05-14 12:24:56 +02:00
Gregory Hainaut
2fc244a3eb gsdx-ogl: inline function only call once 2016-05-14 11:53:02 +02:00
Gregory Hainaut
24a673c482 gsdx ogl: avoid special format on the merge sprite hack 2016-05-13 18:28:21 +02:00
Gregory Hainaut
b57b97eb3c debian: update dependency for latest Debian/Ubuntu 2016-05-13 18:28:21 +02:00
Jonathan Li
92d4d93fce Merge pull request #1312 from FlatOutPS2/master
Automatic aspect ratio switch during FMV playback
2016-05-11 14:07:59 +01:00
FlatOutPS2
5871874f70 Avoid crash on some systems with FMV software switch
Avoid crash on some systems switching HW><SW in fullscreen aspect
ratio's with FMV Software switch.

Replaces previous zoom adjusting fix with a more efficent one.

Squashed a small improvement into commit.
2016-05-11 14:33:25 +02:00
Jonathan Li
32aab3366d Merge pull request #1356 from NZJenkins/master
Ensure selected rows are visible in debugger
2016-05-10 22:25:24 +01:00
Gregory Hainaut
156b6425d2 gsdx ogl: add UserHacks_merge_pp_sprite option to reduce upscaling glitches
For test purpose, it is higly experimental.

So far it is yield interesting result for tekken5
2016-05-10 08:12:07 +02:00
Gregory Hainaut
c019f86529 gsdx ogl: add a performance note for a potential channel optimization 2016-05-10 08:11:28 +02:00
NZJenkins
25b29a2864 Ensure selected rows are visible in debugger
Fixes #1353
DebuggerLists:
Select does not ensure the item is visible if selecting
Went with existing convention of Select and Focus.

CtrlRegisterList:
Added ensureVisible, called whenever the current row selection is
changed
2016-05-10 13:01:18 +12:00
Gregory Hainaut
4effc70792 gsdx hw: Fix regression on align sprite
The hack also updates position of not texture mapped sprite.

Unlike the 2nd hack (round sprite) which can be skipped if TME is disabled
2016-05-09 09:45:34 +02:00
Jonathan Li
23782b5c24 Merge pull request #1337 from turtleli/autodock
Console: Add AutoDock option to menu
2016-05-09 00:13:21 +01:00
Gregory Hainaut
5ecbc2889b Merge pull request #1349 from PCSX2/gsdx-channel-effect
Gsdx channel effect
2016-05-08 19:03:18 +02:00
Gregory Hainaut
5b04672ba2 gsdx ogl: separate Tales of Abyss/Urban Chaos effect based on the fbmask
Avoid to rely on CRC
2016-05-08 17:31:13 +02:00
Gregory Hainaut
48d962e15a gsdx log: print detected crc
Helpful to get crc from gs dump
2016-05-08 16:30:50 +02:00
Gregory Hainaut
fb6a6f73c4 gsdx: move Tekken5/Tales of Abyss CRC to Dx level 2016-05-07 22:46:42 +02:00
Gregory Hainaut
ecbcc566fe gsdx ogl: use GT shader for Tourist Trophy 2016-05-07 22:46:41 +02:00
Gregory Hainaut
fc86620327 gsdx ogl: disable channel effect when signature is a bit different
Hack to avoid regression on Blood Will Tell
2016-05-07 22:46:41 +02:00
Gregory Hainaut
30b452543a gsdx ogl: tekken5 uses similar effect as Gran Turismo
So just reuse GT hle shader :) Acid stage is now correct. However it might need
some tuning for others stages.
Still look awful with uspcaled resolution (note internal game framebuffer is around 160x128)
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d41613c46a gsdx ogl: add a Tales of Abyss HLE shader
Again fast and efficient but it relies on CRC

v2: forget to update the precompiled shader...
2016-05-07 22:46:41 +02:00
Gregory Hainaut
d5681ba01c glsl: fix a bug in urban chaos hle shader
Bug only impact the lsb bits of the depth conversion, so impact is likely small
2016-05-07 22:46:41 +02:00
Gregory Hainaut
70ee8c5bc4 gsdx ogl: add an HLE brightness/contrast shader for GT series.
It works and it is very fast. But it relies on CRC

Others effect need to be tested as well
2016-05-07 22:46:41 +02:00
Gregory Hainaut
91c164ecca gsdx tc: avoid potential division by 0 2016-05-07 18:36:28 +02:00
Gregory Hainaut
265ea82780 gsdx tc: avoid to load data outside of the GS memory
Avoid crash in Kungfu panda
2016-05-06 21:46:29 +02:00
Jonathan Li
c540840cd4 pcsx2: Apply auto gamefix/widescreen/cheat changes immediately 2016-05-06 20:32:31 +01:00
Gregory Hainaut
f34e77f08c gsdx: fix regression on 24 bit format (gust game)
bpp is the size of the container format but not the size of the format itself.
For PSM24, bpp is 32, trbpp is 24
2016-05-06 13:49:24 +02:00
Gregory Hainaut
c94fecdadb Merge pull request #1346 from PCSX2/gsdx-cleanup
Gsdx cleanup
2016-05-06 12:23:54 +02:00
Jonathan Li
f97b556e23 pcsx2: Use incoming settings when applying settings
The old config settings were wrongly used when determining whether to
load patches, cheats and widescreen hacks. These settings needed to be
applied twice to actually take effect if they were changed while a game
is running.

Use the incoming settings so the settings only need to be applied once.
2016-05-06 01:03:51 +01:00
Gregory Hainaut
e890ce989c gsdx: throw oom exception + error
Texture can't be NULL anymore, so we can remove a couples of check
2016-05-05 18:53:51 +02:00
Gregory Hainaut
d58b71688b gsdx debug: auto GL_POP
Nicer and exception safe

V2: miss definition of vs/ps
2016-05-05 18:53:32 +02:00
Gregory Hainaut
37c7fa7663 gsdx: add draw exception (OOM and Recoverable)
The exception will free the unused (but allocated) texture aka the emergency break ;)

Recoverable could be useful for unsupported draw call
2016-05-05 17:47:32 +02:00
Gregory Hainaut
c8dddfed06 gsdx hack: move m_skip and m_userhacks_skipdraw to GSState level
Avoid to push argument to call IsBadFrame
2016-05-05 16:22:14 +02:00
Gregory Hainaut
21d1bd48ec gsdx hack: move the CRC setup into a separate function
In order to reduce a bit the overhead of IsBadFrame called each draw calls
2016-05-05 16:03:48 +02:00
Gregory Hainaut
7b0427e86e gsdx hack: use psm lookup + remove now useless log 2016-05-05 15:46:54 +02:00
Gregory Hainaut
8424eeb4ee gsdx tc: small hint for the compiler 2016-05-05 15:32:21 +02:00
Gregory Hainaut
055b9c57e7 gsdx tc: use unscaled size as clamping in Target::Update
Might avoid/reduce crash like #1340
2016-05-05 12:59:49 +02:00
Gregory Hainaut
5948c2d8cd gsdx AMD: broken for broken
Until AMD release the driver with a fix, I can't use 2nd blending source with SSO.

So let's use the first source. Blending/Alpha will be wrong. But it is likely better
than an uninitialized alpha value.
2016-05-05 12:24:55 +02:00
Gregory Hainaut
f712c5c6d0 gsdx tc: use GSLocalMemory::m_psm instead of hardcoded value 2016-05-05 12:19:25 +02:00
Gregory Hainaut
642cc50ac4 gsdx hw: reduce verbosity of channel skip log 2016-05-05 12:19:19 +02:00
Gregory Hainaut
7c430c9d3c glsl: fix coordinate in channel depth effect
UV can't be used directly in channel effect

Properly fix Urban Chaos smoke
2016-05-04 18:08:40 +02:00
Gregory Hainaut
b8b0a0d662 gsdx hw: remove dead code 2016-05-04 18:08:34 +02:00
Jonathan Li
f4566acfa5 Merge pull request #1338 from turtleli/breakpoint-windows-fix
debugger:windows: Fix vanishing breakpoints when scrollbar disappears
2016-05-04 11:17:20 +01:00
FlatOutPS2
6defe6e07d Automatic aspect ratio switch during FMV playback
Updated to bypass ini setting for automatic aspect ratio switch.
2016-05-03 16:50:42 +02:00
Jonathan Li
ad652706d6 debugger:windows: Fix vanishing breakpoints when scrollbar disappears
On Windows, it seems that if you resize the columns in the size event
handler when the scrollbar disappears, the listview contents may decide
to disappear as well. So let's avoid the resize for this case.
2016-05-03 00:42:45 +01:00
Gregory Hainaut
90af611fdb gsdx ogl: Fix channel effect interaction with accurate blending
* Vertex info must be updated before PrimitiveOverlap
* Fix the vertex number (2 not 4)
* add an uint16 cast to shut up Visual Studio
2016-05-02 19:48:11 +02:00
Gregory Hainaut
e190841d67 gsdx ogl: improve blending logging 2016-05-02 18:14:02 +02:00
Gregory Hainaut
3077cc82cc gsdx hack: Ghost in the Shell still broken in openGL 2016-05-02 18:14:02 +02:00
Jonathan Li
7435e6e7b3 Console: Add AutoDock option to menu 2016-05-02 17:02:16 +01:00
Jonathan Li
6430e41fb5 gsdx:windows: Update GUI to reflect recent changes
"Enable Hardware Depth" removed from main dialog.
"Disable Depth Emulation" and "Fast Texture Invalidation" added to Hacks
dialog.

And fix lots of whitespace issues.
2016-05-02 00:28:10 +01:00
Jonathan Li
9b58b3fb6e Console: Do not scroll to bottom unless text is updated
Also remove the size event handler and use Bind instead of Connect
2016-05-01 18:38:59 +01:00
Akash
21e6a344a2 GSDX: Improvements to the GSDX dialog (#1284)
GSDX: Improvements to the config interface.

- GSDX: Add new logos to dialog
- GSDX: Remove all the extra null renderers
- GSDX: Changes to renderer combobox
- Sort all the renderers in ascending order. (the fact that D3D11 was
above D3D9 really annoyed me >_<)
- Properly display usage of D3D10/D3D11 on the combobox.
- Use highest available version of DX by default.
- GSDX: gray out upscaling hacks at native resolution
- GSDX-PSX: Modifications to the dialog
- Add new logos
- Remove SDL renderer from combobox since it was removed long ago.
2016-05-01 17:33:53 +01:00
Gregory Hainaut
826b38c47a gsdx tc: use array in GSOffset to store texture coverage
GSOffset is already based on a lookup of PSM/BP/BW. Coverage only adds
the size parameters (so only 256 possibilities)

It replaces the hash lookup with a free array access.
2016-05-01 15:02:36 +02:00
Gregory Hainaut
9cacfee8c7 Merge pull request #1322 from PCSX2/gsdx-8b-subrt
gsdx: improve detection of channel shuffle
2016-05-01 14:28:22 +02:00
Gregory Hainaut
7add3d1018 gsdx hack: add a lengthy comment to explain man hunt2 hack
An HLE shader replacement could be done for this game but it is
low priority
2016-05-01 13:37:54 +02:00
Gregory Hainaut
4bf484c881 gsdx: move various games crc to dx level
* GT3
* GT4
* GTConcept
* JamesBondEverythingOrNothing
* SkyGunner
* StarWarsBattlefront2
* StarWarsBattlefront
* TouristTrophy
* ICO
* DeathByDegreesTekkenNinaWilliams
2016-05-01 13:22:12 +02:00
Jonathan Li
6b5761dfa4 gui: Avoid out-of-bound access when sVU is disabled
The radio buttons are ifdef'd out so they don't exist.
2016-05-01 09:52:36 +00:00
FlatOutPS2
424e7d65e5 Add several XGKick hacks (#1332)
Add XGKicks for Formula One 2001-2003, World Of Outlaws and Sprint Cars
2016-04-30 21:27:22 +01:00
Gregory Hainaut
5676acaef9 glsl: support channel effect on depth texture too 2016-04-30 16:07:45 +02:00
Gregory Hainaut
e0581ee771 gsdx ogl: Finalize the urban chaos workaround
Rendering must be nice now
2016-04-30 14:52:53 +02:00
Gregory Hainaut
14e1ed06df glsl: add an HLE shader for Urban Chaos
Pro:
* Replace 140 draw calls into a single one
* No complex texture conversion/lookup
* smaller solution than a generic solution
2016-04-30 14:52:53 +02:00
Gregory Hainaut
7d191ebf8e gsdx tc: load palette for pseudo 8 bits depth
Rendering is still broken but I'm afraid it will need a dedicated shader
2016-04-30 14:52:43 +02:00
Gregory Hainaut
12b8704502 gsdx dx: disable channel shuffle 2016-04-30 14:52:43 +02:00
Gregory Hainaut
b4c7d32741 gsdx ogl: avoid to wrongly detect a channel shuffle 2016-04-30 14:52:43 +02:00
Gregory Hainaut
1011a757a8 gsdx hw: factorize redundant code 2016-04-30 14:52:43 +02:00
Gregory Hainaut
b78c772a14 gsdx: improve detection of channel shuffle
Improve rendering on Prince Of Persia (requires preload data hack)

Worth to re-test: MTGS2/3

Urban Chaos is a bit better but there still a bad overlay
2016-04-30 14:52:43 +02:00
Gregory Hainaut
2160d7da81 Merge pull request #1330 from PCSX2/gsdx-move-crc-separate-file
Gsdx move crc separate file
2016-04-30 14:33:44 +02:00
Gregory Hainaut
02dff2653a gsdx hack: sort the file
* separate Dx only/aggresive hack
* add GSC_CrashNburn and GSC_BullyCC to Dx only section
2016-04-30 12:45:06 +02:00
Gregory Hainaut
60267790a1 gsdx: move (most) of the hw hack into a separate file
GSState.cpp was really too big
2016-04-30 12:24:08 +02:00
Gregory Hainaut
7a5e1d4154 gsdx ogl: allow to use a separate texture for the channel effect 2016-04-29 17:34:17 +02:00
Gregory Hainaut
a9d25efcde gsdx ogl: extend state to support up to 8 textures 2016-04-29 17:34:17 +02:00
Gregory Hainaut
e45f90fac3 gsdx: fix a gcc warning 2016-04-29 17:34:17 +02:00
Gregory Hainaut
e195e67a48 gsdx: move Metal Gear Solid CRC to DX level
OpenGL is near perfect :)
2016-04-29 17:34:17 +02:00
Jonathan Li
35e17127af debugger: Use Bind instead of Connect for events 2016-04-29 00:16:16 +01:00
Jonathan Li
4227477fc4 ConsoleLogger: Use wxTE_NOHIDESEL style for pxLogTextCtrl
It prevents the console logger text from disappearing on Windows and we
can remove a Windows specific fix.
2016-04-29 00:15:44 +01:00
Jonathan Li
f78d1a4018 utilities: Remove wx2.8 code and uses of wxMAJOR_VERSION 2016-04-29 00:09:47 +01:00
Jonathan Li
d89043d8ac pcsx2: Remove wx2.8 code and uses of wxMAJOR_VERSION
Technically wxMAJOR_VERSION wasn't the right thing to use, but it was
good enough.
2016-04-29 00:09:47 +01:00
Gregory Hainaut
5e5069423b Merge pull request #1321 from PCSX2/gsdx-preloadcrash
GSDX: Avoid crash when TBW == 0 - Preload data frame
2016-04-28 23:06:29 +02:00
Gregory Hainaut
cb19451418 gsdx ogl: implement RT channel fetch
Fix blending of Metal Gear Solid/KillZone (and potentially other games)

Potentially impact issue #905, #594, #914, #896
2016-04-28 22:56:38 +02:00
Gregory Hainaut
c445a14c46 gsdx ogl: extend shader to lookup a single channel 2016-04-28 22:56:38 +02:00
Gregory Hainaut
eaa4fd41e2 gsdx ogl: improve logging of special effect 2016-04-28 22:56:38 +02:00
refractionpcsx2
0aa8fe0f20 GSDX: Avoid crash when TBW == 0 2016-04-28 21:36:21 +01:00
Gregory Hainaut
f946f38f26 gsdx hw: keep the debug counter in sync
Otherwise I'm screwed :p
2016-04-28 20:03:53 +02:00
Gregory Hainaut
04a578495f gsdx hw: disable channel shuffle effect
Greatly reduce memory requirement for target
MGS3 at 4x: from 2680MB to 160MB

Remove a couple of (slow) draw calls
2016-04-28 19:46:26 +02:00
Gregory Hainaut
f63e38a59e gsdx ogl: as always some games do bad stuff
Let's keep a comment for the moment. I don't know if we need to fix it, neither how.
2016-04-28 19:42:00 +02:00
Gregory Hainaut
45bfe2ad58 gsdx hw: trace some special post processing effect
* Double downscale is done in GTA
* Channel Shuffle is the top-left corner issue

So far nothing is emulated
2016-04-28 19:39:57 +02:00
Gregory Hainaut
5b04f4dab9 gsdx: add optimization note for the future 2016-04-28 18:01:21 +02:00
Gregory Hainaut
4808d89449 gsdx ogl: use enum pretty name 2016-04-28 18:01:20 +02:00
Jonathan Li
f7495c6867 ConsoleLogger: Use Bind instead of Connect 2016-04-27 23:24:17 +01:00
Jonathan Li
de6b7752d4 ConsoleLogger: Define events in a Bind compatible way
Also remove the pxEvt_LogWrite event, since that isn't used.
2016-04-27 23:24:17 +01:00
Jonathan Li
a6ba7a19b9 ConsoleLogger: Removed DockedMove
It's unused.
2016-04-27 23:24:17 +01:00
Jonathan Li
5d81fa70ff windows: Remove USBqemu from old_plugins solution
USBqemu is included in the main PCSX2_suite solution, so it doesn't need
to be in old_plugins as well.
2016-04-27 20:38:37 +01:00
Jonathan Li
91161b37dd pcsx2: Remove duplicate license blurb in BreakpointWindow.cpp 2016-04-27 20:38:08 +01:00
Jonathan Li
0de8f4a3a6 onepad: Use Bind instead of Connect
It's the recommended dynamic event binding method since wx2.9.
2016-04-27 08:59:11 +01:00
Jonathan Li
0d43de516c onepad: Remove wx2.8 compatibility code 2016-04-27 08:59:11 +01:00
Gregory Hainaut
ab31915ce9 gsdx: glsl: fix silly typo
And regression on various games
2016-04-27 09:52:35 +02:00
Gregory Hainaut
aeb92592e7 gsdx ogl: use GSUtil::GetClassVertexCount 2016-04-26 19:29:04 +02:00
Gregory Hainaut
df70b8bb0e gsdx: fix Q NaN value
Avoid potential undefined results
2016-04-26 19:09:32 +02:00
Gregory Hainaut
726b901dc5 Merge pull request #1304 from PCSX2/gsdx-faster-texture-cache
gsdx tc: reduce texture cache overhead
2016-04-26 16:46:44 +02:00
Gregory Hainaut
c7f0a85d41 Merge pull request #1306 from PCSX2/gsdx-direct-depth-sample
Gsdx direct depth sample
2016-04-26 16:46:22 +02:00
Gregory Hainaut
49d175b677 gsdx tc: allow to create a dummy Source without tons of memory allocation
It makes shared texture virtually free from the CPU PoV.
2016-04-24 22:30:56 +02:00
Gregory Hainaut
ad08701cb1 gsdx tc: trick the texture cache to use a depth format for depth texture
This way we avoid the rescaling of the depth buffer and texture allocation.
2016-04-24 22:18:26 +02:00
Gregory Hainaut
1960d51e60 gsdx tc: properly support 16 bits depth conversion 2016-04-24 22:18:26 +02:00
Gregory Hainaut
de38963904 gsdx ogl: plug the new depth sampling in the renderer
Note:
When source format is depth, integral texture coordinate must be used => depth_fmt 1/2/3
2016-04-24 22:18:26 +02:00
Gregory Hainaut
fda511a949 gsdx glsl: extend hw shader to sample depth texture
Will use integral coordinate to avoid any rescaling.

Bilinear interpolation isn't supported. I don't think it is allowed to
filter a depth texture anyway.
2016-04-24 22:18:26 +02:00
Gregory Hainaut
583de1bf0b gsdx tc: add a dedicated function to lookup a depth source
The hypothesis is that game will use a depth (aka Z32/Z24/Z16/Z16S)
format when sampling depth texture as color.  Technically one could use
a standard color format but block/pixel order won't be the same.
(otherwise I'm screwed)

=> Hypothesis invalid on GoW. They just do a scrambled rendering...

Lookup info:
* The first searched list is the depth pool as we search a depth
  texture.
* 2nd one is the render target pool (if a depth was converted to a
  render target already)

To avoid any CPU overhead, the source will be a pointer to the real texture
* Conversion (if float texture) will be done on the fly by the shader (GPU).
* Relative rescaling won't be supported. Texture must be fetched with
  integral coordinate
2016-04-24 22:18:26 +02:00
Gregory Hainaut
9ee090a36e gsdx tc: add a shareable texture flag
Plan is to bypass shader conversion/rescaling/copy for depth texture
2016-04-24 22:18:26 +02:00
Gregory Hainaut
8ec1461842 gsdx: increase the number of texture in the pool
It could slightly increase the VRAM requirement but it will reduce texture
allocation/unallocation at start/end of frame.
2016-04-24 22:14:51 +02:00
Gregory Hainaut
b4b878ac24 gsdx-ogl: add a note for a future small optimization 2016-04-24 22:14:51 +02:00
Jonathan Li
9d2cd8490c Merge pull request #1305 from adamantike/trivial-wxfont-fix
Trivial fix on wxFont style/weight usage
2016-04-24 18:43:21 +01:00
adamantike
a0eca54f96 Trivial fix on wxFont style/weight usage 2016-04-24 13:25:56 -03:00
Gregory Hainaut
da1b032793 spu2x-linux: update GUI to support a 15 ms latency 2016-04-24 11:13:28 +02:00
Gregory Hainaut
4281b8630b gsdx ogl: remove the useless shadeboost Constant Buffer 2016-04-24 11:08:14 +02:00
Gregory Hainaut
d610a6aac4 gsdx glsl: ofc forget to do the shader in bin 2016-04-24 11:07:46 +02:00
Gregory Hainaut
d027ed2092 gsdx ogl: merge GSTextureFXOGL to GSDeviceOGL
First file is rather small in openGL. And it is linked to the latter.
2016-04-24 10:55:22 +02:00
Gregory Hainaut
1558220f74 gsdx glsl: create a common header definition
* avoid duplication between all the files for UBO
* remove various interface define
2016-04-24 10:54:39 +02:00
Gregory Hainaut
8ee0783bd3 GSdx: remove useless variable 2016-04-24 10:42:03 +02:00
Gregory Hainaut
fa1377a8ee gsdx tc: reduce texture cache overhead
Cache page coverage of texture into a hash map

Test done on Champion of Norrath (paltex + DisablePartialInvalidation)

Profiler:
Self of GSTextureCache::SourceMap::Add 5.39% => 0.23%
Self of GSTextureCache::LookupSource 15.27% => 10.82%

Hard to measure on CoN as it depends on memory transfer. Seem to be 5-10 fps faster.
2016-04-23 19:22:58 +02:00
Gregory Hainaut
67e955919f gsdx: keep dump code enabled in dev release too 2016-04-23 18:29:56 +02:00
Gregory Hainaut
a149d6b26f gsdx: use psm.bpp flag to improve code reading 2016-04-23 18:29:39 +02:00
Gregory Hainaut
dd98a0b913 gsdx: add a depth format flag 2016-04-23 18:28:50 +02:00
Jonathan Li
5035c8bd48 utilities: always include wx/crt.h on Linux
The header is necessary if the wx3.0 package isn't compiled with
wx2.8 backwards compatibility.
2016-04-23 13:57:47 +01:00
Jonathan Li
dda44519c1 pcsx2|utilities: Use non-deprecated wxFont stuff 2016-04-23 13:57:42 +01:00
Gregory Hainaut
87867beb0e gsdx-ogl: remove the invalidation of texture
It doesn't help the perf and only create overhead (test done on snow engine game)
2016-04-21 21:07:17 +02:00
Gregory Hainaut
3709b5aecc gsdx: add a small comment to ease code reading 2016-04-21 09:28:44 +02:00
Gregory Hainaut
b5ec683318 gsdx-linux: remove custom resolution from the GUI
It would be replaced by a float resolution factor
2016-04-21 09:28:44 +02:00
Gregory Hainaut
821e3ff294 gsdx-ogl: reduce length of debug message 2016-04-21 09:28:44 +02:00
Gregory Hainaut
8217c717f6 gsdx-ogl: require GL_KHR_debug
Will reduce the slowdown on debug build
2016-04-21 09:28:44 +02:00
Gregory Hainaut
9598417f42 gsdx-ogl: GL_ARB_copy_image is now mandatory 2016-04-21 09:28:44 +02:00
Gregory Hainaut
99bccc6dff gsdx-ogl: remove the geometry shader blacklist for Gallium Mesa drivers 2016-04-21 09:28:44 +02:00
Gregory Hainaut
cb8088216b Merge pull request #1281 from PCSX2-Alpha/NTSC_saturation
GSDX: Remove some unnecessary/dubious hacks
2016-04-21 09:28:30 +02:00
Gregory Hainaut
59ef668fd2 Merge pull request #1222 from PCSX2/gsdx-black-fmv
Gsdx black fmv
2016-04-21 09:25:36 +02:00
Gregory Hainaut
8b247bde35 Merge pull request #1301 from clbr/master
textureSW: fix Map with offset
2016-04-20 10:05:32 +02:00
Lauri Kasanen
994c9147f5 textureSW: fix Map with offset 2016-04-19 21:22:53 +03:00
Gregory Hainaut
943e000c41 Merge pull request #1299 from PCSX2/gcc-6
x86emitter: gcc 6 compilation fix
2016-04-18 20:54:25 +02:00
Gregory Hainaut
c44f605b5e x86emitter: gcc 6 compilation fix
Fix #1297
2016-04-18 19:27:06 +02:00
Gregory Hainaut
5b68415173 cmake: add an alternate wx-config path for Fedora 24
Fix #1296
2016-04-17 17:14:51 +02:00
Catarax
0f226939aa GameDB: Burnout 2 Graphics Fix (Bright Lights in Cars) (#1293)
Remove bright lights in cars for Burnout 2 (Demo/Japanese/Second PAL release)
2016-04-14 16:53:33 +01:00
refractionpcsx2
25fb54e959 GameDB: Automatic VU Rounding to Nearest on "Gun" game. Fixes #43 2016-04-14 15:20:55 +01:00
refractionpcsx2
dcb676765e GSdx: Clean up some warning under windows (#1289) 2016-04-14 11:00:58 +01:00
Gregory Hainaut
2e567d6d55 gsdx ogl: update comment
something to test in the future
2016-04-14 10:19:18 +02:00
Gregory Hainaut
d129aedfe8 GSdx:vector: add sllv32 and srlv32 for 128 bits op
(variable shift)
2016-04-14 10:18:43 +02:00
Jonathan Li
5035e7417d Merge pull request #1239 from FlatOutPS2/master
Remove cheats file from redundant folder
2016-04-13 23:21:56 +01:00
Jonathan Li
2c02094281 Merge pull request #1290 from turtleli/remove-nulls
windows: Remove GSNull, PADNull, and CDVDNull from VS solution
2016-04-12 23:42:27 +01:00
Gregory Hainaut
8a7184be3f gsdx: fix hack logic 2016-04-12 11:36:24 +02:00
Jonathan Li
04a72381e6 windows: Remove GSNull, PADNull, and CDVDNull from VS solution
They're not really needed, and some of the exported functions don't
actually match what PCSX2 currently expects (i.e. PADgsDriverInfo,
GSgetDriverInfo).

Although it can be fixed up, it's simpler to just remove them.
2016-04-12 00:23:56 +01:00
Gregory Hainaut
6a09fa56fb gsdx: disable nocturne CRC hack
Yeah one less !
2016-04-11 22:41:19 +02:00
Gregory Hainaut
4611264ce3 gsdx: add CRC hack for Nocturne PAL
Reduce depth transfer to the real size of the game. Otherwise
we need to handle a mix of color/depth transfer.
2016-04-11 16:04:04 +02:00
refractionpcsx2
00aa07ad97 GameDB: Remove IPU hack for Klonoa 2 (J) 2016-04-11 14:29:22 +01:00
Gregory Hainaut
22a40b65ae gsdx-ogl: always use 1 for GL_UNPACK_ALIGNMENT
Avoid a gl function call for each texture uploads
2016-04-11 12:45:11 +02:00
refractionpcsx2
fdae698f07 SPU2-X: Correct project settings for devel profile. Fixes #1288 2016-04-11 01:15:07 +01:00
Jonathan Li
d158d4de51 windows: Move baseclasses to a separate project
It saves the buildbots from needlessly recompiling the files for each GSdx
configuration.
2016-04-11 00:22:31 +01:00
Gregory Hainaut
847b57907e Revert "gsdx-ogl: add a new hack to force anisotropic filtering"
This reverts commit 53690cf9d0.

Quoting user:

 For aliasing, the option allow of reduce a little but always very
 visible compared with DX11 even with anisotropic OFF, , furthermore
 many textures bug added with option activated (predictable but not see
 on DX11 with anisotropic ON).

TL;DR doesn't worth it.

Note: it seem to work on DX because DX uses HW texturing in clamp region
mode (and others invalid case). OpenGL uses SW texturing to ensure accuracy
2016-04-10 17:30:49 +02:00
Gregory Hainaut
2941adf364 gsdx ogl: use the new pipeline API
Pre build all SW shader into pipeline.

Directly bind the pipeline instead of all pipeline stages. (less work for the driver)
2016-04-10 17:28:05 +02:00
Gregory Hainaut
95e3dcb448 gsdx-ogl: improve the shader program management
* keep a reference of program/pipeline created to ease the deletion
* extend a bit the API to support multiple pipeline

Final goal will be to use a pre link pipeline for SW shaders. And uses
the default pipeline for HW shaders.
2016-04-10 17:05:33 +02:00
Gregory Hainaut
395e2f31d0 gsdx-ogl: remove dead code (due to legacy removal) 2016-04-10 14:23:58 +02:00
Gregory Hainaut
3f404c8edb gsdx-ogl: update shader pipeline intertace to use vs/gs/ps triplet
Better to have 1 function calls with 3 parameters rather 3 functions call with 1 parameter.
2016-04-10 14:14:30 +02:00
Gregory Hainaut
53690cf9d0 gsdx-ogl: add a new hack to force anisotropic filtering
By default, anisotropic filtering was disabled when textures aren't countinuous.
This hack allows to force it. It can help to reduce aliasing but it would create
unexpected effect on texture boundaries.

Again, someone ought to add the option on Windows too
2016-04-10 13:53:17 +02:00
Gregory Hainaut
9e6cb79f4e gsdx linux: move depth option as a speed hack
Someone ought to add the Windows option too (and DisablePartialInvalidation too)

It might break a couple of games but most of them run better with depth enabled.
2016-04-10 13:22:55 +02:00
Gregory Hainaut
12443da00c GSdx ogl: ouch the typo exp != exp2
Fix some rounding issue on depth effect (shadow in Dot hack games)
2016-04-10 11:31:40 +02:00
Gregory Hainaut
c2a9118186 debian: add the GSdx legacy build 2016-04-10 11:31:40 +02:00
Gregory Hainaut
7aaf36d24d gsdx ogl: add function pointer for framebuffer no attachment extension
Could be useful in the future
2016-04-10 11:31:40 +02:00
Gregory Hainaut
7cc13ce99c gsdx-ogl: only bind the FB to the draw FB 2016-04-10 11:31:40 +02:00
Gregory Hainaut
d533c393b2 gsdx ogl: rely on DSA API 2016-04-10 11:31:40 +02:00
Jonathan Li
fb97de7f79 gsdx:windows: Fix crash on psx side of plugin
I forgot it had a psx emu interface.
2016-04-09 19:56:23 +01:00
refractionpcsx2
23289c09bb Merge pull request #1285 from PCSX2-Alpha/klonoa2
GameDB: Remove IPU hack for klonoa 2
2016-04-09 16:28:09 +01:00
Akash
7c34982528 GameDB: Remove IPU hack for klonoa 2 2016-04-08 19:25:17 +05:30
Jonathan Li
5de16001e2 Merge pull request #1273 from PCSX2-Alpha/Willkuer_suggestion
Always show number of loaded widescreen hacks/cheats in console title
if the respective options are enabled (even if none are loaded).

Always print the number of loaded widescreen hacks to the console if
the option is enabled (even if none are loaded).
2016-04-07 23:38:23 +01:00
Gregory Hainaut
b9e8384c11 gsdx-ogl: move the mandatory extension into mandatory section 2016-04-07 22:29:35 +02:00
Gregory Hainaut
121e92a829 gsdx ogl: remove a now useless warning message 2016-04-07 22:28:11 +02:00
Gregory Hainaut
4475c4fe7c gsdx linux: remove the old extension options 2016-04-07 22:27:33 +02:00
Gregory Hainaut
cef76de547 gsdx ogl: GL_ARB_direct_state_access is now mandatory 2016-04-07 22:27:28 +02:00
Gregory Hainaut
a62019a3fd gsdx-ogl: found_GL_ARB_buffer_storage is now mandatory 2016-04-07 22:17:22 +02:00
Gregory Hainaut
52e3c3516d gsdx-ogl: GL_ARB_separate_shader_objects is now mandatory 2016-04-07 22:11:35 +02:00
Gregory Hainaut
f751f70b1e gsdx ogl: GL_ARB_clip_control is now mandatory 2016-04-07 21:57:54 +02:00
Gregory Hainaut
dfb4b5a339 gsdx-ogl: GL_ARB_texture_barrier is now mandatory
(GL4.5 extension)
2016-04-07 21:51:37 +02:00
Gregory Hainaut
1208dbe8c7 cmake: add an option to build the new legacy GSdx plugin
+ bump the new one to 1.1.0 (to ease reporting)
2016-04-07 21:46:42 +02:00
Gregory Hainaut
8751203986 fork GSdx into a GSdx_legacy plugin 2016-04-07 21:27:55 +02:00
Gregory Hainaut
8ccdc05c08 Merge pull request #1217 from PCSX2-Alpha/CRTC_option
GSDX : Add an option for CRTC size and some other video mode stuffs
2016-04-07 21:24:46 +02:00
Gregory Hainaut
17886a9808 gsdx-ogl: allow some accurate date when GL_ARB_shader_image_load_store isn't supported
Close #1282
2016-04-07 19:29:46 +02:00
Jonathan Li
69a84a2782 gsdx:windows: Don't call GSshutdown in GSconfigure
Fixes an issue with the D3D backends crashing if the configure dialog
is accessed and ok is pressed. The D3Dcompiler dll is freed and a null
pointer is dereferenced.

It might break gsdxgui but GSshutdown really should not be called unless
GSdx is shutting down. GSDumpGUI on Windows provides the same (or
better) functionality.
2016-04-07 18:18:36 +01:00
Akash
9ad33012ad Core: Cleanup and some changes to console messages
* Always show number of cheats/widescreen hacks loaded in console title when respective options are enabled.
* Make the placement of braces consistent
2016-04-07 15:48:49 +05:30
Akash
a1b0ae467e GSDX: Remove dubious/unnecessary hacks
* Silent Hill 2 doesn't need the CRC hack
* GSRenderer: no need to explicitly set bottom value for r.
* Texture Cache: Removed a check which couldn't possibly enter true
branch.
2016-04-07 15:15:39 +05:30
Akash
69c9a3d793 GSDX: Add an option to disable NTSC saturation
v2: convert it into a member variable.
2016-04-07 15:15:17 +05:30
Gregory Hainaut
5736b5e9eb debugger: properly init DisassemblyLineInfo
Avoid conditinal check on uninitialized value (reported by Valgrind)
2016-04-07 09:36:22 +02:00
Jonathan Li
0ab7b6340d Merge pull request #1275 from AdmiralCurtiss/memcard-plugin-switch-filter-reset
Move folder memcard filter management into the actual folder memcard class to fix #1179 and similar.
2016-04-06 23:59:36 +01:00
Jonathan Li
e16b367e6e windows: Workaround weird LoadLibraryEx failures
For some reason some Windows 7 systems (most are unaffected) cannot cope
with LoadLibraryEx and return error code 87 - "The parameter is
incorrect".

Switch to using LoadLibrary instead for any case where Windows 7 is
expected to successfully load the requested dll. Potentially Windows
Vista is also affected.
2016-04-06 19:52:59 +01:00
Gregory Hainaut
da9577076c Merge pull request #1278 from PCSX2/gsdx-EE-read-depth-support
gsdx ogl: allow to read the depth buffer
2016-04-06 12:20:16 +02:00
Akash
3dd8574e33 EE-Syscall: print log messages even without dev/verbose checked 2016-04-06 09:22:55 +05:30
Akash
af1b6f4b42 EE-Syscall: Add some missing video modes 2016-04-06 09:22:53 +05:30
Gregory Hainaut
b8a023d158 gsdx ogl: mark OGL object as final
Give the compiler more devirtualization hint
2016-04-05 00:01:43 +02:00
Gregory Hainaut
decac5fd12 gsdx ogl: implement an empty BeginScene
Compile will devirtualize it and then remove it during the inline.
2016-04-04 23:32:11 +02:00
Gregory Hainaut
cb279ef321 gsdx ogl: help compiler to devirtualize 2016-04-04 23:12:31 +02:00
Gregory Hainaut
e3787b6b3c gsdx-ogl: use final qualifier to help compiler
Improve Devirtualization optimization
2016-04-04 22:52:59 +02:00
Gregory Hainaut
771583c559 gsdx-ogl: help the compiler to propagate stride constant
Optimize various multiplication

Note: potentially we can do it with constexpr but I'm not sure of compiler support
2016-04-04 22:46:31 +02:00
Gregory Hainaut
8943a9db4a gsdx hw: GS can draw 2 frames in a single framebuffer
So let's increase the height. It will increase the memory requirement on some games

v2: try to do it automatically
(not sure it will useful as most game will requires it)
v3: let's back to an hardcoded 1280 size. It generates too much issue
2016-04-04 21:30:40 +02:00
Gregory Hainaut
063d2e568a gsdx tc: re-implement frame lookup
Try to avoid random black screen frame

v2: don't force the preload hack on the frame
It creates a ghost image over FMV

v3: support offset within a frame
2016-04-04 21:30:37 +02:00
Gregory Hainaut
eec74fd963 gsdx hw: Add an alternate draw call for FMV rendering
The long story:
Game blits FMV far aways of the RT which is actually the input of the RO texture...
Currently GSdx suffers of 2 bugs.
1/ RT is too small
2/ texture isn't properly updated with the rendered value. Texture is invalidated
but it reads back the pixels from the GS memory whereas the correct
value is located on the GPU.

This commit will replace the standard draw by a manual blit. Therefore it avoid
size issue and bad upscaling issue.

v2:
* Use various copy to be more compatible with dx api
* Move all part of the hack info the BlitFMV function

v3: add log message
2016-04-04 21:29:32 +02:00
Gregory Hainaut
72d43b2e56 gsdx tc: add an invalidation procedure to drop sub rt
It will be used in next commit. However, it might not be the best solution
2016-04-04 21:29:32 +02:00
Gregory Hainaut
2ca624c8c6 gsdx tc: implement a read function of Source texture
It will be used in the following commit
2016-04-04 21:29:31 +02:00
Gregory Hainaut
d922225e69 gsdx tc:invalidate RT when a texture is written inside it
It often happens the game try to upload the FMV directly which typically
gave a black screen.

Commit fix rules of roses and I hope various black screen FMV

Performance impact must be tested, and I'm afraid of strange texture cache behavior.

V2: check the size of the transfer too
V3: add support of 16 bits format
V4: avoid division by 0
2016-04-04 21:29:31 +02:00
Gregory Hainaut
9aea76b0e8 gsdx tc: store a hint on the target size
The hint is based on the rendering
2016-04-04 21:29:31 +02:00
Gregory Hainaut
8ee9295f39 x86emitter: increase size of union capabilities 2016-04-04 21:04:41 +02:00
Gregory Hainaut
c4ebdd1f37 gsdx ogl: allow to read the depth buffer
Unfortunately can't be tested on gs dump

Ought to impact #1276 (Incognito/Eat Sleep Play's games, Nocturne too)
2016-04-03 12:30:14 +02:00
Gregory Hainaut
00643dbdfb gsdx tc: report unsupported depth read path
Help to debug depth issue  (aka lighting effects pass through wall)
2016-04-03 11:22:11 +02:00
Gregory Hainaut
ee08a6fc53 Merge pull request #1270 from PCSX2/monolithic-build
Monolithic build
2016-04-03 11:20:07 +02:00
Gregory Hainaut
5bdadbc089 Merge pull request #1268 from PCSX2/coverity-uninitialized-members
Coverity uninitialized members
2016-04-03 11:19:37 +02:00
Admiral H. Curtiss
97a68becb9 Handle filter management in the folder memcard class rather than outside.
This prevents desync between what is assumed to be the active filter and
what is actually the active filter, fixing errors like #1179 where the
memory cards are closed and reopened for whatever reason.
2016-04-02 15:22:11 +02:00
Jonathan Li
7736c90457 gsdx:windows: Fix Windows 7 compile
Somehow D3D_COMPILE_STANDARD_FILE_INCLUDE isn't defined, so the correct
headers aren't being used.
2016-04-02 12:17:52 +01:00
Admiral H. Curtiss
3b7ba39590 Fix potential access of free'd memory when re-opening an already open folder memory card. 2016-04-02 04:03:07 +02:00
Gregory Hainaut
eec3d02737 cmake: fix prof build
It was a dev build actually...
2016-04-02 00:56:41 +02:00
Gregory Hainaut
cc1756b8e5 gsdx: disable dump in release build 2016-04-02 00:56:41 +02:00
Jonathan Li
16ef7ca5fd Merge pull request #1238 from turtleli/gsdx-use-windows-sdk
gsdx: Remove DirectX SDK dependency
2016-04-01 23:31:45 +01:00
Gregory Hainaut
b42ddba13c onepad: repopulate option at the init
CID 159402
2016-03-30 19:56:19 +02:00
Gregory Hainaut
8dee7daeb9 gsdx-ogl: init textures for all formats
CID 150171
2016-03-30 19:56:19 +02:00
Gregory Hainaut
856a12f94f gsdx-ogl: init Render object
CID 147002
2016-03-30 19:56:19 +02:00
Gregory Hainaut
a4d0c23071 gsdx: init GSCapture field
CID 159404
2016-03-30 19:56:19 +02:00
Gregory Hainaut
e96b29f84f mVU: init microRegAlloc
CID 146988
2016-03-30 19:56:19 +02:00
Gregory Hainaut
eb2c61ccc0 pcsx2: init FileMemoryCard
CID 147037
2016-03-30 19:56:19 +02:00
Gregory Hainaut
27400b0be1 pcsx2: initialize pxEvtQueue
CID 146991
2016-03-30 19:56:19 +02:00
Gregory Hainaut
cf722fdf50 pcsx2: Initialized member of SysCorePlugins
CID 147006
2016-03-30 19:56:19 +02:00
Gregory Hainaut
459aebe8bf pcsx2:gif: initialize gif unit member
CID 147032
2016-03-30 19:56:19 +02:00
Gregory Hainaut
beadc0e69b pcsx2:gif: reset field from the constructor
CID 147031
2016-03-30 19:56:19 +02:00
Gregory Hainaut
0fb249284f debugger: initialized member
CID 147003
CID 147004
2016-03-30 19:56:19 +02:00
Gregory Hainaut
791a0ce702 common: initialize scalar field of pxThread
CID 147022

v2: initialize all member in initializer list
2016-03-30 19:55:45 +02:00
Gregory Hainaut
37de84d55f x86emitter: initialize scalar field
CID:147038
2016-03-30 19:50:41 +02:00
Gregory Hainaut
1bd8113f66 cmake: add various option to disable plugin support 2016-03-30 10:19:54 +02:00
Gregory Hainaut
f010f9458b plugin: add define to select builtin plugin 2016-03-30 09:54:34 +02:00
Gregory Hainaut
3a8164ac4e plugins: add a dynamic/static loader 2016-03-30 09:42:17 +02:00
Jonathan Li
e347c8b0b1 gsdx:windows: Remove DXSDK references from property sheets
GSdx doesn't use the DirectX SDK anymore.

Also clean up the property sheets while I'm at it.
2016-03-30 00:03:04 +01:00
Jonathan Li
b243e2532b gsdx-d3d9: Remove d3dx9 stuff and use d3dcompile
Using D3DX9 requires the end user to install the Direct X redist files.

Switch to using D3DCompile.
2016-03-30 00:03:04 +01:00
Jonathan Li
2ec8d88d80 gsdx-d3d11: Remove d3dx11 stuff and use d3dcompile
Using D3DX11 requires the end user to install the DirectX redist files.

Switch to using D3DCompile, and distribute D3DCompiler_47.dll for
Windows Vista, 7 and 8 users (Windows 8.1 onwards supplies
D3DCompiler_47.dll with the OS).
2016-03-30 00:03:04 +01:00
Jonathan Li
8f4823d604 gsdx-dx: Load D3DCompiler dll at runtime
D3DCompiler_47.dll will be loaded for Windows 8.1 and above (and maybe
Windows 7 devs), D3DCompiler_43.dll will be loaded for Windows 7 and
below.
2016-03-30 00:03:04 +01:00
Jonathan Li
80b6140a3e gsdx:windows: Prefer Windows SDK over old DX SDK
Some files are present in both the Windows SDK and the old DirectX SDK.
Use the newer versions of the files in the Windows SDK where possible.
2016-03-30 00:03:04 +01:00
Jonathan Li
7f3f6e96d8 cdvdgigaherz: Use Windows SDK headers
The rosddk headers are no longer necessary and have been removed.
2016-03-29 23:51:17 +01:00
Gregory Hainaut
f1b3d7d036 Merge pull request #1200 from hoholee12/master
GameDB: Default to Positive round mode for Ed, Edd, 'n Eddy & 	GameDB: SLES-52895 and SLUS-20904 are same, and patch works.
2016-03-29 11:08:00 +02:00
Gregory Hainaut
de24ce0a8f x86emitter: miss comas here 2016-03-28 18:10:39 +02:00
Jonathan Li
cb29585e84 Merge pull request #1254 from turtleli/isoreader-layer1
cdvd:iso: Use Primary Volume Descriptor to find DVD layer break
2016-03-28 13:05:02 +01:00
Gregory Hainaut
f6ee94589f gsdx hw: OI_GSMemClear supports various frame formats
Could help #1267
2016-03-28 10:47:42 +02:00
Jonathan Li
587c0ea339 Merge pull request #1237 from turtleli/xinput
lilypad|xpad: Remove DirectX SDK dependency, support both XInput 1.3 and 1.4
2016-03-28 09:46:58 +01:00
Gregory Hainaut
a99750ae87 gsdx hw: only enable OI_GsMemClear when both depth/alpha test are disabled
Fix #1262
2016-03-26 11:28:28 +01:00
refractionpcsx2
181d8f52d5 Merge pull request #1261 from Catarax/master
GameDB: Oni (PAL-F) Black Screen Fix & Missing Oni PAL Entries
2016-03-25 17:12:18 +00:00
Gregory Hainaut
261ef9ab6a gsdx: move some DBZGT hacks to Dx level
Based on this thread:

http://forums.pcsx2.net/Thread-Dragon-Ball-Z-Budokai-Tenkaichi-3-Graphical-Issue-Emulator-does-not-render-outlines
2016-03-25 08:23:50 +01:00
Gregory Hainaut
8ca212d142 linux: example how to use clang tidy 2016-03-25 08:23:50 +01:00
Gregory Hainaut
791a14bec0 gsdx linux: add a gui box to select the png compression level 2016-03-25 08:23:50 +01:00
Jonathan Li
a80a7175f3 xpad: Use the Windows SDK and remove unneeded dependencies 2016-03-23 19:12:44 +00:00
Jonathan Li
13bb7cf30a xpad: Support both XInput 1.3 and 1.4 2016-03-23 19:12:43 +00:00
Catarax
b866055264 GameDB: Oni (PAL-F) Black Screen Fix & Missing Oni PAL Entries
The french version of Oni will be playable, no more stuck in a black screen after the intro videos. Added also the PAL-S and PAL-I Oni entries to the list.
2016-03-22 15:39:51 +01:00
refractionpcsx2
c163b845eb Merge pull request #1260 from Catarax/master
GameDB: Tony Hawk's Games Crash and Graphics Fix & Jak X Boot Fix
2016-03-22 12:33:54 +00:00
Catarax
3f9ea4fc79 GameDB: Tony Hawk's Games Crash and Graphics Fix & Jak X Black Screen Patch
Set VU0/1 to Nearest by default in order to fix the graphics and avoid a PCSX2 crash to Tony Hawk's games. Corrected the name of a Tony Hawk's Underground (PAL) release. And Jak X (PAL/NTSC) will now boot correclty, avoiding a black screen by default.
2016-03-22 12:41:13 +01:00
Gregory Hainaut
93067ee30f Merge pull request #1258 from orbea/master
MAN_DIR added
2016-03-22 00:04:44 +01:00
Gregory Hainaut
205b496d5c gsdx: fix gl recording regression 2016-03-21 18:52:26 +01:00
Gregory Hainaut
8e5e770fd1 gsdx hw: Ensure GS memory is always cleared properly
It will fix some issues on FMV

Previous behavior can be restored with the hack "UserHacks_DisableGsMemClear"

Fix #768
And maybe #855
2016-03-21 18:26:22 +01:00
refractionpcsx2
c87e4a4582 Merge pull request #1255 from Catarax/master
GameDB: Tony Hawk's Proving Ground PAL Crash & Graphics Fix
2016-03-21 09:06:43 +00:00
orbea
72699bc988 MAN_DIR added 2016-03-20 23:02:59 -07:00
Catarax
c59406e9e4 GameDB: Tony Hawk's Pro Skater 2003 Crash & Graphics Fix
Set VU0/1 to Nearest by default in order to fix the graphics and avoid a PCSX2 crash (the game is Tony Hawk's Pro Skater 4 in japanese)
2016-03-21 02:40:38 +01:00
Catarax
9f8e4bcef4 GameDB: Tony Hawk's Project 8 PAL Crash & Graphics Fix
Set VU0/1 to Nearest by default in order to fix the graphics and avoid a PCSX2 crash (like other Tony Hawk's episodes made by Neversoft)
2016-03-21 02:27:51 +01:00
Catarax
722448c97b GameDB: Fixed Region Info of SLES-51721 2016-03-20 23:47:22 +01:00
Catarax
007c46eedd GameDB: Tony Hawk's Proving Ground PAL Crash & Graphics Fix
Set VU0/1 to Nearest by default in order to fix the graphics and avoid a PCSX2 crash (like other Tony Hawk's episodes made by Neversoft)
2016-03-20 23:44:03 +01:00
Jonathan Li
5d303c793b cdvd:iso: Use Volume Descriptor to find layer break
The DVD layer 0 sector count is stored in the Volume Space Size field of
the Primary Volume Descriptor on DVD layer 0. This value is the same as
the total sector count for a single layer DVD and the first layer 1 LSN
of a dual layer DVD.

Let's use that to determine the layer 1 start LSN instead of using the
brute force approach. Since this approach is much faster than the
previous approach, the layer break is no longer cached.
2016-03-20 21:42:35 +00:00
refractionpcsx2
6649f43069 VIF: Only delay MSCAL - Fixes #1218 Downhill Domination and Twisted Metal Head-On. Snowblind games still fine 2016-03-20 17:18:17 +00:00
Gregory Hainaut
c43b1ac201 gsdx tc: extend the fast invalidation hack to limit the size of target read
It actually removes the previous hack that read the full target.

Unfortunately snowblind engine game uses big target so the read is very big too (1280x448)
which is killer for the perf. Whereas the game requires only 24x12 texels

Give a 2x speed boost on Champion of Norrath !!!
2016-03-20 18:11:44 +01:00
refractionpcsx2
be34b963e9 Merge pull request #1252 from Catarax/master
GameDB: Various Graphics Fix
2016-03-20 17:06:37 +00:00
Catarax
3f67fac085 GameDB: Tony Hawk's American Wasteland PAL Crash & Graphics Fix
Set VU0/1 to Nearest by default in order to fix the graphics and avoid a PCSX2 crash (like other Tony Hawk's episodes made by Neversoft)
2016-03-20 17:34:32 +01:00
Catarax
ade2c23fb5 GameDB: Tony Hawk's Downhill Jam NTSC Graphics Fix (SLUS-21456)
Set VU0/1 to Nearest by default to Tony Hawk's Downhill Jam in order to fix the graphics (like other Tony Hawk's episodes using the engine by Neversoft).
2016-03-20 17:31:22 +01:00
Catarax
e344ec46a5 GameDB: Tony Hawk's Project 8 NTSC Graphics Fix (SLUS-21444)
Set VU0/1 to Nearest by default to Tony Hawk's Project 8 in order to fix the graphics (like other Tony Hawk's episodes using the engine by Neversoft).
2016-03-20 17:28:57 +01:00
Catarax
0fdaf659d6 GameDB: Tony Hawk's Proving Ground NTSC Graphics Fix (SLUS-21616)
Set VU0/1 to Nearest by default to Tony Hawk's Proving Ground in order to fix the graphics (like other Tony Hawk's episodes using the engine by Neversoft).
2016-03-20 17:25:04 +01:00
Catarax
d998ca2f0f GameDB: Burnout 2 PAL Graphics Fix (SLES-51044)
VU0/1 set to "Negative" by default to the SLES-51044 release, this fix is already used in the SLUS-20497 release on GameDB.
2016-03-20 17:19:58 +01:00
Catarax
d4b79754ad GameDB: Disney's Extreme Skate Adventure Graphics Fix (SLES-51721)
VU0/1 set to "Nearest" by default to the SLES-51721 release, this fix is already done in the SLES-51721 release.
2016-03-20 17:10:02 +01:00
Gregory Hainaut
46ff5dccff gsdx: be debug friendly 2016-03-20 16:15:00 +01:00
Gregory Hainaut
a83b8d62ec gsdx linux: add a gui checkbox for the "fast texture invalidation" hack 2016-03-20 13:59:24 +01:00
Gregory Hainaut
7eb242d3ad gsdx-ogl: remove the ogl_texture_storage option
The previous commits make PBO faster for all drivers.
2016-03-19 01:00:52 +01:00
Gregory Hainaut
68aa182b16 gsdx-ogl: sort the texture upload code
I wanted to do a separate path for palette texture. So far, it isn't very
conclusive.
2016-03-19 00:58:58 +01:00
Gregory Hainaut
46a4d2dc47 gsdx-tc: add UserHacks_DisablePartialInvalidation for snowblind engine game
Games uses very special texture with a lots of repeating.

It is much faster to send the full texture rather than trying to partially invalidate it.

On my gs dump:
FPS: 29 => 68 !
2016-03-19 00:25:58 +01:00
Gregory Hainaut
eb69522641 gsdx-ogl: optimize texture memory upload
Previous code was
1/ unpack texture into local buffer
2/ copy local buffer into gl buffer
3/ copy gl buffer to texture

New code is
1/ unpact texture directly into gl buffer
2/ copy gl buffer to texture

Perf increase (done in native)
DQ8:   255 -> 270 (+5%)
Colin: 126 -> 135 (+8%)
ZoE:   50  -> 54  (+8%)
2016-03-18 20:24:42 +01:00
Gregory Hainaut
da741e294e gsdx-ogl: optimize GPU->CPU memory transfer size
Might help for snow engine game (a little)

Previous code use to read the full texture whereas now it will be limited
to the size of the useful data.
2016-03-18 20:24:42 +01:00
FlatOutPS2
adb17bb071 Remove cheats file from redundant folder
Persona 4 cheats file and the cheats folder a redundant, as the
installer doesn't use this folder, but creates a seperate cheats folder
in My Documents/PCSX2 and the Binary release creates a cheats folder the
first time you start up PCSX2.
2016-03-18 15:38:35 +01:00
Jonathan Li
02ea7d390c lilypad:windows: Switch to includes from Windows SDK 2016-03-17 23:58:19 +00:00
Jonathan Li
834652922a lilypad:windows:xinput: Only support 1.3 and 1.4
1.3 is used on Vista and 7, so we don't need earlier versions.
2016-03-17 23:58:18 +00:00
Jonathan Li
490cb757bf lilypad:windows: Clean up property mess
I probably should have used property sheets as well, but it's still a
good improvement. It does cut down quite a few 64-bit warnings.
2016-03-16 20:54:54 +00:00
Jonathan Li
e760a9566a windows: Move EmbeddedImage.h to utilities project file 2016-03-16 20:41:21 +00:00
Jonathan Li
a487aaf952 Merge pull request #1232 from turtleli/nonxp-toolkit
windows: Switch to Non-XP compatible toolkits
2016-03-16 20:34:27 +00:00
Jonathan Li
c829826870 Merge pull request #1231 from turtleli/cdvd-fixes
cdvdgigaherz: Dual layer DVD fixes
2016-03-16 19:55:20 +00:00
Jonathan Li
bfbc6de7b5 cdvdgigaherz: Fix Dual layer DVD layer 1 read
ReadFile reports that the DVD is reading from the end of file when
attempting to read any layer 1 sectors.

Use the FSCTL_ALLOW_EXTENDED_DASD_IO ioctl to prevent the file system
driver from carrying out boundary checks.
2016-03-16 17:55:27 +00:00
Jonathan Li
2213564977 cdvdgigaherz: Fix TOC creation
cdvdgigaherz only determines whether there is no disc, a CD, a single
layer DVD or dual layer DVD in the drive. It does not detect whether a
CD/DVD is a PS2 CD/DVD or not.

Fix the missing TOCs.
2016-03-16 17:55:26 +00:00
Jonathan Li
9e2f309e30 cdvdgigaherz: Fix incorrect dual-layer DVD track info
Single-session DVDs only have 1 track, regardless of whether the DVD is
single or dual layered.
2016-03-16 17:55:19 +00:00
Gregory Hainaut
ba458c1391 Merge pull request #1209 from rz5/master
Exclude 'PCSX2-linux.sh' from Windows builds.
2016-03-16 14:16:19 +01:00
Jonathan Li
643db78cc4 cdvdgigaherz: Fix last resort DVD size calculations
The calculated size values were off by one for single layer DVDs, off by
two for dual layer PTP DVDs, and just wrong for OTP DVDs.

Usually the IOCTL_DISK_GET_LENGTH_INFO ioctl will have succeeded already.
2016-03-15 23:20:06 +00:00
Jonathan Li
41986f4307 cdvdgigaherz: Remove unneeded IOCTL_DVD_READ_STRUCTURE ioctls
Only 1 IOCTL_DVD_READ_STRUCTURE ioctl call is necessary for determining
the DVD media type and layer break address. All the necessary
information is already present in the layer 0 physical descriptor.
2016-03-15 23:19:10 +00:00
rz5
0b3542a573 Move linux file to linux-various to avoid including it in win builds.
Changed the condition around for sake of ease of reading.
2016-03-15 21:47:11 +00:00
Gregory Hainaut
0ef8ddb2a2 Merge pull request #924 from kust2708/onepad-gui
Onepad GUI for Linux - New wxWidget interface
2016-03-15 20:23:44 +01:00
Jonathan Li
7292955600 cdvdgigaherz: Fix sector address endian issue
The sector addresses returned when reading the layer information from a
DVD are big-endian. Convert the addresses to little endian.
2016-03-15 17:34:36 +00:00
Jonathan Li
5db0d682b8 cdvdgigaherz: Fix detection typo 2016-03-15 17:34:35 +00:00
Jonathan Li
d07076b9d4 cdvdgigaherz: Dual layer DVD type/layer 1 start LSN fixes
For dual layer DVDs, CDVDgetDualInfo() should return the first layer 1
LSN, not the last layer 0 LSN, which is what GetLayerBreakAddress()
returns. This matches what the internal ISO reader returns.

Also, PTP DVDs should return a value of 1 for the media type, not 2.

Finally, adjust the CDVDgetDualInfo() return value so PCSX2 correctly
recognises dual layer DVDs.
2016-03-15 17:28:43 +00:00
Akash
9b0ecdf43f GSDX-OGL: gray out MSAA on opengl renderer
It's currently unimplemented on OpenGL renderer.
2016-03-14 18:38:40 +05:30
Jonathan Li
b516c1001a windows: Set _WIN32_WINNT to 0x0600 (Windows Vista) 2016-03-13 13:41:16 +00:00
Jonathan Li
9ed9b2d8cd windows: Switch to DefaultPlatformToolset aka non-XP toolsets
Basically I ran
find . -name "*.vcxproj" -exec sed -i -e 's/_xp//' {} \;

This will likely break XP, but it paves the way on Windows for a PCSX2
that does not require the DirectX redistributables to be installed for
Windows 8, 8.1 and 10 users. Windows Vista and 7 users will still require
the DirectX redistributable files for XInput and XAudio, though PCSX2
should still be capable of running if a user does not actually use either
of them.
2016-03-13 12:04:28 +00:00
Gregory Hainaut
4ff1f31ecd i10n: add fr mo files 2016-03-12 16:15:48 +01:00
Gregory Hainaut
653998e005 gsdx: add vertex data offset in comment
Avoid to recompute them every time I want to decode the vertex stream
2016-03-12 15:53:38 +01:00
Gregory Hainaut
de7d127c52 gsdx-ogl: create a small macro to load function pointers 2016-03-12 15:52:36 +01:00
Gregory Hainaut
95ef4e20f8 gsdx-ogl: load GL_ARB_viewport_array function pointer for the future 2016-03-12 15:52:36 +01:00
Gregory Hainaut
56c2e94daf gsdx-ogl: sort extension requirement
All GL4 extensions supported by DX10 class GPU will be soon mandatory

Namely:
* GL_ARB_copy_image
* GL_ARB_texture_barrier
* GL_ARB_clip_control
* GL_ARB_direct_state_access
* GL_ARB_separate_shader_objects
* GL_ARB_buffer_storage
2016-03-12 15:52:36 +01:00
Gregory Hainaut
01b7f1ae18 Merge pull request #1230 from TotalCaesar659/master
Adding russian translation for the pop-up comment
2016-03-12 15:42:31 +01:00
Gregory Hainaut
a3788c4e98 Merge pull request #1225 from PCSX2-Alpha/scaling_fix
GSDX: set a safe limit to Framebuffer width
2016-03-12 15:42:18 +01:00
ramapcsx2
e7581f4e15 Merge pull request #1229 from FlatOutPS2/master
GameDB: Adding VU XGKick hack game fix for WRC II Extreme
2016-03-12 11:40:31 +01:00
TotalCaesar659
b508a07d74 Merge pull request #1 from TotalCaesar659/TotalCaesar659-patch-1
Update PCSX2.desktop.in
2016-03-12 01:01:33 +03:00
TotalCaesar659
afa375f220 Update PCSX2.desktop.in 2016-03-12 00:21:57 +03:00
Akash
997f0535f5 GSDX: Set a safe limit to Framebuffer width
There are likely few games (RE4) which constantly change the FBW register value causing the framebuffer width to be updated at every interval. Adding a safe limit (512) similar to frame buffer height would prevent such constant changes of the framebuffer width when FBW changes once again to an even lower value.
2016-03-11 07:28:05 +05:30
Gregory Hainaut
d378021dee Merge pull request #1221 from piorrro33/master
Big French translation update
2016-03-10 20:28:41 +01:00
Gregory Hainaut
ec57f1305a gsdx: detect rendering outside of the framebuffer
Could help to detect rendering issue (for example missing fmv)
2016-03-10 19:03:39 +01:00
Gregory Hainaut
bc73195193 gsdx-ogl: pack more tightly the FS UBO
Merge TA vec2 + Af vec1 into a single vec4
2016-03-10 18:29:05 +01:00
FlatOutPS2
696d95b112 Renaming WRC to appropriate abbreviations 2016-03-10 17:33:21 +01:00
FlatOutPS2
0b10ea6e36 Added XGKick hack game fix to GameIndex file 2016-03-10 16:29:29 +01:00
Jonathan Li
3e278a2e75 Merge pull request #1197 from turtleli/gsdx-png
Gsdx: PNG screenshots (Windows), use libpng directly
2016-03-08 23:49:56 +00:00
refractionpcsx2
236e5fcf9d Merge pull request #1226 from PCSX2-Alpha/GameDB_once_again
GameDB: Remove some unnecessary old patches
2016-03-08 09:59:03 +00:00
Akash
8e83564ce9 GameDB: Remove some old patches 2016-03-08 15:11:51 +05:30
refractionpcsx2
dadbebd3ea Merge pull request #1223 from PCSX2-Alpha/Game_DB
GameDB: Add Prafull's Gamefix patches
2016-03-07 16:41:40 +00:00
Akash
88900ed0d5 GameDB: Add Prafull's Gamefix patches 2016-03-07 00:14:20 +05:30
Gregory Hainaut
7b8616ac7b gsdx-ogl: add function pointer for query object 2016-03-06 13:39:24 +01:00
Jonathan Li
5abacd3667 Merge pull request #1205 from NZJenkins/Delay-bp-conditions
Check delay breakpoint conditions
2016-03-04 18:16:08 +00:00
Jonathan Li
34ea33f237 ci: Fix Travis CI 32-bit builds
Build broke because Chrome is now 64-bit only. We don't use Chrome
anyway, so let's just delete the Chrome repository list.
2016-03-04 00:12:47 +00:00
NZJenkins
ba706b6dab Check delay breakpoint condition
isBreakpointNeeded returns if breakpoints are needed for any combination
of the current pc and delay slot.
dynarecCheckBreakpoint checks conditions for each breakpoint slot.
2016-03-04 11:26:37 +13:00
Jonathan Li
6b950d0408 gsdx: Allow dump and capture PNG compression to be changed
Valid values for png_compression_level are from 0 (no compression) to 9
(max compression). The default is 1.

v2: Use zlib Z_BEST_SPEED (1) and Z_BEST_COMPRESSION (9) defines.
2016-03-02 22:58:45 +00:00
Jonathan Li
a97cbf038c gsdx-d3d9: Save screenshots as PNG files
v2: Avoid unnecessary memory copy
2016-03-02 22:57:17 +00:00
Jonathan Li
d865efceb9 gsdx-d3d11: Save screenshots as PNG files 2016-03-02 22:57:16 +00:00
Jonathan Li
cf939620ea gsdx-ogl: Save depth image as RGB and alpha images 2016-03-02 22:57:16 +00:00
Jonathan Li
aa3f4c74dc GSDumpGUI: Add png image display support 2016-03-02 22:57:15 +00:00
Jonathan Li
97215008c9 ci|cmake|debian: Remove png++ build dependencies
GSdx now uses libpng directly. png++ is now unused, so let's remove it.
2016-03-02 22:57:15 +00:00
Jonathan Li
ee5861efc8 gsdx: Remove non-PNG code
It's no longer in use.
2016-03-02 22:57:12 +00:00
Jonathan Li
38edd77034 gsdx-ogl:windows: Save screenshots as PNG files
v2: Add zlib directory to property sheet
2016-03-02 22:52:08 +00:00
Jonathan Li
87dcfbc645 gsdx-png: Use libpng directly instead of via png++
v2: Increase compression to maximum
v3: Add zlib to GSdx build dependencies
v4: Reduce memory usage
2016-03-02 22:48:54 +00:00
Gregory Hainaut
edef3ad8c3 Merge pull request #1170 from PCSX2-Alpha/TC_Scaling
GSDX: Detect RT size based on display and frame registers.
2016-03-02 13:51:28 +01:00
yop yop yop
af01e95164 added comment 2016-03-02 20:36:51 +09:00
Gregory Hainaut
883963232f Merge pull request #1211 from PCSX2/atomix-fetch-correction
Core|Common: restore old interlocked add/sub behavior
2016-02-29 22:29:54 +01:00
Gregory Hainaut
3d5c1b4ef8 Core|Common: restore old interlocked add/sub behavior
interlocked* returns the new value whereas fetch_add/sub returns the old value.
2016-02-29 21:43:56 +01:00
Gregory Hainaut
4b00ec9d4f Merge pull request #1210 from IlDucci/master
Updating Spanish Translation
2016-02-29 19:27:53 +01:00
IlDucci
2e3a7386e9 Updating Spanish Translation
Updated Spanish translation with latest changes.
2016-02-28 22:52:19 +01:00
Gregory Hainaut
e57a75ac55 Merge pull request #1202 from PCSX2/atomic-v2
Atomic v2
2016-02-28 22:08:29 +01:00
Gregory Hainaut
610bf8a277 Common: delete most of the deprecated atomic API 2016-02-28 15:29:31 +01:00
Gregory Hainaut
5ca92ecd67 Common: port code to std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
ca8955daf3 MTVU: port ScopedLockBool to std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
3a4787dd98 MTVU: partially port code to MTVU
Remains volatize as MTGS and the ScopedLockBool stuff
2016-02-28 15:29:31 +01:00
Gregory Hainaut
40b1a3996a VU: port BaseVUmicroCPU to std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
8555a87380 GS.h: use std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
5a84a0d8d2 MTGS: port to std::atomic
Except the ring pointers m_ReadPos/m_WritePos because it requires
memory access optimization
2016-02-28 15:29:31 +01:00
Gregory Hainaut
410922a943 Deci2: port to std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
3a9bd90a3b Gif: port code to std::atomic 2016-02-28 15:29:31 +01:00
Gregory Hainaut
92078b1c58 System: port to std::atomic
v2: use an explicit int type for clang
// multiple conversions from switch condition type
// 'std::atomic<ExecutionMode>' to an integral or enumeration type

v3/v4: use .load to read variable (clang 3.7)
v5: add back 'std::atomic<ExecutionMode>' now that .load is used everywhere
2016-02-28 15:29:00 +01:00
Gregory Hainaut
34826c9506 PluginManager: port to std::atomic 2016-02-28 15:29:00 +01:00
Gregory Hainaut
97cc468509 gui: use std::atomic bool to manage the gui
V2: Don't use 64 bits atomic (I'm not sure it is legal on 32 bits)
Note: Clang-3.7 fails to link
2016-02-28 15:29:00 +01:00
Gregory Hainaut
e5d4f2c24f EE: use std::atomic<bool> for reset variable 2016-02-28 15:29:00 +01:00
Gregory Hainaut
60fe26ff2f common:threading: Port NonblockingMutex to std::atomic_flag 2016-02-28 15:29:00 +01:00
Gregory Hainaut
89fad4d3ad common: port ScopedPtrMT to std::atomic
v2: s/NULL/nullptr/
v3: tentative fix for MSVC
// ScopedPtrMT.h(91, 0): error C2593: 'operator ==' is ambiguous
2016-02-28 15:29:00 +01:00
Gregory Hainaut
db379ad7b5 Merge pull request #1206 from pgert/master
Update & Improvements of Swedish GUI-translation.
2016-02-28 15:21:50 +01:00
Jonathan Li
2d4e2fb8cb windows: spu2-x does not use the emitter
So let's not specify it as a build dependency.

Also remove some unnecessary manual library linkage and remove the
wsWidgets GUI property sheet, which does nothing useful.
2016-02-28 11:08:08 +00:00
Jonathan Li
66050db322 3rdparty: add zlib project reference to libpng
It was missing.
2016-02-28 03:09:19 +00:00
Jonathan Li
bfeb3e801a gsnull: Remove GSsetWindowInfo
PCSX2 doesn't actually use it.

GSnull also seems a bit behind the current GS plugin API - perhaps it
should be removed.
2016-02-28 02:45:59 +00:00
Jonathan Li
6c7cfe9e4d xpad: Change to Unicode project and remove unused headers
Also remove an unnecessary ASSERT define, and delete the copy
constructors.
2016-02-28 02:45:10 +00:00
kust2708
de5f7f70e2 OnePad: Fix multi-gamepad support
Can change the number of gamepad with the constant GAMEPAD_NUMBER in the onepad.h file
2016-02-27 22:11:08 +01:00
kust2708
0b0e2a3f34 Onepad : Fix compilation with wx2.8
Feedback fix, when more than two gamepad are used simultaneously.
Change all 'this->' by 'm_'
fix on the hack sixaxis pressure
Modification of the size (1000x760 -> 1000x730)
2016-02-27 21:45:37 +01:00
kust2708
02b5d80bb9 Onepad : Modification for the new background
Add new checkbox for the hack ds3 pressure
2016-02-27 21:45:37 +01:00
kust2708
0e602ab50b OnePad : Add set all buttons + fix bug
Can set all buttons. Buttons labels are not printed correctly in spite of update and refresh
The cause of this problem come from the while in the config_key function which monopolise ressources

Add arrow pictures implementation

OnePad : bug fixed (assert failure)
Modification of copyright
2016-02-27 21:44:58 +01:00
Pierre GRASSER
e98eedb16a Big French translation update 2016-02-27 13:47:51 +01:00
pgert
72a5425c3c Update & Improvements of Swedish GUI-translation. 2016-02-26 23:00:41 +01:00
Jonathan Li
234bf8af34 3rdparty: wxWidgets: Remove WS_POPUP style from ShowFullScreen
WS_POPUP causes fullscreen tearing when using OpenGL and the GSPanel
rendering area exactly covers the full screen. (always affects stretch
mode, but most people have 16:9 monitors, so in general the widescreen
16:9 mode is also affected).

Fixes #1075
2016-02-25 23:52:32 +00:00
Jonathan Li
85489d05e0 lilypad:windows: Set Unicode in project file instead
Also move the DirectInput define.
2016-02-25 23:36:11 +00:00
Jonathan Li
6fa7a8989c lilypad:windows: LoadLibrary is not required for Raw Input
It's been available since XP and it's not special like XInput (where we
might have SCP in the middle) so let's have the linker resolve the
functions at link time.
2016-02-25 23:36:11 +00:00
Jonathan Li
fd8c762772 lilypad: Fix gcc strict-aliasing warning
The fixme I added was likely wrong. Not sure what I was thinking.
2016-02-25 23:36:11 +00:00
yop yop yop
3d38cdb609 GameDB: SLES-52895 and SLUS-20904 are same, and patch works. 2016-02-25 16:14:32 +09:00
Jonathan Li
1103f9046a Merge pull request #1201 from PCSX2-Alpha/minor_changes
PCSX2-WX: Minor changes to core panels/dialog
2016-02-24 19:59:40 +00:00
Akash
b07b06a9fb GSDX-Texture Cache: Rework scaling function
The following patch uses the height value of the display rectangle rather than make an estimation of the Frame buffer height when the game uses a non-referenceable height (or) width.
2016-02-24 09:14:01 +05:30
Gregory Hainaut
cb776d2f50 gsdx:atomic: better match the old if(!_interlockedbittestandset(&m_mapped, 0)) behavior
Thanks @turtleli
2016-02-23 18:43:44 +01:00
Akash
e1febf7ec1 EE/VU Panel: Remove unnecessary code
Removed some unneeded explicit calls of the enable function and also corrected the placement of braces on a function. ( do note that only the specific function at the file used a different placement of the braces)

Also fix the grayout behavior of SuperVU recompiler option when DISABLE_SVU is defined. (thanks to turtleli)
2016-02-23 17:51:20 +05:30
Akash
35f599833c EE-Panel: gray out EE Cache when recompiler is set 2016-02-23 17:51:12 +05:30
Gregory Hainaut
c0e58e48ae Merge pull request #467 from PCSX2/atomic
Replace volatile with real atomic
2016-02-22 21:20:03 +01:00
Gregory Hainaut
f9b4ff17a5 gsdx: drop interlocked* function on linux 2016-02-22 19:12:50 +01:00
Gregory Hainaut
a601991f91 gsdx: add atomic for transaction scope object 2016-02-22 19:12:50 +01:00
Gregory Hainaut
f904cd6c4a gsdx: add atomic for SW Renderer
V2: fix assertion
2016-02-22 19:12:37 +01:00
NZJenkins
729218ec4b debugger: Fix opcode lookup crash 2016-02-21 22:39:29 +00:00
Gregory Hainaut
9bbb0fe1f6 gsdx: add atomic for texture upload
V2: fix init of atomic flag object
2016-02-21 18:17:53 +01:00
Gregory Hainaut
1db5e0c0bf cmake: create a prof build type
It is the same as a release build but with the debug symbol and the
frame pointer.
2016-02-21 16:24:47 +01:00
Gregory Hainaut
a66c911fed cmake: factorize debug/dev define 2016-02-21 16:17:10 +01:00
Gregory Hainaut
8987ca61a1 cmake: Og for debug build + extra debug information (ggdb3)
GSdx is utterly slow on debug build. -Og enable a couple of debugger-friendly optimization.
2016-02-21 16:05:00 +01:00
Akash
ef9b8b792f About Box: Fix a very minor typo 2016-02-21 17:45:23 +05:30
Gregory Hainaut
1e018d8a8a i10n: refresh POT
Add the new VU gamefix string
2016-02-21 11:55:20 +01:00
Gregory Hainaut
9ba470fc63 gsdx-ogl: properly handle t_float in GS
f8c442cf76 misses the swap of t_float in GS

Fix regression in Okami

Bonus: factorize VS_WILDHACK in the VS
2016-02-21 11:48:30 +01:00
Gregory Hainaut
d53ed5bbee i10n: update pre-build mo 2016-02-21 11:37:15 +01:00
yop yop yop
a788173534 GameDB: Default to Positive round mode for Ed, Edd, 'n Eddy 2016-02-21 16:51:44 +09:00
ramapcsx2
eee10a10d8 Merge pull request #1192 from battletoast/master
Update german translation
2016-02-20 15:49:54 +01:00
Gregory Hainaut
bef8447447 Merge pull request #1186 from PCSX2/gsdx-unoptimize-vs
gsdx-ogl: make VS more generic
2016-02-20 10:39:19 +01:00
Gregory Hainaut
6002719c8c Merge pull request #1185 from PCSX2/tekken5-fast-depth
gsdx: no depth lookup optimization
2016-02-20 10:24:21 +01:00
Gregory Hainaut
f569606475 Merge pull request #1184 from PCSX2/invert-unsafe-fbmask-option
gsdx-ogl: invert behavior of unsafe user hack
2016-02-20 10:09:39 +01:00
Gregory Hainaut
e3867ffa41 Merge pull request #1193 from piorrro33/master
French localization update, 2nd try
2016-02-19 16:28:33 +01:00
Pierre GRASSER
5b5655c989 French translation update (100% complete)
Pretty big translation update. It is now 100% complete, but I'll go on using it to see if I forgot some things.

Pretty big translation update. It is now 100% complete, but I'll go on using it to see if I forgot some things.

Localization update #2

3rd edit (and the last, hopefully)

4th edit

5th edit (the last, for sure)

Fixed a string that was too long and didn't fit

 This is a combination of 2 commits.
2016-02-19 13:10:14 +01:00
battletoast
fe45975f43 Update pcsx2_Iconized.po 2016-02-18 21:21:41 +01:00
Gregory Hainaut
1853d0d16d gsdx: no depth lookup optimization
Don't lookup a depth buffer if depth test is always pass without write

Boost performance on Tekken5 when depth emulation is enabled in openGL
(Tekken5 sets same address for both the RT and the depth but depth is disabled)

v2:
Keep ds if DATE is enabled (some implementation uses a stencil buffer)
Be more aggressive to avoid an useless depth lookup
2016-02-18 20:35:50 +01:00
Gregory Hainaut
8637516565 linux: fix the \n handling 2016-02-18 19:02:16 +01:00
Gregory Hainaut
f8c442cf76 gsdx-ogl: make VS more generic
Texture coordinate could be dummy/float/int integral/int normalized.

Old behavior:
* VS was in charge to select the texture coordinate
* int integral format wasn't supported

New behavior:
* Always compute all formats
* FS will be in charge to select the good format

Impact:
* VS will be slightly slower but it reduces shaders permutation from
   little to 0 (won't be bad for CPU)
* FS speed isn't impacted as 2 separate code paths were already required
  to support both format
* Rasterizer will be 33% slower but unlikely to be the limited factor of
  the GPU
* In future we could directly use the integral format in the FS.

V2: remove useless PSin_t
2016-02-18 19:02:05 +01:00
Gregory Hainaut
0dadc124d3 gsdx-ogl: invert behavior of unsafe user hack
It would be on by default. Unsafe & fast path.

The hack is a security if someone encounters any issue

v2: update Windows gui file
v3: fix typo in tooltip and linux gui
2016-02-18 18:48:13 +01:00
Gregory Hainaut
1e549b0ab4 Merge pull request #1190 from piorrro33/patch-2
Typo correction #2
2016-02-18 14:36:40 +01:00
Pierre "Piorrro" GRASSER
30d1c0e0b5 Typo correction #2
I forgot to edit the other strings, last time.
2016-02-18 13:49:56 +01:00
refractionpcsx2
44e6445180 Merge pull request #1183 from netoale/patch-1
GSDX: Add The Simpsons Game (F) CRC to GSCrc.cpp
2016-02-17 11:12:14 +00:00
netoale
b910e20413 Update GSCrc.cpp
added french version of Simpsons The Game 0x5C1EBF61
2016-02-15 21:56:53 +01:00
refractionpcsx2
909584d473 GSDX: Disable Nvidia hack when in native res 2016-02-15 20:27:51 +00:00
Jonathan Li
aff75131e4 gui: Fix console log source menu item behaviour
Fixes an issue where the Enable all/Disable all/Restore Default menu
items in the Console Log Sources menu do not immediately enable/disable
CDVD log output.
2016-02-15 20:05:17 +00:00
Jonathan Li
999166fa58 lilypad: Fix some gcc and clang warnings
Fixes writable-strings, missing-braces, and undefined-inline warnings.
2016-02-14 22:25:17 +00:00
Jonathan Li
2b558a9606 lilypad: Make command/response debug output portable
It also makes the log viewable in Windows Notepad.

Also fix an off-by-one and fix the missing C++ exception settings.
2016-02-14 22:25:17 +00:00
kust2708
823a37aed7 OnePad : New GUI based on gwWidget
Buttons done, configuration initialization done.
Still need to add Gamepad and Joysticks configuration frames.
Require png file for the moment (the embedded picture will be fixed after).

New Onepad GUI based on wxWidget (Main frame almost finish)
Background picture is now embedded
Button binding works
Loading and saving works
Need to add feedback and gamepad, joysticks configuration frame

Modification of the onepad CMakeList.txt
Automatic generation of images headers using perl script

Modification of the test feedback function
2016-02-14 17:26:31 +01:00
kust2708
5b287deca2 Onepad : Add GUI images 2016-02-14 17:25:28 +01:00
Jonathan Li
2b61edb80d lilypad:windows: Remove NO_CRT configurations
It's Windows-only and isn't actually used.
2016-02-14 13:24:59 +00:00
Gregory Hainaut
4061539e1b Merge pull request #1181 from piorrro33/master
Typo correction
2016-02-14 13:36:54 +01:00
Jonathan Li
1718d07f94 Merge pull request #1174 from NZJenkins/stepOut-Fix
StepOut breakpoint fix
2016-02-14 11:39:39 +00:00
Pierre "Piorrro" GRASSER
d7b40433db Typo correction 2016-02-14 09:30:49 +01:00
BoopFtang
fd4997ab94 StepOut breakpoint fix
Fixes #1164
SetSkipFirst wasn't called
2016-02-14 19:22:43 +13:00
Gregory Hainaut
8ae7f60b04 Merge pull request #1175 from PCSX2-Alpha/GSDX_stuffs
GSDX: Vertical frequency corrections and extra stuffs
2016-02-13 18:15:49 +01:00
Gregory Hainaut
85cf009f80 Merge pull request #1176 from Asmodean-/master
GSdx: Update Post-Processing
2016-02-13 18:13:48 +01:00
Gregory Hainaut
dc347e4854 Merge pull request #1178 from PCSX2/opengl-release-mode
gsdx-gl: use CONTEXT_FLAG_NO_ERROR_BIT_KHR to reduce driver overheard
2016-02-13 18:13:05 +01:00
Gregory Hainaut
81a4ca5667 Merge pull request #1177 from PCSX2-Alpha/EditorConfig
EditorConfig: Enforce Indent size for specific files on project
2016-02-13 17:38:33 +01:00
Kieran Hanrahan
7236ed93e9 Update GSdx_FX_Settings.ini 2016-02-13 16:02:37 +00:00
Kieran Hanrahan
fc0cebe7c5 More scaling workarounds 2016-02-13 16:02:14 +00:00
Jonathan Li
c47501d228 lilypad: Fix function name typo 2016-02-13 15:03:31 +00:00
Jonathan Li
f423549257 pcsx2: Fix savestate saving crash
My bad.
2016-02-13 14:57:55 +00:00
Gregory Hainaut
77f9113301 gsdx-gl: use CONTEXT_FLAG_NO_ERROR_BIT_KHR to reduce driver overheard
Didn't test it yet as my driver is too old.

Note: might break the open source drivers.
2016-02-13 15:28:11 +01:00
Karasuhebi
c843130854 Change Playstation to PlayStation in the About dialog and the CLI dialog.
Changed the word "Playstation" to the proper "PlayStation" in the About
dialog and the Command Line Options dialog.

Add a space between PlayStation and 2.
2016-02-13 13:58:58 +01:00
Gregory Hainaut
38b9198dba Merge pull request #1173 from turtleli/replace-scoped-ptr
Replace ScopedPtr with unique_ptr
2016-02-13 13:49:18 +01:00
ramapcsx2
32182fe126 always fflush ee/iop logs. fixes the test suite timing out on windows. 2016-02-13 12:14:40 +01:00
Jonathan Li
255a62dd21 Merge pull request #1144 from ekudritski/ekudritski-popn-patch-1
Add pop'n music controller support to LilyPad.
Also fix some warnings.
2016-02-13 00:15:15 +00:00
Kieran Hanrahan
c05195a47b Update GSdx_FX_Settings.ini 2016-02-12 21:29:28 +00:00
Kieran Hanrahan
eec86488e8 Add GS scaling workaround logic 2016-02-12 21:29:18 +00:00
Kieran Hanrahan
5ace5a5d8e Update GS post-processing
Update GSdx FX, & added debanding effect, and Timothy Lottes CRT by request.
2016-02-12 18:13:23 +00:00
Kieran Hanrahan
b2b0cf11eb Update GSdx_FX_Settings.ini 2016-02-12 18:11:06 +00:00
Gregory Hainaut
8ab46827de tests: be more user friendly
Default inis dir
Use 8 CPU by default
Print a nice gdb command to replay the test
2016-02-12 19:10:36 +01:00
Akash
0a60e504b6 EditorConfig: Enforce Indent size for specific files 2016-02-12 21:16:09 +05:30
ekudritski
e2c5236706 Just some cleaning 2016-02-12 09:57:08 +02:00
Akash
a20edc1783 GitIgnore: Ignore wav files for local diff 2016-02-12 12:05:43 +05:30
Akash
e810428c86 GSDX: Remove some old comments
Disgaea 2 intro FMV now works fine with/without upscaling. (confirmed
with rama)
2016-02-12 12:05:42 +05:30
Akash
465cfb4fad PCSX2-GSFrame: Make upscaling impact resolution values 2016-02-12 11:57:41 +05:30
Akash
67a7a63a36 GSDX: Add vertical frequency for all video modes 2016-02-12 05:28:30 +05:30
Akash
1445bf7fb1 GSDX: Extend macros for all video modes.
The following patch detects the other video modes based on Phased lock loop divider (LC)
2016-02-12 04:43:57 +05:30
Jonathan Li
f67cb001df Merge pull request #1172 from NZJenkins/master
Debugger breakpoint bugfix
2016-02-11 22:47:40 +00:00
Jonathan Li
b1404cff37 ci: Fix Travis CI clang build
There are dependency issues with g++-4.8-multilib, so let's use
g++-4.9-multilib from the toolchain repo instead.

[skip appveyor]
2016-02-11 20:44:56 +00:00
Gregory Hainaut
50caca4002 EE: replace EE/FPU mov opcode when FPU_RECOMPILE isn't enabled
It will be easier for testing if we change the format of the FPU register
2016-02-11 18:53:28 +01:00
Gregory Hainaut
122baa17a2 EE: intruder detected 2016-02-11 18:43:33 +01:00
BoopFtang
83a877c3dc Fixes #1161
In the case of a disabled breakpoint at the address, false would be
returned without checking for temp breakpoint
2016-02-10 15:54:56 +13:00
Gregory Hainaut
253e801f51 linux: enable float operation on SSE unit
Potentially faster and requires to flush denormal float to 0
2016-02-09 18:24:12 +01:00
Jonathan Li
e92636ab1a utilities: Remove ScopedPtr and pxObjPtr implementation
Both are now unused.
2016-02-08 22:31:45 +00:00
Jonathan Li
a74677acf7 utilities: Convert ScopedPtr to unique_ptr 2016-02-08 22:31:45 +00:00
Jonathan Li
499fed40f2 pcsx2: Convert ScopedPtr to unique_ptr 2016-02-08 22:31:45 +00:00
Jonathan Li
8889f4fdcc gui: Replace ScopedPtr with unique_ptr 2016-02-08 22:31:45 +00:00
Jonathan Li
92bb849e7c Use unique_ptr instead of ScopedPtr for exceptions 2016-02-08 22:31:45 +00:00
Jonathan Li
115b14bc94 cdvd: Replace ScopedPtr with unique_ptr 2016-02-08 22:31:45 +00:00
Gregory Hainaut
5b74374bb2 Merge pull request #1169 from PCSX2/remove-mmx
Remove mmx
2016-02-08 19:17:24 +01:00
Gareth Poole
0b362fd866 GSdx: Fix spelling issues in GSdx Linux configuration window 2016-02-08 19:14:56 +01:00
Gregory Hainaut
fe0229aed0 EE: remove dead code 2016-02-08 09:52:31 +01:00
Gregory Hainaut
5611333c29 PCSX2: remove reporting of mmx/3dnow 2016-02-08 09:16:52 +01:00
Gregory Hainaut
5140a2e107 x86emitter: remove MMX support 2016-02-08 09:13:24 +01:00
Gregory Hainaut
0f81482ed1 EE: remove most of MMX allocator code 2016-02-07 13:21:11 +01:00
Gregory Hainaut
278411898a EE: drop MMX/FPU state management
Useless as MMX code is removed
2016-02-07 13:07:55 +01:00
Gregory Hainaut
9af112b38f EE: remove _clearNeededMMXregs and deadcode
Nop because needed is always 0
2016-02-07 13:00:48 +01:00
Gregory Hainaut
095437d0c7 EE: _flushMMXregs is a nop because inuse==0 2016-02-07 12:57:56 +01:00
Gregory Hainaut
45443b48ef EE: freeMMXreg is a nop because inuse == 0 2016-02-07 12:56:30 +01:00
Gregory Hainaut
6f561d6bd7 EE: delete the nop _deleteMMXreg() 2016-02-07 12:53:17 +01:00
Gregory Hainaut
c3afcffc50 EE: replace _checkMMXreg and _allocCheckGPRtoMMX
Both functions return -1

Remove all conditions (-1 >= 0)
2016-02-07 12:46:34 +01:00
Gregory Hainaut
e1651c752a EE: mmxregs[i].inuse is never set to true
Let's remove code that depends on it

_deleteMMXreg/_checkMMXreg/_getNumMMXwrite/_flushMMXunused are now stub
2016-02-07 12:23:15 +01:00
Gregory Hainaut
054d8c4c9f EE: remove more unused MMX functions 2016-02-07 12:08:33 +01:00
Gregory Hainaut
a0e619bcd7 VTLB: disable MMX optimization
memory copy will be done in SSE or X86 only. It is very unlikely that
it was used anyway (need 64 bits transfer and no XMM register available)

Remove the now useless _allocMMXreg and _getFreeMMXreg too
2016-02-07 12:06:41 +01:00
Gregory Hainaut
15390cd966 EE: remove unused MMX path
All commented and disabled code
2016-02-07 12:02:17 +01:00
Gregory Hainaut
ea1a9943fc EE: disable the old mmx code
Time to test and report bug or speed issue.
2016-02-07 11:35:03 +01:00
Gregory Hainaut
51b40c6b18 gsdx: move black CRC hack from openGL to DX level
Rendering is much nicer this way
2016-02-06 17:32:12 +01:00
Gregory Hainaut
c2aa56ac38 EE: fix shift constant propagation in new SSE code
It seems constant must be flushed before any call to _allocGPRtoXMMreg
2016-02-06 16:47:44 +01:00
Gregory Hainaut
fd4bc63854 EE: disable VF delete when SVU is disabled 2016-02-06 15:51:59 +01:00
Gregory Hainaut
a9a955f8b9 EE: port MMX code to SSE for shift opcode
Code need to be enabled with a define (NO_MMX 1)

Code was tested with ps2autotest but it need more tests. I need to check
alignement issue too.

Globally code is potentially a little slower than SSE.
The trick is that we need to shift only the 64 lsb whereas SSE will
shift the full 128 bits register.

Current implementation flush the lsb and drop the full register. It is
unlikely that next intruction will be done in SSE anyway.

Note: it would be easier in x64 arch
2016-02-06 15:24:26 +01:00
Gregory Hainaut
119f6deb24 EE: add some assert(0) on likely unused code
if someone hit the assertion please report it
2016-02-05 00:27:29 +01:00
Gregory Hainaut
6ac76c86d7 recompiler: document the register allocation 2016-02-05 00:27:29 +01:00
Jonathan Li
224370e866 debugger: Fix breakpoint window list item deletion
Fixes #1163.
2016-02-04 19:12:48 +00:00
Jonathan Li
98de0d4351 pcsx2: Do not move console with main frame if maximised 2016-02-04 19:12:48 +00:00
Jonathan Li
d6e702a9eb pcsx2: Do not save console position when maximised 2016-02-04 19:12:47 +00:00
Jonathan Li
93dc772565 GSdx: Missed a _WINDOWS usage...
Visual Studio Find and Replace can only be trusted if all the files are
included in the project. I suppose it's time to add any missing files
to the relevant projects...
2016-02-04 19:12:46 +00:00
Gregory Hainaut
d59e4ca4d1 intrinsic: add rotate support for clang.... 2016-02-01 18:46:10 +01:00
Elgar
8c5c4608d2 LilyPad: Add support for Pop'N Music Controller 2016-02-01 15:45:26 +02:00
Gregory Hainaut
85f64b8c08 Merge pull request #1137 from PCSX2-Alpha/CRTC_Scaling
PCRTC: Proper handling for 720P/1080P video modes.
2016-02-01 10:11:58 +01:00
Gregory Hainaut
c20dc61f16 EE: fix compilation when branch recompilation is disabled 2016-01-31 23:45:08 +01:00
Gregory Hainaut
3ec458ef4f FPU: sqrt(-0) == 0
It is marked as a special case in the doc (sqrt(-0) == -0)
but test on the PS2 show the contrary. Quite a mistery
2016-01-31 23:43:55 +01:00
refractionpcsx2
6391b00c00 Merge pull request #1158 from AdmiralCurtiss/memcard-documentation
Add Memory Card File System documentation to repository for easy reference.
2016-01-31 20:24:45 +00:00
Admiral H. Curtiss
35a1c9a133 Add Memory Card File System documentation to repository for easy reference.
Originally from http://www.csclub.uwaterloo.ca:11068/mymc/ps2mcfs.html.
It's public domain, so there's no problem with just putting it in here.
2016-01-31 20:42:29 +01:00
Gregory Hainaut
64001c9643 Merge pull request #1153 from jobermayr/master
Dump.cpp: Fix Linux build.
2016-01-31 17:55:17 +01:00
refractionpcsx2
da347aa077 Merge pull request #1156 from AdmiralCurtiss/memcard-folder-dot-and-space
Folder Memory Card: Detect and handle filenames that end in dots and/or spaces.
2016-01-30 20:39:45 +00:00
Admiral H. Curtiss
326d50b686 Folder Memory Card: Detect and handle filenames that end in dots and/or spaces. 2016-01-30 20:14:42 +01:00
Johannes Obermayr
ec3170752a Fix Linux build.
pcsx2/Dump.cpp: In function 'void iDumpBlock(u32, u32, uptr, u32)':
pcsx2/Dump.cpp:258:4: error: cannot convert 'wxString' to 'const char*' for argument '1' to 'int system(const char*)'

pcsx2/x86/iR3000A.cpp: In function 'void iIopDumpBlock(int, u8*)':
pcsx2/x86/iR3000A.cpp:285:45: error: cannot convert 'wxString' to 'const char*' for argument '1' to 'int system(const char*)'
2016-01-30 17:56:35 +01:00
Gregory Hainaut
8e17f915c6 Merge pull request #1150 from jobs-git/patch-3
Fix Windows Resource file name error
2016-01-30 13:33:51 +01:00
Jonathan Li
62e4423f30 Merge pull request #1145 from PCSX2-Alpha/WX_stuffs
VideoPanel: Fix gray/ungray behaviour
2016-01-30 12:17:14 +00:00
Gregory Hainaut
3329bc1748 linux: drop wx2.8 support. Only 3.0 is supported
Close #1152
2016-01-30 12:48:35 +01:00
Gregory Hainaut
91e46a94f5 tests: disable spu sound in test
Avoid spurious alsa error message
2016-01-30 12:39:17 +01:00
Akash
c889659ad7 GSDX: Prevent a bad division
GetDeviceSize() already does a half division based on the INT and FFMD
registers.
2016-01-30 05:20:06 +05:30
Akash
7407162dfe GSDX: Add some nice macros 2016-01-30 05:19:53 +05:30
refractionpcsx2
2ffdbe781f Vif-Int: Fix mode = 3 2016-01-29 23:11:54 +00:00
refractionpcsx2
e5e0f85b50 Vif Rec: Emulate Mode = 3 for test, not sure any games use it.
Interpreter is still wrong, but currently crashy on this test, as it doesn't get this far I'm scared to change it in case it kills other stuff
2016-01-29 23:01:54 +00:00
Dominic Guana
766b5514f0 Fix Windows Resource file name error
The original file name is given by 

    SampleProf.cp 

However this is not the file we could find in any Code or Directory of PCSX2, rather it should be:

    SamplProf.cpp
2016-01-30 06:41:19 +08:00
Gregory Hainaut
eaa211212d ee-fpu: upgrade the FPU to 3.0
properly return reserved register

Fix FCR test :)
2016-01-29 23:24:11 +01:00
refractionpcsx2
cf993c2a36 Vif-Rec: Fix skip size calculation.
(also a line ending issue, hope it doesn't mess it up lol)
2016-01-29 21:03:02 +00:00
Akash
edfda74e9c PCSX2: Fix preset grey out behavior
Previously the text box for "Frames to Draw" and "Frames to Skip" got failed to grey out properly and only the text and arrows got greyed out, The following patch properly greys out the elements.

To be noted that the issue wasn't present on 1.2.1 , I guess this was some regression along with WX 3.0 ?

v2: Fix Indentation
2016-01-30 01:22:37 +05:30
Gregory Hainaut
2662809900 pcsx2:miss a rename of branch to g_branch
Fix compilation issue with no fpu recompiler
2016-01-29 19:53:21 +01:00
Gregory Hainaut
65daf74d0e tests: sort the blacklisted test 2016-01-29 19:53:21 +01:00
Jonathan Li
fdbe018cdf pcsx2: Fix memleak in portable mode error dialog handling 2016-01-28 20:51:19 +00:00
Gregory Hainaut
841df74010 gsdx: add info to get a working driver 2016-01-28 21:18:24 +01:00
Gregory Hainaut
5efbf2a802 dmac: madr msb bit is fixed to 0 in 8/9 channels
Fix another dmac tests :)
2016-01-28 21:16:20 +01:00
Gregory Hainaut
b2fbbddfa0 dmac: implement memcpy wrapping for SPR
Partially fix the dma test
2016-01-28 21:02:35 +01:00
Jonathan Li
e983be4060 Merge pull request #1142 from PCSX2-Alpha/Consolelog_stuffs
console: don't remember size when maximised
console: make enable/disable/restore defaults affect all items
2016-01-28 12:52:45 +00:00
Jonathan Li
3544b84632 usbqemu|dev9ghzdrk: Use _WIN32 for Windows preprocessor macro 2016-01-27 22:58:09 +00:00
Jonathan Li
d5e56c7e76 spu2-x: Use _WIN32 for Windows preprocessor macro 2016-01-27 22:49:41 +00:00
Jonathan Li
04a8efd8c3 pcsx2|common: Use _WIN32 for Windows preprocessor macro
It's predefined, unlike WIN32 and _WINDOWS (and other variants), which
are defined in the property sheets.
2016-01-27 22:41:45 +00:00
Jonathan Li
0f11838d93 gsdx: s/_WINDOWS/_WIN32/
It's the proper Windows preprocessor macro.
2016-01-27 22:41:45 +00:00
Jonathan Li
50c7775e47 utilities: Use C99+ size definitions on Windows
Also remove a LONG definition for Linux - it's unused.
2016-01-27 22:41:45 +00:00
Jonathan Li
2939abd8de pcsx2: Remove useless plugin load failure error messages
If wxDynamicLibrary.Load() fails, wxWidgets provides a good enough error
message anyway.
2016-01-27 22:41:45 +00:00
Gregory Hainaut
1d4e2cedf8 tests: update the list of bad test 2016-01-27 22:39:40 +01:00
Gregory Hainaut
5d1e5df205 dmac: wrap source address to remain in 16K
Add some assertions of memcpy that overflow (need to be wrapped)
2016-01-27 22:39:39 +01:00
Gregory Hainaut
c959424957 dmac: limit address to the scratch pad memory
Help dma tests
2016-01-27 22:39:39 +01:00
Gregory Hainaut
c037686a26 iop: don't load any value in r0
Fix lsu.irx test
2016-01-27 20:08:37 +01:00
Gregory Hainaut
b21ce8c9fb iop: fix division handling based on the EE div operator
Division will now handle properly division by 0 and signed overflow
2016-01-27 19:13:31 +01:00
Gregory Hainaut
11f59ada16 iop:interpreter: remove special case for unsigned division 2016-01-27 18:20:54 +01:00
Gregory Hainaut
135cdfca46 iop: fix division on the interpreter
Recompiler is still completely broken just add tons of FIXME
2016-01-27 18:15:14 +01:00
Gregory Hainaut
41157ee3e9 iop: fix 64 bits build
remove the offset which is useless
2016-01-27 16:49:06 +01:00
Gregory Hainaut
ba62ce9e93 iop: fix MTLO instruction
Test hilodelay.irx is now pass ^^ (but test only covers constant path.)
2016-01-27 10:27:34 +01:00
Gregory Hainaut
bfd1bcec69 iop: improve debug
Add a nop between instruction
Dump mips instruction
Add pretty print support

Note: it would be nicer to plug pretty print in the system command directly
2016-01-27 10:27:34 +01:00
Gregory Hainaut
53e24a8e30 x86emitter: fix an useless gcc warning on int/uint cast 2016-01-27 10:27:34 +01:00
Gregory Hainaut
ebea587465 vif: add an assert 0 for x64 2016-01-27 10:27:34 +01:00
refractionpcsx2
7185927e7e Vif-Rec: Fix up nVifBlock structure, thanks sudonim1 2016-01-26 19:19:02 +00:00
Gregory Hainaut
522149f503 tests: remove some carriage returns 2016-01-26 18:15:47 +01:00
Gregory Hainaut
f5d71352ca pcsx2: avoid flushing issue with the test suite
Linux only as I don't know if windows suffers of the same issue.
2016-01-26 09:18:15 +01:00
Gregory Hainaut
75ec16fd72 test: redo run phase to support windows 2016-01-26 09:18:15 +01:00
refractionpcsx2
d0a23a7d73 Vif-Rec: Sort of fix for tests using masks with different cl/wl values.
Now gives correct results, but, ugh, I'm not sure on this whole hashing thing, it's probably doing something else wrong now.
2016-01-26 00:02:21 +00:00
refractionpcsx2
0147e6cb8d Vif: Fix for Unpacks when WL = 0. (KH2 + Tests) Removes a long standing hack.
Note: CL = 0 behaviour is still not completely accurate, the first vector is incorrect, but will look at that another day, need a game that does it first really so we can see if it helps :)
2016-01-25 21:43:53 +00:00
Akash
fea95c2951 Log window: Fix behavior of some menu items
Previously the Enable all / Disable all / Restore defaults menu options ignored the status of Dev/verbose and CDVD reads. The following commit makes them to also impact the other two menu items.
2016-01-25 18:25:07 +05:30
Akash
af855bc295 Log window: better handling of display size.
Fixes Issue #1092 , don't remember the display size when the log window is maximized since the display size gets too big and the next time you open PCSX2 you'll see a gigantic log window ;)

V2: Fix a wrong indentation.
2016-01-25 18:24:27 +05:30
Gregory Hainaut
393e56a604 tests: handle better timeout
Relying on the timeout program
2016-01-24 22:32:00 +01:00
Gregory Hainaut
8485a8c654 iop: fix division overflow
So far only on the const path because it is was easy (and free)
but it ought to be done on the recompiler too.
2016-01-24 21:49:06 +01:00
Gregory Hainaut
95be13bc4a VIF: add 2 hacks to avoid crash/infinite loop when wl = 0
This way we could run some tests on wl = 0 behavior
2016-01-24 20:29:42 +01:00
Gregory Hainaut
411010e6e6 tests: add --bad option to run only blacklisted test 2016-01-24 20:11:25 +01:00
Gregory Hainaut
64718e576f test: fix path mess
Not a good idea to compute the absolute path 2 times. Add more logging.
2016-01-24 19:27:24 +01:00
Gregory Hainaut
3f5ac02697 tests: take 431414...
restore cwd after the find
just put the front letter in cyg_abs_path (as previous working bash script)
2016-01-24 18:53:46 +01:00
Gregory Hainaut
8b1c465bf6 fix a typo 2016-01-24 18:28:38 +01:00
Gregory Hainaut
00dea566f2 tests: auto detect cygwin 2016-01-24 18:18:22 +01:00
Gregory Hainaut
e8f8d55010 tests: uses standard perl path for perl operation 2016-01-24 16:37:36 +01:00
Gregory Hainaut
e985488471 tests: create a common cygpath function to ease future test 2016-01-24 15:21:47 +01:00
Gregory Hainaut
5a20d629ab spu2x: add comment on the previous fix
Always enabled it for all SDL2 versions. A shift won't kill perf.
And no surprise if they backport the behavior on older version.
2016-01-24 12:41:29 +01:00
Gregory Hainaut
90c5f0e1ae spu2x: tentative fix for SDL 2.0.4 2016-01-24 11:01:41 +01:00
Gregory Hainaut
91362f938d tests: use cygpath on cfg destination dir 2016-01-23 18:58:36 +01:00
Gregory Hainaut
82fe0148f2 tests:chomp cygpath 2016-01-23 18:50:43 +01:00
Gregory Hainaut
b174f4736f tests: replace cygwin auto detection by an option
Until I found a better solution
2016-01-23 18:42:17 +01:00
Gregory Hainaut
e0ac3cfb12 test: add an useful print 2016-01-23 18:37:22 +01:00
Gregory Hainaut
8ff78378cd tests: try to be compatible with cygwin 2016-01-23 18:35:34 +01:00
Gregory Hainaut
e36f1d3128 tests: requires a double escape due to double evaluation 2016-01-23 13:45:16 +01:00
Gregory Hainaut
c00b427efa tests: add irx support 2016-01-23 13:37:39 +01:00
Gregory Hainaut
117c3414f2 oups wrongly remove a line
Thanks tapcio
2016-01-22 22:56:57 +01:00
Gregory Hainaut
724542d870 pcsx2: add --irx option to inject an irx module
Irx module will be loaded at the end of the ROM (limited
at 256KB)

At the execution of the boot the list of module addresses are
hacked to add the new module.

For #1130
2016-01-22 19:46:03 +01:00
Gregory Hainaut
2ff611137e pcsx2|lilypad|gsdx: use portable printf format
(portable: let's see VS compilation...)
2016-01-22 19:46:03 +01:00
bositman
2c3f9e35ac Merge pull request #1091 from vgturtle127/patch-1
Update README for the latest version, and fix a few things
2016-01-22 12:12:12 +02:00
Gregory Hainaut
8c127a8193 travis: report 64 bits compilation issue 2016-01-22 09:40:47 +01:00
Gregory Hainaut
da4d3562f5 gsdx-ogl: update status of the SSO extension
AMD (proprietary) is working on it
Free driver will be fixed on Mesa 11.2 (and I hope mesa 11.1.2)
2016-01-22 09:28:59 +01:00
Gregory Hainaut
3f3141c186 GSdx-ogl: limit accurate sprite blending to smaller draw call
Completely restore speed in Zone of Ender

Fix #1093
2016-01-22 09:07:35 +01:00
Gregory Hainaut
3ea98b0c00 Merge pull request #1040 from KrossX/scp_support
LilyPad XInputness
2016-01-22 08:07:26 +01:00
Gregory Hainaut
69d585e867 Merge pull request #1114 from remeh/clang-unused-param
gsdx: cmake: don't display "unused parameters" warnings on release bu…
2016-01-22 08:07:07 +01:00
Gregory Hainaut
6dd83d3cba x86emitter: there are 16 int registers for all sizes. 2016-01-21 22:34:13 +01:00
Gregory Hainaut
9e773ff980 Merge pull request #1123 from PCSX2/emitter-Trex
Emitter trex
2016-01-21 22:32:37 +01:00
Gregory Hainaut
a2a23579bd Merge pull request #1122 from PCSX2/emitter-64b
Emitter 64b
2016-01-21 22:31:01 +01:00
ramapcsx2
fb184da86e The GTE opcode table was missing 4 commands. took them from another PCSX derived emulator.
Now the simple GTE test works :)
2016-01-21 14:45:24 +01:00
Derek "Turtle" Roe
72327802d6 See description
Fix redundancy and change wording of a few things
Make Vista with Service Pack 2 the minimum requirement so we don't have
to deal with the horrid mess that was launch Vista.

[skip ci]
2016-01-20 18:14:53 -06:00
refractionpcsx2
09817b24f0 IOP: Readd GTE now we know it exists, plus a couple of devcon outputs. 2016-01-20 20:29:18 +00:00
Gregory Hainaut
6b513239f8 tests: add --option k=v to overload PCSX2 option
Allow to easily switch rounding/clamping/Interpreter vs recompiler
2016-01-20 20:31:55 +01:00
Gregory Hainaut
7b2dc697fb tests: add dry_run and regression option
dry_run to quickly test the script
regression to blacklist bad test
2016-01-20 19:37:45 +01:00
Gregory Hainaut
1a700145ec x86emitter: remove unused FPU opcode
Future code would rely on SSE anyway
2016-01-20 10:23:23 +01:00
Gregory Hainaut
162bf3d22d debug: add a nop between EE instruction in dev build
This way it is easier to detect the boundary in the x86 asm block
2016-01-20 09:33:56 +01:00
Gregory Hainaut
d78f887d1c recVtlb: separate dispatcher generation into a dedicated function 2016-01-20 09:23:32 +01:00
Gregory Hainaut
8a9a56707c tests: fix diff bug and use default option value
You can use the 2 following variables to give a default --suite and --cfg options
* PS2_AUTOTESTS_ROOT
* PS2_AUTOTESTS_CFG
2016-01-20 07:56:32 +01:00
Akash
22fccd5143 GSDX: Add a nice debug message 2016-01-20 04:29:23 +05:30
Akash
ebb6e34196 PCRTC: Fix video modes higher than 480P 2016-01-20 04:23:45 +05:30
Gregory Hainaut
30c4456b85 tests: port shell code to pure PERL 2016-01-19 22:59:20 +01:00
Gregory Hainaut
9ac6cd503d Merge pull request #1018 from willkuer/GenericGSSetting
gsdx: Generic GSSetting
2016-01-19 16:23:19 +01:00
Gregory Hainaut
71c440862c Merge pull request #1126 from turtleli/replace-scoped-array-with-unique-ptr
Replace ScopedArray with unique_ptr
2016-01-19 16:22:13 +01:00
Gregory Hainaut
961abd823f Merge pull request #1127 from ssakash/FPU_Profiler-opcodes
EE: Add COP1 Instructions to profiler
2016-01-19 16:21:57 +01:00
willkuer
fd412c2938 gsdx: Generic GSSetting
The old implementation saved the current value of a GSSetting as uint in
a field called 'id'. The  implementation of GSSettings suggests that
GSSettings  could be saved in a database with id as primary key. This
would require a translation look up from id to value but  could have all
advantages of a database. However the interface to GSSetting was never
implemented like that.

In the new implementation GSSetting has a 'value' field that stores an
int representative value of the desired state. Additionally the
constructor is 'overloaded' as template to reduce casting in the
consumer code. However all consumer values need to be castable to int.

Accordingly combobox initialization was adjusted.
2016-01-18 23:59:27 +01:00
Gregory Hainaut
fd237244a2 tests: add a testname option to filter tests
[skip ci]
2016-01-18 23:53:28 +01:00
Gregory Hainaut
39f661c5f5 tests: show replay command for timed-out test 2016-01-18 23:40:04 +01:00
KrossX
e86e472d4f Less bind pressure for XInput too. 2016-01-18 19:36:02 -03:00
KrossX
dafec4642c Default mappings for XInput devices
Copied if there's no settings file present.
2016-01-18 19:27:48 -03:00
KrossX
27f6fb1ff1 Add support for Scarlet Crush's XInput extensions
Also adds support for the GUIDE buttons to be used.
2016-01-18 19:27:48 -03:00
Gregory Hainaut
807ec04229 tests: help + replay command
Remove useless debug info too
2016-01-18 21:41:16 +01:00
Gregory Hainaut
44f1281915 tests: add a show diff opt 2016-01-18 20:26:36 +01:00
Gregory Hainaut
c6794733ca tests: detect timeout
Unfortunately I doesn't manage to kill the bad process.
2016-01-18 20:20:57 +01:00
Gregory Hainaut
157b68a29f tests: add a nice reporting status, fix MT test 2016-01-18 18:54:43 +01:00
Gregory Hainaut
00dde7d2cf i10n: update ca_ES and ru_RU 2016-01-18 18:25:15 +01:00
Gregory Hainaut
68daf5f0ad test: improve the test runner
Improve the configuration of the build (log)
Run on multiple CPU (not tested)

Remove the logging hack in the GUI

Still miss:
* result
* help
2016-01-18 18:19:38 +01:00
Akash
72e8d083b7 EE: Add COP1 Instructions to profiler 2016-01-18 19:45:28 +05:30
Gregory Hainaut
b9c5ab08a8 test: add a new PERL test runner
Miss all importants features.
* Multi thread
* Self Configuration
* Result report
* help ;)
2016-01-18 10:34:58 +01:00
Derek "Turtle" Roe
a569a2e166 See long description
Fixed italic links not being clickable on GitHub
Added some updated info about requirements
Merged some notes
Fixed some incorrect grammar and typos
Updated formatting a little

[skip ci]
2016-01-17 20:31:36 -06:00
Jonathan Li
3c7e45ccc8 utilities: Remove ScopedArray implementation
It's now unused.
2016-01-17 22:54:22 +00:00
Jonathan Li
e7ca031d1e pcsx2: Replace ScopedArray with unique_ptr
Same functionality, but we don't have to maintain code ourselves.
2016-01-17 22:54:22 +00:00
Jonathan Li
e472713c62 pcsx2: Fix inverted EE cycle rate range check
Overclock is now positive and underclock is now negative (it used to be
the other way round), so the range check should reflect that.

Coverity CID 156245 Bad bit shift operation(BAD SHIFT)
2016-01-17 22:27:16 +00:00
Jonathan Li
f3f0d743ff pcsx2: Use std::array for Console colours
Using a memcpy to copy non-POD classes with virtual methods is undefined
behaviour. clang was warning that the vtable was being overwritten.

Replace the SafeArray with std::array.
2016-01-17 22:06:32 +00:00
Jonathan Li
e8596f0430 pcsx2: Rearrange Console colour enum order
Preparation for next commit - The default isn't bold, so it's slightly
neater to have it at the start.
2016-01-17 22:06:32 +00:00
Jonathan Li
8a61c7d336 spu2-x:windows: ifdef XAudio2 2.7 specific stuff
Support for XAudio2 2.8+ still requires build configurations that use
the Windows SDK include and library files (instead of the DirectX SDK
files).
2016-01-17 22:06:32 +00:00
refractionpcsx2
87138c9854 GameDB: Enabled SkipMpeg hack by default on BDFL Manager PAL-G 2016-01-17 20:03:06 +00:00
Gregory Hainaut
05b8ec97e9 Merge pull request #1124 from TotalCaesar659/master
Fixes some mistakes in Russian translation
2016-01-17 17:52:12 +01:00
Jonathan Li
fa9981b1ca ci: Add 64-bit build to Travis CI
Allow the 64-build to fail (at least until the 64-bit emitter stuff is
merged so it compiles properly).

[skip appveyor]
2016-01-17 16:42:58 +00:00
TotalCaesar659
bdfe8a224a Fixes some mistakes in Russian translation 2016-01-17 19:24:54 +03:00
Gregory Hainaut
41a80fce20 x86emitter: finally support 64 bits instructions
Note: a couple of instructions don't support REX prefix. Some
exception ought to be implemented later
2016-01-17 17:02:38 +01:00
Gregory Hainaut
40438cf2bd x86emitter: port couple of simd instrusction to xOpWrite0F template 2016-01-17 16:59:44 +01:00
Gregory Hainaut
9ac22ee9aa x86emitter: rewrite remaining function to use generic template 2016-01-17 16:42:39 +01:00
Gregory Hainaut
5bf12519da Merge pull request #1105 from ssakash/CRTC_-NTSC-height-saturation
PCRTC: Better handling of CRTC height saturation
2016-01-17 16:38:59 +01:00
Gregory Hainaut
42783279ff Merge pull request #1020 from ramapcsx2/loading_psx_games_enable
Enable loading psx games by default. Should help fixing PSX support w…
2016-01-17 16:35:55 +01:00
Gregory Hainaut
522ca27243 Merge pull request #1111 from Dokman/ca_ES
Catalan Translation
2016-01-17 16:30:45 +01:00
Gregory Hainaut
254081e3ad Merge pull request #1115 from turtleli/gsdx-ogl-blend
gsdx-ogl: Improve accurate blend sprite draw speed
2016-01-17 15:42:07 +01:00
Gregory Hainaut
fc5e293ef6 x86emitter: rewrite move to use generic template 2016-01-17 13:44:29 +01:00
Gregory Hainaut
25cd35147e x86emitter: rewrite groups to use generic template 2016-01-17 12:34:44 +01:00
Gregory Hainaut
a9864a5619 x86emitter: create xOpAccWrite handy template for special accumulator opcode 2016-01-17 12:34:28 +01:00
Gregory Hainaut
d2436fa86d x86emitter: remove unused function 2016-01-17 12:07:41 +01:00
Gregory Hainaut
16057d8b04 x86emitter: inc/dec are illegal on x86_64 2016-01-17 12:07:03 +01:00
Gregory Hainaut
f2ecfc99ad x86emitter: align EmitRex interface on EmitSibMagic 2016-01-17 12:06:08 +01:00
Gregory Hainaut
e50e9a5e65 x86emitter: sed/32orLess/64orLess/ 2016-01-17 00:29:19 +01:00
Gregory Hainaut
395d43fd9c x86emitter: jump: use base type directly
which fix 16 bits call (no prefix)
2016-01-17 00:21:05 +01:00
Gregory Hainaut
968af6148e x86emitter: extend SSE instruction type 2016-01-17 00:21:05 +01:00
Gregory Hainaut
4bc9cbc24f x86emitter: extend lea/bswap 2016-01-17 00:21:05 +01:00
Gregory Hainaut
eb4db2152c x86emitter: add x64 to push/pop 2016-01-17 00:21:05 +01:00
Gregory Hainaut
ef21a8dbd0 x86emitter: extend group8 type 2016-01-17 00:21:05 +01:00
Gregory Hainaut
39a6bda52d x86emitter: extend test & bitscan type
Factorize the code to support any types
2016-01-17 00:21:05 +01:00
Gregory Hainaut
e285036455 x86emitter: shift: extend it to 64 bits type 2016-01-17 00:21:05 +01:00
Gregory Hainaut
fdaf0e9979 x86emitter:group: uses base type
Add 64 bits support for free ;)

Note: 64b still requires the REX prefix
2016-01-17 00:21:05 +01:00
Gregory Hainaut
e2602b3967 x86emitter:move: factorize type and extend it to 64 bits
It's still missing the REX prefix support
2016-01-17 00:21:05 +01:00
Gregory Hainaut
41f509873d x86emitter: extend xIndirect32orLess to support 64 bits
It would be renamed later to avoid conflict with pending updates
2016-01-17 00:12:31 +01:00
Gregory Hainaut
39dc8368fa x86emitter: add GetPrefix16 helper 2016-01-17 00:12:21 +01:00
Gregory Hainaut
be0b8cf2f5 x86emitter: implement some function to emit the REX prefix
Same fashion as EmitSibMagic
2016-01-17 00:10:21 +01:00
Gregory Hainaut
53b5ecf34a x86emitter: add the new x86_64 registers set 2016-01-17 00:10:21 +01:00
Gregory Hainaut
366f793cf0 core: use xRegisterLong instead of xRegister32
Code needs to work with xAddressReg however the x32 inheritance doesn't
exits anymore on 64 bits.

Note: it might be possible to uses some kind of autoconversion with
xRegister32or64. Could be a future improvement.
2016-01-17 00:10:21 +01:00
Gregory Hainaut
1328865279 x86emitter: xAddressReg size will depend on the arch
Note: displacement are never 8B. The max is 4B which is sign extended to 8B.
So we can't store a pointer into it anymore.

Add xRegisterLong that will be x64 on 64 bits and x32 on 32 bits
2016-01-17 00:10:21 +01:00
Gregory Hainaut
a865ba8cf5 x86emitter: add various type for 64 bits 2016-01-17 00:10:21 +01:00
Gregory Hainaut
2fea78a6c4 x86emitter: remove not virtual inherited function
IsSIMD isn't virtual
2016-01-17 00:10:21 +01:00
Jonathan Li
37deeb0d52 gsdx-ogl: Optimise overlap detection algorithm
Vectorise coordinate min/max sorting, and use the ordered runion
instead.
2016-01-16 19:21:56 +00:00
Jonathan Li
14dffa762b gsdx: Add runion_ordered to GSVector
Allows to save a few instructions cycles when xy and zw are already
sorted (min and max rectangle coords).
2016-01-16 19:21:55 +00:00
Jonathan Li
2fc3ef8124 gsdx-ogl: Add sprite overlap statistics to debug messages 2016-01-16 19:21:54 +00:00
Gregory Hainaut
38c548854e Merge branch 'uptr-addr' 2016-01-16 18:34:27 +01:00
ramapcsx2
20c8b89bb7 cdvd: return 0xff instead of 0 on unknown 8 bit reads. improves compatibility with popstarter a bit.
Unfortunately, it then fails to load pops with "loadmodule: fname rom0:UDNL args 5 arg crap:"
2016-01-16 14:36:09 +01:00
Gregory Hainaut
35568f6425 gsdx: disable simd in 64 bits
Let's concentrate first on SSE2

This commit fuses a couple of ifdef
2016-01-16 14:34:00 +01:00
Gregory Hainaut
76230c1305 MTGS: s/u32 pointer/uptr/ 2016-01-16 14:34:00 +01:00
Gregory Hainaut
e23ba2340c core: s/u32 pointer/uptr/ 2016-01-16 14:34:00 +01:00
Gregory Hainaut
022cd9cd64 gsdx: s/u32 pointer/uptr/ 2016-01-16 14:34:00 +01:00
Gregory Hainaut
6ec7d2c340 x86emitter: ease template stuff 2016-01-16 14:34:00 +01:00
Gregory Hainaut
8c3798e96b core: pointers are 8B on 64 bytes 2016-01-16 14:34:00 +01:00
Gregory Hainaut
d623453451 build.sh: automatically configure wx-config on debian system
It is easier to alternate between 32/64 bits build
2016-01-16 14:33:49 +01:00
ramapcsx2
aafa333355 added the profiler to the visual studio solution. also added preliminary cop1 (fpu) tables, ready for implementation 2016-01-15 00:26:52 +01:00
Gregory Hainaut
9bcd9f0a73 cmake: onepad require gtk 2016-01-14 19:26:55 +01:00
Gregory Hainaut
a7a8c542f5 Merge pull request #1100 from PCSX2/recompiler-abi-wrapper
Recompiler abi wrapper
2016-01-14 19:21:27 +01:00
Jonathan Li
74ace74d50 gsdx-ogl: Group non-overlapped accurate blend sprite draws
Reduces the number of draw calls and barriers when drawing sprites.
2016-01-13 08:07:53 +00:00
Jonathan Li
f3b6829c74 gsdx-ogl: Restart collision detection algorithm for remaining sprites
It's useless on its own, but it prepares for the next commit.
2016-01-13 08:02:42 +00:00
Gregory Hainaut
c73d626757 build.sh: separate release/dev/dbg into separated directory
Avoid useless recompilation
2016-01-13 08:58:50 +01:00
Gregory Hainaut
4ac17428ac Merge branch 'EmperorArthur-build_with_spaces' 2016-01-13 08:15:06 +01:00
Gregory Hainaut
c8da280a19 Merge branch 'build_with_spaces' of git://github.com/EmperorArthur/pcsx2 into EmperorArthur-build_with_spaces
Conflicts:
	build.sh
2016-01-13 08:14:46 +01:00
Gregory Hainaut
d4b30620a7 pcsx2: avoid a segmentation fault due to previous hack 2016-01-12 19:35:23 +01:00
Gregory Hainaut
46a2f6ed24 interpreter: fix a subtle bug in a QFSRV
Math is correct but a shift of 64 bits is illegal in x86 because the cl register is masked

From the x86 spec:
    The destination operand can be a register or a memory location. The count operand can be an immediate value or
    the CL register. The count is masked to 5 bits (or 6 bits if in 64-bit mode and REX.W is used). The count range is
    limited to 0 to 31 (or 63 if 64-bit mode and REX.W is used). A special opcode encoding is provided for a count of 1.
2016-01-12 19:29:10 +01:00
remeh
28cfd50f08 gsdx: cmake: don't display "unused parameters" warnings on release build with clang. 2016-01-12 13:42:47 +01:00
dokman
f06d055372 Now it's usable!
All done

ToDo:
Details of every setting
2016-01-12 10:44:36 +01:00
dokman
7fae220f18 Emulation Settings done 2016-01-12 10:26:10 +01:00
dokman
7b48923a2c Updating with newest templates.
Emulation Settings
EE/IOP done
VUs done
GS done
GS Window done
Speedhacks done
Game fixes ToDo

Plugin/BIOS Selector done
2016-01-12 10:05:34 +01:00
refractionpcsx2
22de865582 Gamefix: Add Scarface - The World is Yours Gamefix, might help other games that do constant VU recompilation. 2016-01-11 23:32:33 +00:00
dokman
5f680141b4 Pushing base of translation with the newest template 2016-01-11 22:39:06 +01:00
Gregory Hainaut
3c528f0fdd common define _32kb and _4kb 2016-01-11 18:00:25 +01:00
Gregory Hainaut
812a2e4850 recVtlb: Align dispatcher to 32B boundary
Better for cache coherency
2016-01-11 18:00:19 +01:00
Gregory Hainaut
e3d5eb5a4e core: convert xCALL to xFastCall
SuperVU wasn't converted (unlikely to be ported to 64 bits)
A couple of calls weren't converted because they require extra work
but there are not mandatory (debug/MTVU/...)
2016-01-11 09:21:45 +01:00
Gregory Hainaut
859d62d2a7 ee|iop: use xScopedStackFrame to handle dynarec frame
* Rework a bit MVU to support xScopedStackFrame. Potentially
stack frame can be optimized (save 5 instructions)

* I removed the recompiler stack check. Address sanitizer is more efficient anyway
2016-01-11 09:21:45 +01:00
Gregory Hainaut
6e66bea152 x86emitter: improve the various abi wrapper
V2:
* Add various option to handle the different frame
* Basic x86-64 port (untested so likely completely broken)

v3:
Create an templated xImpl_FastCall object

v4:
clang compilation fix
2016-01-11 09:21:32 +01:00
Gregory Hainaut
a6eb871b42 pcsx2: use a common general intrin include
Avoid issue with various compiler conversion
Fix build with GCC4.8
2016-01-11 09:13:52 +01:00
Derek "Turtle" Roe
a09b42e046 Revert title case 2016-01-10 19:55:30 -06:00
Derek "Turtle" Roe
c85713850d Revert change 2016-01-10 19:53:43 -06:00
Derek "Turtle" Roe
3823b1a6fc Update MTVU speedhack commit 2016-01-10 19:48:49 -06:00
Gregory Hainaut
52b4604d3b iop: remove unused iPsxMem.cpp file 2016-01-10 18:41:18 +01:00
Akash
aade5278d8 PCRTC: Better handling of CRTC height saturation 2016-01-10 21:47:59 +05:30
Gregory Hainaut
afdf5cdfe2 x86emitter: remove old unused macro
Add some notes for a GCC "bug"
2016-01-10 16:49:50 +01:00
Gregory Hainaut
41d13dc2c6 vtlb: remove SetBaseAddr
Base address is given in the constructor
2016-01-10 14:31:49 +01:00
Gregory Hainaut
9bcd34349f Merge branch 'recompiler-prof' 2016-01-10 14:15:42 +01:00
Gregory Hainaut
1c4b430984 profiler: plug recompiler with new perf infra
Only EE/IOP support by block profiling

v2: cast wxString with ToUTF8 (windows)
2016-01-10 13:43:08 +01:00
Gregory Hainaut
92d7639267 profiler: add functions to plug linux Perf Event on JIT
Basically it creates a /tmp/perf-`pid`.map file which will contains
a mapping of the x86 code with the EE/IOP/VU code

* You need to enable the profiler with a define
* You can split the profiling by block (inside a recomp buffer)

v2: add new file to VS xml files
v3: remove useless include
2016-01-10 13:42:59 +01:00
Jonathan Li
8977673fdf ci: reduce AppVeyor workload
Don't compile with VS2013 if VS2015 compilation fails.
Build only SSE2 and AVX2 GSdx variants.
2016-01-10 12:11:49 +00:00
Derek "Turtle" Roe
25a4636d0a Update some links and fix some more errors 2016-01-09 23:01:37 -06:00
Derek "Turtle" Roe
80589dfeb2 Update notes 2016-01-09 21:27:18 -06:00
Derek "Turtle" Roe
76ca2aab29 Fix some typos and fix screenshots not lining up correctly 2016-01-09 18:22:16 -06:00
Derek "Turtle" Roe
429005559d More updates 2016-01-09 18:20:20 -06:00
Derek "Turtle" Roe
e193a48b75 Small updates 2016-01-09 18:09:45 -06:00
Derek "Turtle" Roe
09b975ab46 Add screenshots back in and update the requirements 2016-01-09 18:07:07 -06:00
Derek "Turtle" Roe
582a834b89 Fix some more grammatical errors and punctuation, and some small updates 2016-01-09 17:17:50 -06:00
Derek "Turtle" Roe
1ae9c0858a Fix a punctuation error and remove title case 2016-01-09 17:12:02 -06:00
Derek "Turtle" Roe
5211c95b81 Fix some more things in the README and remove low-res screenshots 2016-01-09 17:10:36 -06:00
Gregory Hainaut
e75d3f759f ee:profiler: add instructions counters 2016-01-09 23:29:03 +01:00
Gregory Hainaut
5b08bda5b8 ee:profiler: count EE memory access 2016-01-09 23:29:03 +01:00
Gregory Hainaut
0e1188565e ee:profiler: count EE instruction execution
Based on microVU_Profiler.h

It remains to emit all the opcode to use it properly
2016-01-09 23:29:03 +01:00
Gregory Hainaut
50c7cb1717 x86emitter: implement some BMI instructions
Only a couple of one to do some memory profiling
2016-01-09 23:29:01 +01:00
Gregory Hainaut
9e13a7bdaa x86emitter: add support for the VEX opcode 2016-01-09 22:59:31 +01:00
Gregory Hainaut
29b0b17f50 x86emitter: add BMI1 & BMI2 instruction detection 2016-01-09 22:59:31 +01:00
Gregory Hainaut
d57466608e linux: pretty print dump
allow to replace 0xBADA55 address with nice name such as v0_b0
2016-01-09 22:59:31 +01:00
Gregory Hainaut
c80037bb2f debug: add a new function to dump EE block
Give both EE and x86 code.

Don't rely on global variable. The dump still dump the content of the register.
Of course value will be wrong if you don't dump it at the start of the block.
It help to detect register/memory access

the cpu struct address is also printed to easily postprocess the x86 memory pointer
(see next commit)
2016-01-09 22:59:31 +01:00
Gregory Hainaut
dd097fe361 cmake: clang, please compile my code quietly 2016-01-09 22:57:43 +01:00
Gregory Hainaut
fd56195b2d x86emitter: drop old register define 2016-01-09 21:28:10 +01:00
Gregory Hainaut
5c0c9a60e9 core: use ecx directly 2016-01-09 21:26:25 +01:00
Gregory Hainaut
834cc3f2c5 core|x86emitter: port basic jump instruction 2016-01-09 21:26:25 +01:00
Gregory Hainaut
b09295fc7c core: use xRegister32 for _allocX86reg 2016-01-09 21:26:25 +01:00
Gregory Hainaut
4ddc4778e4 ee: use xRegister32 for 1st argument of _psxMoveGPRtoR 2016-01-09 21:26:25 +01:00
Gregory Hainaut
3570467838 core: inline LogicalOp* functions 2016-01-09 21:26:25 +01:00
Gregory Hainaut
9b7b9bc407 fix compilation issue due to bad renaming
:(
2016-01-09 21:26:25 +01:00
Gregory Hainaut
9eb73e1ef0 core: rely on register.GetId() instead of define 2016-01-09 21:15:46 +01:00
Gregory Hainaut
743e615224 core: overload _freeX86reg with xRegister32 2016-01-09 21:15:25 +01:00
Gregory Hainaut
6291910b02 ee: use xRegister32 for 1st argument of _eeMoveGPRtoR 2016-01-09 21:15:12 +01:00
Gregory Hainaut
8737db97e7 core: remove allocation error check
1/ Allocation can't fail anymore
2/ Avoid to convert it to new register syntax
2016-01-09 21:14:05 +01:00
Gregory Hainaut
60a9463e7a x86emitter: remove unused legacy function
And mark the remaining one as deprecated

Clang only as it relies on C++14
2016-01-09 21:13:29 +01:00
Gregory Hainaut
fcdbae6806 core: massively sed old emitter syntax to the new one
It misses jump & FPU. Jump need to be handled manually.

Syntax isn't perfect yet because of various casts. But it will allow to have a
single emitter syntax and rely on type safety on the future.

Conflicts:
	pcsx2/x86/iR3000Atables.cpp
	pcsx2/x86/ix86-32/iR5900-32.cpp
2016-01-09 20:56:07 +01:00
Gregory Hainaut
bd1d3724c1 core: manually convert few functions to new emitter
Remaining part will be done by a sed scripts
2016-01-09 20:39:32 +01:00
Gregory Hainaut
a9a26b93f9 ee: directly call EMMS from dispatcher
Until we completely remove MMX from the recompiler
2016-01-09 19:57:28 +01:00
Gregory Hainaut
c121bccb03 pcsx2: delete old asm file 2016-01-09 18:45:34 +01:00
Gregory Hainaut
39b77c6fd3 cmake: remove unused asm file
Code was ported (inlined asm/recompiler)
2016-01-09 15:48:58 +01:00
Gregory Hainaut
3f17898bf5 spu2x: linux compilation fix 2016-01-09 14:26:57 +01:00
Gregory Hainaut
fbffa507b8 cmake: fix linux case
Close #1094
2016-01-09 12:15:29 +01:00
Derek "Turtle" Roe
e392212e67 Update README for the latest version, and fix a few things 2016-01-08 21:12:27 -06:00
Gregory Hainaut
de2b97c640 linux compilation fix 2016-01-08 22:35:55 +01:00
Gregory Hainaut
74db92bee4 Merge pull request #978 from juhalaukkanen/apple_osx_master_merge
OSX 32bit build
2016-01-08 20:09:37 +01:00
Gregory Hainaut
4f28403c03 Merge pull request #972 from PCSX2/clean-gcc-opt-cmake
cmake: reenable a couple of missing gcc optimization
2016-01-08 19:32:18 +01:00
Gregory Hainaut
963be27b75 Merge pull request #1057 from ssakash/videmode_changes
EE SYSCALL: Add missing video modes at SYSCALL 2
2016-01-08 19:31:48 +01:00
Gregory Hainaut
19b0f604b4 Merge pull request #1087 from katamaritaco/patch-1
Fixed broken link; Add wiki link; Formatting
2016-01-08 19:28:49 +01:00
Gregory Hainaut
7c7de87fcf Merge pull request #1078 from PCSX2/gsdx-unsafe-fbmask
Gsdx unsafe fbmask
2016-01-08 19:26:14 +01:00
Gregory Hainaut
58ba6789cc Bump version number
It's still time to switch to the new stable release before massive breakage ;)
2016-01-08 19:04:49 +01:00
Gregory Hainaut
3451f7e760 gsdx-ogl: handle invalid gl_lengh in debug message
Mesa intel sets it to -1.

Close #1089
2016-01-07 21:49:17 +01:00
Nick Heindl
b50a777437 Added github issues to the tasks
Added github issues to the tasks
2016-01-06 01:15:36 -06:00
Nick Heindl
4852d255c7 Format, add forum link, and organize per PR-889👽
Added forum link, organized the wiki links into sections as per suggestions on PR-889 (I found that after I made original PR, apologies).
2016-01-06 01:08:26 -06:00
Nick Heindl
ae18127409 Fixed broken link; Add wiki link; Formatting
Added the wiki link and better description.
Fix broken link of 'todo'.
Formatted 'Coding Style' to 'Code Formatting Guidelines' for consistency.
Added the Commenting Etiquette link as well.
2016-01-05 18:08:25 -06:00
Avi Halachmi (:avih)
165d2860e4 about dialog: add Devina 2016-01-05 06:30:26 +02:00
Avi Halachmi (:avih)
4ff5b9e7ce Games DB: update compatibility: (17 better, 1 worse):
Summary:

Worse:
- Degrading compat from 5 to 4 for SLUS-20573: Sims, The

Better:
- Improving compat from 3 to 5 for SLUS-21632: NHL 2K8
- Improving compat from 2 to 5 for SLUS-21425: NHL 2K7
- Improving compat from 4 to 5 for SLUS-20919: ESPN - NFL 2K5
- Improving compat from 2 to 5 for SLUS-21232: College Hoops 2K6
- Improving compat from 2 to 5 for SLUS-20225: Gadget Racers
- Improving compat from 2 to 5 for SLUS-21914: NHL 2K10
- Improving compat from 3 to 5 for SLUS-20235: Superman - Shadow of Apokolips
- Improving compat from 2 to 5 for SLUS-20842: Sims, The - Bustin' Out
- Improving compat from 4 to 5 for SLUS-21563: Horsez
- Improving compat from 4 to 5 for SLUS-20637: Chessmaster (Online)
- Improving compat from 3 to 5 for SLES-50874: F1 2002
- Improving compat from 2 to 5 for SLES-52298: IndyCar Series 2005
- Improving compat from 0 to 5 for SLUS-21680: Harvey Birdman - Attorney at Law
- Improving compat from 0 to 5 for SCES-51684: World Rally Championship 3
- Improving compat from 0 to 5 for SLUS-21235: MLB 2k6
- Improving compat from 0 to 5 for SLES-50252: Penny Racers
- Improving compat from 0 to 5 for SLES-54151: Let's Make a Soccer Team!
2016-01-04 21:00:22 +02:00
Avi Halachmi (:avih)
12650610aa widescreen patches (cheats_ws.zip): 56 new, 26 updated, overall 1994
Taken from Devina's archive at the forum (updated 2016-01-03), and removed the
three WIP patches: 1771BFE4, C77AF2CA and C77AF2CA.
2016-01-04 15:57:16 +02:00
Avi Halachmi (:avih)
d770a048aa GS window title: remove redundant ${pause} from commit 4626e489 2016-01-04 15:53:53 +02:00
Avi Halachmi (:avih)
4626e48980 GS window title: add <PAUSED> when paused
Mostly relevant if the GS window is set to not hide while paused, but also shows
when the emulation is paused due to plugin config etc.

The string <PAUSED> is configurable via the template at PCSX2_ui.ini (including
making it empty) but currently it always appear at the begining of the title.
2016-01-03 22:14:30 +02:00
Avi Halachmi (:avih)
e8b653ddf3 KB commands: change Sys_Suspend to Sys_SuspendResume (toggle)
It's now possible to press ESC once to pause, and ESC again to resume (or assign
any other key via PCSX2_keys.ini, e.g. to SPACE).

Note that resume only works if the GS window is NOT set to hide on pause (Emu
options -> GS Window), and if the key is pressed while the GS window is focused.

This includes two related changes:
- The command name at PCSX2_keys.ini is now changed to Sys_SuspendResume.
- If the GS window is NOT set to hide on pause, then it stays focused on pause.

--nogui also gains this behavior, so it's now possible to launch without a GUI
and still suspend/resume if the GS window is not set to hide on pause. If it is
set to hide on pause, then the behavior remains as it was: exit PCSX2 on pause,
or prompt to exit/resume if --noguiprompt is provided.
2016-01-03 22:13:14 +02:00
Avi Halachmi (:avih)
6300a47c15 GS window: improve keys/commands handling when paused
Only relevant if the GS window is set to NOT hide when paused. At this case
there were two issues on Windows:
- Commands were invoked twice.
- Non-special-keys (e.g. plain 'q') were not handled at all.

Not terribly important now, but it prepares for the next commit.
Also rename a function to have a more meaningful name.
2016-01-03 22:13:14 +02:00
Akash
8c5c73ea4b GSDX: Fast blending option for windows 2016-01-03 15:40:04 +01:00
Gregory Hainaut
24be4b4969 gsdx-ogl: remove unsafe fbmask of the free SW blending
Initially it was free to do the SW blending because safe fbmask
will already do a sw blending.

Unsafe version uses a fast path with a limited blending. Therefore
SW blending isn't free anymore.

Improve the speed of the previous speed hack (xenosaga 1)
2016-01-03 15:39:45 +01:00
Gregory Hainaut
bb15e54438 gsdx-linux: add a new gui entry for the previous hack 2016-01-03 15:39:45 +01:00
Gregory Hainaut
0d25a0592a gsdx-ogl: fast blending accurate hack
The hack relies on the undefined behavior of the hardware so it can
potentially generate rendering corruption.

This new hack drops the cache flusing when only the alpha channel is masked.
Alpha is a direct copy of the fragment. Normally masked bits will be constant
everywhere (RT, FS output, texture cache) so it would likely work.

Just in case, code is only enabled with the new shiny hack
2016-01-03 15:39:45 +01:00
Gregory Hainaut
73b22cac56 badges takes 3 2016-01-03 14:31:26 +01:00
Gregory Hainaut
6140fde60c badges take 2 2016-01-03 14:19:38 +01:00
Gregory Hainaut
ddc657a073 README.md: try to add some badges 2016-01-03 14:13:41 +01:00
Jonathan Li
f14797e64f Merge pull request #1079 from Kingcom/registerlist
Optimize register list drawing
Fixes a register list GUI issue on Linux.
2016-01-03 00:20:23 +00:00
Jonathan Li
bb37d1c339 gsdx:windows: Don't change renderer when changing adapter
The previous behaviour loaded the saved renderer config whenever the
adapter combobox was changed. The renderer will now only change if the
new adapter doesn't support the currently selected renderer (i.e
Direct3D11 might not be supported, so it'll revert to Direct3D 9).

Fixes #1080.
2016-01-02 22:20:30 +00:00
Jonathan Li
12e80c271b gsdx:windows: Widen Hacks dialog slightly
The Wild Arms Offset text was slightly cut off due to the label being
too small. Make the dialog slightly wider so the full text will fit.

Someone should probably make the dialog look nicer at some point.
2016-01-02 22:17:30 +00:00
Kingcom
c6b60d5376 Fix mouse position calculation 2016-01-02 22:02:33 +01:00
Kingcom
a3dea9b243 Optimize register list drawing 2016-01-02 22:02:33 +01:00
Gregory Hainaut
fc98fc9781 gsdx: only enable "please fix me" message on debug build 2016-01-02 18:53:15 +01:00
Gregory Hainaut
8b5e22dd7d i10n: update cs_CZ binary 2016-01-01 14:44:06 +01:00
Gregory Hainaut
7aae0ce394 gsdx ogl: minor string update 2016-01-01 14:43:47 +01:00
ramapcsx2
6e34f183ea Merge pull request #1070 from Kingcom/registerlist
Revert to old register list, make it scrollable
2015-12-31 17:13:06 +01:00
Gregory Hainaut
93e26f8117 Merge pull request #1076 from frantisekz/master
Czech translation
2015-12-31 09:59:50 +01:00
František Zatloukal
ec453c32a1 Czech translation 2015-12-31 01:17:58 +01:00
Kingcom
cbd7aed0f3 Make register list scrollable 2015-12-30 20:12:19 +01:00
Kingcom
80db2abe3d Fix debugger crash after using shutdown. Fixes #1074 2015-12-30 19:22:11 +01:00
Kingcom
de1f3d0df7 Remember size of debugger window 2015-12-30 19:22:11 +01:00
Kingcom
be0ad9be2f Scale the font size in debugger controls with DPI 2015-12-30 19:22:11 +01:00
Kingcom
1fe15c16cc Use alternating background colors in the register list 2015-12-30 19:22:10 +01:00
Kingcom
11bcb328f8 Revert to old register list 2015-12-30 19:22:10 +01:00
Gregory Hainaut
902e295089 gsdx: fix onimusha crash in custom resolution
I don't understand why but it seems it needs more than 8MB
2015-12-30 19:14:52 +01:00
Gregory Hainaut
bfa53af50f gsdx linux: fix ShadeBoost option case 2015-12-30 19:14:52 +01:00
ramapcsx2
d84d765aeb whops 2015-12-30 18:53:38 +01:00
ramapcsx2
8e3aec8aaf gsdx dialog: renderer order and naming changed. due to many factors, we can't yet remove any of the software options. naming / order changes are possible though, if a majority votes for it. 2015-12-30 18:06:54 +01:00
ramapcsx2
df0dd10c9f about box changes 2015-12-29 17:47:10 +01:00
Kingcom
191453d89a gsdx: fix windows compilation 2015-12-28 22:05:01 +01:00
Gregory Hainaut
a595a09fbd gsdx: increase buffer to have crash in case of overflow
Avoid a crash on Onimusha3 (PAL 60HZ)

In theory it will be better to find the root cause of overflow. I.e. somewhere in this
code below. Dirty rectangle is too big.

***********************************************************************
if(rowsize > 0 && offset % rowsize == 0)
{
    int y = GSLocalMemory::m_psm[psm].pgs.y * offset / rowsize;

    if(r.bottom > y)
    {
        GL_CACHE("TC: Dirty After Target(%s) %d (0x%x)", to_string(type),
                t->m_texture ? t->m_texture->GetID() : 0,
                t->m_TEX0.TBP0);
        // TODO: do not add this rect above too
        t->m_dirty.push_back(GSDirtyRect(GSVector4i(r.left, r.top - y, r.right, r.bottom - y), psm));
        t->m_TEX0.TBW = bw;
        continue;
    }
}
***********************************************************************

So as a temporary solution (that will likely stay for a couple of
years), buffers were increased.
2015-12-28 21:40:06 +01:00
Gregory Hainaut
c36fccdd8e gsdx: fix crash when preload data frame is enabled
Height of the dirty rectangle must be the GS size of the RT. Of course
RT doesn't have any height so we compute the max safest value.

Fix issue #987

Candidate for 1.4 release
2015-12-28 18:00:14 +01:00
ramapcsx2
90ad6e89ad small pdfs update and an nsis fix 2015-12-28 17:44:15 +01:00
ramapcsx2
ef62d753d1 Merge pull request #1056 from ssakash/gsdx_swthreads
GSDX: Some change to software rendering threads
2015-12-28 17:23:32 +01:00
sudonim1
3042648ed4 Merge pull request #1069 from Kingcom/iop
Fix IOP bltzal and bgezal opcodes
2015-12-28 15:25:21 +00:00
Kingcom
4c36c12fb1 Fix IOP bltzal and bgezal opcodes 2015-12-28 10:05:26 +01:00
willkuer
0c4b25bcec gsdx: defaulting extra rendering threads to 2 2015-12-28 01:05:25 +05:30
Akash
6dda879e63 EE-Syscall: Add missing modes 2015-12-24 13:30:25 +05:30
Akash
21c6fa5f1b gsdx-gui: Label and Tooltip changes to RT option 2015-12-23 19:51:13 +05:30
Arthur Moore
6698c5760b Quote all uses of coverity_dir 2015-12-17 19:47:48 -05:00
Arthur Moore
9f87fb16a2 Quote all uses of the build directory 2015-12-17 19:45:23 -05:00
ramapcsx2
6a94a7d49a Enable loading psx games by default. Should help fixing PSX support when people don't have to first find the hidden config variable before they can even test this. 2015-12-05 12:31:45 +01:00
Juha Laukkanen
c72400e927 Darwin/OSX - spu2x apple build with portaudio only.
OSX compilation fix: spu2x: Windows & Linux
2015-12-02 05:01:12 +02:00
Juha Laukkanen
b56197d30b Darwin/OSX - cmake which enables apple build and hopefully won't break Linux build.
OSX compilation fix: librt & not wxgl (yet).
2015-12-02 05:00:55 +02:00
Juha Laukkanen
ade57809c1 Darwin/OSX - bash doesn't understand '|&' - alt format for stderr redirect pipe. 2015-12-02 05:00:55 +02:00
Juha Laukkanen
4fa8834de4 Darwin/OSX ifdef __APPLE__ or __WXMAC__ cases.
OSX comment about __WXMAC__ usage
2015-12-02 05:00:41 +02:00
Juha Laukkanen
592aacb25a Darwin/OSX __POSIX__ definitions. 2015-12-02 05:00:41 +02:00
Juha Laukkanen
7edf747e84 Darwin/OSX Mutex & MAP_ANON vs. MAP_ANONYMOUS.
OSX compilation fix: mutex: Windows
2015-12-02 05:00:23 +02:00
Juha Laukkanen
fc3ff48777 Darwin/OSX SysMessage stub & __POSIX__ define. 2015-11-30 12:18:44 +02:00
Arthur Moore
5252edcd0e Properly handle spaces in the build path
Ex: /usr/local/Console Emulators/pcsx2/
2015-11-30 01:01:11 -05:00
Juha Laukkanen
f813b9e25b Darwin/OSX semaphore & thread & os backend. 2015-11-17 19:30:20 +02:00
Juha Laukkanen
c15958f3c2 Darwin/OSX flat file reader stub. 2015-11-17 19:28:03 +02:00
Juha Laukkanen
be720b96c1 Added OSX Darwin v13+ cmake files. 2015-11-17 19:25:12 +02:00
Gregory Hainaut
d5830ef708 cmake: reenable a couple of missing gcc optimization 2015-11-14 09:54:09 +01:00
2881 changed files with 473877 additions and 244153 deletions

89
.clang-format Normal file
View File

@@ -0,0 +1,89 @@
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: true
ColumnLimit: 0
CommentPragmas: '^ (IWYU pragma:|NOLINT)'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: []
IncludeCategories:
- Regex: '^"(stdafx|PrecompiledHeader)'
Priority: -2
- Regex: '^".*Common'
Priority: -1
- Regex: '^<'
Priority: 1
- Regex: '^"'
Priority: 2
IndentCaseLabels: true
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 3
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: false
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
...

12
.editorconfig Normal file
View File

@@ -0,0 +1,12 @@
# Should always be specified at the top of the file outside of any sections
root = true
# TODO: Add one for resource script file and other Linux specific files ?
[*.{cpp,h}]
indent_style = tab
indent_size = 4
#trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

28
.gitignore vendored
View File

@@ -13,19 +13,20 @@
*.bsc
*.aps
*.exe
*.wav
*.trace
*.dump
*.asm
!/pcsx2/IPU/yuv2rgb.asm
!/pcsx2/x86/ix86-32/aVif_proc-32.asm
!/plugins/CDVDpeops/i386.asm
!/plugins/zerogs/dx/x86-32.asm
!/plugins/zerogs/dx/x86-64.asm
!/plugins/zerogs/opengl/x86-32.asm
!/plugins/zzogl-pg/opengl/x86-32.asm
*.VC.db
*.VC.VC.opendb
**/Win32/Release*
**/Win32/Debug*
**/Win32/Devel*
@@ -45,6 +46,7 @@ Thumbs.db
Debug.txt
install_log.txt
padLog.txt
Debug
Release
@@ -52,6 +54,12 @@ Devel
oprofile_data/
# Recording Specific Ignores (pcsx2-rr)
*.p2s
*.p2m2
*.p2m2_backup
*.p2m2_SaveState.p2s
# Visual Studio upgrades
/Backup*
/UpgradeLog*.htm
@@ -74,7 +82,6 @@ oprofile_data/
/bin/sstates
/deps
/ipch
/nsis/output/
!/3rdparty/libjpeg/change.log
/3rdparty/portaudio/portaudio-2.0.pc
@@ -93,20 +100,15 @@ oprofile_data/
/3rdparty/portaudio/src/hostapi/wasapi/mingw-include
/3rdparty/**/include/wx/setup.h
/3rdparty/**/wx/msw/rcdefs.h
/nsis/svnrev_cdvdiso.nsh
/nsis/svnrev_gsdx.nsh
/nsis/svnrev_lilypad.nsh
/nsis/svnrev_pcsx2.nsh
/nsis/svnrev_spu2x.nsh
/nsis/svnrev_zerogs.nsh
/nsis/svnrev_zerospu2.nsh
/pcsx2/gui/Resources/*.h
!/pcsx2/gui/Resources/EmbeddedImage.h
/plugins/CDVDolio/Template
/plugins/GSdx/Template
/plugins/USBqemu/Win32/bin
/plugins/xpad/Template
/plugins/zerospu2/Windows/dsound51.cpp
/tools/bin
/tools/GSDumpGUI/bin
/tools/GSDumpGUI/obj
.vs
/pcsx2/windows/VCprojects/GSdx_opengl_debug_hw.txt
/pcsx2/windows/VCprojects/GSdx_opengl_debug_sw.txt

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "3rdparty/xz/xz"]
path = 3rdparty/xz/xz
url = https://github.com/PCSX2/xz.git

View File

@@ -1,23 +1,34 @@
language: cpp
sudo: required
dist: trusty
cache: ccache
dist: xenial
matrix:
include:
# Version 5 seems to be whatever is latest - for now it's 5.2
- env: VERSION=5
- env: VERSION=8 BITS=64
compiler: gcc
os: linux
- env: VERSION=4.9
- env: VERSION=8 BITS=32
compiler: gcc
os: linux
- env: VERSION=3.7
- env: VERSION=7 BITS=32
compiler: gcc
os: linux
- env: VERSION=3.8 BITS=32
compiler: clang
os: linux
before_install:
- ./travis.sh before_install
before_script:
- ./travis.sh before_script
script:
- ./travis.sh script
after_success:
- ./travis.sh after_success

View File

@@ -2,7 +2,7 @@
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
<OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir>
<OutDir>$(SolutionDir)deps\$(PlatformName)\$(Configuration)\</OutDir>
<IntDir>$(PlatformName)\$(Configuration)\</IntDir>
<ExtensionsToDeleteOnClean>*.bsc;*.idb;*.sbr;*.res;*.pch;*.pdb;*.obj;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
</PropertyGroup>
@@ -18,4 +18,4 @@
<CompileAs>Default</CompileAs>
</ClCompile>
</ItemDefinitionGroup>
</Project>
</Project>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
<OutDir>$(SvnRootDir)\deps\$(PlatformName)\$(Configuration)\</OutDir>
<IntDir>$(PlatformName)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>__WIN32__;WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>16Bytes</StructMemberAlignment>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
</Link>
<ResourceCompile>
<AdditionalIncludeDirectories>$(SvnRootDir)/common/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
</Project>

5866
3rdparty/GL/glcorearb.h vendored Normal file

File diff suppressed because it is too large Load Diff

118
3rdparty/GL/glext.h vendored
View File

@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright (c) 2013-2015 The Khronos Group Inc.
** Copyright (c) 2013-2016 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
** Khronos $Revision: 31811 $ on $Date: 2015-08-10 03:01:11 -0400 (Mon, 10 Aug 2015) $
** Khronos $Revision: 33248 $ on $Date: 2016-10-24 01:22:03 -0400 (Mon, 24 Oct 2016) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -53,7 +53,7 @@ extern "C" {
#define GLAPI extern
#endif
#define GL_GLEXT_VERSION 20150809
#define GL_GLEXT_VERSION 20161024
/* Generated C header for:
* API: gl
@@ -2654,7 +2654,7 @@ typedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint fram
typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
typedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
typedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
typedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);
@@ -2777,7 +2777,7 @@ GLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLs
GLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
GLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
GLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
GLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
GLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
GLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target);
GLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param);
@@ -4979,6 +4979,10 @@ GLAPI void APIENTRY glBlendBarrierKHR (void);
#define GL_KHR_texture_compression_astc_ldr 1
#endif /* GL_KHR_texture_compression_astc_ldr */
#ifndef GL_KHR_texture_compression_astc_sliced_3d
#define GL_KHR_texture_compression_astc_sliced_3d 1
#endif /* GL_KHR_texture_compression_astc_sliced_3d */
#ifndef GL_OES_byte_coordinates
#define GL_OES_byte_coordinates 1
typedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);
@@ -5374,6 +5378,23 @@ GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRG
#define GL_AMD_gcn_shader 1
#endif /* GL_AMD_gcn_shader */
#ifndef GL_AMD_gpu_shader_half_float
#define GL_AMD_gpu_shader_half_float 1
#define GL_FLOAT16_NV 0x8FF8
#define GL_FLOAT16_VEC2_NV 0x8FF9
#define GL_FLOAT16_VEC3_NV 0x8FFA
#define GL_FLOAT16_VEC4_NV 0x8FFB
#define GL_FLOAT16_MAT2_AMD 0x91C5
#define GL_FLOAT16_MAT3_AMD 0x91C6
#define GL_FLOAT16_MAT4_AMD 0x91C7
#define GL_FLOAT16_MAT2x3_AMD 0x91C8
#define GL_FLOAT16_MAT2x4_AMD 0x91C9
#define GL_FLOAT16_MAT3x2_AMD 0x91CA
#define GL_FLOAT16_MAT3x4_AMD 0x91CB
#define GL_FLOAT16_MAT4x2_AMD 0x91CC
#define GL_FLOAT16_MAT4x3_AMD 0x91CD
#endif /* GL_AMD_gpu_shader_half_float */
#ifndef GL_AMD_gpu_shader_int64
#define GL_AMD_gpu_shader_int64 1
typedef int64_t GLint64EXT;
@@ -5401,10 +5422,6 @@ typedef int64_t GLint64EXT;
#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
#define GL_FLOAT16_NV 0x8FF8
#define GL_FLOAT16_VEC2_NV 0x8FF9
#define GL_FLOAT16_VEC3_NV 0x8FFA
#define GL_FLOAT16_VEC4_NV 0x8FFB
typedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
typedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
typedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
@@ -5592,6 +5609,14 @@ GLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLf
#define GL_AMD_shader_atomic_counter_ops 1
#endif /* GL_AMD_shader_atomic_counter_ops */
#ifndef GL_AMD_shader_ballot
#define GL_AMD_shader_ballot 1
#endif /* GL_AMD_shader_ballot */
#ifndef GL_AMD_shader_explicit_vertex_parameter
#define GL_AMD_shader_explicit_vertex_parameter 1
#endif /* GL_AMD_shader_explicit_vertex_parameter */
#ifndef GL_AMD_shader_stencil_export
#define GL_AMD_shader_stencil_export 1
#endif /* GL_AMD_shader_stencil_export */
@@ -8632,6 +8657,20 @@ GLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei s
#endif
#endif /* GL_EXT_vertex_weighting */
#ifndef GL_EXT_window_rectangles
#define GL_EXT_window_rectangles 1
#define GL_INCLUSIVE_EXT 0x8F10
#define GL_EXCLUSIVE_EXT 0x8F11
#define GL_WINDOW_RECTANGLE_EXT 0x8F12
#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13
#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14
#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15
typedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);
#endif
#endif /* GL_EXT_window_rectangles */
#ifndef GL_EXT_x11_sync_object
#define GL_EXT_x11_sync_object 1
#define GL_SYNC_X11_FENCE_EXT 0x90E1
@@ -8809,6 +8848,11 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG
#define GL_INTERLACE_READ_INGR 0x8568
#endif /* GL_INGR_interlace_read */
#ifndef GL_INTEL_conservative_rasterization
#define GL_INTEL_conservative_rasterization 1
#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE
#endif /* GL_INTEL_conservative_rasterization */
#ifndef GL_INTEL_fragment_shader_ordering
#define GL_INTEL_fragment_shader_ordering 1
#endif /* GL_INTEL_fragment_shader_ordering */
@@ -9125,6 +9169,17 @@ GLAPI void APIENTRY glBlendBarrierNV (void);
#define GL_NV_blend_square 1
#endif /* GL_NV_blend_square */
#ifndef GL_NV_clip_space_w_scaling
#define GL_NV_clip_space_w_scaling 1
#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C
#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D
#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E
typedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);
#endif
#endif /* GL_NV_clip_space_w_scaling */
#ifndef GL_NV_command_list
#define GL_NV_command_list 1
#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000
@@ -9227,6 +9282,17 @@ GLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat valu
#endif
#endif /* GL_NV_conservative_raster_dilate */
#ifndef GL_NV_conservative_raster_pre_snap_triangles
#define GL_NV_conservative_raster_pre_snap_triangles 1
#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D
#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E
#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F
typedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);
#endif
#endif /* GL_NV_conservative_raster_pre_snap_triangles */
#ifndef GL_NV_copy_depth_to_color
#define GL_NV_copy_depth_to_color 1
#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E
@@ -10219,6 +10285,11 @@ GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname,
#endif
#endif /* GL_NV_register_combiners2 */
#ifndef GL_NV_robustness_video_memory_purge
#define GL_NV_robustness_video_memory_purge 1
#define GL_PURGED_CONTEXT_RESET_NV 0x92BB
#endif /* GL_NV_robustness_video_memory_purge */
#ifndef GL_NV_sample_locations
#define GL_NV_sample_locations 1
#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
@@ -10251,6 +10322,10 @@ GLAPI void APIENTRY glResolveDepthValuesNV (void);
#define GL_NV_shader_atomic_float 1
#endif /* GL_NV_shader_atomic_float */
#ifndef GL_NV_shader_atomic_float64
#define GL_NV_shader_atomic_float64 1
#endif /* GL_NV_shader_atomic_float64 */
#ifndef GL_NV_shader_atomic_fp16_vector
#define GL_NV_shader_atomic_fp16_vector 1
#endif /* GL_NV_shader_atomic_fp16_vector */
@@ -10314,6 +10389,10 @@ GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLs
#define GL_NV_shader_thread_shuffle 1
#endif /* GL_NV_shader_thread_shuffle */
#ifndef GL_NV_stereo_view_rendering
#define GL_NV_stereo_view_rendering 1
#endif /* GL_NV_stereo_view_rendering */
#ifndef GL_NV_tessellation_program5
#define GL_NV_tessellation_program5 1
#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
@@ -11084,6 +11163,26 @@ GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot
#define GL_NV_viewport_array2 1
#endif /* GL_NV_viewport_array2 */
#ifndef GL_NV_viewport_swizzle
#define GL_NV_viewport_swizzle 1
#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353
#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355
#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356
#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357
#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358
#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359
#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A
#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B
typedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);
#endif
#endif /* GL_NV_viewport_swizzle */
#ifndef GL_OML_interlace
#define GL_OML_interlace 1
#define GL_INTERLACE_OML 0x8980
@@ -11111,6 +11210,7 @@ GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
#define GL_MAX_VIEWS_OVR 0x9631
#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);

View File

@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright (c) 2013-2015 The Khronos Group Inc.
** Copyright (c) 2013-2016 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
** Khronos $Revision: 31597 $ on $Date: 2015-06-25 16:32:35 -0400 (Thu, 25 Jun 2015) $
** Khronos $Revision: 33248 $ on $Date: 2016-10-24 01:22:03 -0400 (Mon, 24 Oct 2016) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -41,7 +41,7 @@ extern "C" {
#include <windows.h>
#endif
#define WGL_WGLEXT_VERSION 20150623
#define WGL_WGLEXT_VERSION 20161024
/* Generated C header for:
* API: wgl

21
3rdparty/baseclasses/LICENSE vendored Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Microsoft Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -3,14 +3,14 @@
//
// Desc: DirectShow base classes - implements CRenderedInputPin class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h" // DirectShow base class definitions
#include <streams.h> // DirectShow base class definitions
#include <mmsystem.h> // Needed for definition of timeGetTime
#include <limits.h> // Standard data type limit definitions
#include "measure.h" // Used for time critical log functions
#include <measure.h> // Used for time critical log functions
#include "amextra.h"
@@ -18,22 +18,22 @@
// Implements CRenderedInputPin class
CRenderedInputPin::CRenderedInputPin(TCHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName) :
CRenderedInputPin::CRenderedInputPin(__in_opt LPCTSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName) :
CBaseInputPin(pObjectName, pFilter, pLock, phr, pName),
m_bAtEndOfStream(FALSE),
m_bCompleteNotified(FALSE)
{
}
#ifdef UNICODE
CRenderedInputPin::CRenderedInputPin(CHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName) :
CRenderedInputPin::CRenderedInputPin(__in_opt LPCSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName) :
CBaseInputPin(pObjectName, pFilter, pLock, phr, pName),
m_bAtEndOfStream(FALSE),
m_bCompleteNotified(FALSE)

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -22,17 +22,17 @@ class CRenderedInputPin : public CBaseInputPin
{
public:
CRenderedInputPin(TCHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
CRenderedInputPin(__in_opt LPCTSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CRenderedInputPin(CHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
CRenderedInputPin(__in_opt LPCSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#endif
// Override methods to track end of stream state

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - efines class hierarchy for streams
// architecture.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -73,9 +73,9 @@ protected:
public:
CBaseMediaFilter(
const TCHAR *pName,
LPUNKNOWN pUnk,
CCritSec *pLock,
__in_opt LPCTSTR pName,
__inout_opt LPUNKNOWN pUnk,
__in CCritSec *pLock,
REFCLSID clsid);
virtual ~CBaseMediaFilter();
@@ -83,21 +83,21 @@ public:
DECLARE_IUNKNOWN
// override this to say what interfaces we support where
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
//
// --- IPersist method ---
//
STDMETHODIMP GetClassID(CLSID *pClsID);
STDMETHODIMP GetClassID(__out CLSID *pClsID);
// --- IMediaFilter methods ---
STDMETHODIMP GetState(DWORD dwMSecs, FILTER_STATE *State);
STDMETHODIMP GetState(DWORD dwMSecs, __out FILTER_STATE *State);
STDMETHODIMP SetSyncSource(IReferenceClock *pClock);
STDMETHODIMP SetSyncSource(__inout_opt IReferenceClock *pClock);
STDMETHODIMP GetSyncSource(IReferenceClock **pClock);
STDMETHODIMP GetSyncSource(__deref_out_opt IReferenceClock **pClock);
// default implementation of Stop and Pause just record the
// state. Override to activate or de-activate your filter.
@@ -168,37 +168,37 @@ protected:
public:
CBaseFilter(
const TCHAR *pName, // Object description
LPUNKNOWN pUnk, // IUnknown of delegating object
CCritSec *pLock, // Object who maintains lock
REFCLSID clsid); // The clsid to be used to serialize this filter
__in_opt LPCTSTR pName, // Object description
__inout_opt LPUNKNOWN pUnk, // IUnknown of delegating object
__in CCritSec *pLock, // Object who maintains lock
REFCLSID clsid); // The clsid to be used to serialize this filter
CBaseFilter(
TCHAR *pName, // Object description
LPUNKNOWN pUnk, // IUnknown of delegating object
CCritSec *pLock, // Object who maintains lock
REFCLSID clsid, // The clsid to be used to serialize this filter
HRESULT *phr); // General OLE return code
__in_opt LPCTSTR pName, // Object description
__in_opt LPUNKNOWN pUnk, // IUnknown of delegating object
__in CCritSec *pLock, // Object who maintains lock
REFCLSID clsid, // The clsid to be used to serialize this filter
__inout HRESULT *phr); // General OLE return code
#ifdef UNICODE
CBaseFilter(
const CHAR *pName, // Object description
LPUNKNOWN pUnk, // IUnknown of delegating object
CCritSec *pLock, // Object who maintains lock
REFCLSID clsid); // The clsid to be used to serialize this filter
__in_opt LPCSTR pName, // Object description
__in_opt LPUNKNOWN pUnk, // IUnknown of delegating object
__in CCritSec *pLock, // Object who maintains lock
REFCLSID clsid); // The clsid to be used to serialize this filter
CBaseFilter(
CHAR *pName, // Object description
LPUNKNOWN pUnk, // IUnknown of delegating object
CCritSec *pLock, // Object who maintains lock
REFCLSID clsid, // The clsid to be used to serialize this filter
HRESULT *phr); // General OLE return code
__in_opt LPCSTR pName, // Object description
__in_opt LPUNKNOWN pUnk, // IUnknown of delegating object
__in CCritSec *pLock, // Object who maintains lock
REFCLSID clsid, // The clsid to be used to serialize this filter
__inout HRESULT *phr); // General OLE return code
#endif
~CBaseFilter();
DECLARE_IUNKNOWN
// override this to say what interfaces we support where
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
#ifdef DEBUG
STDMETHODIMP_(ULONG) NonDelegatingRelease();
#endif
@@ -207,15 +207,15 @@ public:
// --- IPersist method ---
//
STDMETHODIMP GetClassID(CLSID *pClsID);
STDMETHODIMP GetClassID(__out CLSID *pClsID);
// --- IMediaFilter methods ---
STDMETHODIMP GetState(DWORD dwMSecs, FILTER_STATE *State);
STDMETHODIMP GetState(DWORD dwMSecs, __out FILTER_STATE *State);
STDMETHODIMP SetSyncSource(IReferenceClock *pClock);
STDMETHODIMP SetSyncSource(__in_opt IReferenceClock *pClock);
STDMETHODIMP GetSyncSource(IReferenceClock **pClock);
STDMETHODIMP GetSyncSource(__deref_out_opt IReferenceClock **pClock);
// override Stop and Pause so we can activate the pins.
@@ -253,27 +253,27 @@ public:
// pin enumerator
STDMETHODIMP EnumPins(
IEnumPins ** ppEnum);
__deref_out IEnumPins ** ppEnum);
// default behaviour of FindPin assumes pin ids are their names
STDMETHODIMP FindPin(
LPCWSTR Id,
IPin ** ppPin
__deref_out IPin ** ppPin
);
STDMETHODIMP QueryFilterInfo(
FILTER_INFO * pInfo);
__out FILTER_INFO * pInfo);
STDMETHODIMP JoinFilterGraph(
IFilterGraph * pGraph,
LPCWSTR pName);
__inout_opt IFilterGraph * pGraph,
__in_opt LPCWSTR pName);
// return a Vendor information string. Optional - may return E_NOTIMPL.
// memory returned should be freed using CoTaskMemFree
// default implementation returns E_NOTIMPL
STDMETHODIMP QueryVendorInfo(
LPWSTR* pVendorInfo
__deref_out LPWSTR* pVendorInfo
);
// --- helper methods ---
@@ -287,7 +287,7 @@ public:
LONG_PTR EventParam2);
// return the filter graph we belong to
IFilterGraph *GetFilterGraph() {
__out_opt IFilterGraph *GetFilterGraph() {
return m_pGraph;
}
@@ -295,7 +295,7 @@ public:
// pPin is the pin to reconnect
// pmt is the type to reconnect with - can be NULL
// Calls ReconnectEx on the filter graph
HRESULT ReconnectPin(IPin *pPin, AM_MEDIA_TYPE const *pmt);
HRESULT ReconnectPin(IPin *pPin, __in_opt AM_MEDIA_TYPE const *pmt);
// find out the current pin version (used by enumerators)
virtual LONG GetPinVersion();
@@ -314,7 +314,7 @@ public:
// --- setup helper methods ---
// (override to return filters setup data)
virtual LPAMOVIESETUP_FILTER GetSetupData(){ return NULL; }
virtual __out_opt LPAMOVIESETUP_FILTER GetSetupData(){ return NULL; }
};
@@ -376,8 +376,8 @@ protected:
// try all the media types in this enumerator - for each that
// we accept, try to connect using ReceiveConnection.
HRESULT TryMediaTypes(
IPin *pReceivePin, // connect to this pin
const CMediaType *pmt, // proposed type from Connect
IPin *pReceivePin, // connect to this pin
__in_opt const CMediaType *pmt, // proposed type from Connect
IEnumMediaTypes *pEnum); // try this enumerator
// establish a connection with a suitable mediatype. Needs to
@@ -386,31 +386,31 @@ protected:
// enumerator until we find one that works.
HRESULT AgreeMediaType(
IPin *pReceivePin, // connect to this pin
const CMediaType *pmt); // proposed type from Connect
const CMediaType *pmt); // proposed type from Connect
public:
CBasePin(
TCHAR *pObjectName, // Object description
CBaseFilter *pFilter, // Owning filter who knows about pins
CCritSec *pLock, // Object who implements the lock
HRESULT *phr, // General OLE return code
LPCWSTR pName, // Pin name for us
__in_opt LPCTSTR pObjectName, // Object description
__in CBaseFilter *pFilter, // Owning filter who knows about pins
__in CCritSec *pLock, // Object who implements the lock
__inout HRESULT *phr, // General OLE return code
__in_opt LPCWSTR pName, // Pin name for us
PIN_DIRECTION dir); // Either PINDIR_INPUT or PINDIR_OUTPUT
#ifdef UNICODE
CBasePin(
CHAR *pObjectName, // Object description
CBaseFilter *pFilter, // Owning filter who knows about pins
CCritSec *pLock, // Object who implements the lock
HRESULT *phr, // General OLE return code
LPCWSTR pName, // Pin name for us
__in_opt LPCSTR pObjectName, // Object description
__in CBaseFilter *pFilter, // Owning filter who knows about pins
__in CCritSec *pLock, // Object who implements the lock
__inout HRESULT *phr, // General OLE return code
__in_opt LPCWSTR pName, // Pin name for us
PIN_DIRECTION dir); // Either PINDIR_INPUT or PINDIR_OUTPUT
#endif
virtual ~CBasePin();
DECLARE_IUNKNOWN
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
STDMETHODIMP_(ULONG) NonDelegatingRelease();
STDMETHODIMP_(ULONG) NonDelegatingAddRef();
@@ -421,7 +421,7 @@ public:
// (subtype or format type may be GUID_NULL).
STDMETHODIMP Connect(
IPin * pReceivePin,
const AM_MEDIA_TYPE *pmt // optional media type
__in_opt const AM_MEDIA_TYPE *pmt // optional media type
);
// (passive) accept a connection from another pin
@@ -432,20 +432,20 @@ public:
STDMETHODIMP Disconnect();
STDMETHODIMP ConnectedTo(IPin **pPin);
STDMETHODIMP ConnectedTo(__deref_out IPin **pPin);
STDMETHODIMP ConnectionMediaType(AM_MEDIA_TYPE *pmt);
STDMETHODIMP ConnectionMediaType(__out AM_MEDIA_TYPE *pmt);
STDMETHODIMP QueryPinInfo(
PIN_INFO * pInfo
__out PIN_INFO * pInfo
);
STDMETHODIMP QueryDirection(
PIN_DIRECTION * pPinDir
__out PIN_DIRECTION * pPinDir
);
STDMETHODIMP QueryId(
LPWSTR * Id
__deref_out LPWSTR * Id
);
// does the pin support this media type
@@ -455,7 +455,7 @@ public:
// return an enumerator for this pins preferred media types
STDMETHODIMP EnumMediaTypes(
IEnumMediaTypes **ppEnum
__deref_out IEnumMediaTypes **ppEnum
);
// return an array of IPin* - the pins that this pin internally connects to
@@ -466,9 +466,9 @@ public:
// all visible output pins and vice versa.
// apPin can be NULL if nPin==0 (not otherwise).
STDMETHODIMP QueryInternalConnections(
IPin* *apPin, // array of IPin*
ULONG *nPin // on input, the number of slots
// on output the number of pins
__out_ecount_part(*nPin,*nPin) IPin* *apPin, // array of IPin*
__inout ULONG *nPin // on input, the number of slots
// on output the number of pins
) { return E_NOTIMPL; }
// Called when no more data will be sent
@@ -534,7 +534,7 @@ public:
virtual HRESULT CompleteConnect(IPin *pReceivePin);
// returns the preferred formats for a pin
virtual HRESULT GetMediaType(int iPosition,CMediaType *pMediaType);
virtual HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType);
// access to NewSegment values
REFERENCE_TIME CurrentStopTime() {
@@ -616,26 +616,26 @@ class CEnumPins : public IEnumPins // The interface we support
public:
CEnumPins(
CBaseFilter *pFilter,
CEnumPins *pEnumPins);
__in CBaseFilter *pFilter,
__in_opt CEnumPins *pEnumPins);
virtual ~CEnumPins();
// IUnknown
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP QueryInterface(REFIID riid, __deref_out void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IEnumPins
STDMETHODIMP Next(
ULONG cPins, // place this many pins...
IPin ** ppPins, // ...in this array of IPin*
ULONG * pcFetched // actual count passed returned here
__out_ecount(cPins) IPin ** ppPins, // ...in this array of IPin*
__out_opt ULONG * pcFetched // actual count passed returned here
);
STDMETHODIMP Skip(ULONG cPins);
STDMETHODIMP Reset();
STDMETHODIMP Clone(IEnumPins **ppEnum);
STDMETHODIMP Clone(__deref_out IEnumPins **ppEnum);
};
@@ -672,26 +672,26 @@ class CEnumMediaTypes : public IEnumMediaTypes // The interface we support
public:
CEnumMediaTypes(
CBasePin *pPin,
CEnumMediaTypes *pEnumMediaTypes);
__in CBasePin *pPin,
__in_opt CEnumMediaTypes *pEnumMediaTypes);
virtual ~CEnumMediaTypes();
// IUnknown
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP QueryInterface(REFIID riid, __deref_out void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IEnumMediaTypes
STDMETHODIMP Next(
ULONG cMediaTypes, // place this many pins...
AM_MEDIA_TYPE ** ppMediaTypes, // ...in this array
ULONG * pcFetched // actual count passed
__out_ecount(cMediaTypes) AM_MEDIA_TYPE ** ppMediaTypes, // ...in this array
__out_opt ULONG * pcFetched // actual count passed
);
STDMETHODIMP Skip(ULONG cMediaTypes);
STDMETHODIMP Reset();
STDMETHODIMP Clone(IEnumMediaTypes **ppEnum);
STDMETHODIMP Clone(__deref_out IEnumMediaTypes **ppEnum);
};
@@ -721,25 +721,25 @@ protected:
public:
CBaseOutputPin(
TCHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CBaseOutputPin(
CHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#endif
// override CompleteConnect() so we can negotiate an allocator
virtual HRESULT CompleteConnect(IPin *pReceivePin);
// negotiate the allocator and its buffer size/count and other properties
// Calls DecideBufferSize to set properties
virtual HRESULT DecideAllocator(IMemInputPin * pPin, IMemAllocator ** pAlloc);
virtual HRESULT DecideAllocator(IMemInputPin * pPin, __deref_out IMemAllocator ** pAlloc);
// override this to set the buffer size and count. Return an error
// if the size/count is not to your liking.
@@ -748,13 +748,13 @@ public:
// no preference on these.
virtual HRESULT DecideBufferSize(
IMemAllocator * pAlloc,
ALLOCATOR_PROPERTIES * ppropInputRequest
__inout ALLOCATOR_PROPERTIES * ppropInputRequest
) PURE;
// returns an empty sample buffer from the allocator
virtual HRESULT GetDeliveryBuffer(IMediaSample ** ppSample,
REFERENCE_TIME * pStartTime,
REFERENCE_TIME * pEndTime,
virtual HRESULT GetDeliveryBuffer(__deref_out IMediaSample ** ppSample,
__in_opt REFERENCE_TIME * pStartTime,
__in_opt REFERENCE_TIME * pEndTime,
DWORD dwFlags);
// deliver a filled-in sample to the connected input pin
@@ -764,7 +764,7 @@ public:
virtual HRESULT Deliver(IMediaSample *);
// override this to control the connection
virtual HRESULT InitAllocator(IMemAllocator **ppAlloc);
virtual HRESULT InitAllocator(__deref_out IMemAllocator **ppAlloc);
HRESULT CheckConnect(IPin *pPin);
HRESULT BreakConnect();
@@ -839,29 +839,29 @@ protected:
public:
CBaseInputPin(
TCHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CBaseInputPin(
CHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#endif
virtual ~CBaseInputPin();
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
// return the allocator interface that this input pin
// would like the output pin to use
STDMETHODIMP GetAllocator(IMemAllocator ** ppAllocator);
STDMETHODIMP GetAllocator(__deref_out IMemAllocator ** ppAllocator);
// tell the input pin which allocator the output pin is actually
// going to use.
@@ -874,9 +874,9 @@ public:
// do something with these media samples
STDMETHODIMP ReceiveMultiple (
IMediaSample **pSamples,
__in_ecount(nSamples) IMediaSample **pSamples,
long nSamples,
long *nSamplesProcessed);
__out long *nSamplesProcessed);
// See if Receive() blocks
STDMETHODIMP ReceiveCanBlock();
@@ -898,7 +898,7 @@ public:
// default implementation returns E_NOTIMPL. Override if you have
// specific alignment or prefix needs, but could use an upstream
// allocator
STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES*pProps);
STDMETHODIMP GetAllocatorRequirements(__out ALLOCATOR_PROPERTIES*pProps);
// Release the pin's allocator.
HRESULT BreakConnect();
@@ -952,25 +952,25 @@ class CDynamicOutputPin : public CBaseOutputPin,
public:
#ifdef UNICODE
CDynamicOutputPin(
CHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
#endif
CDynamicOutputPin(
TCHAR *pObjectName,
CBaseFilter *pFilter,
CCritSec *pLock,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__in CBaseFilter *pFilter,
__in CCritSec *pLock,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
~CDynamicOutputPin();
// IUnknown Methods
DECLARE_IUNKNOWN
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
// IPin Methods
STDMETHODIMP Disconnect(void);
@@ -1083,14 +1083,14 @@ private:
class CAutoUsingOutputPin
{
public:
CAutoUsingOutputPin( CDynamicOutputPin* pOutputPin, HRESULT* phr );
CAutoUsingOutputPin( __in CDynamicOutputPin* pOutputPin, __inout HRESULT* phr );
~CAutoUsingOutputPin();
private:
CDynamicOutputPin* m_pOutputPin;
};
inline CAutoUsingOutputPin::CAutoUsingOutputPin( CDynamicOutputPin* pOutputPin, HRESULT* phr ) :
inline CAutoUsingOutputPin::CAutoUsingOutputPin( __in CDynamicOutputPin* pOutputPin, __inout HRESULT* phr ) :
m_pOutputPin(NULL)
{
// The caller should always pass in valid pointers.
@@ -1213,7 +1213,7 @@ protected:
into the top word
*/
DWORD m_dwTypeSpecificFlags; /* Media type specific flags */
LPBYTE m_pBuffer; /* Pointer to the complete buffer */
__field_ecount_opt(m_cbBuffer) LPBYTE m_pBuffer; /* Pointer to the complete buffer */
LONG m_lActual; /* Length of data in this sample */
LONG m_cbBuffer; /* Size of the buffer */
CBaseAllocator *m_pAllocator; /* The allocator who owns us */
@@ -1231,17 +1231,17 @@ public:
public:
CMediaSample(
TCHAR *pName,
CBaseAllocator *pAllocator,
HRESULT *phr,
LPBYTE pBuffer = NULL,
__in_opt LPCTSTR pName,
__in_opt CBaseAllocator *pAllocator,
__inout_opt HRESULT *phr,
__in_bcount_opt(length) LPBYTE pBuffer = NULL,
LONG length = 0);
#ifdef UNICODE
CMediaSample(
CHAR *pName,
CBaseAllocator *pAllocator,
HRESULT *phr,
LPBYTE pBuffer = NULL,
__in_opt LPCSTR pName,
__in_opt CBaseAllocator *pAllocator,
__inout_opt HRESULT *phr,
__in_bcount_opt(length) LPBYTE pBuffer = NULL,
LONG length = 0);
#endif
@@ -1249,7 +1249,7 @@ public:
/* Note the media sample does not delegate to its owner */
STDMETHODIMP QueryInterface(REFIID riid, void **ppv);
STDMETHODIMP QueryInterface(REFIID riid, __deref_out void **ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
@@ -1257,23 +1257,23 @@ public:
// want variable sized pointers or pointers into already-read data.
// This is only available through a CMediaSample* not an IMediaSample*
// and so cannot be changed by clients.
HRESULT SetPointer(BYTE * ptr, LONG cBytes);
HRESULT SetPointer(__in_bcount(cBytes) BYTE * ptr, LONG cBytes);
// Get me a read/write pointer to this buffer's memory.
STDMETHODIMP GetPointer(BYTE ** ppBuffer);
STDMETHODIMP GetPointer(__deref_out BYTE ** ppBuffer);
STDMETHODIMP_(LONG) GetSize(void);
// get the stream time at which this sample should start and finish.
STDMETHODIMP GetTime(
REFERENCE_TIME * pTimeStart, // put time here
REFERENCE_TIME * pTimeEnd
__out REFERENCE_TIME * pTimeStart, // put time here
__out REFERENCE_TIME * pTimeEnd
);
// Set the stream time at which this sample should start and finish.
STDMETHODIMP SetTime(
REFERENCE_TIME * pTimeStart, // put time here
REFERENCE_TIME * pTimeEnd
__in_opt REFERENCE_TIME * pTimeStart, // put time here
__in_opt REFERENCE_TIME * pTimeEnd
);
STDMETHODIMP IsSyncPoint(void);
STDMETHODIMP SetSyncPoint(BOOL bIsSyncPoint);
@@ -1285,8 +1285,8 @@ public:
// these allow for limited format changes in band
STDMETHODIMP GetMediaType(AM_MEDIA_TYPE **ppMediaType);
STDMETHODIMP SetMediaType(AM_MEDIA_TYPE *pMediaType);
STDMETHODIMP GetMediaType(__deref_out AM_MEDIA_TYPE **ppMediaType);
STDMETHODIMP SetMediaType(__in_opt AM_MEDIA_TYPE *pMediaType);
// returns S_OK if there is a discontinuity in the data (this same is
// not a continuation of the previous stream of data
@@ -1298,25 +1298,25 @@ public:
// get the media times for this sample
STDMETHODIMP GetMediaTime(
LONGLONG * pTimeStart,
LONGLONG * pTimeEnd
__out LONGLONG * pTimeStart,
__out LONGLONG * pTimeEnd
);
// Set the media times for this sample
STDMETHODIMP SetMediaTime(
LONGLONG * pTimeStart,
LONGLONG * pTimeEnd
__in_opt LONGLONG * pTimeStart,
__in_opt LONGLONG * pTimeEnd
);
// Set and get properties (IMediaSample2)
STDMETHODIMP GetProperties(
DWORD cbProperties,
BYTE * pbProperties
__out_bcount(cbProperties) BYTE * pbProperties
);
STDMETHODIMP SetProperties(
DWORD cbProperties,
const BYTE * pbProperties
__in_bcount(cbProperties) const BYTE * pbProperties
);
};
@@ -1344,7 +1344,7 @@ class AM_NOVTABLE CBaseAllocator : public CUnknown,// A non delegating IUnknown
friend class CSampleList;
/* Trick to get at protected member in CMediaSample */
static CMediaSample * &NextSample(CMediaSample *pSample)
static CMediaSample * &NextSample(__in CMediaSample *pSample)
{
return pSample->m_pNext;
};
@@ -1361,9 +1361,9 @@ class AM_NOVTABLE CBaseAllocator : public CUnknown,// A non delegating IUnknown
};
#endif
CMediaSample *Head() const { return m_List; };
CMediaSample *Next(CMediaSample *pSample) const { return CBaseAllocator::NextSample(pSample); };
CMediaSample *Next(__in CMediaSample *pSample) const { return CBaseAllocator::NextSample(pSample); };
int GetCount() const { return m_nOnList; };
void Add(CMediaSample *pSample)
void Add(__inout CMediaSample *pSample)
{
ASSERT(pSample != NULL);
CBaseAllocator::NextSample(pSample) = m_List;
@@ -1379,7 +1379,7 @@ class AM_NOVTABLE CBaseAllocator : public CUnknown,// A non delegating IUnknown
}
return pSample;
};
void Remove(CMediaSample *pSample);
void Remove(__inout CMediaSample *pSample);
public:
CMediaSample *m_List;
@@ -1455,11 +1455,11 @@ protected:
public:
CBaseAllocator(
TCHAR *, LPUNKNOWN, HRESULT *,
__in_opt LPCTSTR , __inout_opt LPUNKNOWN, __inout HRESULT *,
BOOL bEvent = TRUE, BOOL fEnableReleaseCallback = FALSE);
#ifdef UNICODE
CBaseAllocator(
CHAR *, LPUNKNOWN, HRESULT *,
__in_opt LPCSTR , __inout_opt LPUNKNOWN, __inout HRESULT *,
BOOL bEvent = TRUE, BOOL fEnableReleaseCallback = FALSE);
#endif
virtual ~CBaseAllocator();
@@ -1467,15 +1467,15 @@ public:
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
STDMETHODIMP SetProperties(
ALLOCATOR_PROPERTIES* pRequest,
ALLOCATOR_PROPERTIES* pActual);
__in ALLOCATOR_PROPERTIES* pRequest,
__out ALLOCATOR_PROPERTIES* pActual);
// return the properties actually being used on this allocator
STDMETHODIMP GetProperties(
ALLOCATOR_PROPERTIES* pProps);
__out ALLOCATOR_PROPERTIES* pProps);
// override Commit to allocate memory. We handle the GetBuffer
//state changes
@@ -1494,9 +1494,9 @@ public:
// bPrevFramesSkipped is not used (used only by the video renderer's
// allocator where it affects quality management in direct draw).
STDMETHODIMP GetBuffer(IMediaSample **ppBuffer,
REFERENCE_TIME * pStartTime,
REFERENCE_TIME * pEndTime,
STDMETHODIMP GetBuffer(__deref_out IMediaSample **ppBuffer,
__in_opt REFERENCE_TIME * pStartTime,
__in_opt REFERENCE_TIME * pEndTime,
DWORD dwFlags);
// final release of a CMediaSample will call this
@@ -1505,7 +1505,7 @@ public:
STDMETHODIMP SetNotify(IMemAllocatorNotifyCallbackTemp *pNotify);
STDMETHODIMP GetFreeCount(LONG *plBuffersFree);
STDMETHODIMP GetFreeCount(__out LONG *plBuffersFree);
// Notify that a sample is available
void NotifySample();
@@ -1532,7 +1532,7 @@ public:
//=====================================================================
// Make me one from quartz.dll
STDAPI CreateMemoryAllocator(IMemAllocator **ppAllocator);
STDAPI CreateMemoryAllocator(__deref_out IMemAllocator **ppAllocator);
class CMemAllocator : public CBaseAllocator
{
@@ -1554,15 +1554,15 @@ protected:
public:
/* This goes in the factory template table to create new instances */
static CUnknown *CreateInstance(LPUNKNOWN, HRESULT *);
static CUnknown *CreateInstance(__inout_opt LPUNKNOWN, __inout HRESULT *);
STDMETHODIMP SetProperties(
ALLOCATOR_PROPERTIES* pRequest,
ALLOCATOR_PROPERTIES* pActual);
__in ALLOCATOR_PROPERTIES* pRequest,
__out ALLOCATOR_PROPERTIES* pActual);
CMemAllocator(TCHAR *, LPUNKNOWN, HRESULT *);
CMemAllocator(__in_opt LPCTSTR , __inout_opt LPUNKNOWN, __inout HRESULT *);
#ifdef UNICODE
CMemAllocator(CHAR *, LPUNKNOWN, HRESULT *);
CMemAllocator(__in_opt LPCSTR , __inout_opt LPUNKNOWN, __inout HRESULT *);
#endif
~CMemAllocator();
};

View File

@@ -4,11 +4,11 @@
// Desc: DirectShow base classes - implements helper functions for
// bitmap formats.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include <limits.h>
// These are bit field masks for true colour devices

113
3rdparty/baseclasses/baseclasses.vcxproj vendored Normal file
View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{27F17499-A372-4408-8AFA-4F9F4584FBD3}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization Condition="$(Configuration.Contains(Release))">true</WholeProgramOptimization>
<UseDebugLibraries Condition="$(Configuration.Contains(Debug))">true</UseDebugLibraries>
<UseDebugLibraries Condition="!$(Configuration.Contains(Debug))">false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="PropertySheets">
<Import Project="..\..\3rdparty\DefaultProjectRootDir.props" />
<Import Project="..\..\3rdparty\3rdparty.props" />
<Import Condition="$(Configuration.Contains(Debug))" Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Condition="$(Configuration.Contains(Release))" Project="..\..\common\vsprops\CodeGen_Release.props" />
<Import Condition="!$(Configuration.Contains(Release))" Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>streams.h</PrecompiledHeaderFile>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="amextra.h" />
<ClInclude Include="amfilter.h" />
<ClInclude Include="cache.h" />
<ClInclude Include="combase.h" />
<ClInclude Include="ctlutil.h" />
<ClInclude Include="ddmm.h" />
<ClInclude Include="fourcc.h" />
<ClInclude Include="measure.h" />
<ClInclude Include="msgthrd.h" />
<ClInclude Include="mtype.h" />
<ClInclude Include="outputq.h" />
<ClInclude Include="pstream.h" />
<ClInclude Include="pullpin.h" />
<ClInclude Include="refclock.h" />
<ClInclude Include="reftime.h" />
<ClInclude Include="renbase.h" />
<ClInclude Include="schedule.h" />
<ClInclude Include="seekpt.h" />
<ClInclude Include="source.h" />
<ClInclude Include="streams.h" />
<ClInclude Include="strmctl.h" />
<ClInclude Include="sysclock.h" />
<ClInclude Include="transfrm.h" />
<ClInclude Include="transip.h" />
<ClInclude Include="vtrans.h" />
<ClInclude Include="wxdebug.h" />
<ClInclude Include="wxlist.h" />
<ClInclude Include="wxutil.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="amextra.cpp" />
<ClCompile Include="amfilter.cpp" />
<ClCompile Include="amvideo.cpp" />
<ClCompile Include="combase.cpp" />
<ClCompile Include="ctlutil.cpp" />
<ClCompile Include="ddmm.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="mtype.cpp" />
<ClCompile Include="outputq.cpp" />
<ClCompile Include="pstream.cpp" />
<ClCompile Include="pullpin.cpp" />
<ClCompile Include="refclock.cpp" />
<ClCompile Include="renbase.cpp" />
<ClCompile Include="schedule.cpp" />
<ClCompile Include="seekpt.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="source.cpp" />
<ClCompile Include="strmctl.cpp" />
<ClCompile Include="sysclock.cpp" />
<ClCompile Include="transfrm.cpp" />
<ClCompile Include="transip.cpp" />
<ClCompile Include="vtrans.cpp" />
<ClCompile Include="wxdebug.cpp" />
<ClCompile Include="wxlist.cpp" />
<ClCompile Include="wxutil.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="amextra.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="amfilter.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cache.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="combase.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ctlutil.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ddmm.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="fourcc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="msgthrd.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="reftime.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="refclock.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pullpin.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="pstream.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="outputq.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="mtype.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="measure.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="renbase.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="schedule.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="seekpt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="streams.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="source.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="strmctl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="sysclock.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="transfrm.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="transip.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="vtrans.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wxdebug.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wxlist.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wxutil.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="amextra.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="amfilter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="amvideo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="combase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ctlutil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ddmm.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="mtype.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="outputq.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pstream.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="pullpin.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="refclock.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="renbase.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="schedule.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="seekpt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="source.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="strmctl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="sysclock.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="transfrm.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="transip.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="vtrans.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wxdebug.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wxlist.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wxutil.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes - efines a non-MFC generic cache class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -54,11 +54,11 @@ private:
public:
CCache(TCHAR *pName,INT iItems);
CCache(__in_opt LPCTSTR pName,INT iItems);
virtual ~CCache();
/* Add an item to the cache */
CBaseObject *AddToCache(CBaseObject *pObject);
CBaseObject *AddToCache(__in CBaseObject *pObject);
/* Remove an item from the cache */
CBaseObject *RemoveFromCache();

View File

@@ -4,11 +4,11 @@
// Desc: DirectShow base classes - implements class hierarchy for creating
// COM objects.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#pragma warning( disable : 4514 ) // Disable warnings re unused inline functions
@@ -19,7 +19,7 @@ LONG CBaseObject::m_cObjects = 0;
/* Constructor */
CBaseObject::CBaseObject(const TCHAR *pName)
CBaseObject::CBaseObject(__in_opt LPCTSTR pName)
{
/* Increment the number of active objects */
InterlockedIncrement(&m_cObjects);
@@ -85,7 +85,7 @@ HINSTANCE LoadOLEAut32()
// We know we use "this" in the initialization list, we also know we don't modify *phr.
#pragma warning( disable : 4355 4100 )
CUnknown::CUnknown(const TCHAR *pName, LPUNKNOWN pUnk)
CUnknown::CUnknown(__in_opt LPCTSTR pName, __in_opt LPUNKNOWN pUnk)
: CBaseObject(pName)
/* Start the object with a reference count of zero - when the */
/* object is queried for it's first interface this may be */
@@ -107,7 +107,7 @@ CUnknown::CUnknown(const TCHAR *pName, LPUNKNOWN pUnk)
// This does the same as above except it has a useless HRESULT argument
// use the previous constructor, this is just left for compatibility...
CUnknown::CUnknown(TCHAR *pName, LPUNKNOWN pUnk,HRESULT *phr) :
CUnknown::CUnknown(__in_opt LPCTSTR pName, __in_opt LPUNKNOWN pUnk, __inout_opt HRESULT *phr) :
CBaseObject(pName),
m_cRef(0),
m_pUnknown( pUnk != 0 ? pUnk : reinterpret_cast<LPUNKNOWN>( static_cast<PNDUNKNOWN>(this) ) )
@@ -115,12 +115,12 @@ CUnknown::CUnknown(TCHAR *pName, LPUNKNOWN pUnk,HRESULT *phr) :
}
#ifdef UNICODE
CUnknown::CUnknown(const CHAR *pName, LPUNKNOWN pUnk)
CUnknown::CUnknown(__in_opt LPCSTR pName, __in_opt LPUNKNOWN pUnk)
: CBaseObject(pName), m_cRef(0),
m_pUnknown( pUnk != 0 ? pUnk : reinterpret_cast<LPUNKNOWN>( static_cast<PNDUNKNOWN>(this) ) )
{ }
CUnknown::CUnknown(CHAR *pName, LPUNKNOWN pUnk,HRESULT *phr) :
CUnknown::CUnknown(__in_opt LPCSTR pName, __in_opt LPUNKNOWN pUnk, __inout_opt HRESULT *phr) :
CBaseObject(pName), m_cRef(0),
m_pUnknown( pUnk != 0 ? pUnk : reinterpret_cast<LPUNKNOWN>( static_cast<PNDUNKNOWN>(this) ) )
{ }
@@ -132,7 +132,7 @@ CUnknown::CUnknown(CHAR *pName, LPUNKNOWN pUnk,HRESULT *phr) :
/* QueryInterface */
STDMETHODIMP CUnknown::NonDelegatingQueryInterface(REFIID riid, void ** ppv)
STDMETHODIMP CUnknown::NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv)
{
CheckPointer(ppv,E_POINTER);
ValidateReadWritePtr(ppv,sizeof(PVOID));
@@ -200,7 +200,9 @@ STDMETHODIMP_(ULONG) CUnknown::NonDelegatingRelease()
delete this;
return ULONG(0);
} else {
return ourmax(ULONG(m_cRef), 1ul);
// Don't touch m_cRef again even in this leg as the object
// may have just been released on another thread too
return ourmax(ULONG(lRef), 1ul);
}
}
@@ -208,7 +210,7 @@ STDMETHODIMP_(ULONG) CUnknown::NonDelegatingRelease()
/* Return an interface pointer to a requesting client
performing a thread safe AddRef as necessary */
STDAPI GetInterface(LPUNKNOWN pUnk, void **ppv)
STDAPI GetInterface(LPUNKNOWN pUnk, __out void **ppv)
{
CheckPointer(ppv, E_POINTER);
*ppv = pUnk;
@@ -240,16 +242,23 @@ BOOL WINAPI IsEqualObject(IUnknown *pFirst, IUnknown *pSecond)
/* See if the IUnknown pointers match */
hr = pFirst->QueryInterface(IID_IUnknown,(void **) &pUnknown1);
ASSERT(SUCCEEDED(hr));
if (FAILED(hr)) {
return FALSE;
}
ASSERT(pUnknown1);
hr = pSecond->QueryInterface(IID_IUnknown,(void **) &pUnknown2);
ASSERT(SUCCEEDED(hr));
ASSERT(pUnknown2);
/* Release the extra interfaces we hold */
/* Release the extra interface we hold */
pUnknown1->Release();
hr = pSecond->QueryInterface(IID_IUnknown,(void **) &pUnknown2);
if (FAILED(hr)) {
return FALSE;
}
ASSERT(pUnknown2);
/* Release the extra interface we hold */
pUnknown2->Release();
return (pUnknown1 == pUnknown2);
}

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a class hierarchy for creating
// COM objects.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -179,9 +179,9 @@ public:
/* These increment and decrement the number of active objects */
CBaseObject(const TCHAR *pName);
CBaseObject(__in_opt LPCTSTR pName);
#ifdef UNICODE
CBaseObject(const char *pName);
CBaseObject(__in_opt LPCSTR pName);
#endif
~CBaseObject();
@@ -208,15 +208,15 @@ protected: /* So we can override NonDelegatingRelease() */
public:
CUnknown(const TCHAR *pName, LPUNKNOWN pUnk);
CUnknown(__in_opt LPCTSTR pName, __in_opt LPUNKNOWN pUnk);
virtual ~CUnknown() {};
// This is redundant, just use the other constructor
// as we never touch the HRESULT in this anyway
CUnknown(TCHAR *pName, LPUNKNOWN pUnk,HRESULT *phr);
CUnknown(__in_opt LPCTSTR Name, __in_opt LPUNKNOWN pUnk, __inout_opt HRESULT *phr);
#ifdef UNICODE
CUnknown(const char *pName, LPUNKNOWN pUnk);
CUnknown(char *pName, LPUNKNOWN pUnk,HRESULT *phr);
CUnknown(__in_opt LPCSTR pName, __in_opt LPUNKNOWN pUnk);
CUnknown(__in_opt LPCSTR pName, __in_opt LPUNKNOWN pUnk,__inout_opt HRESULT *phr);
#endif
/* Return the owner of this object */
@@ -232,33 +232,19 @@ public:
/* Non delegating unknown implementation */
STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **);
STDMETHODIMP NonDelegatingQueryInterface(REFIID, __deref_out void **);
STDMETHODIMP_(ULONG) NonDelegatingAddRef();
STDMETHODIMP_(ULONG) NonDelegatingRelease();
};
#if (_MSC_VER <= 1200)
#pragma warning(disable:4211)
/* The standard InterlockedXXX functions won't take volatiles */
static inline LONG WINAPI InterlockedIncrement( volatile LONG * plong )
{ return InterlockedIncrement( const_cast<LONG*>( plong ) ); }
static inline LONG WINAPI InterlockedDecrement( volatile LONG * plong )
{ return InterlockedDecrement( const_cast<LONG*>( plong ) ); }
#pragma warning(default:4211)
#endif
/* Return an interface pointer to a requesting client
performing a thread safe AddRef as necessary */
STDAPI GetInterface(LPUNKNOWN pUnk, void **ppv);
STDAPI GetInterface(LPUNKNOWN pUnk, __out void **ppv);
/* A function that can create a new COM object */
typedef CUnknown *(CALLBACK *LPFNNewCOMObject)(LPUNKNOWN pUnkOuter, HRESULT *phr);
typedef CUnknown *(CALLBACK *LPFNNewCOMObject)(__in_opt LPUNKNOWN pUnkOuter, __inout_opt HRESULT *phr);
/* A function (can be NULL) which is called from the DLL entrypoint
routine for each factory template:
@@ -285,7 +271,7 @@ public:
return (IsEqualCLSID(*m_ClsID,rclsid));
};
CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr) const {
CUnknown *CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout_opt HRESULT *phr) const {
CheckPointer(phr,NULL);
return m_lpfnNew(pUnk, phr);
};
@@ -297,7 +283,7 @@ public:
class supports (the default implementation only supports IUnknown) */
#define DECLARE_IUNKNOWN \
STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { \
STDMETHODIMP QueryInterface(REFIID riid, __deref_out void **ppv) { \
return GetOwner()->QueryInterface(riid,ppv); \
}; \
STDMETHODIMP_(ULONG) AddRef() { \

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -33,20 +33,20 @@ public:
~CBaseDispatch();
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
REFIID riid,
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
};
@@ -63,32 +63,32 @@ public:
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
};
@@ -100,37 +100,37 @@ class AM_NOVTABLE CMediaEvent :
public:
CMediaEvent(const TCHAR *, LPUNKNOWN);
CMediaEvent(__in_opt LPCTSTR, __in_opt LPUNKNOWN);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
};
@@ -143,38 +143,38 @@ class AM_NOVTABLE CMediaPosition :
public:
CMediaPosition(const TCHAR *, LPUNKNOWN);
CMediaPosition(const TCHAR *, LPUNKNOWN, HRESULT *phr);
CMediaPosition(__in_opt LPCTSTR, __in_opt LPUNKNOWN);
CMediaPosition(__in_opt LPCTSTR, __in_opt LPUNKNOWN, __inout HRESULT *phr);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
};
@@ -275,7 +275,7 @@ private:
// Prevent bugs from constructing from LONG (which gets
// converted to double and then multiplied by 10000000
COARefTime(LONG);
int operator=(LONG);
LONG operator=(LONG);
};
@@ -300,12 +300,12 @@ class CPosPassThru : public IMediaSeeking, public CMediaPosition
{
IPin *m_pPin;
HRESULT GetPeer(IMediaPosition **ppMP);
HRESULT GetPeerSeeking(IMediaSeeking **ppMS);
HRESULT GetPeer(__deref_out IMediaPosition **ppMP);
HRESULT GetPeerSeeking(__deref_out IMediaSeeking **ppMS);
public:
CPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *);
CPosPassThru(__in_opt LPCTSTR, __in_opt LPUNKNOWN, __inout HRESULT*, IPin *);
DECLARE_IUNKNOWN
HRESULT ForceRefresh() {
@@ -313,50 +313,52 @@ public:
};
// override to return an accurate current position
virtual HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime) {
virtual HRESULT GetMediaTime(__out LONGLONG *pStartTime, __out_opt LONGLONG *pEndTime) {
return E_FAIL;
}
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out void **ppv);
// IMediaSeeking methods
STDMETHODIMP GetCapabilities( DWORD * pCapabilities );
STDMETHODIMP CheckCapabilities( DWORD * pCapabilities );
STDMETHODIMP GetCapabilities( __out DWORD * pCapabilities );
STDMETHODIMP CheckCapabilities( __inout DWORD * pCapabilities );
STDMETHODIMP SetTimeFormat(const GUID * pFormat);
STDMETHODIMP GetTimeFormat(GUID *pFormat);
STDMETHODIMP GetTimeFormat(__out GUID *pFormat);
STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat);
STDMETHODIMP IsFormatSupported( const GUID * pFormat);
STDMETHODIMP QueryPreferredFormat( GUID *pFormat);
STDMETHODIMP ConvertTimeFormat(LONGLONG * pTarget, const GUID * pTargetFormat,
LONGLONG Source, const GUID * pSourceFormat );
STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags
, LONGLONG * pStop, DWORD StopFlags );
STDMETHODIMP QueryPreferredFormat( __out GUID *pFormat);
STDMETHODIMP ConvertTimeFormat(__out LONGLONG * pTarget,
__in_opt const GUID * pTargetFormat,
LONGLONG Source,
__in_opt const GUID * pSourceFormat );
STDMETHODIMP SetPositions( __inout_opt LONGLONG * pCurrent, DWORD CurrentFlags
, __inout_opt LONGLONG * pStop, DWORD StopFlags );
STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop );
STDMETHODIMP GetCurrentPosition( LONGLONG * pCurrent );
STDMETHODIMP GetStopPosition( LONGLONG * pStop );
STDMETHODIMP GetPositions( __out_opt LONGLONG * pCurrent, __out_opt LONGLONG * pStop );
STDMETHODIMP GetCurrentPosition( __out LONGLONG * pCurrent );
STDMETHODIMP GetStopPosition( __out LONGLONG * pStop );
STDMETHODIMP SetRate( double dRate);
STDMETHODIMP GetRate( double * pdRate);
STDMETHODIMP GetDuration( LONGLONG *pDuration);
STDMETHODIMP GetAvailable( LONGLONG *pEarliest, LONGLONG *pLatest );
STDMETHODIMP GetPreroll( LONGLONG *pllPreroll );
STDMETHODIMP GetRate( __out double * pdRate);
STDMETHODIMP GetDuration( __out LONGLONG *pDuration);
STDMETHODIMP GetAvailable( __out_opt LONGLONG *pEarliest, __out_opt LONGLONG *pLatest );
STDMETHODIMP GetPreroll( __out LONGLONG *pllPreroll );
// IMediaPosition properties
STDMETHODIMP get_Duration(REFTIME * plength);
STDMETHODIMP get_Duration(__out REFTIME * plength);
STDMETHODIMP put_CurrentPosition(REFTIME llTime);
STDMETHODIMP get_StopTime(REFTIME * pllTime);
STDMETHODIMP get_StopTime(__out REFTIME * pllTime);
STDMETHODIMP put_StopTime(REFTIME llTime);
STDMETHODIMP get_PrerollTime(REFTIME * pllTime);
STDMETHODIMP get_PrerollTime(__out REFTIME * pllTime);
STDMETHODIMP put_PrerollTime(REFTIME llTime);
STDMETHODIMP get_Rate(double * pdRate);
STDMETHODIMP get_Rate(__out double * pdRate);
STDMETHODIMP put_Rate(double dRate);
STDMETHODIMP get_CurrentPosition(REFTIME * pllTime);
STDMETHODIMP CanSeekForward(LONG *pCanSeekForward);
STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward);
STDMETHODIMP get_CurrentPosition(__out REFTIME * pllTime);
STDMETHODIMP CanSeekForward(__out LONG *pCanSeekForward);
STDMETHODIMP CanSeekBackward(__out LONG *pCanSeekBackward);
private:
HRESULT GetSeekingLongLong( HRESULT (__stdcall IMediaSeeking::*pMethod)( LONGLONG * ),
LONGLONG * pll );
__out LONGLONG * pll );
};
@@ -373,19 +375,19 @@ public:
// Used to help with passing media times through graph
CRendererPosPassThru(const TCHAR *, LPUNKNOWN, HRESULT*, IPin *);
CRendererPosPassThru(__in_opt LPCTSTR, __in_opt LPUNKNOWN, __inout HRESULT*, IPin *);
HRESULT RegisterMediaTime(IMediaSample *pMediaSample);
HRESULT RegisterMediaTime(LONGLONG StartTime,LONGLONG EndTime);
HRESULT GetMediaTime(LONGLONG *pStartTime,LONGLONG *pEndTime);
HRESULT GetMediaTime(__out LONGLONG *pStartTime,__out_opt LONGLONG *pEndTime);
HRESULT ResetMediaTime();
HRESULT EOS();
};
STDAPI CreatePosPassThru(
LPUNKNOWN pAgg,
__in_opt LPUNKNOWN pAgg,
BOOL bRenderer,
IPin *pPin,
IUnknown **ppPassThru
__deref_out IUnknown **ppPassThru
);
// A class that handles the IDispatch part of IBasicAudio and leaves the
@@ -397,37 +399,37 @@ class AM_NOVTABLE CBasicAudio : public IBasicAudio, public CUnknown
public:
CBasicAudio(const TCHAR *, LPUNKNOWN);
CBasicAudio(__in_opt LPCTSTR, __in_opt LPUNKNOWN);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
};
@@ -440,41 +442,41 @@ class AM_NOVTABLE CBaseBasicVideo : public IBasicVideo2, public CUnknown
public:
CBaseBasicVideo(const TCHAR *, LPUNKNOWN);
CBaseBasicVideo(__in_opt LPCTSTR, __in_opt LPUNKNOWN);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
STDMETHODIMP GetPreferredAspectRatio(
long *plAspectX,
long *plAspectY)
__out long *plAspectX,
__out long *plAspectY)
{
return E_NOTIMPL;
}
@@ -490,37 +492,37 @@ class AM_NOVTABLE CBaseVideoWindow : public IVideoWindow, public CUnknown
public:
CBaseVideoWindow(const TCHAR *, LPUNKNOWN);
CBaseVideoWindow(__in_opt LPCTSTR, __in_opt LPUNKNOWN);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
/* IDispatch methods */
STDMETHODIMP GetTypeInfoCount(UINT * pctinfo);
STDMETHODIMP GetTypeInfoCount(__out UINT * pctinfo);
STDMETHODIMP GetTypeInfo(
UINT itinfo,
LCID lcid,
ITypeInfo ** pptinfo);
__deref_out ITypeInfo ** pptinfo);
STDMETHODIMP GetIDsOfNames(
REFIID riid,
OLECHAR ** rgszNames,
__in_ecount(cNames) LPOLESTR * rgszNames,
UINT cNames,
LCID lcid,
DISPID * rgdispid);
__out_ecount(cNames) DISPID * rgdispid);
STDMETHODIMP Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS * pdispparams,
VARIANT * pvarResult,
EXCEPINFO * pexcepinfo,
UINT * puArgErr);
__in DISPPARAMS * pdispparams,
__out_opt VARIANT * pvarResult,
__out_opt EXCEPINFO * pexcepinfo,
__out_opt UINT * puArgErr);
};
@@ -533,22 +535,22 @@ class AM_NOVTABLE CSourcePosition : public CMediaPosition
{
public:
CSourcePosition(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *);
CSourcePosition(__in_opt LPCTSTR, __in_opt LPUNKNOWN, __inout HRESULT*, __in CCritSec *);
// IMediaPosition methods
STDMETHODIMP get_Duration(REFTIME * plength);
STDMETHODIMP get_Duration(__out REFTIME * plength);
STDMETHODIMP put_CurrentPosition(REFTIME llTime);
STDMETHODIMP get_StopTime(REFTIME * pllTime);
STDMETHODIMP get_StopTime(__out REFTIME * pllTime);
STDMETHODIMP put_StopTime(REFTIME llTime);
STDMETHODIMP get_PrerollTime(REFTIME * pllTime);
STDMETHODIMP get_PrerollTime(__out REFTIME * pllTime);
STDMETHODIMP put_PrerollTime(REFTIME llTime);
STDMETHODIMP get_Rate(double * pdRate);
STDMETHODIMP get_Rate(__out double * pdRate);
STDMETHODIMP put_Rate(double dRate);
STDMETHODIMP CanSeekForward(LONG *pCanSeekForward);
STDMETHODIMP CanSeekBackward(LONG *pCanSeekBackward);
STDMETHODIMP CanSeekForward(__out LONG *pCanSeekForward);
STDMETHODIMP CanSeekBackward(__out LONG *pCanSeekBackward);
// override if you can return the data you are actually working on
STDMETHODIMP get_CurrentPosition(REFTIME * pllTime) {
STDMETHODIMP get_CurrentPosition(__out REFTIME * pllTime) {
return E_NOTIMPL;
};
@@ -575,38 +577,40 @@ class AM_NOVTABLE CSourceSeeking :
public:
DECLARE_IUNKNOWN;
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
// IMediaSeeking methods
STDMETHODIMP IsFormatSupported(const GUID * pFormat);
STDMETHODIMP QueryPreferredFormat(GUID *pFormat);
STDMETHODIMP QueryPreferredFormat(__out GUID *pFormat);
STDMETHODIMP SetTimeFormat(const GUID * pFormat);
STDMETHODIMP IsUsingTimeFormat(const GUID * pFormat);
STDMETHODIMP GetTimeFormat(GUID *pFormat);
STDMETHODIMP GetDuration(LONGLONG *pDuration);
STDMETHODIMP GetStopPosition(LONGLONG *pStop);
STDMETHODIMP GetCurrentPosition(LONGLONG *pCurrent);
STDMETHODIMP GetCapabilities( DWORD * pCapabilities );
STDMETHODIMP CheckCapabilities( DWORD * pCapabilities );
STDMETHODIMP ConvertTimeFormat( LONGLONG * pTarget, const GUID * pTargetFormat,
LONGLONG Source, const GUID * pSourceFormat );
STDMETHODIMP GetTimeFormat(__out GUID *pFormat);
STDMETHODIMP GetDuration(__out LONGLONG *pDuration);
STDMETHODIMP GetStopPosition(__out LONGLONG *pStop);
STDMETHODIMP GetCurrentPosition(__out LONGLONG *pCurrent);
STDMETHODIMP GetCapabilities( __out DWORD * pCapabilities );
STDMETHODIMP CheckCapabilities( __inout DWORD * pCapabilities );
STDMETHODIMP ConvertTimeFormat( __out LONGLONG * pTarget,
__in_opt const GUID * pTargetFormat,
LONGLONG Source,
__in_opt const GUID * pSourceFormat );
STDMETHODIMP SetPositions( LONGLONG * pCurrent, DWORD CurrentFlags
, LONGLONG * pStop, DWORD StopFlags );
STDMETHODIMP SetPositions( __inout_opt LONGLONG * pCurrent, DWORD CurrentFlags
, __inout_opt LONGLONG * pStop, DWORD StopFlags );
STDMETHODIMP GetPositions( LONGLONG * pCurrent, LONGLONG * pStop );
STDMETHODIMP GetPositions( __out_opt LONGLONG * pCurrent, __out_opt LONGLONG * pStop );
STDMETHODIMP GetAvailable( LONGLONG * pEarliest, LONGLONG * pLatest );
STDMETHODIMP GetAvailable( __out_opt LONGLONG * pEarliest, __out_opt LONGLONG * pLatest );
STDMETHODIMP SetRate( double dRate);
STDMETHODIMP GetRate( double * pdRate);
STDMETHODIMP GetPreroll(LONGLONG *pPreroll);
STDMETHODIMP GetRate( __out double * pdRate);
STDMETHODIMP GetPreroll(__out LONGLONG *pPreroll);
protected:
// ctor
CSourceSeeking(const TCHAR *, LPUNKNOWN, HRESULT*, CCritSec *);
CSourceSeeking(__in_opt LPCTSTR, __in_opt LPUNKNOWN, __inout HRESULT*, __in CCritSec *);
// we call this to notify changes. Override to handle them
virtual HRESULT ChangeStart() PURE;
@@ -650,7 +654,7 @@ class CCmdQueue;
class CDispParams : public DISPPARAMS
{
public:
CDispParams(UINT nArgs, VARIANT* pArgs, HRESULT *phr = NULL);
CDispParams(UINT nArgs, __in_ecount(nArgs) VARIANT* pArgs, __inout_opt HRESULT *phr = NULL);
~CDispParams();
};
@@ -668,34 +672,34 @@ class CDeferredCommand
public:
CDeferredCommand(
CCmdQueue * pQ,
LPUNKNOWN pUnk, // aggregation outer unk
HRESULT * phr,
LPUNKNOWN pUnkExecutor, // object that will execute this cmd
__inout CCmdQueue * pQ,
__in_opt LPUNKNOWN pUnk, // aggregation outer unk
__inout HRESULT * phr,
__in LPUNKNOWN pUnkExecutor, // object that will execute this cmd
REFTIME time,
GUID* iid,
__in GUID* iid,
long dispidMethod,
short wFlags,
long cArgs,
VARIANT* pDispParams,
VARIANT* pvarResult,
short* puArgErr,
__in_ecount(cArgs) VARIANT* pDispParams,
__out VARIANT* pvarResult,
__out short* puArgErr,
BOOL bStream
);
DECLARE_IUNKNOWN
// override this to publicise our interfaces
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __out void **ppv);
// IDeferredCommand methods
STDMETHODIMP Cancel();
STDMETHODIMP Confidence(
LONG* pConfidence);
__out LONG* pConfidence);
STDMETHODIMP Postpone(
REFTIME newtime);
STDMETHODIMP GetHResult(
HRESULT* phrResult);
__out HRESULT* phrResult);
// other public methods
@@ -764,7 +768,7 @@ protected:
class AM_NOVTABLE CCmdQueue
{
public:
CCmdQueue();
CCmdQueue(__inout_opt HRESULT *phr = NULL);
virtual ~CCmdQueue();
// returns a new CDeferredCommand object that will be initialised with
@@ -772,23 +776,23 @@ public:
// returns S_OK if successfully created otherwise an error and
// no object has been queued.
virtual HRESULT New(
CDeferredCommand **ppCmd,
LPUNKNOWN pUnk,
__out CDeferredCommand **ppCmd,
__in LPUNKNOWN pUnk,
REFTIME time,
GUID* iid,
__in GUID* iid,
long dispidMethod,
short wFlags,
long cArgs,
VARIANT* pDispParams,
VARIANT* pvarResult,
short* puArgErr,
__in_ecount(cArgs) VARIANT* pDispParams,
__out VARIANT* pvarResult,
__out short* puArgErr,
BOOL bStream
);
// called by the CDeferredCommand object to add and remove itself
// from the queue
virtual HRESULT Insert(CDeferredCommand* pCmd);
virtual HRESULT Remove(CDeferredCommand* pCmd);
virtual HRESULT Insert(__in CDeferredCommand* pCmd);
virtual HRESULT Remove(__in CDeferredCommand* pCmd);
// Command-Due Checking
//
@@ -827,7 +831,7 @@ public:
// queue object.
// set the clock used for timing
virtual HRESULT SetSyncSource(IReferenceClock*);
virtual HRESULT SetSyncSource(__in_opt IReferenceClock*);
// switch to run mode. Streamtime to Presentation time mapping known.
virtual HRESULT Run(REFERENCE_TIME tStreamTimeOffset);
@@ -841,7 +845,7 @@ public:
// The command remains queued until invoked or cancelled.
// Returns E_ABORT if timeout occurs, otherwise S_OK (or other error).
// Returns an AddRef-ed object
virtual HRESULT GetDueCommand(CDeferredCommand ** ppCmd, long msTimeout);
virtual HRESULT GetDueCommand(__out CDeferredCommand ** ppCmd, long msTimeout);
// return the event handle that will be signalled whenever
// there are deferred commands due for execution (when GetDueCommand
@@ -857,7 +861,7 @@ public:
// This method will not block. It will report VFW_E_NOT_FOUND if there
// are no commands due yet.
// Returns an AddRef-ed object
virtual HRESULT GetCommandDueFor(REFERENCE_TIME tStream, CDeferredCommand**ppCmd);
virtual HRESULT GetCommandDueFor(REFERENCE_TIME tStream, __out CDeferredCommand**ppCmd);
// check if a given time is due (TRUE if it is due yet)
BOOL CheckTime(CRefTime time, BOOL bStream) {

View File

@@ -4,13 +4,12 @@
// Desc: DirectShow base classes - implements routines for using DirectDraw
// on a multimonitor system.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1995-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//#include <strsafe.h>
#include <strmif.h>
#include <mmsystem.h>
#include <streams.h>
#include <ddraw.h>
#include "ddmm.h"
/*
@@ -23,7 +22,7 @@ typedef struct {
BOOL fFound;
} FindDeviceData;
BOOL CALLBACK FindDeviceCallback(GUID* lpGUID, LPSTR szName, LPSTR szDevice, LPVOID lParam)
BOOL CALLBACK FindDeviceCallback(__in_opt GUID* lpGUID, __in LPSTR szName, __in LPSTR szDevice, __in LPVOID lParam)
{
FindDeviceData *p = (FindDeviceData*)lParam;
@@ -41,7 +40,7 @@ BOOL CALLBACK FindDeviceCallback(GUID* lpGUID, LPSTR szName, LPSTR szDevice, LPV
}
BOOL CALLBACK FindDeviceCallbackEx(GUID* lpGUID, LPSTR szName, LPSTR szDevice, LPVOID lParam, HMONITOR hMonitor)
BOOL CALLBACK FindDeviceCallbackEx(__in_opt GUID* lpGUID, __in LPSTR szName, __in LPSTR szDevice, __in LPVOID lParam, HMONITOR hMonitor)
{
FindDeviceData *p = (FindDeviceData*)lParam;
@@ -64,7 +63,7 @@ BOOL CALLBACK FindDeviceCallbackEx(GUID* lpGUID, LPSTR szName, LPSTR szDevice, L
*
* create a DirectDraw object for a particular device
*/
IDirectDraw * DirectDrawCreateFromDevice(LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, PDRAWENUM DirectDrawEnumerateP)
IDirectDraw * DirectDrawCreateFromDevice(__in_opt LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, PDRAWENUM DirectDrawEnumerateP)
{
IDirectDraw* pdd = NULL;
FindDeviceData find;
@@ -99,7 +98,7 @@ IDirectDraw * DirectDrawCreateFromDevice(LPSTR szDevice, PDRAWCREATE DirectDrawC
*
* create a DirectDraw object for a particular device
*/
IDirectDraw * DirectDrawCreateFromDeviceEx(LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, LPDIRECTDRAWENUMERATEEXA DirectDrawEnumerateExP)
IDirectDraw * DirectDrawCreateFromDeviceEx(__in_opt LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, LPDIRECTDRAWENUMERATEEXA DirectDrawEnumerateExP)
{
IDirectDraw* pdd = NULL;
FindDeviceData find;

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - efines routines for using DirectDraw
// on a multimonitor system.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1995-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -20,8 +20,8 @@ extern "C" { /* Assume C declarations for C++ */
typedef HRESULT (*PDRAWCREATE)(IID *,LPDIRECTDRAW *,LPUNKNOWN);
typedef HRESULT (*PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID);
IDirectDraw * DirectDrawCreateFromDevice(LPSTR, PDRAWCREATE, PDRAWENUM);
IDirectDraw * DirectDrawCreateFromDeviceEx(LPSTR, PDRAWCREATE, LPDIRECTDRAWENUMERATEEXA);
IDirectDraw * DirectDrawCreateFromDevice(__in_opt LPSTR, PDRAWCREATE, PDRAWENUM);
IDirectDraw * DirectDrawCreateFromDeviceEx(__in_opt LPSTR, PDRAWCREATE, LPDIRECTDRAWENUMERATEEXA);
#ifdef __cplusplus
}

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -159,7 +159,7 @@ void WINAPI Msr_Terminate(void);
// Call this to get an Id for an "incident" that you can pass to Start, Stop or Note
// everything that's logged is called an "incident".
int WINAPI Msr_Register(LPTSTR Incident);
int WINAPI Msr_Register(__in LPTSTR Incident);
// Reset the statistical counts for an incident

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - provides support for a worker thread
// class to which one can asynchronously post messages.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -17,7 +17,7 @@ public:
LPVOID lpParam;
CAMEvent *pEvent;
CMsg(UINT u, DWORD dw, LPVOID lp, CAMEvent *pEvnt)
CMsg(UINT u, DWORD dw, __inout_opt LPVOID lp, __in_opt CAMEvent *pEvnt)
: uMsg(u), dwFlags(dw), lpParam(lp), pEvent(pEvnt) {}
CMsg()
@@ -31,7 +31,7 @@ public:
//
class AM_NOVTABLE CMsgThread {
private:
static DWORD WINAPI DefaultThreadProc(LPVOID lpParam);
static DWORD WINAPI DefaultThreadProc(__inout LPVOID lpParam);
DWORD m_ThreadId;
HANDLE m_hThread;
@@ -58,7 +58,7 @@ public:
~CMsgThread();
// override this if you want to block on other things as well
// as the message loop
void virtual GetThreadMsg(CMsg *msg);
void virtual GetThreadMsg(__out CMsg *msg);
// override this if you want to do something on thread startup
virtual void OnThreadInit() {
@@ -66,7 +66,7 @@ public:
BOOL CreateThread();
BOOL WaitForThreadExit(LPDWORD lpdwExitCode) {
BOOL WaitForThreadExit(__out LPDWORD lpdwExitCode) {
if (m_hThread != NULL) {
WaitForSingleObject(m_hThread, INFINITE);
return GetExitCodeThread(m_hThread, lpdwExitCode);
@@ -100,7 +100,7 @@ public:
void PutThreadMsg(UINT uMsg, DWORD dwMsgFlags,
LPVOID lpMsgParam, CAMEvent *pEvent = NULL) {
__in_opt LPVOID lpMsgParam, __in_opt CAMEvent *pEvent = NULL) {
CAutoLock lck(&m_Lock);
CMsg* pMsg = new CMsg(uMsg, dwMsgFlags, lpMsgParam, pEvent);
m_ThreadQueue.AddTail(pMsg);
@@ -115,6 +115,6 @@ public:
// the creator thread.
//
virtual LRESULT ThreadMessageProc(
UINT uMsg, DWORD dwFlags, LPVOID lpParam, CAMEvent *pEvent) = 0;
UINT uMsg, DWORD dwFlags, __inout_opt LPVOID lpParam, __in_opt CAMEvent *pEvent) = 0;
};

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - implements a class that holds and
// manages media type information.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@
// types etc. Has same data members as the struct AM_MEDIA_TYPE defined
// in the streams IDL file, but also has (non-virtual) functions
#include "streams.h"
#include <streams.h>
#include <mmreg.h>
CMediaType::~CMediaType(){
@@ -35,7 +35,7 @@ CMediaType::CMediaType(const GUID * type)
// copy constructor does a deep copy of the format block
CMediaType::CMediaType(const AM_MEDIA_TYPE& rt, HRESULT* phr)
CMediaType::CMediaType(const AM_MEDIA_TYPE& rt, __out_opt HRESULT* phr)
{
HRESULT hr = CopyMediaType(this, &rt);
if (FAILED(hr) && (NULL != phr)) {
@@ -44,7 +44,7 @@ CMediaType::CMediaType(const AM_MEDIA_TYPE& rt, HRESULT* phr)
}
CMediaType::CMediaType(const CMediaType& rt, HRESULT* phr)
CMediaType::CMediaType(const CMediaType& rt, __out_opt HRESULT* phr)
{
HRESULT hr = CopyMediaType(this, &rt);
if (FAILED(hr) && (NULL != phr)) {
@@ -87,6 +87,7 @@ CMediaType::operator == (const CMediaType& rt) const
(IsEqualGUID(formattype,rt.formattype) == TRUE) &&
(cbFormat == rt.cbFormat) &&
( (cbFormat == 0) ||
pbFormat != NULL && rt.pbFormat != NULL &&
(memcmp(pbFormat, rt.pbFormat, cbFormat) == 0)));
}
@@ -179,7 +180,7 @@ CMediaType::SetTemporalCompression(BOOL bCompressed) {
}
BOOL
CMediaType::SetFormat(BYTE * pformat, ULONG cb)
CMediaType::SetFormat(__in_bcount(cb) BYTE * pformat, ULONG cb)
{
if (NULL == AllocFormatBuffer(cb))
return(FALSE);
@@ -349,7 +350,7 @@ CMediaType::MatchesPartial(const CMediaType* ppartial) const
// implementation allocates the structures which you must later delete
// the format block may also be a pointer to an interface to release
void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt)
void WINAPI DeleteMediaType(__inout_opt AM_MEDIA_TYPE *pmt)
{
// allow NULL pointers for coding simplicity
@@ -393,7 +394,7 @@ AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc)
// Copy 1 media type to another
HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource)
HRESULT WINAPI CopyMediaType(__out AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource)
{
// We'll leak if we copy onto one that already exists - there's one
// case we can check like that - copying to itself.
@@ -419,7 +420,7 @@ HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtS
// Free an existing media type (ie free resources it holds)
void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt)
void WINAPI FreeMediaType(__inout AM_MEDIA_TYPE& mt)
{
if (mt.cbFormat != 0) {
CoTaskMemFree((PVOID)mt.pbFormat);
@@ -438,7 +439,7 @@ void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt)
STDAPI CreateAudioMediaType(
const WAVEFORMATEX *pwfx,
AM_MEDIA_TYPE *pmt,
__out AM_MEDIA_TYPE *pmt,
BOOL bSetFormat
)
{

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a class that holds and manages
// media type information.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -22,8 +22,8 @@ public:
~CMediaType();
CMediaType();
CMediaType(const GUID * majortype);
CMediaType(const AM_MEDIA_TYPE&, HRESULT* phr = NULL);
CMediaType(const CMediaType&, HRESULT* phr = NULL);
CMediaType(const AM_MEDIA_TYPE&, __out_opt HRESULT* phr = NULL);
CMediaType(const CMediaType&, __out_opt HRESULT* phr = NULL);
CMediaType& operator=(const CMediaType&);
CMediaType& operator=(const AM_MEDIA_TYPE&);
@@ -57,7 +57,7 @@ public:
void SetFormatType(const GUID *);
const GUID *FormatType() const {return &formattype; };
BOOL SetFormat(BYTE *pFormat, ULONG length);
BOOL SetFormat(__in_bcount(length) BYTE *pFormat, ULONG length);
void ResetFormatBuffer();
BYTE* AllocFormatBuffer(ULONG length);
BYTE* ReallocFormatBuffer(ULONG length);
@@ -73,16 +73,16 @@ public:
structure which is useful when using the IEnumMediaFormats interface as
the implementation allocates the structures which you must later delete */
void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt);
void WINAPI DeleteMediaType(__inout_opt AM_MEDIA_TYPE *pmt);
AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const *pSrc);
HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource);
void WINAPI FreeMediaType(AM_MEDIA_TYPE& mt);
HRESULT WINAPI CopyMediaType(__out AM_MEDIA_TYPE *pmtTarget, const AM_MEDIA_TYPE *pmtSource);
void WINAPI FreeMediaType(__inout AM_MEDIA_TYPE& mt);
// Initialize a media type from a WAVEFORMATEX
STDAPI CreateAudioMediaType(
const WAVEFORMATEX *pwfx,
AM_MEDIA_TYPE *pmt,
__out AM_MEDIA_TYPE *pmt,
BOOL bSetFormat);
#endif /* __MTYPE__ */

View File

@@ -6,11 +6,11 @@
// separate thread and sometimes call Receive() directly on the input
// pin.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
//
@@ -42,7 +42,7 @@
//
COutputQueue::COutputQueue(
IPin *pInputPin, // Pin to send stuff to
HRESULT *phr, // 'Return code'
__inout HRESULT *phr, // 'Return code'
BOOL bAuto, // Ask pin if queue or not
BOOL bQueue, // Send through queue
LONG lBatchSize, // Batch
@@ -58,6 +58,7 @@ COutputQueue::COutputQueue(
m_pPin(pInputPin),
m_ppSamples(NULL),
m_lWaiting(0),
m_evFlushComplete(FALSE, phr),
m_pInputPin(NULL),
m_bSendAnyway(FALSE),
m_nBatched(0),
@@ -178,7 +179,7 @@ COutputQueue::~COutputQueue()
//
// Call the real thread proc as a member function
//
DWORD WINAPI COutputQueue::InitialThreadProc(LPVOID pv)
DWORD WINAPI COutputQueue::InitialThreadProc(__in LPVOID pv)
{
HRESULT hrCoInit = CAMThread::CoInitializeHelper();
@@ -591,10 +592,14 @@ HRESULT COutputQueue::Receive(IMediaSample *pSample)
//
HRESULT COutputQueue::ReceiveMultiple (
IMediaSample **ppSamples,
__in_ecount(nSamples) IMediaSample **ppSamples,
long nSamples,
long *nSamplesProcessed)
__out long *nSamplesProcessed)
{
if (nSamples < 0) {
return E_INVALIDARG;
}
CAutoLock lck(this);
// Either call directly or queue up the samples
@@ -632,7 +637,7 @@ HRESULT COutputQueue::ReceiveMultiple (
// Loop processing the samples in batches
LONG iLost = 0;
long iDone;
long iDone = 0;
for (iDone = 0;
iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);
) {
@@ -698,9 +703,11 @@ void COutputQueue::Reset()
if (!IsQueued()) {
m_hr = S_OK;
} else {
CAutoLock lck(this);
QueueSample(RESET_PACKET);
NotifyThread();
{
CAutoLock lck(this);
QueueSample(RESET_PACKET);
NotifyThread();
}
m_evFlushComplete.Wait();
}
}

View File

@@ -5,7 +5,7 @@
// makes a queue of samples and sends them to an output pin. The
// class will optionally send the samples to the pin directly.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -16,7 +16,7 @@ class COutputQueue : public CCritSec
public:
// Constructor
COutputQueue(IPin *pInputPin, // Pin to send stuff to
HRESULT *phr, // 'Return code'
__inout HRESULT *phr, // 'Return code'
BOOL bAuto = TRUE, // Ask pin if blocks
BOOL bQueue = TRUE, // Send through queue (ignored if
// bAuto set)
@@ -50,9 +50,9 @@ public:
// do something with these media samples
HRESULT ReceiveMultiple (
IMediaSample **pSamples,
__in_ecount(nSamples) IMediaSample **pSamples,
long nSamples,
long *nSamplesProcessed);
__out long *nSamplesProcessed);
void Reset(); // Reset m_hr ready for more data
@@ -63,12 +63,12 @@ public:
void SetPopEvent(HANDLE hEvent);
protected:
static DWORD WINAPI InitialThreadProc(LPVOID pv);
static DWORD WINAPI InitialThreadProc(__in LPVOID pv);
DWORD ThreadProc();
BOOL IsQueued()
{
return m_List != NULL;
}
};
// The critical section MUST be held when this is called
void QueueSample(IMediaSample *pSample);
@@ -76,7 +76,7 @@ protected:
BOOL IsSpecialSample(IMediaSample *pSample)
{
return (DWORD_PTR)pSample > (DWORD_PTR)(LONG_PTR)(-16);
}
};
// Remove and Release() batched and queued samples
void FreeSamples();
@@ -109,8 +109,8 @@ protected:
HANDLE m_hSem;
CAMEvent m_evFlushComplete;
HANDLE m_hThread;
IMediaSample ** m_ppSamples;
LONG m_nBatched;
__field_ecount_opt(m_lBatchSize) IMediaSample ** m_ppSamples;
__range(0, m_lBatchSize) LONG m_nBatched;
// Wait optimization
LONG m_lWaiting;
@@ -129,7 +129,7 @@ protected:
BOOL m_bSendAnyway;
// Deferred 'return code'
BOOL volatile m_hr;
HRESULT volatile m_hr;
// an event that can be fired after every deliver
HANDLE m_hEventPop;

View File

@@ -3,21 +3,22 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include <strsafe.h>
#ifdef PERF
#include <measure.h>
#endif
// #include "pstream.h" in streams.h
//
// Constructor
//
CPersistStream::CPersistStream(IUnknown *punk, HRESULT *phr)
CPersistStream::CPersistStream(IUnknown *punk, __inout HRESULT *phr)
: mPS_fDirty(FALSE)
{
mPS_dwFileVersion = GetSoftwareVersion();
@@ -38,10 +39,10 @@ SAMPLE CODE TO COPY - not active at the moment
// NonDelegatingQueryInterface
//
// This object supports IPersist & IPersistStream
STDMETHODIMP CPersistStream::NonDelegatingQueryInterface(REFIID riid, void **ppv)
STDMETHODIMP CPersistStream::NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv)
{
if (riid == IID_IPersist) {
return GetInterface((IPersist *) this, ppv);
return GetInterface((IPersist *) this, ppv); // ???
}
else if (riid == IID_IPersistStream) {
return GetInterface((IPersistStream *) this, ppv);
@@ -128,7 +129,7 @@ STDMETHODIMP CPersistStream::Save(LPSTREAM pStm, BOOL fClearDirty)
STDAPI WriteInt(IStream *pIStream, int n)
{
WCHAR Buff[13]; // Allows for trailing null that we don't write
(void)StringCchPrintfW(Buff, NUMELMS(Buff), L"%011d ",n);
(void)StringCchPrintfW(Buff, NUMELMS(Buff),L"%011d ",n);
return pIStream->Write(&(Buff[0]), 12*sizeof(WCHAR), NULL);
} // WriteInt
@@ -140,7 +141,7 @@ STDAPI WriteInt(IStream *pIStream, int n)
// where the value isn't actually truncated by squeezing it into 32 bits
// Striped down subset of what sscanf can do (without dragging in the C runtime)
STDAPI_(int) ReadInt(IStream *pIStream, HRESULT &hr)
STDAPI_(int) ReadInt(IStream *pIStream, __out HRESULT &hr)
{
int Sign = 1;

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a class for persistent properties
// of filters.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -61,13 +61,13 @@ class CPersistStream : public IPersistStream {
{return (mPS_fDirty ? S_OK : S_FALSE);} // note FALSE means clean
STDMETHODIMP Load(LPSTREAM pStm);
STDMETHODIMP Save(LPSTREAM pStm, BOOL fClearDirty);
STDMETHODIMP GetSizeMax(ULARGE_INTEGER * pcbSize)
STDMETHODIMP GetSizeMax(__out ULARGE_INTEGER * pcbSize)
// Allow 24 bytes for version.
{ pcbSize->QuadPart = 12*sizeof(WCHAR)+SizeMax(); return NOERROR; }
// implementation
CPersistStream(IUnknown *punk, HRESULT *phr);
CPersistStream(IUnknown *punk, __inout HRESULT *phr);
~CPersistStream();
HRESULT SetDirty(BOOL fDirty)
@@ -80,7 +80,7 @@ class CPersistStream : public IPersistStream {
// --- IPersist ---
// You must override this to provide your own class id
STDMETHODIMP GetClassID(CLSID *pClsid) PURE;
STDMETHODIMP GetClassID(__out CLSID *pClsid) PURE;
// overrideable if you want
// file version number. Override it if you ever change format
@@ -109,6 +109,6 @@ class CPersistStream : public IPersistStream {
STDAPI WriteInt(IStream *pIStream, int n);
// inverse of WriteInt
STDAPI_(int) ReadInt(IStream *pIStream, HRESULT &hr);
STDAPI_(int) ReadInt(IStream *pIStream, __out HRESULT &hr);
#endif // __PSTREAM__

View File

@@ -4,13 +4,16 @@
// Desc: DirectShow base classes - implements CPullPin class that pulls data
// from IAsyncReader.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include "pullpin.h"
#ifdef DXMPERF
#include "dxmperf.h"
#endif // DXMPERF
CPullPin::CPullPin()
@@ -18,11 +21,20 @@ CPullPin::CPullPin()
m_pAlloc(NULL),
m_State(TM_Exit)
{
#ifdef DXMPERF
PERFLOG_CTOR( L"CPullPin", this );
#endif // DXMPERF
}
CPullPin::~CPullPin()
{
Disconnect();
#ifdef DXMPERF
PERFLOG_DTOR( L"CPullPin", this );
#endif // DXMPERF
}
// returns S_OK if successfully connected to an IAsyncReader interface
@@ -40,12 +52,28 @@ CPullPin::Connect(IUnknown* pUnk, IMemAllocator* pAlloc, BOOL bSync)
HRESULT hr = pUnk->QueryInterface(IID_IAsyncReader, (void**)&m_pReader);
if (FAILED(hr)) {
#ifdef DXMPERF
{
AM_MEDIA_TYPE * pmt = NULL;
PERFLOG_CONNECT( this, pUnk, hr, pmt );
}
#endif // DXMPERF
return(hr);
}
hr = DecideAllocator(pAlloc, NULL);
if (FAILED(hr)) {
Disconnect();
#ifdef DXMPERF
{
AM_MEDIA_TYPE * pmt = NULL;
PERFLOG_CONNECT( this, pUnk, hr, pmt );
}
#endif // DXMPERF
return hr;
}
@@ -53,6 +81,14 @@ CPullPin::Connect(IUnknown* pUnk, IMemAllocator* pAlloc, BOOL bSync)
hr = m_pReader->Length(&llTotal, &llAvail);
if (FAILED(hr)) {
Disconnect();
#ifdef DXMPERF
{
AM_MEDIA_TYPE * pmt = NULL;
PERFLOG_CONNECT( this, pUnk, hr, pmt );
}
#endif
return hr;
}
@@ -63,6 +99,14 @@ CPullPin::Connect(IUnknown* pUnk, IMemAllocator* pAlloc, BOOL bSync)
m_bSync = bSync;
#ifdef DXMPERF
{
AM_MEDIA_TYPE * pmt = NULL;
PERFLOG_CONNECT( this, pUnk, S_OK, pmt );
}
#endif // DXMPERF
return S_OK;
}
@@ -74,6 +118,12 @@ CPullPin::Disconnect()
StopThread();
#ifdef DXMPERF
PERFLOG_DISCONNECT( this, m_pReader, S_OK );
#endif // DXMPERF
if (m_pReader) {
m_pReader->Release();
m_pReader = NULL;
@@ -95,7 +145,7 @@ CPullPin::Disconnect()
HRESULT
CPullPin::DecideAllocator(
IMemAllocator * pAlloc,
ALLOCATOR_PROPERTIES * pProps)
__inout_opt ALLOCATOR_PROPERTIES * pProps)
{
ALLOCATOR_PROPERTIES *pRequest;
ALLOCATOR_PROPERTIES Request;
@@ -157,7 +207,7 @@ CPullPin::Seek(REFERENCE_TIME tStart, REFERENCE_TIME tStop)
}
HRESULT
CPullPin::Duration(REFERENCE_TIME* ptDuration)
CPullPin::Duration(__out REFERENCE_TIME* ptDuration)
{
*ptDuration = m_tDuration;
return S_OK;
@@ -284,7 +334,7 @@ CPullPin::ThreadProc(void)
HRESULT
CPullPin::QueueSample(
REFERENCE_TIME& tCurrent,
__inout REFERENCE_TIME& tCurrent,
REFERENCE_TIME tAlignStop,
BOOL bDiscontinuity
)
@@ -352,16 +402,27 @@ CPullPin::DeliverSample(
{
// fix up sample if past actual stop (for sector alignment)
REFERENCE_TIME t1, t2;
pSample->GetTime(&t1, &t2);
if (t2 > tStop) {
t2 = tStop;
if (S_OK == pSample->GetTime(&t1, &t2)) {
if (t2 > tStop) {
t2 = tStop;
}
// adjust times to be relative to (aligned) start time
t1 -= tStart;
t2 -= tStart;
HRESULT hr = pSample->SetTime(&t1, &t2);
if (FAILED(hr)) {
return hr;
}
}
// adjust times to be relative to (aligned) start time
t1 -= tStart;
t2 -= tStart;
pSample->SetTime(&t1, &t2);
#ifdef DXMPERF
{
AM_MEDIA_TYPE * pmt = NULL;
pSample->GetMediaType( &pmt );
PERFLOG_RECEIVE( L"CPullPin", m_pReader, this, pSample, pmt );
}
#endif
HRESULT hr = Receive(pSample);
pSample->Release();

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes - defines CPullPin class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -57,7 +57,7 @@ class CPullPin : public CAMThread
// called from ProcessAsync to queue and collect requests
HRESULT QueueSample(
REFERENCE_TIME& tCurrent,
__inout REFERENCE_TIME& tCurrent,
REFERENCE_TIME tAlignStop,
BOOL bDiscontinuity);
@@ -95,14 +95,14 @@ public:
// but no error occurs if it can't be met.
virtual HRESULT DecideAllocator(
IMemAllocator* pAlloc,
ALLOCATOR_PROPERTIES * pProps);
__inout_opt ALLOCATOR_PROPERTIES * pProps);
// set start and stop position. if active, will start immediately at
// the new position. Default is 0 to duration
HRESULT Seek(REFERENCE_TIME tStart, REFERENCE_TIME tStop);
// return the total duration
HRESULT Duration(REFERENCE_TIME* ptDuration);
HRESULT Duration(__out REFERENCE_TIME* ptDuration);
// start pulling data
HRESULT Active(void);

View File

@@ -3,13 +3,16 @@
//
// Desc: DirectShow base classes - implements the IReferenceClock interface.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include <limits.h>
#ifdef DXMPERF
#include "dxmperf.h"
#endif // DXMPERF
// 'this' used in constructor list
@@ -18,7 +21,7 @@
STDMETHODIMP CBaseReferenceClock::NonDelegatingQueryInterface(
REFIID riid,
void ** ppv)
__deref_out void ** ppv)
{
HRESULT hr;
@@ -26,6 +29,10 @@ STDMETHODIMP CBaseReferenceClock::NonDelegatingQueryInterface(
{
hr = GetInterface((IReferenceClock *) this, ppv);
}
else if (riid == IID_IReferenceClockTimerControl)
{
hr = GetInterface((IReferenceClockTimerControl *) this, ppv);
}
else
{
hr = CUnknown::NonDelegatingQueryInterface(riid, ppv);
@@ -35,10 +42,16 @@ STDMETHODIMP CBaseReferenceClock::NonDelegatingQueryInterface(
CBaseReferenceClock::~CBaseReferenceClock()
{
#ifdef DXMPERF
PERFLOG_DTOR( L"CBaseReferenceClock", (IReferenceClock *) this );
#endif // DXMPERF
if (m_TimerResolution) timeEndPeriod(m_TimerResolution);
m_pSchedule->DumpLinkedList();
if (m_pSchedule)
{
m_pSchedule->DumpLinkedList();
}
if (m_hThread)
{
@@ -55,7 +68,10 @@ CBaseReferenceClock::~CBaseReferenceClock()
// A derived class may supply a hThreadEvent if it has its own thread that will take care
// of calling the schedulers Advise method. (Refere to CBaseReferenceClock::AdviseThread()
// to see what such a thread has to do.)
CBaseReferenceClock::CBaseReferenceClock( TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr, CAMSchedule * pShed )
CBaseReferenceClock::CBaseReferenceClock( __in_opt LPCTSTR pName,
__inout_opt LPUNKNOWN pUnk,
__inout HRESULT *phr,
__inout_opt CAMSchedule * pShed )
: CUnknown( pName, pUnk )
, m_rtLastGotTime(0)
, m_TimerResolution(0)
@@ -64,51 +80,55 @@ CBaseReferenceClock::CBaseReferenceClock( TCHAR *pName, LPUNKNOWN pUnk, HRESULT
, m_hThread(0)
{
#ifdef DXMPERF
PERFLOG_CTOR( pName ? pName : L"CBaseReferenceClock", (IReferenceClock *) this );
#endif // DXMPERF
ASSERT(m_pSchedule);
if (!m_pSchedule)
{
*phr = E_OUTOFMEMORY;
*phr = E_OUTOFMEMORY;
}
else
{
// Set up the highest resolution timer we can manage
TIMECAPS tc;
m_TimerResolution = (TIMERR_NOERROR == timeGetDevCaps(&tc, sizeof(tc)))
? tc.wPeriodMin
: 1;
// Set up the highest resolution timer we can manage
TIMECAPS tc;
m_TimerResolution = (TIMERR_NOERROR == timeGetDevCaps(&tc, sizeof(tc)))
? tc.wPeriodMin
: 1;
timeBeginPeriod(m_TimerResolution);
timeBeginPeriod(m_TimerResolution);
/* Initialise our system times - the derived clock should set the right values */
m_dwPrevSystemTime = timeGetTime();
m_rtPrivateTime = (UNITS / MILLISECONDS) * m_dwPrevSystemTime;
/* Initialise our system times - the derived clock should set the right values */
m_dwPrevSystemTime = timeGetTime();
m_rtPrivateTime = (UNITS / MILLISECONDS) * m_dwPrevSystemTime;
#ifdef PERF
m_idGetSystemTime = MSR_REGISTER(TEXT("CBaseReferenceClock::GetTime"));
#endif
#ifdef PERF
m_idGetSystemTime = MSR_REGISTER(TEXT("CBaseReferenceClock::GetTime"));
#endif
if ( !pShed )
{
DWORD ThreadID;
m_hThread = ::CreateThread(NULL, // Security attributes
(DWORD) 0, // Initial stack size
AdviseThreadFunction, // Thread start address
(LPVOID) this, // Thread parameter
(DWORD) 0, // Creation flags
&ThreadID); // Thread identifier
if ( !pShed )
{
DWORD ThreadID;
m_hThread = ::CreateThread(NULL, // Security attributes
(DWORD) 0, // Initial stack size
AdviseThreadFunction, // Thread start address
(LPVOID) this, // Thread parameter
(DWORD) 0, // Creation flags
&ThreadID); // Thread identifier
if (m_hThread)
{
SetThreadPriority( m_hThread, THREAD_PRIORITY_TIME_CRITICAL );
}
else
{
*phr = E_FAIL;
EXECUTE_ASSERT( CloseHandle(m_pSchedule->GetEvent()) );
delete m_pSchedule;
}
}
if (m_hThread)
{
SetThreadPriority( m_hThread, THREAD_PRIORITY_TIME_CRITICAL );
}
else
{
*phr = E_FAIL;
EXECUTE_ASSERT( CloseHandle(m_pSchedule->GetEvent()) );
delete m_pSchedule;
m_pSchedule = NULL;
}
}
}
}
@@ -119,7 +139,7 @@ void CBaseReferenceClock::Restart (IN REFERENCE_TIME rtMinTime)
Unlock();
}
STDMETHODIMP CBaseReferenceClock::GetTime(REFERENCE_TIME *pTime)
STDMETHODIMP CBaseReferenceClock::GetTime(__out REFERENCE_TIME *pTime)
{
HRESULT hr;
if (pTime)
@@ -139,6 +159,11 @@ STDMETHODIMP CBaseReferenceClock::GetTime(REFERENCE_TIME *pTime)
*pTime = m_rtLastGotTime;
Unlock();
MSR_INTEGER(m_idGetSystemTime, LONG((*pTime) / (UNITS/MILLISECONDS)) );
#ifdef DXMPERF
PERFLOG_GETTIME( (IReferenceClock *) this, *pTime );
#endif // DXMPERF
}
else hr = E_POINTER;
@@ -150,8 +175,8 @@ STDMETHODIMP CBaseReferenceClock::GetTime(REFERENCE_TIME *pTime)
STDMETHODIMP CBaseReferenceClock::AdviseTime(
REFERENCE_TIME baseTime, // base reference time
REFERENCE_TIME streamTime, // stream offset time
HEVENT hEvent, // advise via this event
DWORD_PTR *pdwAdviseCookie) // where your cookie goes
HEVENT hEvent, // advise via this event
__out DWORD_PTR *pdwAdviseCookie)// where your cookie goes
{
CheckPointer(pdwAdviseCookie, E_POINTER);
*pdwAdviseCookie = 0;
@@ -180,8 +205,8 @@ STDMETHODIMP CBaseReferenceClock::AdviseTime(
STDMETHODIMP CBaseReferenceClock::AdvisePeriodic(
REFERENCE_TIME StartTime, // starting at this time
REFERENCE_TIME PeriodTime, // time between notifications
HSEMAPHORE hSemaphore, // advise via a semaphore
DWORD_PTR *pdwAdviseCookie) // where your cookie goes
HSEMAPHORE hSemaphore, // advise via a semaphore
__out DWORD_PTR *pdwAdviseCookie) // where your cookie goes
{
CheckPointer(pdwAdviseCookie, E_POINTER);
*pdwAdviseCookie = 0;
@@ -291,7 +316,7 @@ STDMETHODIMP CBaseReferenceClock::SetTimeDelta(const REFERENCE_TIME & TimeDelta)
// Thread stuff
DWORD __stdcall CBaseReferenceClock::AdviseThreadFunction(LPVOID p)
DWORD __stdcall CBaseReferenceClock::AdviseThreadFunction(__in LPVOID p)
{
return DWORD(reinterpret_cast<CBaseReferenceClock*>(p)->AdviseThread());
}
@@ -338,3 +363,40 @@ HRESULT CBaseReferenceClock::AdviseThread()
};
return NOERROR;
}
HRESULT CBaseReferenceClock::SetDefaultTimerResolution(
REFERENCE_TIME timerResolution // in 100ns
)
{
CAutoLock cObjectLock(this);
if( 0 == timerResolution ) {
if( m_TimerResolution ) {
timeEndPeriod( m_TimerResolution );
m_TimerResolution = 0;
}
} else {
TIMECAPS tc;
DWORD dwMinResolution = (TIMERR_NOERROR == timeGetDevCaps(&tc, sizeof(tc)))
? tc.wPeriodMin
: 1;
DWORD dwResolution = max( dwMinResolution, DWORD(timerResolution / 10000) );
if( dwResolution != m_TimerResolution ) {
timeEndPeriod(m_TimerResolution);
m_TimerResolution = dwResolution;
timeBeginPeriod( m_TimerResolution );
}
}
return S_OK;
}
HRESULT CBaseReferenceClock::GetDefaultTimerResolution(
__out REFERENCE_TIME* pTimerResolution // in 100ns
)
{
if( !pTimerResolution ) {
return E_POINTER;
}
CAutoLock cObjectLock(this);
*pTimerResolution = m_TimerResolution * 10000;
return S_OK;
}

View File

@@ -3,14 +3,14 @@
//
// Desc: DirectShow base classes - defines the IReferenceClock interface.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __BASEREFCLOCK__
#define __BASEREFCLOCK__
#include "dsschedule.h"
#include <Schedule.h>
const UINT RESOLUTION = 1; /* High resolution timer */
const INT ADVISE_CACHE = 4; /* Default cache size */
@@ -37,9 +37,9 @@ inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME& RT)
* whatever source) have to be derived from this class.
*
* The abstract class provides implementations for:
* CUnknown support
* CUnknown support
* locking support (CCritSec)
* client advise code (creates a thread)
* client advise code (creates a thread)
*
* Question: what can we do about quality? Change the timer
* resolution to lower the system load? Up the priority of the
@@ -72,14 +72,17 @@ inline LONGLONG WINAPI ConvertToMilliseconds(const REFERENCE_TIME& RT)
*/
class CBaseReferenceClock
: public CUnknown, public IReferenceClock, public CCritSec
: public CUnknown, public IReferenceClock, public CCritSec, public IReferenceClockTimerControl
{
protected:
virtual ~CBaseReferenceClock(); // Don't let me be created on the stack!
public:
CBaseReferenceClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr, CAMSchedule * pSched = 0 );
CBaseReferenceClock(__in_opt LPCTSTR pName,
__inout_opt LPUNKNOWN pUnk,
__inout HRESULT *phr,
__inout_opt CAMSchedule * pSched = 0 );
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
DECLARE_IUNKNOWN
@@ -90,7 +93,7 @@ public:
// clock has gone backwards and GetTime time has halted until internal
// time has caught up. (Don't know if this will be much use to folk,
// but it seems odd not to use the return code for something useful.)
STDMETHODIMP GetTime(REFERENCE_TIME *pTime);
STDMETHODIMP GetTime(__out REFERENCE_TIME *pTime);
// When this is called, it sets m_rtLastGotTime to the time it returns.
/* Provide standard mechanisms for scheduling events */
@@ -100,7 +103,7 @@ public:
REFERENCE_TIME baseTime, // base reference time
REFERENCE_TIME streamTime, // stream offset time
HEVENT hEvent, // advise via this event
DWORD_PTR *pdwAdviseCookie // where your cookie goes
__out DWORD_PTR *pdwAdviseCookie// where your cookie goes
);
/* Ask for an asynchronous periodic notification that a time has elapsed */
@@ -108,7 +111,7 @@ public:
REFERENCE_TIME StartTime, // starting at this time
REFERENCE_TIME PeriodTime, // time between notifications
HSEMAPHORE hSemaphore, // advise via a semaphore
DWORD_PTR *pdwAdviseCookie // where your cookie goes
__out DWORD_PTR *pdwAdviseCookie// where your cookie goes
);
/* Cancel a request for notification(s) - if the notification was
@@ -135,6 +138,16 @@ public:
CAMSchedule * GetSchedule() const { return m_pSchedule; }
// IReferenceClockTimerControl methods
//
// Setting a default of 0 disables the default of 1ms
STDMETHODIMP SetDefaultTimerResolution(
REFERENCE_TIME timerResolution // in 100ns
);
STDMETHODIMP GetDefaultTimerResolution(
__out REFERENCE_TIME* pTimerResolution // in 100ns
);
private:
REFERENCE_TIME m_rtPrivateTime; // Current best estimate of time
DWORD m_dwPrevSystemTime; // Last vaule we got from timeGetTime
@@ -148,9 +161,9 @@ private:
// Thread stuff
public:
void TriggerThread() // Wakes thread up. Need to do this if
{ // time to next advise needs reevaluating.
EXECUTE_ASSERT(SetEvent(m_pSchedule->GetEvent()));
void TriggerThread() // Wakes thread up. Need to do this if
{ // time to next advise needs reevaluating.
EXECUTE_ASSERT(SetEvent(m_pSchedule->GetEvent()));
}
@@ -159,10 +172,10 @@ private:
HANDLE m_hThread; // Thread handle
HRESULT AdviseThread(); // Method in which the advise thread runs
static DWORD __stdcall AdviseThreadFunction(LPVOID); // Function used to get there
static DWORD __stdcall AdviseThreadFunction(__in LPVOID); // Function used to get there
protected:
CAMSchedule * const m_pSchedule;
CAMSchedule * m_pSchedule;
void Restart (IN REFERENCE_TIME rtMinTime = 0I64) ;
};

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines CRefTime, a class that manages
// reference times.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------

View File

@@ -3,14 +3,14 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h" // DirectShow base class definitions
#include <streams.h> // DirectShow base class definitions
#include <mmsystem.h> // Needed for definition of timeGetTime
#include <limits.h> // Standard data type limit definitions
#include "measure.h" // Used for time critical log functions
#include <measure.h> // Used for time critical log functions
#pragma warning(disable:4355)
@@ -28,15 +28,16 @@ int inline TimeDiff(REFERENCE_TIME rt)
// Implements the CBaseRenderer class
CBaseRenderer::CBaseRenderer(REFCLSID RenderClass, // CLSID for this renderer
TCHAR *pName, // Debug ONLY description
LPUNKNOWN pUnk, // Aggregated owner object
HRESULT *phr) : // General OLE return code
__in_opt LPCTSTR pName, // Debug ONLY description
__inout_opt LPUNKNOWN pUnk, // Aggregated owner object
__inout HRESULT *phr) : // General OLE return code
CBaseFilter(pName,pUnk,&m_InterfaceLock,RenderClass),
m_evComplete(TRUE),
m_evComplete(TRUE, phr),
m_RenderEvent(FALSE, phr),
m_bAbort(FALSE),
m_pPosition(NULL),
m_ThreadSignal(TRUE),
m_ThreadSignal(TRUE, phr),
m_bStreaming(FALSE),
m_bEOS(FALSE),
m_bEOSDelivered(FALSE),
@@ -49,12 +50,14 @@ CBaseRenderer::CBaseRenderer(REFCLSID RenderClass, // CLSID for this renderer
m_bInReceive(FALSE),
m_EndOfStreamTimer(0)
{
Ready();
if (SUCCEEDED(*phr)) {
Ready();
#ifdef PERF
m_idBaseStamp = MSR_REGISTER(TEXT("BaseRenderer: sample time stamp"));
m_idBaseRenderTime = MSR_REGISTER(TEXT("BaseRenderer: draw time (msec)"));
m_idBaseAccuracy = MSR_REGISTER(TEXT("BaseRenderer: Accuracy (msec)"));
m_idBaseStamp = MSR_REGISTER(TEXT("BaseRenderer: sample time stamp"));
m_idBaseRenderTime = MSR_REGISTER(TEXT("BaseRenderer: draw time (msec)"));
m_idBaseAccuracy = MSR_REGISTER(TEXT("BaseRenderer: Accuracy (msec)"));
#endif
}
}
@@ -93,13 +96,18 @@ CBaseRenderer::~CBaseRenderer()
// This returns the IMediaPosition and IMediaSeeking interfaces
HRESULT CBaseRenderer::GetMediaPositionInterface(REFIID riid,void **ppv)
HRESULT CBaseRenderer::GetMediaPositionInterface(REFIID riid, __deref_out void **ppv)
{
CAutoLock cObjectCreationLock(&m_ObjectCreationLock);
if (m_pPosition) {
return m_pPosition->NonDelegatingQueryInterface(riid,ppv);
}
CBasePin *pPin = GetPin(0);
if (NULL == pPin) {
return E_OUTOFMEMORY;
}
HRESULT hr = NOERROR;
// Create implementation of this dynamically since sometimes we may
@@ -110,7 +118,7 @@ HRESULT CBaseRenderer::GetMediaPositionInterface(REFIID riid,void **ppv)
m_pPosition = new CRendererPosPassThru(NAME("Renderer CPosPassThru"),
CBaseFilter::GetOwner(),
(HRESULT *) &hr,
GetPin(0));
pPin);
if (m_pPosition == NULL) {
return E_OUTOFMEMORY;
}
@@ -126,7 +134,7 @@ HRESULT CBaseRenderer::GetMediaPositionInterface(REFIID riid,void **ppv)
// Overriden to say what interfaces we support and where
STDMETHODIMP CBaseRenderer::NonDelegatingQueryInterface(REFIID riid,void **ppv)
STDMETHODIMP CBaseRenderer::NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv)
{
// Do we have this interface
@@ -287,7 +295,7 @@ void CBaseRenderer::WaitForReceiveToComplete()
}
MSG msg;
// Receive all interthread sendmessages
// Receive all interthread snedmessages
PeekMessage(&msg, NULL, WM_NULL, WM_NULL, PM_NOREMOVE);
Sleep(1);
@@ -582,7 +590,11 @@ STDMETHODIMP CBaseRenderer::Run(REFERENCE_TIME StartTime)
int CBaseRenderer::GetPinCount()
{
return 1;
if (m_pInputPin == NULL) {
// Try to create it
(void)GetPin(0);
}
return m_pInputPin != NULL ? 1 : 0;
}
@@ -625,14 +637,17 @@ CBasePin *CBaseRenderer::GetPin(int n)
// If "In" then return the IPin for our input pin, otherwise NULL and error
STDMETHODIMP CBaseRenderer::FindPin(LPCWSTR Id, IPin **ppPin)
STDMETHODIMP CBaseRenderer::FindPin(LPCWSTR Id, __deref_out IPin **ppPin)
{
CheckPointer(ppPin,E_POINTER);
if (0==lstrcmpW(Id,L"In")) {
*ppPin = GetPin(0);
ASSERT(*ppPin);
(*ppPin)->AddRef();
if (*ppPin) {
(*ppPin)->AddRef();
} else {
return E_OUTOFMEMORY;
}
} else {
*ppPin = NULL;
return VFW_E_NOT_FOUND;
@@ -814,8 +829,8 @@ HRESULT CBaseRenderer::BreakConnect()
// which case the object should simply render the sample data immediately
HRESULT CBaseRenderer::GetSampleTimes(IMediaSample *pMediaSample,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime)
__out REFERENCE_TIME *pStartTime,
__out REFERENCE_TIME *pEndTime)
{
ASSERT(m_dwAdvise == 0);
ASSERT(pMediaSample);
@@ -849,8 +864,8 @@ HRESULT CBaseRenderer::GetSampleTimes(IMediaSample *pMediaSample,
// by the derived video renderer class in its quality management.
HRESULT CBaseRenderer::ShouldDrawSampleNow(IMediaSample *pMediaSample,
REFERENCE_TIME *ptrStart,
REFERENCE_TIME *ptrEnd)
__out REFERENCE_TIME *ptrStart,
__out REFERENCE_TIME *ptrEnd)
{
return S_FALSE;
}
@@ -1544,9 +1559,9 @@ void CBaseRenderer::OnRenderEnd(IMediaSample *pMediaSample)
// Constructor must be passed the base renderer object
CRendererInputPin::CRendererInputPin(CBaseRenderer *pRenderer,
HRESULT *phr,
LPCWSTR pPinName) :
CRendererInputPin::CRendererInputPin(__inout CBaseRenderer *pRenderer,
__inout HRESULT *phr,
__in_opt LPCWSTR pPinName) :
CBaseInputPin(NAME("Renderer pin"),
pRenderer,
&pRenderer->m_InterfaceLock,
@@ -1685,16 +1700,17 @@ HRESULT CRendererInputPin::CompleteConnect(IPin *pReceivePin)
// Give the pin id of our one and only pin
STDMETHODIMP CRendererInputPin::QueryId(LPWSTR *Id)
STDMETHODIMP CRendererInputPin::QueryId(__deref_out LPWSTR *Id)
{
CheckPointer(Id,E_POINTER);
const size_t len = 4;
*Id = (LPWSTR)CoTaskMemAlloc(len * sizeof(WCHAR));
const WCHAR szIn[] = L"In";
*Id = (LPWSTR)CoTaskMemAlloc(sizeof(szIn));
if (*Id == NULL) {
return E_OUTOFMEMORY;
}
(void)StringCchCopyW(*Id, len, L"In");
CopyMemory(*Id, szIn, sizeof(szIn));
return NOERROR;
}
@@ -1753,9 +1769,9 @@ const TCHAR DRAWLATEFRAMES[] = TEXT("DrawLateFrames");
CBaseVideoRenderer::CBaseVideoRenderer(
REFCLSID RenderClass, // CLSID for this renderer
TCHAR *pName, // Debug ONLY description
LPUNKNOWN pUnk, // Aggregated owner object
HRESULT *phr) : // General OLE return code
__in_opt LPCTSTR pName, // Debug ONLY description
__inout_opt LPUNKNOWN pUnk, // Aggregated owner object
__inout HRESULT *phr) : // General OLE return code
CBaseRenderer(RenderClass,pName,pUnk,phr),
m_cFramesDropped(0),
@@ -1834,8 +1850,8 @@ HRESULT CBaseVideoRenderer::ResetStreamingTimes()
m_iTotAcc = 0;
m_iSumSqAcc = 0;
m_iSumSqFrameTime = 0;
m_trFrame = 0; // hygiene - not really needed
m_trLate = 0; // hygiene - not really needed
m_trFrame = 0; // hygeine - not really needed
m_trLate = 0; // hygeine - not really needed
m_iSumFrameTime = 0;
m_nNormal = 0;
m_trEarliness = 0;
@@ -2282,8 +2298,8 @@ HRESULT CBaseVideoRenderer::SendQuality(REFERENCE_TIME trLate,
// to make the decision
HRESULT CBaseVideoRenderer::ShouldDrawSampleNow(IMediaSample *pMediaSample,
REFERENCE_TIME *ptrStart,
REFERENCE_TIME *ptrEnd)
__inout REFERENCE_TIME *ptrStart,
__inout REFERENCE_TIME *ptrEnd)
{
// Don't call us unless there's a clock interface to synchronise with
@@ -2618,7 +2634,7 @@ BOOL CBaseVideoRenderer::ScheduleSample(IMediaSample *pMediaSample)
// our IQualProp interface. The AddRef and Release are handled automatically
// by the base class and will be passed on to the appropriate outer object
STDMETHODIMP CBaseVideoRenderer::get_FramesDroppedInRenderer(int *pcFramesDropped)
STDMETHODIMP CBaseVideoRenderer::get_FramesDroppedInRenderer(__out int *pcFramesDropped)
{
CheckPointer(pcFramesDropped,E_POINTER);
CAutoLock cVideoLock(&m_InterfaceLock);
@@ -2669,7 +2685,7 @@ STDMETHODIMP CBaseVideoRenderer::get_AvgFrameRate( int *piAvgFrameRate)
// in mSec. The sync offset is the time in mSec between when the frame
// should have been drawn and when the frame was actually drawn.
STDMETHODIMP CBaseVideoRenderer::get_AvgSyncOffset( int *piAvg)
STDMETHODIMP CBaseVideoRenderer::get_AvgSyncOffset(__out int *piAvg)
{
CheckPointer(piAvg,E_POINTER);
CAutoLock cVideoLock(&m_InterfaceLock);
@@ -2737,7 +2753,7 @@ int isqrt(int x)
//
HRESULT CBaseVideoRenderer::GetStdDev(
int nSamples,
int *piResult,
__out int *piResult,
LONGLONG llSumSq,
LONGLONG iTot
)
@@ -2774,7 +2790,7 @@ HRESULT CBaseVideoRenderer::GetStdDev(
// Set *piDev to the standard deviation in mSec of the sync offset
// of each frame since streaming started.
STDMETHODIMP CBaseVideoRenderer::get_DevSyncOffset( int *piDev)
STDMETHODIMP CBaseVideoRenderer::get_DevSyncOffset(__out int *piDev)
{
// First frames have invalid stamps, so we get no stats for them
// So we need 2 frames to get 1 datum, so N is cFramesDrawn-1
@@ -2788,7 +2804,7 @@ STDMETHODIMP CBaseVideoRenderer::get_DevSyncOffset( int *piDev)
// Set *piJitter to the standard deviation in mSec of the inter-frame time
// of frames since streaming started.
STDMETHODIMP CBaseVideoRenderer::get_Jitter( int *piJitter)
STDMETHODIMP CBaseVideoRenderer::get_Jitter(__out int *piJitter)
{
// First frames have invalid stamps, so we get no stats for them
// So second frame gives invalid inter-frame time
@@ -2803,7 +2819,7 @@ STDMETHODIMP CBaseVideoRenderer::get_Jitter( int *piJitter)
// Overidden to return our IQualProp interface
STDMETHODIMP
CBaseVideoRenderer::NonDelegatingQueryInterface(REFIID riid,VOID **ppv)
CBaseVideoRenderer::NonDelegatingQueryInterface(REFIID riid,__deref_out VOID **ppv)
{
// We return IQualProp and delegate everything else
@@ -2820,7 +2836,7 @@ CBaseVideoRenderer::NonDelegatingQueryInterface(REFIID riid,VOID **ppv)
// the graph we can send an EC_WINDOW_DESTROYED event
STDMETHODIMP
CBaseVideoRenderer::JoinFilterGraph(IFilterGraph *pGraph,LPCWSTR pName)
CBaseVideoRenderer::JoinFilterGraph(__inout_opt IFilterGraph *pGraph, __in_opt LPCWSTR pName)
{
// Since we send EC_ACTIVATE, we also need to ensure
// we send EC_WINDOW_DESTROYED or the resource manager may be
@@ -2829,10 +2845,8 @@ CBaseVideoRenderer::JoinFilterGraph(IFilterGraph *pGraph,LPCWSTR pName)
// We were in a graph and now we're not
// Do this properly in case we are aggregated
IBaseFilter* pFilter;
QueryInterface(IID_IBaseFilter,(void **) &pFilter);
IBaseFilter* pFilter = this;
NotifyEvent(EC_WINDOW_DESTROYED, (LPARAM) pFilter, 0);
pFilter->Release();
}
return CBaseFilter::JoinFilterGraph(pGraph, pName);
}

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a generic ActiveX base renderer
// class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -27,9 +27,9 @@ protected:
public:
CRendererInputPin(CBaseRenderer *pRenderer,
HRESULT *phr,
LPCWSTR Name);
CRendererInputPin(__inout CBaseRenderer *pRenderer,
__inout HRESULT *phr,
__in_opt LPCWSTR Name);
// Overriden from the base pin classes
@@ -42,7 +42,7 @@ public:
// Add rendering behaviour to interface functions
STDMETHODIMP QueryId(LPWSTR *Id);
STDMETHODIMP QueryId(__deref_out LPWSTR *Id);
STDMETHODIMP EndOfStream();
STDMETHODIMP BeginFlush();
STDMETHODIMP EndFlush();
@@ -97,16 +97,16 @@ protected:
public:
CBaseRenderer(REFCLSID RenderClass, // CLSID for this renderer
TCHAR *pName, // Debug ONLY description
LPUNKNOWN pUnk, // Aggregated owner object
HRESULT *phr); // General OLE return code
__in_opt LPCTSTR pName, // Debug ONLY description
__inout_opt LPUNKNOWN pUnk, // Aggregated owner object
__inout HRESULT *phr); // General OLE return code
~CBaseRenderer();
// Overriden to say what interfaces we support and where
virtual HRESULT GetMediaPositionInterface(REFIID riid,void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID, void **);
virtual HRESULT GetMediaPositionInterface(REFIID riid, __deref_out void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID, __deref_out void **);
virtual HRESULT SourceThreadCanWait(BOOL bCanWait);
@@ -145,8 +145,8 @@ public:
STDMETHODIMP Stop();
STDMETHODIMP Pause();
STDMETHODIMP Run(REFERENCE_TIME StartTime);
STDMETHODIMP GetState(DWORD dwMSecs,FILTER_STATE *State);
STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin);
STDMETHODIMP GetState(DWORD dwMSecs, __out FILTER_STATE *State);
STDMETHODIMP FindPin(LPCWSTR Id, __deref_out IPin **ppPin);
// These are available for a quality management implementation
@@ -170,12 +170,12 @@ public:
virtual BOOL ScheduleSample(IMediaSample *pMediaSample);
virtual HRESULT GetSampleTimes(IMediaSample *pMediaSample,
REFERENCE_TIME *pStartTime,
REFERENCE_TIME *pEndTime);
__out REFERENCE_TIME *pStartTime,
__out REFERENCE_TIME *pEndTime);
virtual HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample,
REFERENCE_TIME *ptrStart,
REFERENCE_TIME *ptrEnd);
__out REFERENCE_TIME *ptrStart,
__out REFERENCE_TIME *ptrEnd);
// Lots of end of stream complexities
@@ -408,9 +408,9 @@ public:
CBaseVideoRenderer(REFCLSID RenderClass, // CLSID for this renderer
TCHAR *pName, // Debug ONLY description
LPUNKNOWN pUnk, // Aggregated owner object
HRESULT *phr); // General OLE return code
__in_opt LPCTSTR pName, // Debug ONLY description
__inout_opt LPUNKNOWN pUnk, // Aggregated owner object
__inout HRESULT *phr); // General OLE return code
~CBaseVideoRenderer();
@@ -437,11 +437,11 @@ public:
virtual HRESULT ResetStreamingTimes();
BOOL ScheduleSample(IMediaSample *pMediaSample);
HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample,
REFERENCE_TIME *ptrStart,
REFERENCE_TIME *ptrEnd);
__inout REFERENCE_TIME *ptrStart,
__inout REFERENCE_TIME *ptrEnd);
virtual HRESULT SendQuality(REFERENCE_TIME trLate, REFERENCE_TIME trRealStream);
STDMETHODIMP JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName);
STDMETHODIMP JoinFilterGraph(__inout_opt IFilterGraph * pGraph, __in_opt LPCWSTR pName);
//
// Do estimates for standard deviations for per-frame
@@ -453,7 +453,7 @@ public:
//
HRESULT GetStdDev(
int nSamples,
int *piResult,
__out int *piResult,
LONGLONG llSumSq,
LONGLONG iTot
);
@@ -461,17 +461,17 @@ public:
// IQualProp property page support
STDMETHODIMP get_FramesDroppedInRenderer(int *cFramesDropped);
STDMETHODIMP get_FramesDrawn(int *pcFramesDrawn);
STDMETHODIMP get_AvgFrameRate(int *piAvgFrameRate);
STDMETHODIMP get_Jitter(int *piJitter);
STDMETHODIMP get_AvgSyncOffset(int *piAvg);
STDMETHODIMP get_DevSyncOffset(int *piDev);
STDMETHODIMP get_FramesDroppedInRenderer(__out int *cFramesDropped);
STDMETHODIMP get_FramesDrawn(__out int *pcFramesDrawn);
STDMETHODIMP get_AvgFrameRate(__out int *piAvgFrameRate);
STDMETHODIMP get_Jitter(__out int *piJitter);
STDMETHODIMP get_AvgSyncOffset(__out int *piAvg);
STDMETHODIMP get_DevSyncOffset(__out int *piDev);
// Implement an IUnknown interface and expose IQualProp
DECLARE_IUNKNOWN
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,VOID **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out VOID **ppv);
};
#endif // __RENBASE__

View File

@@ -3,11 +3,11 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1996-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
// DbgLog values (all on LOG_TIMING):
//
@@ -117,11 +117,8 @@ HRESULT CAMSchedule::Unadvise(DWORD_PTR dwAdviseCookie)
CAdvisePacket * p_prev = &head;
CAdvisePacket * p_n;
m_Serialize.Lock();
while (1) // The Next() method returns NULL when it hits z
while ( p_n = p_prev->Next() ) // The Next() method returns NULL when it hits z
{
p_n = p_prev->Next();
if (!p_n) break;
if ( p_n->m_dwAdviseCookie == dwAdviseCookie )
{
Delete( p_prev->RemoveNext() );
@@ -190,7 +187,7 @@ REFERENCE_TIME CAMSchedule::Advise( const REFERENCE_TIME & rtTime )
/* Private methods */
DWORD_PTR CAMSchedule::AddAdvisePacket( CAdvisePacket * pPacket )
DWORD_PTR CAMSchedule::AddAdvisePacket( __inout CAdvisePacket * pPacket )
{
ASSERT(pPacket->m_rtEventTime >= 0 && pPacket->m_rtEventTime < MAX_TIME);
ASSERT(CritCheckIn(&m_Serialize));
@@ -217,7 +214,7 @@ DWORD_PTR CAMSchedule::AddAdvisePacket( CAdvisePacket * pPacket )
return Result;
}
void CAMSchedule::Delete( CAdvisePacket * pPacket )
void CAMSchedule::Delete( __inout CAdvisePacket * pPacket )
{
if ( m_dwCacheCount >= dwCacheMax ) delete pPacket;
else

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1996-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -50,10 +50,10 @@ private:
HANDLE m_hNotify; // Handle to event or semephore
BOOL m_bPeriodic; // TRUE => Periodic event
CAdvisePacket( CAdvisePacket * next, LONGLONG time ) : m_next(next), m_rtEventTime(time)
CAdvisePacket( __inout_opt CAdvisePacket * next, LONGLONG time ) : m_next(next), m_rtEventTime(time)
{}
void InsertAfter( CAdvisePacket * p )
void InsertAfter( __inout CAdvisePacket * p )
{
p->m_next = m_next;
m_next = p;
@@ -99,7 +99,7 @@ private:
CCritSec m_Serialize;
// AddAdvisePacket: adds the packet, returns the cookie (0 if failed)
DWORD_PTR AddAdvisePacket( CAdvisePacket * pPacket );
DWORD_PTR AddAdvisePacket( __inout CAdvisePacket * pPacket );
// Event that we should set if the packed added above will be the next to fire.
const HANDLE m_ev;
@@ -113,7 +113,7 @@ private:
DWORD m_dwCacheCount;
enum { dwCacheMax = 5 }; // Don't bother caching more than five
void Delete( CAdvisePacket * pLink );// This "Delete" will cache the Link
void Delete( __inout CAdvisePacket * pLink );// This "Delete" will cache the Link
// Attributes and methods for debugging
public:

View File

@@ -3,11 +3,11 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include "seekpt.h"
//==================================================================
@@ -17,13 +17,13 @@
// and save it in a static variable so that forever after we can return that.
//==================================================================
CUnknown * CSeekingPassThru::CreateInstance(LPUNKNOWN pUnk, HRESULT *phr)
CUnknown * CSeekingPassThru::CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr)
{
return new CSeekingPassThru(NAME("Seeking PassThru"),pUnk, phr);
}
STDMETHODIMP CSeekingPassThru::NonDelegatingQueryInterface(REFIID riid, void ** ppv)
STDMETHODIMP CSeekingPassThru::NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv)
{
if (riid == IID_ISeekingPassThru) {
return GetInterface((ISeekingPassThru *) this, ppv);
@@ -39,7 +39,7 @@ STDMETHODIMP CSeekingPassThru::NonDelegatingQueryInterface(REFIID riid, void **
}
CSeekingPassThru::CSeekingPassThru( TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr )
CSeekingPassThru::CSeekingPassThru( __in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr )
: CUnknown(pName, pUnk, phr),
m_pPosPassThru(NULL)
{

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -14,12 +14,12 @@
class CSeekingPassThru : public ISeekingPassThru, public CUnknown
{
public:
static CUnknown *CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
CSeekingPassThru(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr);
static CUnknown *CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr);
CSeekingPassThru(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr);
~CSeekingPassThru();
DECLARE_IUNKNOWN;
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
STDMETHODIMP Init(BOOL bSupportRendering, IPin *pPin);

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - implements CSource, which is a Quartz
// source filter 'template.'
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -18,7 +18,7 @@
// the threads processing loop, when it is safe to get the filter critical
// section from within FillBuffer().
#include "streams.h"
#include <streams.h>
//
@@ -26,14 +26,14 @@
//
// Initialise the pin count for the filter. The user will create the pins in
// the derived class.
CSource::CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid)
CSource::CSource(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid)
: CBaseFilter(pName, lpunk, &m_cStateLock, clsid),
m_iPins(0),
m_paStreams(NULL)
{
}
CSource::CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr)
CSource::CSource(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid, __inout HRESULT *phr)
: CBaseFilter(pName, lpunk, &m_cStateLock, clsid),
m_iPins(0),
m_paStreams(NULL)
@@ -42,14 +42,14 @@ CSource::CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr)
}
#ifdef UNICODE
CSource::CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid)
CSource::CSource(__in_opt LPCSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid)
: CBaseFilter(pName, lpunk, &m_cStateLock, clsid),
m_iPins(0),
m_paStreams(NULL)
{
}
CSource::CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr)
CSource::CSource(__in_opt LPCSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid, __inout HRESULT *phr)
: CBaseFilter(pName, lpunk, &m_cStateLock, clsid),
m_iPins(0),
m_paStreams(NULL)
@@ -76,7 +76,7 @@ CSource::~CSource()
//
// Add a new pin
//
HRESULT CSource::AddPin(CSourceStream *pStream)
HRESULT CSource::AddPin(__in CSourceStream *pStream)
{
CAutoLock lock(&m_cStateLock);
@@ -100,7 +100,7 @@ HRESULT CSource::AddPin(CSourceStream *pStream)
//
// Remove a pin - pStream is NOT deleted
//
HRESULT CSource::RemovePin(CSourceStream *pStream)
HRESULT CSource::RemovePin(__in CSourceStream *pStream)
{
int i;
for (i = 0; i < m_iPins; i++) {
@@ -125,7 +125,7 @@ HRESULT CSource::RemovePin(CSourceStream *pStream)
//
// Set *ppPin to the IPin* that has the id Id.
// or to NULL if the Id cannot be matched.
STDMETHODIMP CSource::FindPin(LPCWSTR Id, IPin **ppPin)
STDMETHODIMP CSource::FindPin(LPCWSTR Id, __deref_out IPin **ppPin)
{
CheckPointer(ppPin,E_POINTER);
ValidateReadWritePtr(ppPin,sizeof(IPin *));
@@ -145,7 +145,7 @@ STDMETHODIMP CSource::FindPin(LPCWSTR Id, IPin **ppPin)
// FindPinNumber
//
// return the number of the pin with this IPin* or -1 if none
int CSource::FindPinNumber(IPin *iPin) {
int CSource::FindPinNumber(__in IPin *iPin) {
int i;
for (i=0; i<m_iPins; ++i) {
if ((IPin *)(m_paStreams[i])==iPin) {
@@ -196,7 +196,7 @@ CBasePin *CSource::GetPin(int n) {
//
// Set Id to point to a CoTaskMemAlloc'd
STDMETHODIMP CSourceStream::QueryId(LPWSTR *Id) {
STDMETHODIMP CSourceStream::QueryId(__deref_out LPWSTR *Id) {
CheckPointer(Id,E_POINTER);
ValidateReadWritePtr(Id,sizeof(LPWSTR));
@@ -204,11 +204,11 @@ STDMETHODIMP CSourceStream::QueryId(LPWSTR *Id) {
// FindPinNumber returns -1 for an invalid pin
int i = 1+ m_pFilter->FindPinNumber(this);
if (i<1) return VFW_E_NOT_FOUND;
*Id = (LPWSTR)CoTaskMemAlloc(4*sizeof(WCHAR));
*Id = (LPWSTR)CoTaskMemAlloc(sizeof(WCHAR) * 12);
if (*Id==NULL) {
return E_OUTOFMEMORY;
}
IntToWstr(i, *Id, 4);
IntToWstr(i, *Id);
return NOERROR;
}
@@ -219,10 +219,10 @@ STDMETHODIMP CSourceStream::QueryId(LPWSTR *Id) {
//
// increments the number of pins present on the filter
CSourceStream::CSourceStream(
TCHAR *pObjectName,
HRESULT *phr,
CSource *ps,
LPCWSTR pPinName)
__in_opt LPCTSTR pObjectName,
__inout HRESULT *phr,
__inout CSource *ps,
__in_opt LPCWSTR pPinName)
: CBaseOutputPin(pObjectName, ps, ps->pStateLock(), phr, pPinName),
m_pFilter(ps) {
@@ -231,10 +231,10 @@ CSourceStream::CSourceStream(
#ifdef UNICODE
CSourceStream::CSourceStream(
char *pObjectName,
HRESULT *phr,
CSource *ps,
LPCWSTR pPinName)
__in_opt LPCSTR pObjectName,
__inout HRESULT *phr,
__inout CSource *ps,
__in_opt LPCWSTR pPinName)
: CBaseOutputPin(pObjectName, ps, ps->pStateLock(), phr, pPinName),
m_pFilter(ps) {
@@ -275,7 +275,7 @@ HRESULT CSourceStream::CheckMediaType(const CMediaType *pMediaType) {
//
// By default we support only one type
// iPosition indexes are 0-n
HRESULT CSourceStream::GetMediaType(int iPosition, CMediaType *pMediaType) {
HRESULT CSourceStream::GetMediaType(int iPosition, __inout CMediaType *pMediaType) {
CAutoLock lock(m_pFilter->pStateLock());

View File

@@ -5,7 +5,7 @@
// ActiveX source filters that support continuous generation of data.
// No support is provided for IMediaControl or IMediaPosition.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -43,11 +43,11 @@ class CSourceStream; // The class that will handle each pin
class CSource : public CBaseFilter {
public:
CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr);
CSource(TCHAR *pName, LPUNKNOWN lpunk, CLSID clsid);
CSource(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid, __inout HRESULT *phr);
CSource(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid);
#ifdef UNICODE
CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid, HRESULT *phr);
CSource(CHAR *pName, LPUNKNOWN lpunk, CLSID clsid);
CSource(__in_opt LPCSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid, __inout HRESULT *phr);
CSource(__in_opt LPCSTR pName, __inout_opt LPUNKNOWN lpunk, CLSID clsid);
#endif
~CSource();
@@ -58,15 +58,15 @@ public:
CCritSec* pStateLock(void) { return &m_cStateLock; } // provide our critical section
HRESULT AddPin(CSourceStream *);
HRESULT RemovePin(CSourceStream *);
HRESULT AddPin(__in CSourceStream *);
HRESULT RemovePin(__in CSourceStream *);
STDMETHODIMP FindPin(
LPCWSTR Id,
IPin ** ppPin
__deref_out IPin ** ppPin
);
int FindPinNumber(IPin *iPin);
int FindPinNumber(__in IPin *iPin);
protected:
@@ -88,15 +88,15 @@ protected:
class CSourceStream : public CAMThread, public CBaseOutputPin {
public:
CSourceStream(TCHAR *pObjectName,
HRESULT *phr,
CSource *pms,
LPCWSTR pName);
CSourceStream(__in_opt LPCTSTR pObjectName,
__inout HRESULT *phr,
__inout CSource *pms,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CSourceStream(CHAR *pObjectName,
HRESULT *phr,
CSource *pms,
LPCWSTR pName);
CSourceStream(__in_opt LPCSTR pObjectName,
__inout HRESULT *phr,
__inout CSource *pms,
__in_opt LPCWSTR pName);
#endif
virtual ~CSourceStream(void); // virtual destructor ensures derived class destructors are called too.
@@ -155,16 +155,16 @@ protected:
// If you support more than one media type then override these 2 functions
virtual HRESULT CheckMediaType(const CMediaType *pMediaType);
virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType); // List pos. 0-n
virtual HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType); // List pos. 0-n
// If you support only one type then override this fn.
// This will only be called by the default implementations
// of CheckMediaType and GetMediaType(int, CMediaType*)
// You must override this fn. or the above 2!
virtual HRESULT GetMediaType(CMediaType *pMediaType) {return E_UNEXPECTED;}
virtual HRESULT GetMediaType(__inout CMediaType *pMediaType) {return E_UNEXPECTED;}
STDMETHODIMP QueryId(
LPWSTR * Id
__deref_out LPWSTR * Id
);
};

197
3rdparty/baseclasses/streams.h vendored Normal file
View File

@@ -0,0 +1,197 @@
//------------------------------------------------------------------------------
// File: Streams.h
//
// Desc: DirectShow base classes - defines overall streams architecture.
//
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __STREAMS__
#define __STREAMS__
#ifdef _MSC_VER
// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable
#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
#pragma warning(disable:4514) // warning C4514: "unreferenced inline function has been removed"
#if _MSC_VER>=1100
#define AM_NOVTABLE __declspec(novtable)
#else
#define AM_NOVTABLE
#endif
#endif // MSC_VER
// Because of differences between Visual C++ and older Microsoft SDKs,
// you may have defined _DEBUG without defining DEBUG. This logic
// ensures that both will be set if Visual C++ sets _DEBUG.
#ifdef _DEBUG
#ifndef DEBUG
#define DEBUG
#endif
#endif
#include <windows.h>
#include <windowsx.h>
#include <olectl.h>
#include <ddraw.h>
#include <mmsystem.h>
#ifndef NUMELMS
#if _WIN32_WINNT < 0x0600
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
#else
#define NUMELMS(aa) ARRAYSIZE(aa)
#endif
#endif
///////////////////////////////////////////////////////////////////////////
// The following definitions come from the Platform SDK and are required if
// the applicaiton is being compiled with the headers from Visual C++ 6.0.
///////////////////////////////////////////////////////////////////////////
#ifndef InterlockedExchangePointer
#define InterlockedExchangePointer(Target, Value) \
(PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value))
#endif
#ifndef _WAVEFORMATEXTENSIBLE_
#define _WAVEFORMATEXTENSIBLE_
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample; /* bits of precision */
WORD wSamplesPerBlock; /* valid if wBitsPerSample==0 */
WORD wReserved; /* If neither applies, set to zero. */
} Samples;
DWORD dwChannelMask; /* which channels are */
/* present in stream */
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
#endif // !_WAVEFORMATEXTENSIBLE_
#if !defined(WAVE_FORMAT_EXTENSIBLE)
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE
#endif // !defined(WAVE_FORMAT_EXTENSIBLE)
#ifndef GetWindowLongPtr
#define GetWindowLongPtrA GetWindowLongA
#define GetWindowLongPtrW GetWindowLongW
#ifdef UNICODE
#define GetWindowLongPtr GetWindowLongPtrW
#else
#define GetWindowLongPtr GetWindowLongPtrA
#endif // !UNICODE
#endif // !GetWindowLongPtr
#ifndef SetWindowLongPtr
#define SetWindowLongPtrA SetWindowLongA
#define SetWindowLongPtrW SetWindowLongW
#ifdef UNICODE
#define SetWindowLongPtr SetWindowLongPtrW
#else
#define SetWindowLongPtr SetWindowLongPtrA
#endif // !UNICODE
#endif // !SetWindowLongPtr
#ifndef GWLP_WNDPROC
#define GWLP_WNDPROC (-4)
#endif
#ifndef GWLP_HINSTANCE
#define GWLP_HINSTANCE (-6)
#endif
#ifndef GWLP_HWNDPARENT
#define GWLP_HWNDPARENT (-8)
#endif
#ifndef GWLP_USERDATA
#define GWLP_USERDATA (-21)
#endif
#ifndef GWLP_ID
#define GWLP_ID (-12)
#endif
#ifndef DWLP_MSGRESULT
#define DWLP_MSGRESULT 0
#endif
#ifndef DWLP_DLGPROC
#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
#endif
#ifndef DWLP_USER
#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
#endif
#pragma warning(push)
#pragma warning(disable: 4312 4244)
// _GetWindowLongPtr
// Templated version of GetWindowLongPtr, to suppress spurious compiler warning.
template <class T>
T _GetWindowLongPtr(HWND hwnd, int nIndex)
{
return (T)GetWindowLongPtr(hwnd, nIndex);
}
// _SetWindowLongPtr
// Templated version of SetWindowLongPtr, to suppress spurious compiler warning.
template <class T>
LONG_PTR _SetWindowLongPtr(HWND hwnd, int nIndex, T p)
{
return SetWindowLongPtr(hwnd, nIndex, (LONG_PTR)p);
}
#pragma warning(pop)
///////////////////////////////////////////////////////////////////////////
// End Platform SDK definitions
///////////////////////////////////////////////////////////////////////////
#include <strmif.h> // Generated IDL header file for streams interfaces
#include <intsafe.h> // required by amvideo.h
#include <reftime.h> // Helper class for REFERENCE_TIME management
#include <wxdebug.h> // Debug support for logging and ASSERTs
#include <amvideo.h> // ActiveMovie video interfaces and definitions
//include amaudio.h explicitly if you need it. it requires the DX SDK.
//#include <amaudio.h> // ActiveMovie audio interfaces and definitions
#include <wxutil.h> // General helper classes for threads etc
#include <combase.h> // Base COM classes to support IUnknown
#include <measure.h> // Performance measurement
#include <comlite.h> // Light weight com function prototypes
#include <cache.h> // Simple cache container class
#include <wxlist.h> // Non MFC generic list class
#include <msgthrd.h> // CMsgThread
#include <mtype.h> // Helper class for managing media types
#include <fourcc.h> // conversions between FOURCCs and GUIDs
#include <control.h> // generated from control.odl
#include <ctlutil.h> // control interface utility classes
#include <evcode.h> // event code definitions
#include <amfilter.h> // Main streams architecture class hierachy
#include <transfrm.h> // Generic transform filter
#include <transip.h> // Generic transform-in-place filter
#include <uuids.h> // declaration of type GUIDs and well-known clsids
#include <source.h> // Generic source filter
#include <outputq.h> // Output pin queueing
#include <errors.h> // HRESULT status and error definitions
#include <renbase.h> // Base class for writing ActiveX renderers
#include <refclock.h> // Base clock class
#include <sysclock.h> // System clock
#include <pstream.h> // IPersistStream helper class
#include <vtrans.h> // Video Transform Filter base class
#include <amextra.h>
#include <strmctl.h> // IAMStreamControl support
#include <edevdefs.h> // External device control interface defines
#include <audevcod.h> // audio filter device error event codes
#else
#ifdef DEBUG
#pragma message("STREAMS.H included TWICE")
#endif
#endif // __STREAMS__

View File

@@ -3,18 +3,19 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1996-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include "strmctl.h"
#include <streams.h>
#include <strmctl.h>
CBaseStreamControl::CBaseStreamControl()
CBaseStreamControl::CBaseStreamControl(__inout HRESULT *phr)
: m_StreamState(STREAM_FLOWING)
, m_StreamStateOnStop(STREAM_FLOWING) // means no pending stop
, m_tStartTime(MAX_TIME)
, m_tStopTime(MAX_TIME)
, m_StreamEvent(FALSE, phr)
, m_dwStartCookie(0)
, m_dwStopCookie(0)
, m_pRefClock(NULL)
@@ -120,7 +121,7 @@ STDMETHODIMP CBaseStreamControl::StartAt
}
// Retrieve information about current settings
STDMETHODIMP CBaseStreamControl::GetInfo(AM_STREAM_INFO *pInfo)
STDMETHODIMP CBaseStreamControl::GetInfo(__out AM_STREAM_INFO *pInfo)
{
if (pInfo == NULL)
return E_POINTER;
@@ -231,7 +232,7 @@ void CBaseStreamControl::CancelStart()
enum CBaseStreamControl::StreamControlState CBaseStreamControl::CheckSampleTimes
( const REFERENCE_TIME * pSampleStart, const REFERENCE_TIME * pSampleStop )
( __in const REFERENCE_TIME * pSampleStart, __in const REFERENCE_TIME * pSampleStop )
{
CAutoLock lck(&m_CritSec);

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1996-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -71,15 +71,15 @@ private:
// expires, throw the sample away. If the event
// fires, call me back - I've changed my mind.
//
enum StreamControlState CheckSampleTimes( const REFERENCE_TIME * pSampleStart,
const REFERENCE_TIME * pSampleStop );
enum StreamControlState CheckSampleTimes( __in const REFERENCE_TIME * pSampleStart,
__in const REFERENCE_TIME * pSampleStop );
public:
// You don't have to tell us much when we're created, but there are other
// obligations that must be met. See SetSyncSource & NotifyFilterState
// below.
//
CBaseStreamControl();
CBaseStreamControl(__inout_opt HRESULT *phr = NULL);
~CBaseStreamControl();
// If you want this class to work properly, there are thing you need to
@@ -134,7 +134,7 @@ public:
DWORD dwCookie = 0 );
STDMETHODIMP StartAt( const REFERENCE_TIME * ptStart = NULL,
DWORD dwCookie = 0 );
STDMETHODIMP GetInfo( AM_STREAM_INFO *pInfo);
STDMETHODIMP GetInfo( __out AM_STREAM_INFO *pInfo);
// Helper function for pin's receive method. Call this with
// the sample and we'll tell you what to do with it. We'll do a

View File

@@ -4,11 +4,11 @@
// Desc: DirectShow base classes - implements a system clock based on
// IReferenceClock.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include <limits.h>
@@ -27,20 +27,20 @@ int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);
#endif
/* This goes in the factory template table to create new instances */
CUnknown * WINAPI CSystemClock::CreateInstance(LPUNKNOWN pUnk,HRESULT *phr)
CUnknown * WINAPI CSystemClock::CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr)
{
return new CSystemClock(NAME("System reference clock"),pUnk, phr);
}
CSystemClock::CSystemClock(TCHAR *pName,LPUNKNOWN pUnk,HRESULT *phr) :
CSystemClock::CSystemClock(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr) :
CBaseReferenceClock(pName, pUnk, phr)
{
}
STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(
REFIID riid,
void ** ppv)
__deref_out void ** ppv)
{
if (riid == IID_IPersist)
{
@@ -58,7 +58,7 @@ STDMETHODIMP CSystemClock::NonDelegatingQueryInterface(
/* Return the clock's clsid */
STDMETHODIMP
CSystemClock::GetClassID(CLSID *pClsID)
CSystemClock::GetClassID(__out CLSID *pClsID)
{
CheckPointer(pClsID,E_POINTER);
ValidateReadWritePtr(pClsID,sizeof(CLSID));

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a system clock implementation of
// IReferenceClock.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -21,16 +21,16 @@ class CSystemClock : public CBaseReferenceClock, public IAMClockAdjust, public I
{
public:
// We must be able to create an instance of ourselves
static CUnknown * WINAPI CreateInstance(LPUNKNOWN pUnk, HRESULT *phr);
CSystemClock(TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr);
static CUnknown * WINAPI CreateInstance(__inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr);
CSystemClock(__in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, __inout HRESULT *phr);
DECLARE_IUNKNOWN
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void ** ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void ** ppv);
// Yield up our class id so that we can be persisted
// Implement required Ipersist method
STDMETHODIMP GetClassID(CLSID *pClsID);
STDMETHODIMP GetClassID(__out CLSID *pClsID);
// IAMClockAdjust methods
STDMETHODIMP SetClockDelta(REFERENCE_TIME rtDelta);

View File

@@ -4,20 +4,20 @@
// Desc: DirectShow base classes - implements class for simple transform
// filters such as video decompressors.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include "measure.h"
#include <streams.h>
#include <measure.h>
// =================================================================
// Implements the CTransformFilter class
// =================================================================
CTransformFilter::CTransformFilter(TCHAR *pName,
LPUNKNOWN pUnk,
CTransformFilter::CTransformFilter(__in_opt LPCTSTR pName,
__inout_opt LPUNKNOWN pUnk,
REFCLSID clsid) :
CBaseFilter(pName,pUnk,&m_csFilter, clsid),
m_pInput(NULL),
@@ -32,8 +32,8 @@ CTransformFilter::CTransformFilter(TCHAR *pName,
}
#ifdef UNICODE
CTransformFilter::CTransformFilter(char *pName,
LPUNKNOWN pUnk,
CTransformFilter::CTransformFilter(__in_opt LPCSTR pName,
__inout_opt LPUNKNOWN pUnk,
REFCLSID clsid) :
CBaseFilter(pName,pUnk,&m_csFilter, clsid),
m_pInput(NULL),
@@ -140,7 +140,7 @@ CTransformFilter::GetPin(int n)
// If Id is In or Out then return the IPin* for that pin
// creating the pin if need be. Otherwise return NULL with an error.
STDMETHODIMP CTransformFilter::FindPin(LPCWSTR Id, IPin **ppPin)
STDMETHODIMP CTransformFilter::FindPin(LPCWSTR Id, __deref_out IPin **ppPin)
{
CheckPointer(ppPin,E_POINTER);
ValidateReadWritePtr(ppPin,sizeof(IPin *));
@@ -185,7 +185,7 @@ CTransformFilter::StopStreaming()
// override this to grab extra interfaces on connection
HRESULT
CTransformFilter::CheckConnect(PIN_DIRECTION dir,IPin *pPin)
CTransformFilter::CheckConnect(PIN_DIRECTION dir, IPin *pPin)
{
UNREFERENCED_PARAMETER(dir);
UNREFERENCED_PARAMETER(pPin);
@@ -227,7 +227,7 @@ CTransformFilter::SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt)
// Set up our output sample
HRESULT
CTransformFilter::InitializeOutputSample(IMediaSample *pSample, IMediaSample **ppOutSample)
CTransformFilter::InitializeOutputSample(IMediaSample *pSample, __deref_out IMediaSample **ppOutSample)
{
IMediaSample *pOutSample;
@@ -578,10 +578,10 @@ CTransformInputPin::CheckStreaming()
// constructor
CTransformInputPin::CTransformInputPin(
TCHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName)
__in_opt LPCTSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName)
: CBaseInputPin(pObjectName, pTransformFilter, &pTransformFilter->m_csFilter, phr, pName)
{
DbgLog((LOG_TRACE,2,TEXT("CTransformInputPin::CTransformInputPin")));
@@ -590,10 +590,10 @@ CTransformInputPin::CTransformInputPin(
#ifdef UNICODE
CTransformInputPin::CTransformInputPin(
CHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName)
__in_opt LPCSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName)
: CBaseInputPin(pObjectName, pTransformFilter, &pTransformFilter->m_csFilter, phr, pName)
{
DbgLog((LOG_TRACE,2,TEXT("CTransformInputPin::CTransformInputPin")));
@@ -791,10 +791,10 @@ CTransformInputPin::NewSegment(
// constructor
CTransformOutputPin::CTransformOutputPin(
TCHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pPinName)
__in_opt LPCTSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pPinName)
: CBaseOutputPin(pObjectName, pTransformFilter, &pTransformFilter->m_csFilter, phr, pPinName),
m_pPosition(NULL)
{
@@ -805,10 +805,10 @@ CTransformOutputPin::CTransformOutputPin(
#ifdef UNICODE
CTransformOutputPin::CTransformOutputPin(
CHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pPinName)
__in_opt LPCSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pPinName)
: CBaseOutputPin(pObjectName, pTransformFilter, &pTransformFilter->m_csFilter, phr, pPinName),
m_pPosition(NULL)
{
@@ -831,7 +831,7 @@ CTransformOutputPin::~CTransformOutputPin()
// overriden to expose IMediaPosition and IMediaSeeking control interfaces
STDMETHODIMP
CTransformOutputPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
CTransformOutputPin::NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv)
{
CheckPointer(ppv,E_POINTER);
ValidateReadWritePtr(ppv,sizeof(PVOID));
@@ -958,7 +958,7 @@ CTransformOutputPin::SetMediaType(const CMediaType* pmtOut)
HRESULT
CTransformOutputPin::DecideBufferSize(
IMemAllocator * pAllocator,
ALLOCATOR_PROPERTIES* pProp)
__inout ALLOCATOR_PROPERTIES* pProp)
{
return m_pTransformFilter->DecideBufferSize(pAllocator, pProp);
}
@@ -970,7 +970,7 @@ CTransformOutputPin::DecideBufferSize(
HRESULT
CTransformOutputPin::GetMediaType(
int iPosition,
CMediaType *pMediaType)
__inout CMediaType *pMediaType)
{
ASSERT(m_pTransformFilter->m_pInput != NULL);

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines classes from which simple
// transform codecs may be derived.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -41,19 +41,19 @@ protected:
public:
CTransformInputPin(
TCHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CTransformInputPin(
char *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName);
__in_opt LPCSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName);
#endif
STDMETHODIMP QueryId(LPWSTR * Id)
STDMETHODIMP QueryId(__deref_out LPWSTR * Id)
{
return AMGetWideString(L"In", Id);
}
@@ -118,25 +118,25 @@ public:
IUnknown * m_pPosition;
CTransformOutputPin(
TCHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName);
#ifdef UNICODE
CTransformOutputPin(
CHAR *pObjectName,
CTransformFilter *pTransformFilter,
HRESULT * phr,
LPCWSTR pName);
__in_opt LPCSTR pObjectName,
__inout CTransformFilter *pTransformFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pName);
#endif
~CTransformOutputPin();
// override to expose IMediaPosition
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
// --- CBaseOutputPin ------------
STDMETHODIMP QueryId(LPWSTR * Id)
STDMETHODIMP QueryId(__deref_out LPWSTR * Id)
{
return AMGetWideString(L"Out", Id);
}
@@ -157,10 +157,10 @@ public:
// the count and size of buffers we need.
HRESULT DecideBufferSize(
IMemAllocator * pAlloc,
ALLOCATOR_PROPERTIES *pProp);
__inout ALLOCATOR_PROPERTIES *pProp);
// returns the preferred formats for a pin
HRESULT GetMediaType(int iPosition,CMediaType *pMediaType);
HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType);
// inherited from IQualityControl via CBasePin
STDMETHODIMP Notify(IBaseFilter * pSender, Quality q);
@@ -181,7 +181,7 @@ public:
virtual int GetPinCount();
virtual CBasePin * GetPin(int n);
STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin);
STDMETHODIMP FindPin(LPCWSTR Id, __deref_out IPin **ppPin);
// override state changes to allow derived transform filter
// to control streaming start/stop
@@ -190,9 +190,9 @@ public:
public:
CTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid);
CTransformFilter(__in_opt LPCTSTR , __inout_opt LPUNKNOWN, REFCLSID clsid);
#ifdef UNICODE
CTransformFilter(CHAR *, LPUNKNOWN, REFCLSID clsid);
CTransformFilter(__in_opt LPCSTR , __inout_opt LPUNKNOWN, REFCLSID clsid);
#endif
~CTransformFilter();
@@ -211,15 +211,15 @@ public:
virtual HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) PURE;
// this goes in the factory template table to create new instances
// static CCOMObject * CreateInstance(LPUNKNOWN, HRESULT *);
// static CCOMObject * CreateInstance(__inout_opt LPUNKNOWN, HRESULT *);
// call the SetProperties function with appropriate arguments
virtual HRESULT DecideBufferSize(
IMemAllocator * pAllocator,
ALLOCATOR_PROPERTIES *pprop) PURE;
__inout ALLOCATOR_PROPERTIES *pprop) PURE;
// override to suggest OUTPUT pin media types
virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType) PURE;
virtual HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType) PURE;
@@ -246,7 +246,7 @@ public:
virtual HRESULT Receive(IMediaSample *pSample);
// Standard setup for output sample
HRESULT InitializeOutputSample(IMediaSample *pSample, IMediaSample **ppOutSample);
HRESULT InitializeOutputSample(IMediaSample *pSample, __deref_out IMediaSample **ppOutSample);
// if you override Receive, you may need to override these three too
virtual HRESULT EndOfStream(void);

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - implements class for simple Transform-
// In-Place filters such as audio.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -251,9 +251,9 @@
// And that's IT!! Any further (essentially spurious) reconnects peter out
// with no change in the chain.
#include "streams.h"
#include "measure.h"
#include "transip.h"
#include <streams.h>
#include <measure.h>
#include <transip.h>
// =================================================================
@@ -261,10 +261,10 @@
// =================================================================
CTransInPlaceFilter::CTransInPlaceFilter
( TCHAR *pName,
LPUNKNOWN pUnk,
( __in_opt LPCTSTR pName,
__inout_opt LPUNKNOWN pUnk,
REFCLSID clsid,
HRESULT *phr,
__inout HRESULT *phr,
bool bModifiesData
)
: CTransformFilter(pName, pUnk, clsid),
@@ -278,10 +278,10 @@ CTransInPlaceFilter::CTransInPlaceFilter
#ifdef UNICODE
CTransInPlaceFilter::CTransInPlaceFilter
( CHAR *pName,
LPUNKNOWN pUnk,
( __in_opt LPCSTR pName,
__inout_opt LPUNKNOWN pUnk,
REFCLSID clsid,
HRESULT *phr,
__inout HRESULT *phr,
bool bModifiesData
)
: CTransformFilter(pName, pUnk, clsid),
@@ -359,7 +359,7 @@ CTransInPlaceFilter::GetPin(int n)
// dir is the direction of our pin.
// pReceivePin is the pin we are connecting to.
HRESULT CTransInPlaceFilter::CompleteConnect(PIN_DIRECTION dir,IPin *pReceivePin)
HRESULT CTransInPlaceFilter::CompleteConnect(PIN_DIRECTION dir, IPin *pReceivePin)
{
UNREFERENCED_PARAMETER(pReceivePin);
ASSERT(m_pInput);
@@ -414,7 +414,7 @@ HRESULT CTransInPlaceFilter::CompleteConnect(PIN_DIRECTION dir,IPin *pReceivePin
HRESULT CTransInPlaceFilter::DecideBufferSize
( IMemAllocator *pAlloc
, ALLOCATOR_PROPERTIES *pProperties
, __inout ALLOCATOR_PROPERTIES *pProperties
)
{
ALLOCATOR_PROPERTIES Request, Actual;
@@ -431,8 +431,8 @@ HRESULT CTransInPlaceFilter::DecideBufferSize
return hr;
}
} else {
// We're reduced to blind guessing. Let's guess one byte and if
// this isn't enough then when the other pin does get connected
// Propose one byte
// If this isn't enough then when the other pin does get connected
// we can revise it.
ZeroMemory(&Request, sizeof(Request));
Request.cBuffers = 1;
@@ -479,7 +479,7 @@ HRESULT CTransInPlaceFilter::DecideBufferSize
// Copy
//
// return a pointer to an identical copy of pSample
IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource)
__out_opt IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource)
{
IMediaSample * pDest;
@@ -502,11 +502,11 @@ IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource)
ASSERT(pDest);
IMediaSample2 *pSample2;
if (SUCCEEDED(pDest->QueryInterface(IID_IMediaSample2, (void **)&pSample2))) {
HRESULT hr = pSample2->SetProperties(
HRESULT hrProps = pSample2->SetProperties(
FIELD_OFFSET(AM_SAMPLE2_PROPERTIES, pbBuffer),
(PBYTE)m_pInput->SampleProps());
pSample2->Release();
if (FAILED(hr)) {
if (FAILED(hrProps)) {
pDest->Release();
return NULL;
}
@@ -545,7 +545,10 @@ IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource)
// Copy the actual data length and the actual data.
{
const long lDataLength = pSource->GetActualDataLength();
pDest->SetActualDataLength(lDataLength);
if (FAILED(pDest->SetActualDataLength(lDataLength))) {
pDest->Release();
return NULL;
}
// Copy the sample data
{
@@ -555,8 +558,13 @@ IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource)
ASSERT(lDestSize >= lSourceSize && lDestSize >= lDataLength);
pSource->GetPointer(&pSourceBuffer);
pDest->GetPointer(&pDestBuffer);
if (FAILED(pSource->GetPointer(&pSourceBuffer)) ||
FAILED(pDest->GetPointer(&pDestBuffer)) ||
lDestSize < lDataLength ||
lDataLength < 0) {
pDest->Release();
return NULL;
}
ASSERT(lDestSize == 0 || pSourceBuffer != NULL && pDestBuffer != NULL);
CopyMemory( (PVOID) pDestBuffer, (PVOID) pSourceBuffer, lDataLength );
@@ -651,10 +659,10 @@ CTransInPlaceFilter::Receive(IMediaSample *pSample)
// constructor
CTransInPlaceInputPin::CTransInPlaceInputPin
( TCHAR *pObjectName
, CTransInPlaceFilter *pFilter
, HRESULT *phr
, LPCWSTR pName
( __in_opt LPCTSTR pObjectName
, __inout CTransInPlaceFilter *pFilter
, __inout HRESULT *phr
, __in_opt LPCWSTR pName
)
: CTransformInputPin(pObjectName,
pFilter,
@@ -683,7 +691,7 @@ CTransInPlaceInputPin::CTransInPlaceInputPin
// ) or it could mean offering the one from downstream
// Else fail to offer any allocator at all.
STDMETHODIMP CTransInPlaceInputPin::GetAllocator(IMemAllocator ** ppAllocator)
STDMETHODIMP CTransInPlaceInputPin::GetAllocator(__deref_out IMemAllocator ** ppAllocator)
{
CheckPointer(ppAllocator,E_POINTER);
ValidateReadWritePtr(ppAllocator,sizeof(IMemAllocator *));
@@ -807,7 +815,7 @@ CTransInPlaceInputPin::NotifyAllocator(
// EnumMediaTypes
// - pass through to our downstream filter
STDMETHODIMP CTransInPlaceInputPin::EnumMediaTypes( IEnumMediaTypes **ppEnum )
STDMETHODIMP CTransInPlaceInputPin::EnumMediaTypes( __deref_out IEnumMediaTypes **ppEnum )
{
// Can only pass through if connected
if( !m_pTIPFilter->m_pOutput->IsConnected() )
@@ -839,7 +847,7 @@ HRESULT CTransInPlaceInputPin::CheckMediaType(const CMediaType *pmt )
// If upstream asks us what our requirements are, we will try to ask downstream
// if that doesn't work, we'll just take the defaults.
STDMETHODIMP
CTransInPlaceInputPin::GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps)
CTransInPlaceInputPin::GetAllocatorRequirements(__out ALLOCATOR_PROPERTIES *pProps)
{
if( m_pTIPFilter->m_pOutput->IsConnected() )
@@ -875,10 +883,10 @@ CTransInPlaceInputPin::CompleteConnect(IPin *pReceivePin)
// constructor
CTransInPlaceOutputPin::CTransInPlaceOutputPin(
TCHAR *pObjectName,
CTransInPlaceFilter *pFilter,
HRESULT * phr,
LPCWSTR pPinName)
__in_opt LPCTSTR pObjectName,
__inout CTransInPlaceFilter *pFilter,
__inout HRESULT * phr,
__in_opt LPCWSTR pPinName)
: CTransformOutputPin( pObjectName
, pFilter
, phr
@@ -893,7 +901,7 @@ CTransInPlaceOutputPin::CTransInPlaceOutputPin(
// EnumMediaTypes
// - pass through to our upstream filter
STDMETHODIMP CTransInPlaceOutputPin::EnumMediaTypes( IEnumMediaTypes **ppEnum )
STDMETHODIMP CTransInPlaceOutputPin::EnumMediaTypes( __deref_out IEnumMediaTypes **ppEnum )
{
// Can only pass through if connected.
if( ! m_pTIPFilter->m_pInput->IsConnected() )

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines classes from which simple
// Transform-In-Place filters may be derived.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -49,21 +49,21 @@ protected:
public:
CTransInPlaceInputPin(
TCHAR *pObjectName,
CTransInPlaceFilter *pFilter,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__inout CTransInPlaceFilter *pFilter,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
// --- IMemInputPin -----
// Provide an enumerator for media types by getting one from downstream
STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum );
STDMETHODIMP EnumMediaTypes( __deref_out IEnumMediaTypes **ppEnum );
// Say whether media type is acceptable.
HRESULT CheckMediaType(const CMediaType* pmt);
// Return our upstream allocator
STDMETHODIMP GetAllocator(IMemAllocator ** ppAllocator);
STDMETHODIMP GetAllocator(__deref_out IMemAllocator ** ppAllocator);
// get told which allocator the upstream output pin is actually
// going to use.
@@ -72,11 +72,11 @@ public:
// Allow the filter to see what allocator we have
// N.B. This does NOT AddRef
IMemAllocator * PeekAllocator() const
__out IMemAllocator * PeekAllocator() const
{ return m_pAllocator; }
// Pass this on downstream if it ever gets called.
STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps);
STDMETHODIMP GetAllocatorRequirements(__out ALLOCATOR_PROPERTIES *pProps);
HRESULT CompleteConnect(IPin *pReceivePin);
@@ -98,10 +98,10 @@ protected:
public:
CTransInPlaceOutputPin(
TCHAR *pObjectName,
CTransInPlaceFilter *pFilter,
HRESULT *phr,
LPCWSTR pName);
__in_opt LPCTSTR pObjectName,
__inout CTransInPlaceFilter *pFilter,
__inout HRESULT *phr,
__in_opt LPCWSTR pName);
// --- CBaseOutputPin ------------
@@ -113,7 +113,7 @@ public:
// virtual HRESULT DecideAllocator(IMemInputPin * pPin, IMemAllocator ** pAlloc);
// Provide a media type enumerator. Get it from upstream.
STDMETHODIMP EnumMediaTypes( IEnumMediaTypes **ppEnum );
STDMETHODIMP EnumMediaTypes( __deref_out IEnumMediaTypes **ppEnum );
// Say whether media type is acceptable.
HRESULT CheckMediaType(const CMediaType* pmt);
@@ -122,12 +122,12 @@ public:
// Also called by input pin's GetAllocator()
void SetAllocator(IMemAllocator * pAllocator);
IMemInputPin * ConnectedIMemInputPin()
__out_opt IMemInputPin * ConnectedIMemInputPin()
{ return m_pInputPin; }
// Allow the filter to see what allocator we have
// N.B. This does NOT AddRef
IMemAllocator * PeekAllocator() const
__out IMemAllocator * PeekAllocator() const
{ return m_pAllocator; }
HRESULT CompleteConnect(IPin *pReceivePin);
@@ -151,10 +151,10 @@ public:
// not modify the data samples (for instance it's just copying
// them somewhere else or looking at the timestamps).
CTransInPlaceFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *,
CTransInPlaceFilter(__in_opt LPCTSTR, __inout_opt LPUNKNOWN, REFCLSID clsid, __inout HRESULT *,
bool bModifiesData = true);
#ifdef UNICODE
CTransInPlaceFilter(CHAR *, LPUNKNOWN, REFCLSID clsid, HRESULT *,
CTransInPlaceFilter(__in_opt LPCSTR, __inout_opt LPUNKNOWN, REFCLSID clsid, __inout HRESULT *,
bool bModifiesData = true);
#endif
// The following are defined to avoid undefined pure virtuals.
@@ -162,13 +162,13 @@ public:
// We override EnumMediaTypes to bypass the transform class enumerator
// which would otherwise call this.
HRESULT GetMediaType(int iPosition, CMediaType *pMediaType)
HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType)
{ DbgBreak("CTransInPlaceFilter::GetMediaType should never be called");
return E_UNEXPECTED;
}
// This is called when we actually have to provide out own allocator.
HRESULT DecideBufferSize(IMemAllocator*, ALLOCATOR_PROPERTIES *);
// This is called when we actually have to provide our own allocator.
HRESULT DecideBufferSize(IMemAllocator*, __inout ALLOCATOR_PROPERTIES *);
// The functions which call this in CTransform are overridden in this
// class to call CheckInputType with the assumption that the type
@@ -211,7 +211,7 @@ public:
protected:
IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource);
__out_opt IMediaSample * CTransInPlaceFilter::Copy(IMediaSample *pSource);
#ifdef PERF
int m_idTransInPlace; // performance measuring id
@@ -223,11 +223,11 @@ protected:
friend class CTransInPlaceInputPin;
friend class CTransInPlaceOutputPin;
CTransInPlaceInputPin *InputPin() const
__out CTransInPlaceInputPin *InputPin() const
{
return (CTransInPlaceInputPin *)m_pInput;
};
CTransInPlaceOutputPin *OutputPin() const
__out CTransInPlaceOutputPin *OutputPin() const
{
return (CTransInPlaceOutputPin *)m_pOutput;
};

View File

@@ -3,16 +3,16 @@
//
// Desc: DirectShow base classes.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include "measure.h"
#include <streams.h>
#include <measure.h>
// #include <vtransfr.h> // now in precomp file streams.h
CVideoTransformFilter::CVideoTransformFilter
( TCHAR *pName, LPUNKNOWN pUnk, REFCLSID clsid)
( __in_opt LPCTSTR pName, __inout_opt LPUNKNOWN pUnk, REFCLSID clsid)
: CTransformFilter(pName, pUnk, clsid)
, m_itrLate(0)
, m_nKeyFramePeriod(0) // No QM until we see at least 2 key frames

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes - defines a video transform class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -15,7 +15,7 @@ class CVideoTransformFilter : public CTransformFilter
{
public:
CVideoTransformFilter(TCHAR *, LPUNKNOWN, REFCLSID clsid);
CVideoTransformFilter(__in_opt LPCTSTR, __inout_opt LPUNKNOWN, REFCLSID clsid);
~CVideoTransformFilter();
HRESULT EndFlush();

View File

@@ -4,13 +4,15 @@
// Desc: DirectShow base classes - implements ActiveX system debugging
// facilities.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#include <stdarg.h>
#include <stdio.h>
#include <dvdmedia.h>
#ifdef DEBUG
#ifdef UNICODE
@@ -20,7 +22,12 @@
#endif // UNICODE
#endif // DEBUG
#include <tchar.h>
#include <strsafe.h>
#ifdef DEBUG
static void DisplayBITMAPINFO(const BITMAPINFOHEADER* pbmi);
static void DisplayRECT(LPCTSTR szLabel, const RECT& rc);
// The Win32 wsprintf() function writes a maximum of 1024 characters to it's output buffer.
// See the documentation for wsprintf()'s lpOut parameter for more information.
@@ -33,7 +40,7 @@ const INT iDEBUGINFO = 1024; // Used to format strings
HKEY_LOCAL_MACHINE\SOFTWARE\Debug\<Module Name>\<KeyName> key values
NOTE these must be in the same order as their enumeration definition */
TCHAR *pKeyNames[] = {
const LPCTSTR pKeyNames[] = {
TEXT("TIMING"), // Timing and performance measurements
TEXT("TRACE"), // General step point call tracing
TEXT("MEMORY"), // Memory and object allocation/destruction
@@ -66,11 +73,11 @@ bool g_fUseKASSERT = false; // don't create messagebox
bool g_fDbgInDllEntryPoint = false;
bool g_fAutoRefreshLevels = false;
const TCHAR *pBaseKey = TEXT("SOFTWARE\\Debug");
const TCHAR *pGlobalKey = TEXT("GLOBAL");
LPCTSTR pBaseKey = TEXT("SOFTWARE\\Microsoft\\DirectShow\\Debug");
LPCTSTR pGlobalKey = TEXT("GLOBAL");
static CHAR *pUnknownName = "UNKNOWN";
TCHAR *TimeoutName = TEXT("TIMEOUT");
LPCTSTR TimeoutName = TEXT("TIMEOUT");
/* This sets the instance handle that the debug library uses to find
the module's file name from the Win32 GetModuleFileName function */
@@ -146,7 +153,7 @@ void WINAPI DbgInitKeyLevels(HKEY hKey, bool fTakeMax)
sizeof(DWORD)); // Size of the field buffer
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,0,TEXT("Could not create subkey %s"),pKeyNames[lKeyPos]));
DbgLog((LOG_ERROR,1,TEXT("Could not create subkey %s"),pKeyNames[lKeyPos]));
dwKeyValue = 0;
}
}
@@ -188,7 +195,7 @@ void WINAPI DbgInitKeyLevels(HKEY hKey, bool fTakeMax)
sizeof(DWORD)); // Size of the field buffer
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,0,TEXT("Could not create subkey %s"),TimeoutName));
DbgLog((LOG_ERROR,1,TEXT("Could not create subkey %s"),pKeyNames[lKeyPos]));
dwWaitTimeout = INFINITE;
}
}
@@ -211,6 +218,49 @@ void WINAPI DbgOutString(LPCTSTR psz)
}
}
HRESULT DbgUniqueProcessName(LPCTSTR inName, LPTSTR outName)
{
HRESULT hr = S_OK;
const TCHAR *pIn = inName;
int dotPos = -1;
//scan the input and record the last '.' position
while (*pIn && (pIn - inName) < MAX_PATH)
{
if ( TEXT('.') == *pIn )
dotPos = (int)(pIn-inName);
++pIn;
}
if (*pIn) //input should be zero-terminated within MAX_PATH
return E_INVALIDARG;
DWORD dwProcessId = GetCurrentProcessId();
if (dotPos < 0)
{
//no extension in the input, appending process id to the input
hr = StringCchPrintf(outName, MAX_PATH, TEXT("%s_%d"), inName, dwProcessId);
}
else
{
TCHAR pathAndBasename[MAX_PATH] = {0};
//there's an extension - zero-terminate the path and basename first by copying
hr = StringCchCopyN(pathAndBasename, MAX_PATH, inName, (size_t)dotPos);
//re-combine path, basename and extension with processId appended to a basename
if (SUCCEEDED(hr))
hr = StringCchPrintf(outName, MAX_PATH, TEXT("%s_%d%s"), pathAndBasename, dwProcessId, inName + dotPos);
}
return hr;
}
/* Called by DbgInitGlobalSettings to setup alternate logging destinations
*/
@@ -271,12 +321,27 @@ void WINAPI DbgInitLogTo (
NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE != m_hOutput)
{
if (INVALID_HANDLE_VALUE == m_hOutput &&
GetLastError() == ERROR_SHARING_VIOLATION)
{
TCHAR uniqueName[MAX_PATH] = {0};
if (SUCCEEDED(DbgUniqueProcessName(szFile, uniqueName)))
{
m_hOutput = CreateFile(uniqueName, GENERIC_WRITE,
FILE_SHARE_READ,
NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
}
}
if (INVALID_HANDLE_VALUE != m_hOutput)
{
static const TCHAR cszBar[] = TEXT("\r\n\r\n=====DbgInitialize()=====\r\n\r\n");
SetFilePointer (m_hOutput, 0, NULL, FILE_END);
DbgOutString (cszBar);
}
}
}
}
}
@@ -303,13 +368,24 @@ void WINAPI DbgInitGlobalSettings(bool fTakeMax)
(DWORD) 0, // Reserved value
NULL, // Address of class name
(DWORD) 0, // Special options flags
KEY_ALL_ACCESS, // Desired security access
GENERIC_READ | GENERIC_WRITE, // Desired security access
NULL, // Key security descriptor
&hGlobalKey, // Opened handle buffer
NULL); // What really happened
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,0,TEXT("Could not access GLOBAL module key")));
lReturn = RegCreateKeyEx(HKEY_LOCAL_MACHINE, // Handle of an open key
szInfo, // Address of subkey name
(DWORD) 0, // Reserved value
NULL, // Address of class name
(DWORD) 0, // Special options flags
GENERIC_READ, // Desired security access
NULL, // Key security descriptor
&hGlobalKey, // Opened handle buffer
NULL); // What really happened
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,1,TEXT("Could not access GLOBAL module key")));
}
return;
}
@@ -331,7 +407,7 @@ void WINAPI DbgInitModuleSettings(bool fTakeMax)
HKEY hModuleKey; // Module key handle
/* Construct the base key name */
(void)StringCchPrintf(szInfo,NUMELMS(szInfo), TEXT("%s\\%s"),pBaseKey,m_ModuleName);
(void)StringCchPrintf(szInfo,NUMELMS(szInfo),TEXT("%s\\%s"),pBaseKey,m_ModuleName);
/* Create or open the key for this module */
lReturn = RegCreateKeyEx(HKEY_LOCAL_MACHINE, // Handle of an open key
@@ -339,13 +415,24 @@ void WINAPI DbgInitModuleSettings(bool fTakeMax)
(DWORD) 0, // Reserved value
NULL, // Address of class name
(DWORD) 0, // Special options flags
KEY_ALL_ACCESS, // Desired security access
GENERIC_READ | GENERIC_WRITE, // Desired security access
NULL, // Key security descriptor
&hModuleKey, // Opened handle buffer
NULL); // What really happened
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,0,TEXT("Could not access module key")));
lReturn = RegCreateKeyEx(HKEY_LOCAL_MACHINE, // Handle of an open key
szInfo, // Address of subkey name
(DWORD) 0, // Reserved value
NULL, // Address of class name
(DWORD) 0, // Special options flags
GENERIC_READ, // Desired security access
NULL, // Key security descriptor
&hModuleKey, // Opened handle buffer
NULL); // What really happened
if (lReturn != ERROR_SUCCESS) {
DbgLog((LOG_ERROR,1,TEXT("Could not access module key")));
}
return;
}
@@ -360,7 +447,7 @@ void WINAPI DbgInitModuleSettings(bool fTakeMax)
void WINAPI DbgInitModuleName()
{
TCHAR FullName[iDEBUGINFO]; // Load the full path and module name
TCHAR *pName; // Searches from the end for a backslash
LPTSTR pName; // Searches from the end for a backslash
GetModuleFileName(m_hInst,FullName,iDEBUGINFO);
pName = _tcsrchr(FullName,'\\');
@@ -375,8 +462,8 @@ void WINAPI DbgInitModuleName()
struct MsgBoxMsg
{
HWND hwnd;
TCHAR *szTitle;
TCHAR *szMessage;
LPCTSTR szTitle;
LPCTSTR szMessage;
DWORD dwFlags;
INT iResult;
};
@@ -386,7 +473,7 @@ struct MsgBoxMsg
// random threads at bad times can confuse the host (eg IE).
//
DWORD WINAPI MsgBoxThread(
LPVOID lpParameter // thread data
__inout LPVOID lpParameter // thread data
)
{
MsgBoxMsg *pmsg = (MsgBoxMsg *)lpParameter;
@@ -401,15 +488,17 @@ DWORD WINAPI MsgBoxThread(
INT MessageBoxOtherThread(
HWND hwnd,
TCHAR *szTitle,
TCHAR *szMessage,
LPCTSTR szTitle,
LPCTSTR szMessage,
DWORD dwFlags)
{
if(g_fDbgInDllEntryPoint)
{
// can't wait on another thread because we have the loader
// lock held in the dll entry point.
return MessageBox(hwnd, szTitle, szMessage, dwFlags);
// This can crash sometimes so just skip it
// return MessageBox(hwnd, szTitle, szMessage, dwFlags);
return IDCANCEL;
}
else
{
@@ -436,7 +525,7 @@ INT MessageBoxOtherThread(
/* Displays a message box if the condition evaluated to FALSE */
void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine)
void WINAPI DbgAssert(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine)
{
if(g_fUseKASSERT)
{
@@ -447,7 +536,7 @@ void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine)
TCHAR szInfo[iDEBUGINFO];
(void)StringCchPrintf(szInfo, NUMELMS(szInfo), TEXT("%s \nAt line %d of %s\nContinue? (Cancel to debug)"),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),TEXT("%s \nAt line %d of %s\nContinue? (Cancel to debug)"),
pCondition, iLine, pFileName);
INT MsgId = MessageBoxOtherThread(NULL,szInfo,TEXT("ASSERT Failed"),
@@ -475,7 +564,7 @@ void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine)
/* Displays a message box at a break point */
void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine)
void WINAPI DbgBreakPoint(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine)
{
if(g_fUseKASSERT)
{
@@ -485,7 +574,7 @@ void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLi
{
TCHAR szInfo[iDEBUGINFO];
(void)StringCchPrintf(szInfo, NUMELMS(szInfo), TEXT("%s \nAt line %d of %s\nContinue? (Cancel to debug)"),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),TEXT("%s \nAt line %d of %s\nContinue? (Cancel to debug)"),
pCondition, iLine, pFileName);
INT MsgId = MessageBoxOtherThread(NULL,szInfo,TEXT("Hard coded break point"),
@@ -511,7 +600,7 @@ void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLi
}
}
void WINAPI DbgBreakPoint(const TCHAR *pFileName,INT iLine,const TCHAR* szFormatString,...)
void WINAPI DbgBreakPoint(LPCTSTR pFileName,INT iLine,__format_string LPCTSTR szFormatString,...)
{
// A debug break point message can have at most 2000 characters if
// ANSI or UNICODE characters are being used. A debug break point message
@@ -522,17 +611,15 @@ void WINAPI DbgBreakPoint(const TCHAR *pFileName,INT iLine,const TCHAR* szFormat
TCHAR szBreakPointMessage[MAX_BREAK_POINT_MESSAGE_SIZE];
const DWORD MAX_CHARS_IN_BREAK_POINT_MESSAGE = sizeof(szBreakPointMessage) / sizeof(TCHAR);
va_list va;
va_start( va, szFormatString );
HRESULT hr = StringCchVPrintf( szBreakPointMessage, MAX_CHARS_IN_BREAK_POINT_MESSAGE, szFormatString, va );
HRESULT hr = StringCchVPrintf( szBreakPointMessage, NUMELMS(szBreakPointMessage), szFormatString, va );
va_end(va);
if( S_OK != hr ) {
DbgBreak( "ERROR in DbgBreakPoint(). The variable length debug message could not be displayed because _vsnprintf() failed." );
if( FAILED(hr) ) {
DbgBreak( "ERROR in DbgBreakPoint(). The variable length debug message could not be displayed because StringCchVPrintf() failed." );
return;
}
@@ -620,7 +707,7 @@ void WINAPI DbgSetAutoRefreshLevels(bool fAuto)
// warning -- this function is implemented twice for ansi applications
// linking to the unicode library
//
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...)
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,__format_string LPCSTR pFormat,...)
{
/* Check the current level for this type combination */
@@ -636,20 +723,16 @@ void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...)
va_list va;
va_start(va, pFormat);
(void)StringCchCopy(szInfo,NUMELMS(szInfo),m_ModuleName);
size_t len = lstrlen(szInfo);
(void)StringCchPrintf(szInfo + len,
NUMELMS(szInfo) - len,
TEXT("(tid %x) %8d : "),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),
TEXT("%s(tid %x) %8d : "),
m_ModuleName,
GetCurrentThreadId(), timeGetTime() - dwTimeOffset);
CHAR szInfoA[2000];
WideCharToMultiByte(CP_ACP, 0, szInfo, -1, szInfoA, NUMELMS(szInfoA), 0, 0);
len = lstrlenA(szInfoA);
(void)StringCchVPrintfA(szInfoA + len, NUMELMS(szInfoA) - len, pFormat, va);
len = lstrlenA(szInfoA);
(void)StringCchCatA(szInfoA, NUMELMS(szInfoA) - len, "\r\n");
(void)StringCchVPrintfA(szInfoA + lstrlenA(szInfoA), NUMELMS(szInfoA) - lstrlenA(szInfoA), pFormat, va);
(void)StringCchCatA(szInfoA, NUMELMS(szInfoA), "\r\n");
WCHAR wszOutString[2000];
MultiByteToWideChar(CP_ACP, 0, szInfoA, -1, wszOutString, NUMELMS(wszOutString));
@@ -658,8 +741,7 @@ void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...)
va_end(va);
}
void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine)
void WINAPI DbgAssert(LPCSTR pCondition,LPCSTR pFileName,INT iLine)
{
if(g_fUseKASSERT)
{
@@ -670,7 +752,7 @@ void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine)
TCHAR szInfo[iDEBUGINFO];
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),TEXT("%S \nAt line %d of %S\nContinue? (Cancel to debug)"),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo), TEXT("%hs \nAt line %d of %hs\nContinue? (Cancel to debug)"),
pCondition, iLine, pFileName);
INT MsgId = MessageBoxOtherThread(NULL,szInfo,TEXT("ASSERT Failed"),
@@ -698,7 +780,7 @@ void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine)
/* Displays a message box at a break point */
void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine)
void WINAPI DbgBreakPoint(LPCSTR pCondition,LPCSTR pFileName,INT iLine)
{
if(g_fUseKASSERT)
{
@@ -708,7 +790,7 @@ void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine
{
TCHAR szInfo[iDEBUGINFO];
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),TEXT("%S \nAt line %d of %S\nContinue? (Cancel to debug)"),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),TEXT("%hs \nAt line %d of %hs\nContinue? (Cancel to debug)"),
pCondition, iLine, pFileName);
INT MsgId = MessageBoxOtherThread(NULL,szInfo,TEXT("Hard coded break point"),
@@ -734,7 +816,7 @@ void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine
}
}
void WINAPI DbgKernelAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine)
void WINAPI DbgKernelAssert(LPCSTR pCondition,LPCSTR pFileName,INT iLine)
{
DbgLog((LOG_ERROR,0,TEXT("Assertion FAILED (%hs) at line %d in file %hs"),
pCondition, iLine, pFileName));
@@ -752,7 +834,7 @@ void WINAPI DbgKernelAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLi
// warning -- this function is implemented twice for ansi applications
// linking to the unicode library
//
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...)
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,LPCTSTR pFormat,...)
{
/* Check the current level for this type combination */
@@ -769,15 +851,12 @@ void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...)
va_list va;
va_start(va, pFormat);
(void)StringCchCopy(szInfo, NUMELMS(szInfo), m_ModuleName);
size_t len = lstrlen(szInfo);
(void)StringCchPrintf(szInfo + len, NUMELMS(szInfo) - len,
TEXT("(tid %x) %8d : "),
(void)StringCchPrintf(szInfo, NUMELMS(szInfo),
TEXT("%s(tid %x) %8d : "),
m_ModuleName,
GetCurrentThreadId(), timeGetTime() - dwTimeOffset);
len = lstrlen(szInfo);
(void)StringCchVPrintf(szInfo + len, NUMELMS(szInfo) - len, pFormat, va);
(void)StringCchVPrintf(szInfo + lstrlen(szInfo), NUMELMS(szInfo) - lstrlen(szInfo), pFormat, va);
(void)StringCchCat(szInfo, NUMELMS(szInfo), TEXT("\r\n"));
DbgOutString(szInfo);
@@ -789,7 +868,7 @@ void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...)
boxes to the user, this provides an alternative which puts the error
condition on the debugger output with a suitable eye catching message */
void WINAPI DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine)
void WINAPI DbgKernelAssert(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine)
{
DbgLog((LOG_ERROR,0,TEXT("Assertion FAILED (%s) at line %d in file %s"),
pCondition, iLine, pFileName));
@@ -804,8 +883,8 @@ void WINAPI DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT i
uses to identify the object when it is destroyed later on. We update the
total number of active objects in the DLL mainly for debugging purposes */
DWORD WINAPI DbgRegisterObjectCreation(const CHAR *szObjectName,
const WCHAR *wszObjectName)
DWORD WINAPI DbgRegisterObjectCreation(LPCSTR szObjectName,
LPCWSTR wszObjectName)
{
/* If this fires you have a mixed DEBUG/RETAIL build */
@@ -937,22 +1016,9 @@ void WINAPI DbgDumpObjectRegister()
while (pObject) {
if(pObject->m_wszName) {
#ifdef UNICODE
LPCTSTR FORMAT_STRING = TEXT("%5d (%8x) %30s");
#else
LPCTSTR FORMAT_STRING = TEXT("%5d (%8x) %30S");
#endif
(void)StringCchPrintf(szInfo,NUMELMS(szInfo), FORMAT_STRING, pObject->m_dwCookie, &pObject, pObject->m_wszName);
(void)StringCchPrintf(szInfo,NUMELMS(szInfo),TEXT("%5d (%p) %30ls"),pObject->m_dwCookie, &pObject, pObject->m_wszName);
} else {
#ifdef UNICODE
LPCTSTR FORMAT_STRING = TEXT("%5d (%8x) %30S");
#else
LPCTSTR FORMAT_STRING = TEXT("%5d (%8x) %30s");
#endif
(void)StringCchPrintf(szInfo,NUMELMS(szInfo),FORMAT_STRING,pObject->m_dwCookie, &pObject, pObject->m_szName);
(void)StringCchPrintf(szInfo,NUMELMS(szInfo),TEXT("%5d (%p) %30hs"),pObject->m_dwCookie, &pObject, pObject->m_szName);
}
DbgLog((LOG_MEMORY,2,szInfo));
pObject = pObject->m_pNext;
@@ -975,7 +1041,7 @@ DWORD WINAPI DbgWaitForSingleObject(HANDLE h)
return dwWaitResult;
}
DWORD WINAPI DbgWaitForMultipleObjects(DWORD nCount,
CONST HANDLE *lpHandles,
__in_ecount(nCount) CONST HANDLE *lpHandles,
BOOL bWaitAll)
{
DWORD dwWaitResult;
@@ -1051,7 +1117,7 @@ CDisp::CDisp(LONGLONG ll, int Format)
li.QuadPart /= 10;
temp[--pos] = (TCHAR) digit+L'0';
} while (li.QuadPart);
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%s"), temp+pos);
(void)StringCchCopy(m_String, NUMELMS(m_String), temp+pos);
break;
}
case CDISP_HEX:
@@ -1062,55 +1128,40 @@ CDisp::CDisp(LONGLONG ll, int Format)
CDisp::CDisp(REFCLSID clsid)
{
WCHAR strClass[CHARS_IN_GUID+1];
StringFromGUID2(clsid, strClass, sizeof(strClass) / sizeof(strClass[0]));
ASSERT(sizeof(m_String)/sizeof(m_String[0]) >= CHARS_IN_GUID+1);
#ifdef UNICODE
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%s"), strClass);
#else
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%S"), strClass);
#endif
#ifdef UNICODE
(void)StringFromGUID2(clsid, m_String, NUMELMS(m_String));
#else
WCHAR wszTemp[50];
(void)StringFromGUID2(clsid, wszTemp, NUMELMS(wszTemp));
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%S"), wszTemp);
#endif
};
#ifdef __STREAMS__
/* Display stuff */
CDisp::CDisp(CRefTime llTime)
{
LPTSTR lpsz = m_String;
size_t len = NUMELMS(m_String);
LONGLONG llDiv;
if (llTime < 0) {
llTime = -llTime;
(void)StringCchPrintf(lpsz, len, TEXT("-"));
size_t t = lstrlen(lpsz);
lpsz += t;
len -= t;
(void)StringCchCopy(m_String, NUMELMS(m_String), TEXT("-"));
}
llDiv = (LONGLONG)24 * 3600 * 10000000;
if (llTime >= llDiv) {
(void)StringCchPrintf(lpsz, len, TEXT("%d days "), (LONG)(llTime / llDiv));
size_t t = lstrlen(lpsz);
lpsz += t;
len -= t;
(void)StringCchPrintf(m_String + lstrlen(m_String), NUMELMS(m_String) - lstrlen(m_String), TEXT("%d days "), (LONG)(llTime / llDiv));
llTime = llTime % llDiv;
}
llDiv = (LONGLONG)3600 * 10000000;
if (llTime >= llDiv) {
(void)StringCchPrintf(lpsz, len, TEXT("%d hrs "), (LONG)(llTime / llDiv));
size_t t = lstrlen(lpsz);
lpsz += t;
len -= t;
(void)StringCchPrintf(m_String + lstrlen(m_String), NUMELMS(m_String) - lstrlen(m_String), TEXT("%d hrs "), (LONG)(llTime / llDiv));
llTime = llTime % llDiv;
}
llDiv = (LONGLONG)60 * 10000000;
if (llTime >= llDiv) {
(void)StringCchPrintf(lpsz, len, TEXT("%d mins "), (LONG)(llTime / llDiv));
size_t t = lstrlen(lpsz);
lpsz += t;
len -= t;
(void)StringCchPrintf(m_String + lstrlen(m_String), NUMELMS(m_String) - lstrlen(m_String), TEXT("%d mins "), (LONG)(llTime / llDiv));
llTime = llTime % llDiv;
}
(void)StringCchPrintf(lpsz, len, TEXT("%d.%3.3d sec"),
(void)StringCchPrintf(m_String + lstrlen(m_String), NUMELMS(m_String) - lstrlen(m_String), TEXT("%d.%3.3d sec"),
(LONG)llTime / 10000000,
(LONG)((llTime % 10000000) / 10000));
};
@@ -1139,19 +1190,12 @@ CDisp::CDisp(IPin *pPin)
(void)StringCchCopy(str, NUMELMS(str), TEXT("NULL IPin"));
}
size_t len = lstrlen(str)+64;
m_pString = (TCHAR*) new TCHAR[len];
m_pString = (PTCHAR) new TCHAR[lstrlen(str)+64];
if (!m_pString) {
return;
}
#ifdef UNICODE
LPCTSTR FORMAT_STRING = TEXT("%S(%s)");
#else
LPCTSTR FORMAT_STRING = TEXT("%s(%s)");
#endif
(void)StringCchPrintf(m_pString, len, FORMAT_STRING, GuidNames[clsid], str);
(void)StringCchPrintf(m_pString, lstrlen(str) + 64, TEXT("%hs(%s)"), GuidNames[clsid], str);
}
/* Display filter or pin */
@@ -1168,16 +1212,15 @@ CDisp::CDisp(IUnknown *pUnk)
QueryFilterInfoReleaseGraph(fi);
size_t len = lstrlenW(fi.achName) + 1;
m_pString = new TCHAR[len];
if(m_pString)
{
#ifdef UNICODE
LPCTSTR FORMAT_STRING = TEXT("%s");
#else
LPCTSTR FORMAT_STRING = TEXT("%S");
#endif
(void)StringCchPrintf(m_pString, len, FORMAT_STRING, fi.achName);
#ifdef UNICODE
(void)StringCchCopy(m_pString, len, fi.achName);
#else
(void)StringCchPrintf(m_pString, len, "%S", fi.achName);
#endif
}
}
@@ -1210,11 +1253,7 @@ CDispBasic::~CDispBasic()
CDisp::CDisp(double d)
{
#ifdef DEBUG
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%.16g"), d);
#else
(void)StringCchPrintf(m_String, NUMELMS(m_String), TEXT("%d.%03d"), (int) d, (int) ((d - (int) d) * 1000));
#endif
}
@@ -1225,100 +1264,116 @@ CDisp::CDisp(double d)
succeed as we do not accept input types unless the format is big enough */
#ifdef DEBUG
void WINAPI DisplayType(LPTSTR label, const AM_MEDIA_TYPE *pmtIn, DWORD dwLevel)
void WINAPI DisplayType(LPCTSTR label, const AM_MEDIA_TYPE *pmtIn)
{
/* Dump the GUID types and a short description */
DbgLog((LOG_TRACE,dwLevel,TEXT("")));
DbgLog((LOG_TRACE,dwLevel,TEXT("%s M type %hs S type %hs"), label,
DbgLog((LOG_TRACE,5,TEXT("")));
DbgLog((LOG_TRACE,2,TEXT("%s M type %hs S type %hs"), label,
GuidNames[pmtIn->majortype],
GuidNames[pmtIn->subtype]));
DbgLog((LOG_TRACE,dwLevel,TEXT("Subtype description %s"),GetSubtypeName(&pmtIn->subtype)));
DbgLog((LOG_TRACE,5,TEXT("Subtype description %s"),GetSubtypeName(&pmtIn->subtype)));
/* Dump the generic media types */
if (pmtIn->bTemporalCompression) {
DbgLog((LOG_TRACE,dwLevel,TEXT("Temporally compressed")));
DbgLog((LOG_TRACE,5,TEXT("Temporally compressed")));
} else {
DbgLog((LOG_TRACE,dwLevel,TEXT("Not temporally compressed")));
DbgLog((LOG_TRACE,5,TEXT("Not temporally compressed")));
}
if (pmtIn->bFixedSizeSamples) {
DbgLog((LOG_TRACE,dwLevel,TEXT("Sample size %d"),pmtIn->lSampleSize));
DbgLog((LOG_TRACE,5,TEXT("Sample size %d"),pmtIn->lSampleSize));
} else {
DbgLog((LOG_TRACE,dwLevel,TEXT("Variable size samples")));
DbgLog((LOG_TRACE,5,TEXT("Variable size samples")));
}
if (pmtIn->formattype == FORMAT_VideoInfo) {
/* Dump the contents of the BITMAPINFOHEADER structure */
BITMAPINFOHEADER *pbmi = HEADER(pmtIn->pbFormat);
VIDEOINFOHEADER *pVideoInfo = (VIDEOINFOHEADER *)pmtIn->pbFormat;
DbgLog((LOG_TRACE,dwLevel,TEXT("Source rectangle (Left %d Top %d Right %d Bottom %d)"),
pVideoInfo->rcSource.left,
pVideoInfo->rcSource.top,
pVideoInfo->rcSource.right,
pVideoInfo->rcSource.bottom));
VIDEOINFOHEADER *pVideoInfo = (VIDEOINFOHEADER *)pmtIn->pbFormat;
DbgLog((LOG_TRACE,dwLevel,TEXT("Target rectangle (Left %d Top %d Right %d Bottom %d)"),
pVideoInfo->rcTarget.left,
pVideoInfo->rcTarget.top,
pVideoInfo->rcTarget.right,
pVideoInfo->rcTarget.bottom));
DisplayRECT(TEXT("Source rectangle"),pVideoInfo->rcSource);
DisplayRECT(TEXT("Target rectangle"),pVideoInfo->rcTarget);
DisplayBITMAPINFO(HEADER(pmtIn->pbFormat));
DbgLog((LOG_TRACE,dwLevel,TEXT("Size of BITMAPINFO structure %d"),pbmi->biSize));
if (pbmi->biCompression < 256) {
DbgLog((LOG_TRACE,dwLevel,TEXT("%dx%dx%d bit (%d)"),
pbmi->biWidth, pbmi->biHeight,
pbmi->biBitCount, pbmi->biCompression));
} else {
DbgLog((LOG_TRACE,dwLevel,TEXT("%dx%dx%d bit '%4.4hs'"),
pbmi->biWidth, pbmi->biHeight,
pbmi->biBitCount, &pbmi->biCompression));
}
} if (pmtIn->formattype == FORMAT_VideoInfo2) {
DbgLog((LOG_TRACE,dwLevel,TEXT("Image size %d"),pbmi->biSizeImage));
DbgLog((LOG_TRACE,dwLevel,TEXT("Planes %d"),pbmi->biPlanes));
DbgLog((LOG_TRACE,dwLevel,TEXT("X Pels per metre %d"),pbmi->biXPelsPerMeter));
DbgLog((LOG_TRACE,dwLevel,TEXT("Y Pels per metre %d"),pbmi->biYPelsPerMeter));
DbgLog((LOG_TRACE,dwLevel,TEXT("Colours used %d"),pbmi->biClrUsed));
VIDEOINFOHEADER2 *pVideoInfo2 = (VIDEOINFOHEADER2 *)pmtIn->pbFormat;
DisplayRECT(TEXT("Source rectangle"),pVideoInfo2->rcSource);
DisplayRECT(TEXT("Target rectangle"),pVideoInfo2->rcTarget);
DbgLog((LOG_TRACE, 5, TEXT("Aspect Ratio: %d:%d"),
pVideoInfo2->dwPictAspectRatioX,
pVideoInfo2->dwPictAspectRatioY));
DisplayBITMAPINFO(&pVideoInfo2->bmiHeader);
} else if (pmtIn->majortype == MEDIATYPE_Audio) {
DbgLog((LOG_TRACE,dwLevel,TEXT(" Format type %hs"),
GuidNames[pmtIn->formattype]));
DbgLog((LOG_TRACE,dwLevel,TEXT(" Subtype %hs"),
GuidNames[pmtIn->subtype]));
DbgLog((LOG_TRACE,2,TEXT(" Format type %hs"),
GuidNames[pmtIn->formattype]));
DbgLog((LOG_TRACE,2,TEXT(" Subtype %hs"),
GuidNames[pmtIn->subtype]));
if ((pmtIn->subtype != MEDIASUBTYPE_MPEG1Packet)
&& (pmtIn->cbFormat >= sizeof(PCMWAVEFORMAT)))
{
/* Dump the contents of the WAVEFORMATEX type-specific format structure */
if ((pmtIn->subtype != MEDIASUBTYPE_MPEG1Packet)
&& (pmtIn->cbFormat >= sizeof(PCMWAVEFORMAT)))
{
/* Dump the contents of the WAVEFORMATEX type-specific format structure */
WAVEFORMATEX *pwfx = (WAVEFORMATEX *) pmtIn->pbFormat;
DbgLog((LOG_TRACE,dwLevel,TEXT("wFormatTag %u"), pwfx->wFormatTag));
DbgLog((LOG_TRACE,dwLevel,TEXT("nChannels %u"), pwfx->nChannels));
DbgLog((LOG_TRACE,dwLevel,TEXT("nSamplesPerSec %lu"), pwfx->nSamplesPerSec));
DbgLog((LOG_TRACE,dwLevel,TEXT("nAvgBytesPerSec %lu"), pwfx->nAvgBytesPerSec));
DbgLog((LOG_TRACE,dwLevel,TEXT("nBlockAlign %u"), pwfx->nBlockAlign));
DbgLog((LOG_TRACE,dwLevel,TEXT("wBitsPerSample %u"), pwfx->wBitsPerSample));
WAVEFORMATEX *pwfx = (WAVEFORMATEX *) pmtIn->pbFormat;
DbgLog((LOG_TRACE,2,TEXT("wFormatTag %u"), pwfx->wFormatTag));
DbgLog((LOG_TRACE,2,TEXT("nChannels %u"), pwfx->nChannels));
DbgLog((LOG_TRACE,2,TEXT("nSamplesPerSec %lu"), pwfx->nSamplesPerSec));
DbgLog((LOG_TRACE,2,TEXT("nAvgBytesPerSec %lu"), pwfx->nAvgBytesPerSec));
DbgLog((LOG_TRACE,2,TEXT("nBlockAlign %u"), pwfx->nBlockAlign));
DbgLog((LOG_TRACE,2,TEXT("wBitsPerSample %u"), pwfx->wBitsPerSample));
/* PCM uses a WAVEFORMAT and does not have the extra size field */
if (pmtIn->cbFormat >= sizeof(WAVEFORMATEX)) {
DbgLog((LOG_TRACE,dwLevel,TEXT("cbSize %u"), pwfx->cbSize));
DbgLog((LOG_TRACE,2,TEXT("cbSize %u"), pwfx->cbSize));
}
} else {
}
} else {
}
} else {
DbgLog((LOG_TRACE,dwLevel,TEXT(" Format type %hs"),
GuidNames[pmtIn->formattype]));
// !!!! should add code to dump wave format, others
DbgLog((LOG_TRACE,2,TEXT(" Format type %hs"),
GuidNames[pmtIn->formattype]));
}
}
void DisplayBITMAPINFO(const BITMAPINFOHEADER* pbmi)
{
DbgLog((LOG_TRACE,5,TEXT("Size of BITMAPINFO structure %d"),pbmi->biSize));
if (pbmi->biCompression < 256) {
DbgLog((LOG_TRACE,2,TEXT("%dx%dx%d bit (%d)"),
pbmi->biWidth, pbmi->biHeight,
pbmi->biBitCount, pbmi->biCompression));
} else {
DbgLog((LOG_TRACE,2,TEXT("%dx%dx%d bit '%4.4hs'"),
pbmi->biWidth, pbmi->biHeight,
pbmi->biBitCount, &pbmi->biCompression));
}
DbgLog((LOG_TRACE,2,TEXT("Image size %d"),pbmi->biSizeImage));
DbgLog((LOG_TRACE,5,TEXT("Planes %d"),pbmi->biPlanes));
DbgLog((LOG_TRACE,5,TEXT("X Pels per metre %d"),pbmi->biXPelsPerMeter));
DbgLog((LOG_TRACE,5,TEXT("Y Pels per metre %d"),pbmi->biYPelsPerMeter));
DbgLog((LOG_TRACE,5,TEXT("Colours used %d"),pbmi->biClrUsed));
}
void DisplayRECT(LPCTSTR szLabel, const RECT& rc)
{
DbgLog((LOG_TRACE,5,TEXT("%s (Left %d Top %d Right %d Bottom %d)"),
szLabel,
rc.left,
rc.top,
rc.right,
rc.bottom));
}
void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)
{
if( !pGraph )
@@ -1340,13 +1395,13 @@ void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)
FILTER_INFO info;
if (FAILED(pFilter->QueryFilterInfo(&info))) {
DbgLog((LOG_TRACE,dwLevel,TEXT(" Filter [%x] -- failed QueryFilterInfo"), pFilter));
DbgLog((LOG_TRACE,dwLevel,TEXT(" Filter [%p] -- failed QueryFilterInfo"), pFilter));
} else {
QueryFilterInfoReleaseGraph(info);
// !!! should QueryVendorInfo here!
DbgLog((LOG_TRACE,dwLevel,TEXT(" Filter [%x] '%ls'"), pFilter, info.achName));
DbgLog((LOG_TRACE,dwLevel,TEXT(" Filter [%p] '%ls'"), pFilter, info.achName));
IEnumPins *pins;
@@ -1356,29 +1411,29 @@ void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)
IPin *pPin;
while (pins->Next(1, &pPin, &n) == S_OK) {
PIN_INFO info;
PIN_INFO pinInfo;
if (FAILED(pPin->QueryPinInfo(&info))) {
if (FAILED(pPin->QueryPinInfo(&pinInfo))) {
DbgLog((LOG_TRACE,dwLevel,TEXT(" Pin [%x] -- failed QueryPinInfo"), pPin));
} else {
QueryPinInfoReleaseFilter(info);
QueryPinInfoReleaseFilter(pinInfo);
IPin *pPinConnected = NULL;
HRESULT hr = pPin->ConnectedTo(&pPinConnected);
if (pPinConnected) {
DbgLog((LOG_TRACE,dwLevel,TEXT(" Pin [%x] '%ls' [%sput]")
TEXT(" Connected to pin [%x]"),
pPin, info.achName,
info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out"),
DbgLog((LOG_TRACE,dwLevel,TEXT(" Pin [%p] '%ls' [%sput]")
TEXT(" Connected to pin [%p]"),
pPin, pinInfo.achName,
pinInfo.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out"),
pPinConnected));
pPinConnected->Release();
// perhaps we should really dump the type both ways as a sanity
// check?
if (info.dir == PINDIR_OUTPUT) {
if (pinInfo.dir == PINDIR_OUTPUT) {
AM_MEDIA_TYPE mt;
hr = pPin->ConnectionMediaType(&mt);
@@ -1392,8 +1447,8 @@ void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)
} else {
DbgLog((LOG_TRACE,dwLevel,
TEXT(" Pin [%x] '%ls' [%sput]"),
pPin, info.achName,
info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out")));
pPin, pinInfo.achName,
pinInfo.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out")));
}
}

View File

@@ -3,7 +3,7 @@
//
// Desc: DirectShow base classes - provides debugging facilities.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -64,8 +64,8 @@ enum { CDISP_HEX = 0x01,
// we have registered so that we can dump a list of remaining objects
typedef struct tag_ObjectDesc {
const CHAR *m_szName;
const WCHAR *m_wszName;
LPCSTR m_szName;
LPCWSTR m_wszName;
DWORD m_dwCookie;
tag_ObjectDesc *m_pNext;
} ObjectDesc;
@@ -84,7 +84,7 @@ typedef struct tag_ObjectDesc {
void WINAPI DbgInitModuleSettings(bool fTakeMax);
void WINAPI DbgInitModuleName();
DWORD WINAPI DbgRegisterObjectCreation(
const CHAR *szObjectName, const WCHAR *wszObjectName);
LPCSTR szObjectName, LPCWSTR wszObjectName);
BOOL WINAPI DbgRegisterObjectDestruction(DWORD dwCookie);
@@ -103,30 +103,30 @@ typedef struct tag_ObjectDesc {
// Display error and logging to the user
void WINAPI DbgAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine);
void WINAPI DbgBreakPoint(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine);
void WINAPI DbgBreakPoint(const TCHAR *pFileName,INT iLine,const TCHAR* szFormatString,...);
void WINAPI DbgAssert(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine);
void WINAPI DbgBreakPoint(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine);
void WINAPI DbgBreakPoint(LPCTSTR pFileName,INT iLine,__format_string LPCTSTR szFormatString,...);
void WINAPI DbgKernelAssert(const TCHAR *pCondition,const TCHAR *pFileName,INT iLine);
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const TCHAR *pFormat,...);
void WINAPI DbgKernelAssert(LPCTSTR pCondition,LPCTSTR pFileName,INT iLine);
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,__format_string LPCTSTR pFormat,...);
#ifdef UNICODE
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,const CHAR *pFormat,...);
void WINAPI DbgAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine);
void WINAPI DbgBreakPoint(const CHAR *pCondition,const CHAR *pFileName,INT iLine);
void WINAPI DbgKernelAssert(const CHAR *pCondition,const CHAR *pFileName,INT iLine);
void WINAPI DbgLogInfo(DWORD Type,DWORD Level,__format_string LPCSTR pFormat,...);
void WINAPI DbgAssert(LPCSTR pCondition,LPCSTR pFileName,INT iLine);
void WINAPI DbgBreakPoint(LPCSTR pCondition,LPCSTR pFileName,INT iLine);
void WINAPI DbgKernelAssert(LPCSTR pCondition,LPCSTR pFileName,INT iLine);
#endif
void WINAPI DbgOutString(LPCTSTR psz);
// Debug infinite wait stuff
DWORD WINAPI DbgWaitForSingleObject(HANDLE h);
DWORD WINAPI DbgWaitForMultipleObjects(DWORD nCount,
CONST HANDLE *lpHandles,
__in_ecount(nCount) CONST HANDLE *lpHandles,
BOOL bWaitAll);
void WINAPI DbgSetWaitTimeout(DWORD dwTimeout);
#ifdef __strmif_h__
// Display a media type: Terse at level 2, verbose at level 5
void WINAPI DisplayType(LPTSTR label, const AM_MEDIA_TYPE *pmtIn, DWORD dwLevel = 5);
void WINAPI DisplayType(LPCTSTR label, const AM_MEDIA_TYPE *pmtIn);
// Dump lots of information about a filter graph
void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel);
@@ -176,7 +176,7 @@ typedef struct tag_ObjectDesc {
// (public entry points compile to nothing) so if you go trying to call
// any of the private entry points in your source they won't compile
#define NAME(_x_) ((TCHAR *) NULL)
#define NAME(_x_) ((LPTSTR) NULL)
#define DbgInitialise(hInst)
#define DbgTerminate()
@@ -236,46 +236,12 @@ typedef struct tag_ObjectDesc {
// CheckPointer(pBar,FALSE)
// }
// These validate pointers when symbol VFWROBUST is defined
// This will normally be defined in debug not retail builds
#ifdef DEBUG
#define VFWROBUST
#endif
#ifdef VFWROBUST
#define ValidateReadPtr(p,cb) \
{if(IsBadReadPtr((PVOID)p,cb) == TRUE) \
DbgBreak("Invalid read pointer");}
#define ValidateWritePtr(p,cb) \
{if(IsBadWritePtr((PVOID)p,cb) == TRUE) \
DbgBreak("Invalid write pointer");}
#define ValidateReadWritePtr(p,cb) \
{ValidateReadPtr(p,cb) ValidateWritePtr(p,cb)}
#define ValidateStringPtr(p) \
{if(IsBadStringPtr((LPCTSTR)p,INFINITE) == TRUE) \
DbgBreak("Invalid string pointer");}
#define ValidateStringPtrA(p) \
{if(IsBadStringPtrA((LPCSTR)p,INFINITE) == TRUE) \
DbgBreak("Invalid ANSI string pointer");}
#define ValidateStringPtrW(p) \
{if(IsBadStringPtrW((LPCWSTR)p,INFINITE) == TRUE) \
DbgBreak("Invalid UNICODE string pointer");}
#else
#define ValidateReadPtr(p,cb) 0
#define ValidateWritePtr(p,cb) 0
#define ValidateReadWritePtr(p,cb) 0
#define ValidateStringPtr(p) 0
#define ValidateStringPtrA(p) 0
#define ValidateStringPtrW(p) 0
#endif
#define ValidateReadPtr(p,cb) 0
#define ValidateWritePtr(p,cb) 0
#define ValidateReadWritePtr(p,cb) 0
#define ValidateStringPtr(p) 0
#define ValidateStringPtrA(p) 0
#define ValidateStringPtrW(p) 0
#ifdef _OBJBASE_H_
@@ -326,7 +292,7 @@ public:
CDispBasic() { m_pString = m_String; };
~CDispBasic();
protected:
TCHAR* m_pString; // normally points to m_String... unless too much data
PTCHAR m_pString; // normally points to m_String... unless too much data
TCHAR m_String[50];
};
class CDisp : public CDispBasic
@@ -356,12 +322,12 @@ public:
class CAutoTrace
{
private:
const TCHAR* _szBlkName;
LPCTSTR _szBlkName;
const int _level;
static const TCHAR _szEntering[];
static const TCHAR _szLeaving[];
public:
CAutoTrace(const TCHAR* szBlkName, const int level = 15)
CAutoTrace(LPCTSTR szBlkName, const int level = 15)
: _szBlkName(szBlkName), _level(level)
{DbgLog((LOG_TRACE, _level, _szEntering, _szBlkName));}

View File

@@ -3,8 +3,7 @@
//
// Desc: DirectShow base classes - implements a non-MFC based generic list
// template class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -51,7 +50,7 @@
*/
#include "streams.h"
#include <streams.h>
/* set cursor to the position of each element of list in turn */
#define INTERNALTRAVERSELIST(list, cursor) \
@@ -78,7 +77,7 @@ for ( cursor = (list).GetTailPositionI() \
cache but no event object so the list cannot be used in calls
to WaitForSingleObject
*/
CBaseList::CBaseList(TCHAR *pName, // Descriptive list name
CBaseList::CBaseList(__in_opt LPCTSTR pName, // Descriptive list name
INT iItems) : // Node cache size
#ifdef DEBUG
CBaseObject(pName),
@@ -90,7 +89,7 @@ CBaseList::CBaseList(TCHAR *pName, // Descriptive list name
{
} // constructor
CBaseList::CBaseList(TCHAR *pName) : // Descriptive list name
CBaseList::CBaseList(__in_opt LPCTSTR pName) : // Descriptive list name
#ifdef DEBUG
CBaseObject(pName),
#endif
@@ -102,7 +101,7 @@ CBaseList::CBaseList(TCHAR *pName) : // Descriptive list name
} // constructor
#ifdef UNICODE
CBaseList::CBaseList(CHAR *pName, // Descriptive list name
CBaseList::CBaseList(__in_opt LPCSTR pName, // Descriptive list name
INT iItems) : // Node cache size
#ifdef DEBUG
CBaseObject(pName),
@@ -114,7 +113,7 @@ CBaseList::CBaseList(CHAR *pName, // Descriptive list name
{
} // constructor
CBaseList::CBaseList(CHAR *pName) : // Descriptive list name
CBaseList::CBaseList(__in_opt LPCSTR pName) : // Descriptive list name
#ifdef DEBUG
CBaseObject(pName),
#endif
@@ -181,16 +180,16 @@ void CBaseList::RemoveAll()
enumerators that you have may be invalid (since the node
may be gone).
*/
WXLIST_POSITION CBaseList::GetHeadPositionI() const
__out_opt POSITION CBaseList::GetHeadPositionI() const
{
return (WXLIST_POSITION) m_pFirst;
return (POSITION) m_pFirst;
} // GetHeadPosition
WXLIST_POSITION CBaseList::GetTailPositionI() const
__out_opt POSITION CBaseList::GetTailPositionI() const
{
return (WXLIST_POSITION) m_pLast;
return (POSITION) m_pLast;
} // GetTailPosition
@@ -215,7 +214,7 @@ int CBaseList::GetCountI() const
You may still call this function once we return NULL but
we will continue to return a NULL position value
*/
void *CBaseList::GetNextI(WXLIST_POSITION& rp) const
__out void *CBaseList::GetNextI(__inout POSITION& rp) const
{
/* have we reached the end of the list */
@@ -231,7 +230,7 @@ void *CBaseList::GetNextI(WXLIST_POSITION& rp) const
CNode *pn = (CNode *) rp;
ASSERT(pn != NULL);
rp = (WXLIST_POSITION) pn->Next();
rp = (POSITION) pn->Next();
/* Get the object at the original position from the list */
@@ -249,7 +248,7 @@ void *CBaseList::GetNextI(WXLIST_POSITION& rp) const
then locking would only result in a change from one bad
behaviour to another.
*/
void *CBaseList::GetI(WXLIST_POSITION p) const
__out_opt void *CBaseList::GetI(__in_opt POSITION p) const
{
if (p == NULL) {
return NULL;
@@ -261,14 +260,21 @@ void *CBaseList::GetI(WXLIST_POSITION p) const
return pObject;
} //Get
__out void *CBaseList::GetValidI(__in POSITION p) const
{
CNode * pn = (CNode *) p;
void *pObject = pn->GetData();
// ASSERT(pObject != NULL); // NULL pointers in the list are allowed.
return pObject;
} //Get
/* Return the first position in the list which holds the given pointer.
Return NULL if it's not found.
*/
WXLIST_POSITION CBaseList::FindI( void * pObj) const
__out_opt POSITION CBaseList::FindI( __in void * pObj) const
{
WXLIST_POSITION pn;
POSITION pn;
INTERNALTRAVERSELIST(*this, pn){
if (GetI(pn)==pObj) {
return pn;
@@ -283,7 +289,7 @@ WXLIST_POSITION CBaseList::FindI( void * pObj) const
from the list, does not free the object itself).
Return the pointer to its object or NULL if empty
*/
void *CBaseList::RemoveHeadI()
__out_opt void *CBaseList::RemoveHeadI()
{
/* All we do is get the head position and ask for that to be deleted.
We could special case this since some of the code path checking
@@ -292,7 +298,7 @@ void *CBaseList::RemoveHeadI()
added complexity
*/
return RemoveI((WXLIST_POSITION)m_pFirst);
return RemoveI((POSITION)m_pFirst);
} // RemoveHead
@@ -301,7 +307,7 @@ void *CBaseList::RemoveHeadI()
from the list, does not free the object itself).
Return the pointer to its object or NULL if empty
*/
void *CBaseList::RemoveTailI()
__out_opt void *CBaseList::RemoveTailI()
{
/* All we do is get the tail position and ask for that to be deleted.
We could special case this since some of the code path checking
@@ -310,7 +316,7 @@ void *CBaseList::RemoveTailI()
added complexity
*/
return RemoveI((WXLIST_POSITION)m_pLast);
return RemoveI((POSITION)m_pLast);
} // RemoveTail
@@ -323,7 +329,7 @@ void *CBaseList::RemoveTailI()
it can be used again.
Remove(NULL) is a harmless no-op - but probably is a wart.
*/
void *CBaseList::RemoveI(WXLIST_POSITION pos)
__out_opt void *CBaseList::RemoveI(__in_opt POSITION pos)
{
/* Lock the critical section before continuing */
@@ -384,7 +390,7 @@ void *CBaseList::RemoveI(WXLIST_POSITION pos)
Return the new tail position.
*/
WXLIST_POSITION CBaseList::AddTailI(void *pObject)
__out_opt POSITION CBaseList::AddTailI(__in void *pObject)
{
/* Lock the critical section before continuing */
@@ -427,7 +433,7 @@ WXLIST_POSITION CBaseList::AddTailI(void *pObject)
m_pLast = pNode;
++m_Count;
return (WXLIST_POSITION) pNode;
return (POSITION) pNode;
} // AddTail(object)
@@ -435,7 +441,7 @@ WXLIST_POSITION CBaseList::AddTailI(void *pObject)
/* Add this object to the head end of our list
Return the new head position.
*/
WXLIST_POSITION CBaseList::AddHeadI(void *pObject)
__out_opt POSITION CBaseList::AddHeadI(__in void *pObject)
{
CNode *pNode;
// ASSERT(pObject); // NULL pointers in the list are allowed.
@@ -473,7 +479,7 @@ WXLIST_POSITION CBaseList::AddHeadI(void *pObject)
++m_Count;
return (WXLIST_POSITION) pNode;
return (POSITION) pNode;
} // AddHead(object)
@@ -482,14 +488,14 @@ WXLIST_POSITION CBaseList::AddHeadI(void *pObject)
Return TRUE if it all worked, FALSE if it didn't.
If it fails some elements may have been added.
*/
BOOL CBaseList::AddTail(CBaseList *pList)
BOOL CBaseList::AddTail(__in CBaseList *pList)
{
/* lock the object before starting then enumerate
each entry in the source list and add them one by one to
our list (while still holding the object lock)
Lock the other list too.
*/
WXLIST_POSITION pos = pList->GetHeadPositionI();
POSITION pos = pList->GetHeadPositionI();
while (pos) {
if (NULL == AddTailI(pList->GetNextI(pos))) {
@@ -505,7 +511,7 @@ BOOL CBaseList::AddTail(CBaseList *pList)
Return TRUE if it all worked, FALSE if it didn't.
If it fails some elements may have been added.
*/
BOOL CBaseList::AddHead(CBaseList *pList)
BOOL CBaseList::AddHead(__in CBaseList *pList)
{
/* lock the object before starting then enumerate
each entry in the source list and add them one by one to
@@ -515,10 +521,10 @@ BOOL CBaseList::AddHead(CBaseList *pList)
To avoid reversing the list, traverse it backwards.
*/
WXLIST_POSITION pos;
POSITION pos;
INTERNALREVERSETRAVERSELIST(*pList, pos) {
if (NULL== AddHeadI(pList->GetI(pos))){
if (NULL== AddHeadI(pList->GetValidI(pos))){
return FALSE;
}
}
@@ -532,7 +538,7 @@ BOOL CBaseList::AddHead(CBaseList *pList)
AddAfter(NULL,x) adds x to the start - same as AddHead
Return the position of the new object, NULL if it failed
*/
WXLIST_POSITION CBaseList::AddAfterI(WXLIST_POSITION pos, void * pObj)
__out_opt POSITION CBaseList::AddAfterI(__in_opt POSITION pos, __in void * pObj)
{
if (pos==NULL)
return AddHeadI(pObj);
@@ -578,18 +584,18 @@ WXLIST_POSITION CBaseList::AddAfterI(WXLIST_POSITION pos, void * pObj)
++m_Count;
return (WXLIST_POSITION) pNode;
return (POSITION) pNode;
} // AddAfter(object)
BOOL CBaseList::AddAfter(WXLIST_POSITION p, CBaseList *pList)
BOOL CBaseList::AddAfter(__in_opt POSITION p, __in CBaseList *pList)
{
WXLIST_POSITION pos;
POSITION pos;
INTERNALTRAVERSELIST(*pList, pos) {
/* p follows along the elements being added */
p = AddAfterI(p, pList->GetI(pos));
p = AddAfterI(p, pList->GetValidI(pos));
if (p==NULL) return FALSE;
}
return TRUE;
@@ -602,7 +608,7 @@ BOOL CBaseList::AddAfter(WXLIST_POSITION p, CBaseList *pList)
p is still valid after the operation.
AddBefore(NULL,x) adds x to the end - same as AddTail
*/
WXLIST_POSITION CBaseList::AddBeforeI(WXLIST_POSITION pos, void * pObj)
__out_opt POSITION CBaseList::AddBeforeI(__in_opt POSITION pos, __in void * pObj)
{
if (pos==NULL)
return AddTailI(pObj);
@@ -646,18 +652,18 @@ WXLIST_POSITION CBaseList::AddBeforeI(WXLIST_POSITION pos, void * pObj)
++m_Count;
return (WXLIST_POSITION) pNode;
return (POSITION) pNode;
} // Addbefore(object)
BOOL CBaseList::AddBefore(WXLIST_POSITION p, CBaseList *pList)
BOOL CBaseList::AddBefore(__in_opt POSITION p, __in CBaseList *pList)
{
WXLIST_POSITION pos;
POSITION pos;
INTERNALREVERSETRAVERSELIST(*pList, pos) {
/* p follows along the elements being added */
p = AddBeforeI(p, pList->GetI(pos));
p = AddBeforeI(p, pList->GetValidI(pos));
if (p==NULL) return FALSE;
}
return TRUE;
@@ -682,7 +688,7 @@ BOOL CBaseList::AddBefore(WXLIST_POSITION p, CBaseList *pList)
MoveElementsFromHeadThroughPositionToOtherTail
*/
BOOL CBaseList::MoveToTail
(WXLIST_POSITION pos, CBaseList *pList)
(__in_opt POSITION pos, __in CBaseList *pList)
{
/* Algorithm:
Note that the elements (including their order) in the concatenation
@@ -756,7 +762,7 @@ BOOL CBaseList::MoveToTail
concatenates foo onto the start of bar and empties foo.
*/
BOOL CBaseList::MoveToHead
(WXLIST_POSITION pos, CBaseList *pList)
(__in_opt POSITION pos, __in CBaseList *pList)
{
/* See the comments on the algorithm in MoveToTail */

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines a non-MFC generic template list
// class.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -49,8 +49,10 @@
This definition is the same as the POSITION type for MFCs, so we must
avoid defining it twice.
*/
struct __WXLIST_POSITION { int unused; };
typedef __WXLIST_POSITION* WXLIST_POSITION;
#ifndef __AFX_H__
struct __POSITION { int unused; };
typedef __POSITION* POSITION;
#endif
const int DEFAULTCACHE = 10; /* Default node object cache size */
@@ -93,27 +95,27 @@ public:
/* Return the previous node before this one */
CNode *Prev() const { return m_pPrev; };
__out CNode *Prev() const { return m_pPrev; };
/* Return the next node after this one */
CNode *Next() const { return m_pNext; };
__out CNode *Next() const { return m_pNext; };
/* Set the previous node before this one */
void SetPrev(CNode *p) { m_pPrev = p; };
void SetPrev(__in_opt CNode *p) { m_pPrev = p; };
/* Set the next node after this one */
void SetNext(CNode *p) { m_pNext = p; };
void SetNext(__in_opt CNode *p) { m_pNext = p; };
/* Get the pointer to the object for this node */
void *GetData() const { return m_pObject; };
__out void *GetData() const { return m_pObject; };
/* Set the pointer to the object for this node */
void SetData(void *p) { m_pObject = p; };
void SetData(__in void *p) { m_pObject = p; };
};
class CNodeCache
@@ -131,7 +133,7 @@ public:
delete pCurrent;
}
};
void AddToCache(CNode *pNode)
void AddToCache(__inout CNode *pNode)
{
if (m_iUsed < m_iCacheSize) {
pNode->SetNext(m_pHead);
@@ -187,15 +189,15 @@ private:
public:
CBaseList(TCHAR *pName,
CBaseList(__in_opt LPCTSTR pName,
INT iItems);
CBaseList(TCHAR *pName);
CBaseList(__in_opt LPCTSTR pName);
#ifdef UNICODE
CBaseList(CHAR *pName,
CBaseList(__in_opt LPCSTR pName,
INT iItems);
CBaseList(CHAR *pName);
CBaseList(__in_opt LPCSTR pName);
#endif
~CBaseList();
@@ -204,11 +206,11 @@ public:
/* Return a cursor which identifies the first element of *this */
WXLIST_POSITION GetHeadPositionI() const;
__out_opt POSITION GetHeadPositionI() const;
/* Return a cursor which identifies the last element of *this */
WXLIST_POSITION GetTailPositionI() const;
__out_opt POSITION GetTailPositionI() const;
/* Return the number of objects in *this */
@@ -222,13 +224,14 @@ protected:
GetPrev is not implemented.
Use Next, Prev and Get separately.
*/
void *GetNextI(WXLIST_POSITION& rp) const;
__out void *GetNextI(__inout POSITION& rp) const;
/* Return a pointer to the object at p
Asking for the object at NULL will return NULL harmlessly.
*/
void *GetI(WXLIST_POSITION p) const;
__out_opt void *GetI(__in_opt POSITION p) const;
__out void *GetValidI(__in POSITION p) const;
public:
/* return the next / prev position in *this
@@ -246,32 +249,32 @@ public:
2. If you are keeping a list sorted (fairly common) and you
search forward for an element to insert before and don't
find it you finish up with NULL as the element before which
to insert. You then want that NULL to be a valid WXLIST_POSITION
to insert. You then want that NULL to be a valid POSITION
so that you can insert before it and you want that insertion
point to mean the (n+1)-th one that doesn't have a WXLIST_POSITION.
point to mean the (n+1)-th one that doesn't have a POSITION.
(symmetrically if you are working backwards through the list).
3. It simplifies the algebra which the methods generate.
e.g. AddBefore(p,x) is identical to AddAfter(Prev(p),x)
in ALL cases. All the other arguments probably are reflections
of the algebraic point.
*/
WXLIST_POSITION Next(WXLIST_POSITION pos) const
__out_opt POSITION Next(__in_opt POSITION pos) const
{
if (pos == NULL) {
return (WXLIST_POSITION) m_pFirst;
return (POSITION) m_pFirst;
}
CNode *pn = (CNode *) pos;
return (WXLIST_POSITION) pn->Next();
return (POSITION) pn->Next();
} //Next
// See Next
WXLIST_POSITION Prev(WXLIST_POSITION pos) const
__out_opt POSITION Prev(__in_opt POSITION pos) const
{
if (pos == NULL) {
return (WXLIST_POSITION) m_pLast;
return (POSITION) m_pLast;
}
CNode *pn = (CNode *) pos;
return (WXLIST_POSITION) pn->Prev();
return (POSITION) pn->Prev();
} //Prev
@@ -279,14 +282,20 @@ public:
pointer. Return NULL if the pointer was not not found.
*/
protected:
WXLIST_POSITION FindI( void * pObj) const;
__out_opt POSITION FindI( __in void * pObj) const;
// ??? Should there be (or even should there be only)
// ??? POSITION FindNextAfter(void * pObj, POSITION p)
// ??? And of course FindPrevBefore too.
// ??? List.Find(&Obj) then becomes List.FindNextAfter(&Obj, NULL)
/* Remove the first node in *this (deletes the pointer to its
object from the list, does not free the object itself).
Return the pointer to its object.
If *this was already empty it will harmlessly return NULL.
*/
void *RemoveHeadI();
__out_opt void *RemoveHeadI();
/* Remove the last node in *this (deletes the pointer to its
@@ -294,7 +303,7 @@ protected:
Return the pointer to its object.
If *this was already empty it will harmlessly return NULL.
*/
void *RemoveTailI();
__out_opt void *RemoveTailI();
/* Remove the node identified by p from the list (deletes the pointer
@@ -302,14 +311,14 @@ protected:
Asking to Remove the object at NULL will harmlessly return NULL.
Return the pointer to the object removed.
*/
void *RemoveI(WXLIST_POSITION p);
__out_opt void *RemoveI(__in_opt POSITION p);
/* Add single object *pObj to become a new last element of the list.
Return the new tail position, NULL if it fails.
If you are adding a COM objects, you might want AddRef it first.
Other existing POSITIONs in *this are still valid
*/
WXLIST_POSITION AddTailI(void * pObj);
__out_opt POSITION AddTailI(__in void * pObj);
public:
@@ -324,7 +333,7 @@ public:
If you actually want to MOVE the elements, use MoveToTail instead.
*/
BOOL AddTail(CBaseList *pList);
BOOL AddTail(__in CBaseList *pList);
/* Mirror images of AddHead: */
@@ -334,7 +343,7 @@ public:
Existing POSITIONs in *this are still valid
*/
protected:
WXLIST_POSITION AddHeadI(void * pObj);
__out_opt POSITION AddHeadI(__in void * pObj);
public:
/* Add all the elements in *pList to the head of *this.
@@ -344,7 +353,7 @@ public:
If you actually want to MOVE the elements, use MoveToHead instead.
*/
BOOL AddHead(CBaseList *pList);
BOOL AddHead(__in CBaseList *pList);
/* Add the object *pObj to *this after position p in *this.
@@ -353,7 +362,7 @@ public:
Existing POSITIONs in *this are undisturbed, including p.
*/
protected:
WXLIST_POSITION AddAfterI(WXLIST_POSITION p, void * pObj);
__out_opt POSITION AddAfterI(__in_opt POSITION p, __in void * pObj);
public:
/* Add the list *pList to *this after position p in *this
@@ -362,7 +371,7 @@ public:
If it fails, some of the objects may be added
Existing POSITIONs in *this are undisturbed, including p.
*/
BOOL AddAfter(WXLIST_POSITION p, CBaseList *pList);
BOOL AddAfter(__in_opt POSITION p, __in CBaseList *pList);
/* Mirror images:
@@ -372,7 +381,7 @@ public:
Existing POSITIONs in *this are undisturbed, including p.
*/
protected:
WXLIST_POSITION AddBeforeI(WXLIST_POSITION p, void * pObj);
__out_opt POSITION AddBeforeI(__in_opt POSITION p, __in void * pObj);
public:
/* Add the list *pList to *this before position p in *this
@@ -381,7 +390,7 @@ public:
If it fails, some of the objects may be added
Existing POSITIONs in *this are undisturbed, including p.
*/
BOOL AddBefore(WXLIST_POSITION p, CBaseList *pList);
BOOL AddBefore(__in_opt POSITION p, __in CBaseList *pList);
/* Note that AddAfter(p,x) is equivalent to AddBefore(Next(p),x)
@@ -425,7 +434,7 @@ public:
(and quite a few no-ops)
!!WARNING!! The type checking won't buy you much if you get list
positions muddled up - e.g. use a WXLIST_POSITION that's in a different
positions muddled up - e.g. use a POSITION that's in a different
list and see what a mess you get!
*/
@@ -445,7 +454,7 @@ public:
A better, except excessively long name might be
MoveElementsFromHeadThroughPositionToOtherTail
*/
BOOL MoveToTail(WXLIST_POSITION pos, CBaseList *pList);
BOOL MoveToTail(__in_opt POSITION pos, __in CBaseList *pList);
/* Mirror image:
@@ -461,7 +470,7 @@ public:
foo->MoveToHead(foo->GetHeadPosition, bar);
concatenates foo onto the start of bar and empties foo.
*/
BOOL MoveToHead(WXLIST_POSITION pos, CBaseList *pList);
BOOL MoveToHead(__in_opt POSITION pos, __in CBaseList *pList);
/* Reverse the order of the [pointers to] objects in *this
@@ -491,7 +500,7 @@ public:
template<class OBJECT> class CGenericList : public CBaseList
{
public:
CGenericList(TCHAR *pName,
CGenericList(__in_opt LPCTSTR pName,
INT iItems,
BOOL bLock = TRUE,
BOOL bAlert = FALSE) :
@@ -499,37 +508,38 @@ public:
UNREFERENCED_PARAMETER(bAlert);
UNREFERENCED_PARAMETER(bLock);
};
CGenericList(TCHAR *pName) :
CGenericList(__in_opt LPCTSTR pName) :
CBaseList(pName) {
};
WXLIST_POSITION GetHeadPosition() const { return (WXLIST_POSITION)m_pFirst; }
WXLIST_POSITION GetTailPosition() const { return (WXLIST_POSITION)m_pLast; }
__out_opt POSITION GetHeadPosition() const { return (POSITION)m_pFirst; }
__out_opt POSITION GetTailPosition() const { return (POSITION)m_pLast; }
int GetCount() const { return m_Count; }
OBJECT *GetNext(WXLIST_POSITION& rp) const { return (OBJECT *) GetNextI(rp); }
__out OBJECT *GetNext(__inout POSITION& rp) const { return (OBJECT *) GetNextI(rp); }
OBJECT *Get(WXLIST_POSITION p) const { return (OBJECT *) GetI(p); }
OBJECT *GetHead() const { return Get(GetHeadPosition()); }
__out_opt OBJECT *Get(__in_opt POSITION p) const { return (OBJECT *) GetI(p); }
__out OBJECT *GetValid(__in POSITION p) const { return (OBJECT *) GetValidI(p); }
__out_opt OBJECT *GetHead() const { return Get(GetHeadPosition()); }
OBJECT *RemoveHead() { return (OBJECT *) RemoveHeadI(); }
__out_opt OBJECT *RemoveHead() { return (OBJECT *) RemoveHeadI(); }
OBJECT *RemoveTail() { return (OBJECT *) RemoveTailI(); }
__out_opt OBJECT *RemoveTail() { return (OBJECT *) RemoveTailI(); }
OBJECT *Remove(WXLIST_POSITION p) { return (OBJECT *) RemoveI(p); }
WXLIST_POSITION AddBefore(WXLIST_POSITION p, OBJECT * pObj) { return AddBeforeI(p, pObj); }
WXLIST_POSITION AddAfter(WXLIST_POSITION p, OBJECT * pObj) { return AddAfterI(p, pObj); }
WXLIST_POSITION AddHead(OBJECT * pObj) { return AddHeadI(pObj); }
WXLIST_POSITION AddTail(OBJECT * pObj) { return AddTailI(pObj); }
BOOL AddTail(CGenericList<OBJECT> *pList)
__out_opt OBJECT *Remove(__in_opt POSITION p) { return (OBJECT *) RemoveI(p); }
__out_opt POSITION AddBefore(__in_opt POSITION p, __in OBJECT * pObj) { return AddBeforeI(p, pObj); }
__out_opt POSITION AddAfter(__in_opt POSITION p, __in OBJECT * pObj) { return AddAfterI(p, pObj); }
__out_opt POSITION AddHead(__in OBJECT * pObj) { return AddHeadI(pObj); }
__out_opt POSITION AddTail(__in OBJECT * pObj) { return AddTailI(pObj); }
BOOL AddTail(__in CGenericList<OBJECT> *pList)
{ return CBaseList::AddTail((CBaseList *) pList); }
BOOL AddHead(CGenericList<OBJECT> *pList)
BOOL AddHead(__in CGenericList<OBJECT> *pList)
{ return CBaseList::AddHead((CBaseList *) pList); }
BOOL AddAfter(WXLIST_POSITION p, CGenericList<OBJECT> *pList)
BOOL AddAfter(__in_opt POSITION p, __in CGenericList<OBJECT> *pList)
{ return CBaseList::AddAfter(p, (CBaseList *) pList); };
BOOL AddBefore(WXLIST_POSITION p, CGenericList<OBJECT> *pList)
BOOL AddBefore(__in_opt POSITION p, __in CGenericList<OBJECT> *pList)
{ return CBaseList::AddBefore(p, (CBaseList *) pList); };
WXLIST_POSITION Find( OBJECT * pObj) const { return FindI(pObj); }
__out_opt POSITION Find( __in OBJECT * pObj) const { return FindI(pObj); }
}; // end of class declaration

View File

@@ -4,69 +4,34 @@
// Desc: DirectShow base classes - implements helper classes for building
// multimedia filters.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "streams.h"
#include <streams.h>
#define STRSAFE_NO_DEPRECATE
#include <strsafe.h>
//
// Declare function from largeint.h we need so that PPC can build
//
//
// Enlarged integer divide - 64-bits / 32-bits > 32-bits
//
#ifndef _X86_
#define LLtoU64(x) (*(unsigned __int64*)(void*)(&(x)))
__inline
ULONG
WINAPI
EnlargedUnsignedDivide (
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
IN PULONG Remainder
)
{
// return remainder if necessary
if (Remainder != NULL)
*Remainder = (ULONG)(LLtoU64(Dividend) % Divisor);
return (ULONG)(LLtoU64(Dividend) / Divisor);
}
#else
__inline
ULONG
WINAPI
EnlargedUnsignedDivide (
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
IN PULONG Remainder
)
{
ULONG ulResult;
_asm {
mov eax,Dividend.LowPart
mov edx,Dividend.HighPart
mov ecx,Remainder
div Divisor
or ecx,ecx
jz short label
mov [ecx],edx
label:
mov ulResult,eax
}
return ulResult;
}
#endif
// --- CAMEvent -----------------------
CAMEvent::CAMEvent(BOOL fManualReset)
CAMEvent::CAMEvent(BOOL fManualReset, __inout_opt HRESULT *phr)
{
m_hEvent = CreateEvent(NULL, fManualReset, FALSE, NULL);
if (NULL == m_hEvent) {
if (NULL != phr && SUCCEEDED(*phr)) {
*phr = E_OUTOFMEMORY;
}
}
}
CAMEvent::CAMEvent(__inout_opt HRESULT *phr)
{
m_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (NULL == m_hEvent) {
if (NULL != phr && SUCCEEDED(*phr)) {
*phr = E_OUTOFMEMORY;
}
}
}
CAMEvent::~CAMEvent()
@@ -80,6 +45,10 @@ CAMEvent::~CAMEvent()
// --- CAMMsgEvent -----------------------
// One routine. The rest is handled in CAMEvent
CAMMsgEvent::CAMMsgEvent(__inout_opt HRESULT *phr) : CAMEvent(FALSE, phr)
{
}
BOOL CAMMsgEvent::WaitMsg(DWORD dwTimeout)
{
// wait for the event to be signalled, or for the
@@ -127,8 +96,9 @@ BOOL CAMMsgEvent::WaitMsg(DWORD dwTimeout)
// --- CAMThread ----------------------
CAMThread::CAMThread()
: m_EventSend(TRUE) // must be manual-reset for CheckRequest()
CAMThread::CAMThread(__inout_opt HRESULT *phr)
: m_EventSend(TRUE, phr), // must be manual-reset for CheckRequest()
m_EventComplete(FALSE, phr)
{
m_hThread = NULL;
}
@@ -141,7 +111,7 @@ CAMThread::~CAMThread() {
// when the thread starts, it calls this function. We unwrap the 'this'
//pointer and call ThreadProc.
DWORD WINAPI
CAMThread::InitialThreadProc(LPVOID pv)
CAMThread::InitialThreadProc(__inout LPVOID pv)
{
HRESULT hrCoInit = CAMThread::CoInitializeHelper();
if(FAILED(hrCoInit)) {
@@ -218,7 +188,7 @@ CAMThread::GetRequest()
// is there a request?
BOOL
CAMThread::CheckRequest(DWORD * pParam)
CAMThread::CheckRequest(__out_opt DWORD * pParam)
{
if (!m_EventSend.Check()) {
return FALSE;
@@ -296,7 +266,7 @@ CMsgThread::~CMsgThread()
EXECUTE_ASSERT(CloseHandle(m_hThread));
}
WXLIST_POSITION pos = m_ThreadQueue.GetHeadPosition();
POSITION pos = m_ThreadQueue.GetHeadPosition();
while (pos) {
CMsg * pMsg = m_ThreadQueue.GetNext(pos);
delete pMsg;
@@ -330,7 +300,7 @@ CMsgThread::CreateThread(
DWORD WINAPI
CMsgThread::DefaultThreadProc(
LPVOID lpParam
__inout LPVOID lpParam
)
{
CMsgThread *lpThis = (CMsgThread *)lpParam;
@@ -359,7 +329,7 @@ CMsgThread::DefaultThreadProc(
// Block until the next message is placed on the list m_ThreadQueue.
// copies the message to the message pointed to by *pmsg
void
CMsgThread::GetThreadMsg(CMsg *msg)
CMsgThread::GetThreadMsg(__out CMsg *msg)
{
CMsg * pmsg = NULL;
@@ -385,207 +355,24 @@ CMsgThread::GetThreadMsg(CMsg *msg)
}
// NOTE: as we need to use the same binaries on Win95 as on NT this code should
// be compiled WITHOUT unicode being defined. Otherwise we will not pick up
// these internal routines and the binary will not run on Win95.
#ifndef UNICODE
// Windows 95 doesn't implement this, so we provide an implementation.
// LPWSTR
// WINAPI
// lstrcpyWInternal(
// LPWSTR lpString1,
// LPCWSTR lpString2
// )
// {
// LPWSTR lpReturn = lpString1;
// while (*lpString1++ = *lpString2++);
//
// return lpReturn;
// }
// Windows 95 doesn't implement this, so we provide an implementation.
LPWSTR
WINAPI
lstrcpynWInternal(
LPWSTR lpString1,
LPCWSTR lpString2,
int iMaxLength
)
{
ASSERT(iMaxLength);
LPWSTR lpReturn = lpString1;
if (iMaxLength) {
while (--iMaxLength) {
if (!*lpString2) break;
*lpString1++ = *lpString2++;
};
// If we ran out of room (which will be the case if
// iMaxLength is now 0) we still need to terminate the
// string.
if (!iMaxLength) *lpString1 = L'\0';
}
return lpReturn;
}
int
WINAPI
lstrcmpWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
)
{
do {
WCHAR c1 = *lpString1;
WCHAR c2 = *lpString2;
if (c1 != c2)
return (int) c1 - (int) c2;
} while (*lpString1++ && *lpString2++);
return 0;
}
int
WINAPI
lstrcmpiWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
)
{
do {
WCHAR c1 = *lpString1;
WCHAR c2 = *lpString2;
if (c1 >= L'A' && c1 <= L'Z')
c1 -= (WCHAR) (L'A' - L'a');
if (c2 >= L'A' && c2 <= L'Z')
c2 -= (WCHAR) (L'A' - L'a');
if (c1 != c2)
return (int) c1 - (int) c2;
} while (*lpString1++ && *lpString2++);
return 0;
}
int
WINAPI
lstrlenWInternal(
LPCWSTR lpString
)
{
int i = -1;
while (*(lpString+(++i)))
;
return i;
}
// int WINAPIV wsprintfWInternal(LPWSTR wszOut, LPCWSTR pszFmt, ...)
// {
// char fmt[256]; // !!!
// char ach[256]; // !!!
// int i;
//
// va_list va;
// va_start(va, pszFmt);
// WideCharToMultiByte(GetACP(), 0, pszFmt, -1, fmt, 256, NULL, NULL);
// (void)StringCchVPrintf(ach, NUMELMS(ach), fmt, va);
// i = lstrlenA(ach);
// va_end(va);
//
// MultiByteToWideChar(CP_ACP, 0, ach, -1, wszOut, i+1);
//
// return i;
// }
#else
// need to provide the implementations in unicode for non-unicode
// builds linking with the unicode strmbase.lib
//LPWSTR WINAPI lstrcpyWInternal(
// LPWSTR lpString1,
// LPCWSTR lpString2
// )
//{
// return lstrcpyW(lpString1, lpString2);
//}
LPWSTR WINAPI lstrcpynWInternal(
LPWSTR lpString1,
LPCWSTR lpString2,
int iMaxLength
)
{
return lstrcpynW(lpString1, lpString2, iMaxLength);
}
int WINAPI lstrcmpWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
)
{
return lstrcmpW(lpString1, lpString2);
}
int WINAPI lstrcmpiWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
)
{
return lstrcmpiW(lpString1, lpString2);
}
int WINAPI lstrlenWInternal(
LPCWSTR lpString
)
{
return lstrlenW(lpString);
}
//int WINAPIV wsprintfWInternal(
// LPWSTR wszOut, LPCWSTR pszFmt, ...)
//{
// va_list va;
// va_start(va, pszFmt);
// int i = wvsprintfW(wszOut, pszFmt, va);
// va_end(va);
// return i;
//}
#endif
// Helper function - convert int to WSTR
void WINAPI IntToWstr(int i, LPWSTR wstr, size_t len)
void WINAPI IntToWstr(int i, __out_ecount(12) LPWSTR wstr)
{
#ifdef UNICODE
(void)StringCchPrintf(wstr, len, L"%d", i);
if (FAILED(StringCchPrintf(wstr, 12, L"%d", i))) {
wstr[0] = 0;
}
#else
TCHAR temp[32];
(void)StringCchPrintf(temp, NUMELMS(temp), "%d", i);
MultiByteToWideChar(CP_ACP, 0, temp, -1, wstr, int(len) );
TCHAR temp[12];
if (FAILED(StringCchPrintf(temp, NUMELMS(temp), "%d", i))) {
wstr[0] = 0;
} else {
MultiByteToWideChar(CP_ACP, 0, temp, -1, wstr, 12);
}
#endif
} // IntToWstr
#if 0
void * memchrInternal(const void *pv, int c, size_t sz)
{
BYTE *pb = (BYTE *) pv;
while (sz--) {
if (*pb == c)
return (void *) pb;
pb++;
}
return NULL;
}
#endif
#define MEMORY_ALIGNMENT 4
#define MEMORY_ALIGNMENT_LOG2 2
#define MEMORY_ALIGNMENT_MASK MEMORY_ALIGNMENT - 1
@@ -642,301 +429,33 @@ memmove_done:
return ret;
}
/* Arithmetic functions to help with time format conversions
*/
#ifdef _M_ALPHA
// work around bug in version 12.00.8385 of the alpha compiler where
// UInt32x32To64 sign-extends its arguments (?)
#undef UInt32x32To64
#define UInt32x32To64(a, b) (((ULONGLONG)((ULONG)(a)) & 0xffffffff) * ((ULONGLONG)((ULONG)(b)) & 0xffffffff))
#endif
/* Compute (a * b + d) / c */
LONGLONG WINAPI llMulDiv(LONGLONG a, LONGLONG b, LONGLONG c, LONGLONG d)
HRESULT AMSafeMemMoveOffset(
__in_bcount(dst_size) void * dst,
__in size_t dst_size,
__in DWORD cb_dst_offset,
__in_bcount(src_size) const void * src,
__in size_t src_size,
__in DWORD cb_src_offset,
__in size_t count)
{
/* Compute the absolute values to avoid signed arithmetic problems */
ULARGE_INTEGER ua, ub;
DWORDLONG uc;
ua.QuadPart = (DWORDLONG)(a >= 0 ? a : -a);
ub.QuadPart = (DWORDLONG)(b >= 0 ? b : -b);
uc = (DWORDLONG)(c >= 0 ? c : -c);
BOOL bSign = (a < 0) ^ (b < 0);
/* Do long multiplication */
ULARGE_INTEGER p[2];
p[0].QuadPart = UInt32x32To64(ua.LowPart, ub.LowPart);
/* This next computation cannot overflow into p[1].HighPart because
the max number we can compute here is:
(2 ** 32 - 1) * (2 ** 32 - 1) + // ua.LowPart * ub.LowPart
(2 ** 32) * (2 ** 31) * (2 ** 32 - 1) * 2 // x.LowPart * y.HighPart * 2
== 2 ** 96 - 2 ** 64 + (2 ** 64 - 2 ** 33 + 1)
== 2 ** 96 - 2 ** 33 + 1
< 2 ** 96
*/
ULARGE_INTEGER x;
x.QuadPart = UInt32x32To64(ua.LowPart, ub.HighPart) +
UInt32x32To64(ua.HighPart, ub.LowPart) +
p[0].HighPart;
p[0].HighPart = x.LowPart;
p[1].QuadPart = UInt32x32To64(ua.HighPart, ub.HighPart) + x.HighPart;
if (d != 0) {
ULARGE_INTEGER ud[2];
if (bSign) {
ud[0].QuadPart = (DWORDLONG)(-d);
if (d > 0) {
/* -d < 0 */
ud[1].QuadPart = (DWORDLONG)(LONGLONG)-1;
} else {
ud[1].QuadPart = (DWORDLONG)0;
}
} else {
ud[0].QuadPart = (DWORDLONG)d;
if (d < 0) {
ud[1].QuadPart = (DWORDLONG)(LONGLONG)-1;
} else {
ud[1].QuadPart = (DWORDLONG)0;
}
}
/* Now do extended addition */
ULARGE_INTEGER uliTotal;
/* Add ls DWORDs */
uliTotal.QuadPart = (DWORDLONG)ud[0].LowPart + p[0].LowPart;
p[0].LowPart = uliTotal.LowPart;
/* Propagate carry */
uliTotal.LowPart = uliTotal.HighPart;
uliTotal.HighPart = 0;
/* Add 2nd most ls DWORDs */
uliTotal.QuadPart += (DWORDLONG)ud[0].HighPart + p[0].HighPart;
p[0].HighPart = uliTotal.LowPart;
/* Propagate carry */
uliTotal.LowPart = uliTotal.HighPart;
uliTotal.HighPart = 0;
/* Add MS DWORDLONGs - no carry expected */
p[1].QuadPart += ud[1].QuadPart + uliTotal.QuadPart;
/* Now see if we got a sign change from the addition */
if ((LONG)p[1].HighPart < 0) {
bSign = !bSign;
/* Negate the current value (ugh!) */
p[0].QuadPart = ~p[0].QuadPart;
p[1].QuadPart = ~p[1].QuadPart;
p[0].QuadPart += 1;
p[1].QuadPart += (p[0].QuadPart == 0);
}
// prevent read overruns
if( count + cb_src_offset < count || // prevent integer overflow
count + cb_src_offset > src_size) // prevent read overrun
{
return E_INVALIDARG;
}
/* Now for the division */
if (c < 0) {
bSign = !bSign;
// prevent write overruns
if( count + cb_dst_offset < count || // prevent integer overflow
count + cb_dst_offset > dst_size) // prevent write overrun
{
return E_INVALIDARG;
}
/* This will catch c == 0 and overflow */
if (uc <= p[1].QuadPart) {
return bSign ? (LONGLONG)0x8000000000000000 :
(LONGLONG)0x7FFFFFFFFFFFFFFF;
}
DWORDLONG ullResult;
/* Do the division */
/* If the dividend is a DWORD_LONG use the compiler */
if (p[1].QuadPart == 0) {
ullResult = p[0].QuadPart / uc;
return bSign ? -(LONGLONG)ullResult : (LONGLONG)ullResult;
}
/* If the divisor is a DWORD then its simpler */
ULARGE_INTEGER ulic;
ulic.QuadPart = uc;
if (ulic.HighPart == 0) {
ULARGE_INTEGER uliDividend;
ULARGE_INTEGER uliResult;
DWORD dwDivisor = (DWORD)uc;
// ASSERT(p[1].HighPart == 0 && p[1].LowPart < dwDivisor);
uliDividend.HighPart = p[1].LowPart;
uliDividend.LowPart = p[0].HighPart;
#ifndef USE_LARGEINT
uliResult.HighPart = (DWORD)(uliDividend.QuadPart / dwDivisor);
p[0].HighPart = (DWORD)(uliDividend.QuadPart % dwDivisor);
uliResult.LowPart = 0;
uliResult.QuadPart = p[0].QuadPart / dwDivisor + uliResult.QuadPart;
#else
/* NOTE - this routine will take exceptions if
the result does not fit in a DWORD
*/
if (uliDividend.QuadPart >= (DWORDLONG)dwDivisor) {
uliResult.HighPart = EnlargedUnsignedDivide(
uliDividend,
dwDivisor,
&p[0].HighPart);
} else {
uliResult.HighPart = 0;
}
uliResult.LowPart = EnlargedUnsignedDivide(
p[0],
dwDivisor,
NULL);
#endif
return bSign ? -(LONGLONG)uliResult.QuadPart :
(LONGLONG)uliResult.QuadPart;
}
ullResult = 0;
/* OK - do long division */
for (int i = 0; i < 64; i++) {
ullResult <<= 1;
/* Shift 128 bit p left 1 */
p[1].QuadPart <<= 1;
if ((p[0].HighPart & 0x80000000) != 0) {
p[1].LowPart++;
}
p[0].QuadPart <<= 1;
/* Compare */
if (uc <= p[1].QuadPart) {
p[1].QuadPart -= uc;
ullResult += 1;
}
}
return bSign ? - (LONGLONG)ullResult : (LONGLONG)ullResult;
memmoveInternal( (BYTE *)dst+cb_dst_offset, (BYTE *)src+cb_src_offset, count);
return S_OK;
}
LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG d)
{
ULARGE_INTEGER ua;
DWORD ub;
DWORD uc;
/* Compute the absolute values to avoid signed arithmetic problems */
ua.QuadPart = (DWORDLONG)(a >= 0 ? a : -a);
ub = (DWORD)(b >= 0 ? b : -b);
uc = (DWORD)(c >= 0 ? c : -c);
BOOL bSign = (a < 0) ^ (b < 0);
/* Do long multiplication */
ULARGE_INTEGER p0;
DWORD p1;
p0.QuadPart = UInt32x32To64(ua.LowPart, ub);
if (ua.HighPart != 0) {
ULARGE_INTEGER x;
x.QuadPart = UInt32x32To64(ua.HighPart, ub) + p0.HighPart;
p0.HighPart = x.LowPart;
p1 = x.HighPart;
} else {
p1 = 0;
}
if (d != 0) {
ULARGE_INTEGER ud0;
DWORD ud1;
if (bSign) {
//
// Cast d to LONGLONG first otherwise -0x80000000 sign extends
// incorrectly
//
ud0.QuadPart = (DWORDLONG)(-(LONGLONG)d);
if (d > 0) {
/* -d < 0 */
ud1 = (DWORD)-1;
} else {
ud1 = (DWORD)0;
}
} else {
ud0.QuadPart = (DWORDLONG)d;
if (d < 0) {
ud1 = (DWORD)-1;
} else {
ud1 = (DWORD)0;
}
}
/* Now do extended addition */
ULARGE_INTEGER uliTotal;
/* Add ls DWORDs */
uliTotal.QuadPart = (DWORDLONG)ud0.LowPart + p0.LowPart;
p0.LowPart = uliTotal.LowPart;
/* Propagate carry */
uliTotal.LowPart = uliTotal.HighPart;
uliTotal.HighPart = 0;
/* Add 2nd most ls DWORDs */
uliTotal.QuadPart += (DWORDLONG)ud0.HighPart + p0.HighPart;
p0.HighPart = uliTotal.LowPart;
/* Add MS DWORDLONGs - no carry expected */
p1 += ud1 + uliTotal.HighPart;
/* Now see if we got a sign change from the addition */
if ((LONG)p1 < 0) {
bSign = !bSign;
/* Negate the current value (ugh!) */
p0.QuadPart = ~p0.QuadPart;
p1 = ~p1;
p0.QuadPart += 1;
p1 += (p0.QuadPart == 0);
}
}
/* Now for the division */
if (c < 0) {
bSign = !bSign;
}
/* This will catch c == 0 and overflow */
if (uc <= p1) {
return bSign ? (LONGLONG)0x8000000000000000 :
(LONGLONG)0x7FFFFFFFFFFFFFFF;
}
/* Do the division */
/* If the divisor is a DWORD then its simpler */
ULARGE_INTEGER uliDividend;
ULARGE_INTEGER uliResult;
DWORD dwDivisor = uc;
uliDividend.HighPart = p1;
uliDividend.LowPart = p0.HighPart;
/* NOTE - this routine will take exceptions if
the result does not fit in a DWORD
*/
if (uliDividend.QuadPart >= (DWORDLONG)dwDivisor) {
uliResult.HighPart = EnlargedUnsignedDivide(
uliDividend,
dwDivisor,
&p0.HighPart);
} else {
uliResult.HighPart = 0;
}
uliResult.LowPart = EnlargedUnsignedDivide(
p0,
dwDivisor,
NULL);
return bSign ? -(LONGLONG)uliResult.QuadPart :
(LONGLONG)uliResult.QuadPart;
}
#ifdef DEBUG
/******************************Public*Routine******************************\
@@ -950,10 +469,9 @@ LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG d)
*
\**************************************************************************/
CCritSec::CCritSec(DWORD id)
CCritSec::CCritSec()
{
InitializeCriticalSection(&m_CritSec);
m_id = id;
m_currentOwner = m_lockCount = 0;
m_fTrace = FALSE;
}
@@ -979,9 +497,7 @@ void CCritSec::Lock()
// critical section
}
}
EnterCriticalSection(&m_CritSec);
EnterCriticalSection(&m_CritSec);
if (0 == m_lockCount++) {
// we now own it for the first time. Set owner information
m_currentOwner = us;
@@ -1031,7 +547,7 @@ BOOL WINAPI CritCheckOut(const CCritSec * pcCrit)
#endif
STDAPI WriteBSTR(BSTR *pstrDest, LPCWSTR szSrc)
STDAPI WriteBSTR(__deref_out BSTR *pstrDest, LPCWSTR szSrc)
{
*pstrDest = SysAllocString( szSrc );
if( !(*pstrDest) ) return E_OUTOFMEMORY;
@@ -1039,9 +555,9 @@ STDAPI WriteBSTR(BSTR *pstrDest, LPCWSTR szSrc)
}
STDAPI FreeBSTR(BSTR* pstr)
STDAPI FreeBSTR(__deref_in BSTR* pstr)
{
if( *pstr == NULL ) return S_FALSE;
if( (PVOID)*pstr == NULL ) return S_FALSE;
SysFreeString( *pstr );
return NOERROR;
}
@@ -1052,16 +568,21 @@ STDAPI FreeBSTR(BSTR* pstr)
// S_OK - no error
// E_POINTER - ppszReturn == NULL
// E_OUTOFMEMORY - can't allocate memory for returned string
STDAPI AMGetWideString(LPCWSTR psz, LPWSTR *ppszReturn)
STDAPI AMGetWideString(LPCWSTR psz, __deref_out LPWSTR *ppszReturn)
{
CheckPointer(ppszReturn, E_POINTER);
ValidateReadWritePtr(ppszReturn, sizeof(LPWSTR));
DWORD nameLen = sizeof(WCHAR) * (lstrlenW(psz)+1);
*ppszReturn = (LPWSTR)CoTaskMemAlloc(nameLen);
*ppszReturn = NULL;
size_t nameLen;
HRESULT hr = StringCbLengthW(psz, 100000, &nameLen);
if (FAILED(hr)) {
return hr;
}
*ppszReturn = (LPWSTR)CoTaskMemAlloc(nameLen + sizeof(WCHAR));
if (*ppszReturn == NULL) {
return E_OUTOFMEMORY;
}
CopyMemory(*ppszReturn, psz, nameLen);
CopyMemory(*ppszReturn, psz, nameLen + sizeof(WCHAR));
return NOERROR;
}
@@ -1079,8 +600,8 @@ DWORD WINAPI WaitDispatchingMessages(
{
BOOL bPeeked = FALSE;
DWORD dwResult;
DWORD dwStart = 0;
DWORD dwThreadPriority = 0;
DWORD dwStart;
DWORD dwThreadPriority;
static UINT uMsgId = 0;
@@ -1177,7 +698,7 @@ HRESULT AmGetLastErrorToHResult()
}
}
IUnknown* QzAtlComPtrAssign(IUnknown** pp, IUnknown* lp)
IUnknown* QzAtlComPtrAssign(__deref_inout_opt IUnknown** pp, __in_opt IUnknown* lp)
{
if (lp != NULL)
lp->AddRef();
@@ -1204,7 +725,7 @@ Return Value:
the Platform SDK for more information.
******************************************************************************/
MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent )
MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, __in LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent )
{
#if WINVER >= 0x0501
{

View File

@@ -4,7 +4,7 @@
// Desc: DirectShow base classes - defines helper classes and functions for
// building multimedia filters.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
@@ -26,12 +26,11 @@ class CCritSec {
#ifdef DEBUG
public:
DWORD m_id;
DWORD m_currentOwner;
DWORD m_lockCount;
BOOL m_fTrace; // Trace this one
public:
CCritSec(DWORD id = 0);
CCritSec();
~CCritSec();
void Lock();
void Unlock();
@@ -117,7 +116,8 @@ class CAMEvent
protected:
HANDLE m_hEvent;
public:
CAMEvent(BOOL fManualReset = FALSE);
CAMEvent(BOOL fManualReset = FALSE, __inout_opt HRESULT *phr = NULL);
CAMEvent(__inout_opt HRESULT *phr);
~CAMEvent();
// Cast to HANDLE - we don't support this as an lvalue
@@ -141,6 +141,8 @@ class CAMMsgEvent : public CAMEvent
public:
CAMMsgEvent(__inout_opt HRESULT *phr = NULL);
// Allow SEND messages to be processed while waiting
BOOL WaitMsg(DWORD dwTimeout = INFINITE);
};
@@ -150,6 +152,7 @@ public:
// support for a worker thread
#ifdef AM_NOVTABLE
// simple thread class supports creation of worker thread, synchronization
// and communication. Can be derived to simplify parameter passing
class AM_NOVTABLE CAMThread {
@@ -173,7 +176,7 @@ protected:
virtual DWORD ThreadProc() = 0;
public:
CAMThread();
CAMThread(__inout_opt HRESULT *phr = NULL);
virtual ~CAMThread();
CCritSec m_AccessLock; // locks access by client threads
@@ -181,7 +184,7 @@ public:
// thread initially runs this. param is actually 'this'. function
// just gets this and calls ThreadProc
static DWORD WINAPI InitialThreadProc(LPVOID pv);
static DWORD WINAPI InitialThreadProc(__inout LPVOID pv);
// start thread running - error if already running
BOOL Create();
@@ -193,13 +196,12 @@ public:
// accessor thread calls this when done with thread (having told thread
// to exit)
void Close() {
#pragma warning( push )
// C4312: 'type cast' : conversion from 'LONG' to 'PVOID' of greater size
//
// This code works correctly on 32-bit and 64-bit systems.
#pragma warning( disable : 4312 )
// Disable warning: Conversion from LONG to PVOID of greater size
#pragma warning(push)
#pragma warning(disable: 4312)
HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0);
#pragma warning( pop )
#pragma warning(pop)
if (hThread) {
WaitForSingleObject(hThread, INFINITE);
@@ -222,7 +224,7 @@ public:
DWORD GetRequest();
// is there a request?
BOOL CheckRequest(DWORD * pParam);
BOOL CheckRequest(__out_opt DWORD * pParam);
// reply to the request
void Reply(DWORD);
@@ -238,6 +240,7 @@ public:
// available. S_FALSE means it's not available.
static HRESULT CoInitializeHelper();
};
#endif // AM_NOVTABLE
// CQueue
@@ -334,52 +337,27 @@ public:
}
};
// miscellaneous string conversion functions
// NOTE: as we need to use the same binaries on Win95 as on NT this code should
// be compiled WITHOUT unicode being defined. Otherwise we will not pick up
// these internal routines and the binary will not run on Win95.
// int WINAPIV wsprintfWInternal(LPWSTR, LPCWSTR, ...);
//LPWSTR
//WINAPI
//lstrcpyWInternal(
// LPWSTR lpString1,
// LPCWSTR lpString2
// );
LPWSTR
WINAPI
lstrcpynWInternal(
LPWSTR lpString1,
LPCWSTR lpString2,
int iMaxLength
);
int
WINAPI
lstrcmpWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
);
int
WINAPI
lstrcmpiWInternal(
LPCWSTR lpString1,
LPCWSTR lpString2
);
int
WINAPI
lstrlenWInternal(
LPCWSTR lpString
);
#ifndef UNICODE
#define wsprintfW wsprintfWInternal
#define lstrcpyW lstrcpyWInternal
#define lstrcpynW lstrcpynWInternal
#define lstrcmpW lstrcmpWInternal
#define lstrcmpiW lstrcmpiWInternal
#define lstrlenW lstrlenWInternal
#endif
// Ensures that memory is not read past the length source buffer
// and that memory is not written past the length of the dst buffer
// dst - buffer to copy to
// dst_size - total size of destination buffer
// cb_dst_offset - offset, first byte copied to dst+cb_dst_offset
// src - buffer to copy from
// src_size - total size of source buffer
// cb_src_offset - offset, first byte copied from src+cb_src_offset
// count - number of bytes to copy
//
// Returns:
// S_OK - no error
// E_INVALIDARG - values passed would lead to overrun
HRESULT AMSafeMemMoveOffset(
__in_bcount(dst_size) void * dst,
__in size_t dst_size,
__in DWORD cb_dst_offset,
__in_bcount(src_size) const void * src,
__in size_t src_size,
__in DWORD cb_src_offset,
__in size_t count);
extern "C"
void * __stdcall memmoveInternal(void *, const void *, size_t);
@@ -413,7 +391,7 @@ exit_memchr:
#endif
}
void WINAPI IntToWstr(int i, LPWSTR wstr, size_t len);
void WINAPI IntToWstr(int i, __out_ecount(12) LPWSTR wstr);
#define WstrToInt(sz) _wtoi(sz)
#define atoiW(sz) _wtoi(sz)
@@ -447,8 +425,11 @@ STDAPI_(WCHAR *) GetSubtypeNameW(const GUID *pSubtype);
STDAPI_(LONG) GetBitmapFormatSize(const BITMAPINFOHEADER *pHeader);
STDAPI_(DWORD) GetBitmapSize(const BITMAPINFOHEADER *pHeader);
#ifdef __AMVIDEO__
STDAPI_(BOOL) ContainsPalette(const VIDEOINFOHEADER *pVideoInfo);
STDAPI_(const RGBQUAD *) GetBitmapPalette(const VIDEOINFOHEADER *pVideoInfo);
#endif // __AMVIDEO__
// Compares two interfaces and returns TRUE if they are on the same object
@@ -466,15 +447,15 @@ LONGLONG WINAPI Int64x32Div32(LONGLONG a, LONG b, LONG c, LONG rnd);
// Avoids us dyna-linking to SysAllocString to copy BSTR strings
STDAPI WriteBSTR(BSTR * pstrDest, LPCWSTR szSrc);
STDAPI FreeBSTR(BSTR* pstr);
STDAPI WriteBSTR(__deref_out BSTR * pstrDest, LPCWSTR szSrc);
STDAPI FreeBSTR(__deref_in BSTR* pstr);
// Return a wide string - allocating memory for it
// Returns:
// S_OK - no error
// E_POINTER - ppszReturn == NULL
// E_OUTOFMEMORY - can't allocate memory for returned string
STDAPI AMGetWideString(LPCWSTR pszString, LPWSTR *ppszReturn);
STDAPI AMGetWideString(LPCWSTR pszString, __deref_out LPWSTR *ppszReturn);
// Special wait for objects owning windows
DWORD WINAPI WaitDispatchingMessages(
@@ -496,7 +477,7 @@ HRESULT AmGetLastErrorToHResult(void);
// duplicate of ATL's CComPtr to avoid linker conflicts.
IUnknown* QzAtlComPtrAssign(IUnknown** pp, IUnknown* lp);
IUnknown* QzAtlComPtrAssign(__deref_inout_opt IUnknown** pp, __in_opt IUnknown* lp);
template <class T>
class QzCComPtr
@@ -535,7 +516,17 @@ public:
T* p;
};
MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent );
MMRESULT CompatibleTimeSetEvent( UINT uDelay, UINT uResolution, __in LPTIMECALLBACK lpTimeProc, DWORD_PTR dwUser, UINT fuEvent );
bool TimeKillSynchronousFlagAvailable( void );
// Helper to replace lstrcpmi
__inline int lstrcmpiLocaleIndependentW(LPCWSTR lpsz1, LPCWSTR lpsz2)
{
return CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, lpsz1, -1, lpsz2, -1) - CSTR_EQUAL;
}
__inline int lstrcmpiLocaleIndependentA(LPCSTR lpsz1, LPCSTR lpsz2)
{
return CompareStringA(LOCALE_INVARIANT, NORM_IGNORECASE, lpsz1, -1, lpsz2, -1) - CSTR_EQUAL;
}
#endif /* __WXUTIL__ */

327
3rdparty/bzip2/CHANGES vendored
View File

@@ -1,327 +0,0 @@
------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------
0.9.0
~~~~~
First version.
0.9.0a
~~~~~~
Removed 'ranlib' from Makefile, since most modern Unix-es
don't need it, or even know about it.
0.9.0b
~~~~~~
Fixed a problem with error reporting in bzip2.c. This does not effect
the library in any way. Problem is: versions 0.9.0 and 0.9.0a (of the
program proper) compress and decompress correctly, but give misleading
error messages (internal panics) when an I/O error occurs, instead of
reporting the problem correctly. This shouldn't give any data loss
(as far as I can see), but is confusing.
Made the inline declarations disappear for non-GCC compilers.
0.9.0c
~~~~~~
Fixed some problems in the library pertaining to some boundary cases.
This makes the library behave more correctly in those situations. The
fixes apply only to features (calls and parameters) not used by
bzip2.c, so the non-fixedness of them in previous versions has no
effect on reliability of bzip2.c.
In bzlib.c:
* made zero-length BZ_FLUSH work correctly in bzCompress().
* fixed bzWrite/bzRead to ignore zero-length requests.
* fixed bzread to correctly handle read requests after EOF.
* wrong parameter order in call to bzDecompressInit in
bzBuffToBuffDecompress. Fixed.
In compress.c:
* changed setting of nGroups in sendMTFValues() so as to
do a bit better on small files. This _does_ effect
bzip2.c.
0.9.5a
~~~~~~
Major change: add a fallback sorting algorithm (blocksort.c)
to give reasonable behaviour even for very repetitive inputs.
Nuked --repetitive-best and --repetitive-fast since they are
no longer useful.
Minor changes: mostly a whole bunch of small changes/
bugfixes in the driver (bzip2.c). Changes pertaining to the
user interface are:
allow decompression of symlink'd files to stdout
decompress/test files even without .bz2 extension
give more accurate error messages for I/O errors
when compressing/decompressing to stdout, don't catch control-C
read flags from BZIP2 and BZIP environment variables
decline to break hard links to a file unless forced with -f
allow -c flag even with no filenames
preserve file ownerships as far as possible
make -s -1 give the expected block size (100k)
add a flag -q --quiet to suppress nonessential warnings
stop decoding flags after --, so files beginning in - can be handled
resolved inconsistent naming: bzcat or bz2cat ?
bzip2 --help now returns 0
Programming-level changes are:
fixed syntax error in GET_LL4 for Borland C++ 5.02
let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC}
fix overshoot of mode-string end in bzopen_or_bzdopen
wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... }
close file handles under all error conditions
added minor mods so it compiles with DJGPP out of the box
fixed Makefile so it doesn't give problems with BSD make
fix uninitialised memory reads in dlltest.c
0.9.5b
~~~~~~
Open stdin/stdout in binary mode for DJGPP.
0.9.5c
~~~~~~
Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1. The + 1
version could cause the sorted order to be wrong in some extremely
obscure cases. Also changed setting of quadrant in blocksort.c.
0.9.5d
~~~~~~
The only functional change is to make bzlibVersion() in the library
return the correct string. This has no effect whatsoever on the
functioning of the bzip2 program or library. Added a couple of casts
so the library compiles without warnings at level 3 in MS Visual
Studio 6.0. Included a Y2K statement in the file Y2K_INFO. All other
changes are minor documentation changes.
1.0
~~~
Several minor bugfixes and enhancements:
* Large file support. The library uses 64-bit counters to
count the volume of data passing through it. bzip2.c
is now compiled with -D_FILE_OFFSET_BITS=64 to get large
file support from the C library. -v correctly prints out
file sizes greater than 4 gigabytes. All these changes have
been made without assuming a 64-bit platform or a C compiler
which supports 64-bit ints, so, except for the C library
aspect, they are fully portable.
* Decompression robustness. The library/program should be
robust to any corruption of compressed data, detecting and
handling _all_ corruption, instead of merely relying on
the CRCs. What this means is that the program should
never crash, given corrupted data, and the library should
always return BZ_DATA_ERROR.
* Fixed an obscure race-condition bug only ever observed on
Solaris, in which, if you were very unlucky and issued
control-C at exactly the wrong time, both input and output
files would be deleted.
* Don't run out of file handles on test/decompression when
large numbers of files have invalid magic numbers.
* Avoid library namespace pollution. Prefix all exported
symbols with BZ2_.
* Minor sorting enhancements from my DCC2000 paper.
* Advance the version number to 1.0, so as to counteract the
(false-in-this-case) impression some people have that programs
with version numbers less than 1.0 are in some way, experimental,
pre-release versions.
* Create an initial Makefile-libbz2_so to build a shared library.
Yes, I know I should really use libtool et al ...
* Make the program exit with 2 instead of 0 when decompression
fails due to a bad magic number (ie, an invalid bzip2 header).
Also exit with 1 (as the manual claims :-) whenever a diagnostic
message would have been printed AND the corresponding operation
is aborted, for example
bzip2: Output file xx already exists.
When a diagnostic message is printed but the operation is not
aborted, for example
bzip2: Can't guess original name for wurble -- using wurble.out
then the exit value 0 is returned, unless some other problem is
also detected.
I think it corresponds more closely to what the manual claims now.
1.0.1
~~~~~
* Modified dlltest.c so it uses the new BZ2_ naming scheme.
* Modified makefile-msc to fix minor build probs on Win2k.
* Updated README.COMPILATION.PROBLEMS.
There are no functionality changes or bug fixes relative to version
1.0.0. This is just a documentation update + a fix for minor Win32
build problems. For almost everyone, upgrading from 1.0.0 to 1.0.1 is
utterly pointless. Don't bother.
1.0.2
~~~~~
A bug fix release, addressing various minor issues which have appeared
in the 18 or so months since 1.0.1 was released. Most of the fixes
are to do with file-handling or documentation bugs. To the best of my
knowledge, there have been no data-loss-causing bugs reported in the
compression/decompression engine of 1.0.0 or 1.0.1.
Note that this release does not improve the rather crude build system
for Unix platforms. The general plan here is to autoconfiscate/
libtoolise 1.0.2 soon after release, and release the result as 1.1.0
or perhaps 1.2.0. That, however, is still just a plan at this point.
Here are the changes in 1.0.2. Bug-reporters and/or patch-senders in
parentheses.
* Fix an infinite segfault loop in 1.0.1 when a directory is
encountered in -f (force) mode.
(Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt)
* Avoid double fclose() of output file on certain I/O error paths.
(Solar Designer)
* Don't fail with internal error 1007 when fed a long stream (> 48MB)
of byte 251. Also print useful message suggesting that 1007s may be
caused by bad memory.
(noticed by Juan Pedro Vallejo, fixed by me)
* Fix uninitialised variable silly bug in demo prog dlltest.c.
(Jorj Bauer)
* Remove 512-MB limitation on recovered file size for bzip2recover
on selected platforms which support 64-bit ints. At the moment
all GCC supported platforms, and Win32.
(me, Alson van der Meulen)
* Hard-code header byte values, to give correct operation on platforms
using EBCDIC as their native character set (IBM's OS/390).
(Leland Lucius)
* Copy file access times correctly.
(Marty Leisner)
* Add distclean and check targets to Makefile.
(Michael Carmack)
* Parameterise use of ar and ranlib in Makefile. Also add $(LDFLAGS).
(Rich Ireland, Bo Thorsen)
* Pass -p (create parent dirs as needed) to mkdir during make install.
(Jeremy Fusco)
* Dereference symlinks when copying file permissions in -f mode.
(Volker Schmidt)
* Majorly simplify implementation of uInt64_qrm10.
(Bo Lindbergh)
* Check the input file still exists before deleting the output one,
when aborting in cleanUpAndFail().
(Joerg Prante, Robert Linden, Matthias Krings)
Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer
of bzip2:
* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore.
* Spelling changes and minor enhancements in bzip2.1.
* Avoid race condition between creating the output file and setting its
interim permissions safely, by using fopen_output_safely().
No changes to bzip2recover since there is no issue with file
permissions there.
* do not print senseless report with -v when compressing an empty
file.
* bzcat -f works on non-bzip2 files.
* do not try to escape shell meta-characters on unix (the shell takes
care of these).
* added --fast and --best aliases for -1 -9 for gzip compatibility.
1.0.3 (15 Feb 05)
~~~~~~~~~~~~~~~~~
Fixes some minor bugs since the last version, 1.0.2.
* Further robustification against corrupted compressed data.
There are currently no known bitstreams which can cause the
decompressor to crash, loop or access memory which does not
belong to it. If you are using bzip2 or the library to
decompress bitstreams from untrusted sources, an upgrade
to 1.0.3 is recommended. This fixes CAN-2005-1260.
* The documentation has been converted to XML, from which html
and pdf can be derived.
* Various minor bugs in the documentation have been fixed.
* Fixes for various compilation warnings with newer versions of
gcc, and on 64-bit platforms.
* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
This has been fixed.
1.0.4 (20 Dec 06)
~~~~~~~~~~~~~~~~~
Fixes some minor bugs since the last version, 1.0.3.
* Fix file permissions race problem (CAN-2005-0953).
* Avoid possible segfault in BZ2_bzclose. From Coverity's NetBSD
scan.
* 'const'/prototype cleanups in the C code.
* Change default install location to /usr/local, and handle multiple
'make install's without error.
* Sanitise file names more carefully in bzgrep. Fixes CAN-2005-0758
to the extent that applies to bzgrep.
* Use 'mktemp' rather than 'tempfile' in bzdiff.
* Tighten up a couple of assertions in blocksort.c following automated
analysis.
* Fix minor doc/comment bugs.
1.0.5 (10 Dec 07)
~~~~~~~~~~~~~~~~~
Security fix only. Fixes CERT-FI 20469 as it applies to bzip2.
1.0.6 (6 Sept 10)
~~~~~~~~~~~~~~~~~
* Security fix for CVE-2010-0405. This was reported by Mikolaj
Izdebski.
* Make the documentation build on Ubuntu 10.04

View File

@@ -1,42 +0,0 @@
--------------------------------------------------------------------------
This program, "bzip2", the associated library "libbzip2", and all
documentation, are copyright (C) 1996-2010 Julian R Seward. All
rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Julian Seward, jseward@bzip.org
bzip2/libbzip2 version 1.0.6 of 6 September 2010
--------------------------------------------------------------------------

215
3rdparty/bzip2/README vendored
View File

@@ -1,215 +0,0 @@
This is the README for bzip2/libzip2.
This version is fully compatible with the previous public releases.
------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------
Complete documentation is available in Postscript form (manual.ps),
PDF (manual.pdf) or html (manual.html). A plain-text version of the
manual page is available as bzip2.txt.
HOW TO BUILD -- UNIX
Type 'make'. This builds the library libbz2.a and then the programs
bzip2 and bzip2recover. Six self-tests are run. If the self-tests
complete ok, carry on to installation:
To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
/usr/local/include, type
make install
To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
make install PREFIX=/xxx/yyy
If you are (justifiably) paranoid and want to see what 'make install'
is going to do, you can first do
make -n install or
make -n install PREFIX=/xxx/yyy respectively.
The -n instructs make to show the commands it would execute, but not
actually execute them.
HOW TO BUILD -- UNIX, shared library libbz2.so.
Do 'make -f Makefile-libbz2_so'. This Makefile seems to work for
Linux-ELF (RedHat 7.2 on an x86 box), with gcc. I make no claims
that it works for any other platform, though I suspect it probably
will work for most platforms employing both ELF and gcc.
bzip2-shared, a client of the shared library, is also built, but not
self-tested. So I suggest you also build using the normal Makefile,
since that conducts a self-test. A second reason to prefer the
version statically linked to the library is that, on x86 platforms,
building shared objects makes a valuable register (%ebx) unavailable
to gcc, resulting in a slowdown of 10%-20%, at least for bzip2.
Important note for people upgrading .so's from 0.9.0/0.9.5 to version
1.0.X. All the functions in the library have been renamed, from (eg)
bzCompress to BZ2_bzCompress, to avoid namespace pollution.
Unfortunately this means that the libbz2.so created by
Makefile-libbz2_so will not work with any program which used an older
version of the library. I do encourage library clients to make the
effort to upgrade to use version 1.0, since it is both faster and more
robust than previous versions.
HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
It's difficult for me to support compilation on all these platforms.
My approach is to collect binaries for these platforms, and put them
on the master web site (http://www.bzip.org). Look there. However
(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
unmodified with MS Visual C. If you have difficulties building, you
might want to read README.COMPILATION.PROBLEMS.
At least using MS Visual C++ 6, you can build from the unmodified
sources by issuing, in a command shell:
nmake -f makefile.msc
(you may need to first run the MSVC-provided script VCVARS32.BAT
so as to set up paths to the MSVC tools correctly).
VALIDATION
Correct operation, in the sense that a compressed file can always be
decompressed to reproduce the original, is obviously of paramount
importance. To validate bzip2, I used a modified version of Mark
Nelson's churn program. Churn is an automated test driver which
recursively traverses a directory structure, using bzip2 to compress
and then decompress each file it encounters, and checking that the
decompressed data is the same as the original.
Please read and be aware of the following:
WARNING:
This program and library (attempts to) compress data by
performing several non-trivial transformations on it.
Unless you are 100% familiar with *all* the algorithms
contained herein, and with the consequences of modifying them,
you should NOT meddle with the compression or decompression
machinery. Incorrect changes can and very likely *will*
lead to disastrous loss of data.
DISCLAIMER:
I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
Every compression of a file implies an assumption that the
compressed file can be decompressed to reproduce the original.
Great efforts in design, coding and testing have been made to
ensure that this program works correctly. However, the complexity
of the algorithms, and, in particular, the presence of various
special cases in the code which occur with very low but non-zero
probability make it impossible to rule out the possibility of bugs
remaining in the program. DO NOT COMPRESS ANY DATA WITH THIS
PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
That is not to say this program is inherently unreliable.
Indeed, I very much hope the opposite is true. bzip2/libbzip2
has been carefully constructed and extensively tested.
PATENTS:
To the best of my knowledge, bzip2/libbzip2 does not use any
patented algorithms. However, I do not have the resources
to carry out a patent search. Therefore I cannot give any
guarantee of the above statement.
WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
* Approx 10% faster compression, 30% faster decompression
* -t (test mode) is a lot quicker
* Can decompress concatenated compressed files
* Programming interface, so programs can directly read/write .bz2 files
* Less restrictive (BSD-style) licensing
* Flag handling more compatible with GNU gzip
* Much more documentation, i.e., a proper user manual
* Hopefully, improved portability (at least of the library)
WHAT'S NEW IN 0.9.5 ?
* Compression speed is much less sensitive to the input
data than in previous versions. Specifically, the very
slow performance caused by repetitive data is fixed.
* Many small improvements in file and flag handling.
* A Y2K statement.
WHAT'S NEW IN 1.0.0 ?
See the CHANGES file.
WHAT'S NEW IN 1.0.2 ?
See the CHANGES file.
WHAT'S NEW IN 1.0.3 ?
See the CHANGES file.
WHAT'S NEW IN 1.0.4 ?
See the CHANGES file.
WHAT'S NEW IN 1.0.5 ?
See the CHANGES file.
WHAT'S NEW IN 1.0.6 ?
See the CHANGES file.
I hope you find bzip2 useful. Feel free to contact me at
jseward@bzip.org
if you have any suggestions or queries. Many people mailed me with
comments, suggestions and patches after the releases of bzip-0.15,
bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
feedback. I thank you for your comments.
bzip2's "home" is http://www.bzip.org/
Julian Seward
jseward@bzip.org
Cambridge, UK.
18 July 1996 (version 0.15)
25 August 1996 (version 0.21)
7 August 1997 (bzip2, version 0.1)
29 August 1997 (bzip2, version 0.1pl2)
23 August 1998 (bzip2, version 0.9.0)
8 June 1999 (bzip2, version 0.9.5)
4 Sept 1999 (bzip2, version 0.9.5d)
5 May 2000 (bzip2, version 1.0pre8)
30 December 2001 (bzip2, version 1.0.2pre1)
15 February 2005 (bzip2, version 1.0.3)
20 December 2006 (bzip2, version 1.0.4)
10 December 2007 (bzip2, version 1.0.5)
6 Sept 2010 (bzip2, version 1.0.6)

File diff suppressed because it is too large Load Diff

View File

@@ -1,96 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Devel|Win32">
<Configuration>Devel</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F4EB4AB2-C595-4B05-8BC0-059024BC796C}</ProjectGuid>
<RootNamespace>bzip2</RootNamespace>
<ProjectName>bzip2</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>false</WholeProgramOptimization>
<PlatformToolset>$(DefaultPlatformToolset)_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>$(DefaultPlatformToolset)_xp</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>$(DefaultPlatformToolset)_xp</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Devel.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Release.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\DefaultProjectRootDir.props" />
<Import Project="..\3rdparty.props" />
<Import Project="..\..\common\vsprops\CodeGen_Debug.props" />
<Import Project="..\..\common\vsprops\IncrementalLinking.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='Devel|Win32'">$(ProjectName)-dev</TargetName>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="blocksort.c" />
<ClCompile Include="bzlib.c" />
<ClCompile Include="compress.c" />
<ClCompile Include="crctable.c" />
<ClCompile Include="decompress.c" />
<ClCompile Include="huffman.c" />
<ClCompile Include="randtable.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="bzlib.h" />
<ClInclude Include="bzlib_private.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="blocksort.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bzlib.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="compress.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crctable.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="decompress.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="huffman.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="randtable.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="bzlib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="bzlib_private.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

1572
3rdparty/bzip2/bzlib.c vendored

File diff suppressed because it is too large Load Diff

282
3rdparty/bzip2/bzlib.h vendored
View File

@@ -1,282 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Public header file for the library. ---*/
/*--- bzlib.h ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#ifndef _BZLIB_H
#define _BZLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#define BZ_RUN 0
#define BZ_FLUSH 1
#define BZ_FINISH 2
#define BZ_OK 0
#define BZ_RUN_OK 1
#define BZ_FLUSH_OK 2
#define BZ_FINISH_OK 3
#define BZ_STREAM_END 4
#define BZ_SEQUENCE_ERROR (-1)
#define BZ_PARAM_ERROR (-2)
#define BZ_MEM_ERROR (-3)
#define BZ_DATA_ERROR (-4)
#define BZ_DATA_ERROR_MAGIC (-5)
#define BZ_IO_ERROR (-6)
#define BZ_UNEXPECTED_EOF (-7)
#define BZ_OUTBUFF_FULL (-8)
#define BZ_CONFIG_ERROR (-9)
typedef
struct {
char *next_in;
unsigned int avail_in;
unsigned int total_in_lo32;
unsigned int total_in_hi32;
char *next_out;
unsigned int avail_out;
unsigned int total_out_lo32;
unsigned int total_out_hi32;
void *state;
void *(*bzalloc)(void *,int,int);
void (*bzfree)(void *,void *);
void *opaque;
}
bz_stream;
#ifndef BZ_IMPORT
#define BZ_EXPORT
#endif
#ifndef BZ_NO_STDIO
/* Need a definitition for FILE */
#include <stdio.h>
#endif
#ifdef _WIN32
# include <windows.h>
# ifdef small
/* windows.h define small to char */
# undef small
# endif
# ifdef BZ_EXPORT
# define BZ_API(func) WINAPI func
# define BZ_EXTERN extern
# else
/* import windows dll dynamically */
# define BZ_API(func) (WINAPI * func)
# define BZ_EXTERN
# endif
#else
# define BZ_API(func) func
# define BZ_EXTERN extern
#endif
/*-- Core (low-level) library functions --*/
BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
bz_stream* strm,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN int BZ_API(BZ2_bzCompress) (
bz_stream* strm,
int action
);
BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
bz_stream* strm
);
BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
bz_stream *strm,
int verbosity,
int small
);
BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
bz_stream* strm
);
BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
bz_stream *strm
);
/*-- High(er) level library functions --*/
#ifndef BZ_NO_STDIO
#define BZ_MAX_UNUSED 5000
typedef void BZFILE;
BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
int* bzerror,
FILE* f,
int verbosity,
int small,
void* unused,
int nUnused
);
BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
int* bzerror,
BZFILE* b
);
BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
int* bzerror,
BZFILE* b,
void** unused,
int* nUnused
);
BZ_EXTERN int BZ_API(BZ2_bzRead) (
int* bzerror,
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
int* bzerror,
FILE* f,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN void BZ_API(BZ2_bzWrite) (
int* bzerror,
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
int* bzerror,
BZFILE* b,
int abandon,
unsigned int* nbytes_in,
unsigned int* nbytes_out
);
BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
int* bzerror,
BZFILE* b,
int abandon,
unsigned int* nbytes_in_lo32,
unsigned int* nbytes_in_hi32,
unsigned int* nbytes_out_lo32,
unsigned int* nbytes_out_hi32
);
#endif
/*-- Utility functions --*/
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int blockSize100k,
int verbosity,
int workFactor
);
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
char* dest,
unsigned int* destLen,
char* source,
unsigned int sourceLen,
int small,
int verbosity
);
/*--
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
to support better zlib compatibility.
This code is not _officially_ part of libbzip2 (yet);
I haven't tested it, documented it, or considered the
threading-safeness of it.
If this code breaks, please contact both Yoshioka and me.
--*/
BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
void
);
#ifndef BZ_NO_STDIO
BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
const char *path,
const char *mode
);
BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
int fd,
const char *mode
);
BZ_EXTERN int BZ_API(BZ2_bzread) (
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN int BZ_API(BZ2_bzwrite) (
BZFILE* b,
void* buf,
int len
);
BZ_EXTERN int BZ_API(BZ2_bzflush) (
BZFILE* b
);
BZ_EXTERN void BZ_API(BZ2_bzclose) (
BZFILE* b
);
BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
BZFILE *b,
int *errnum
);
#endif
#ifdef __cplusplus
}
#endif
#endif
/*-------------------------------------------------------------*/
/*--- end bzlib.h ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,509 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Private header file for the library. ---*/
/*--- bzlib_private.h ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#ifndef _BZLIB_PRIVATE_H
#define _BZLIB_PRIVATE_H
#include <stdlib.h>
#ifndef BZ_NO_STDIO
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#endif
#include "bzlib.h"
/*-- General stuff. --*/
#define BZ_VERSION "1.0.6, 6-Sept-2010"
typedef char Char;
typedef unsigned char Bool;
typedef unsigned char UChar;
typedef int Int32;
typedef unsigned int UInt32;
typedef short Int16;
typedef unsigned short UInt16;
#define True ((Bool)1)
#define False ((Bool)0)
#ifndef __GNUC__
#define __inline__ /* */
#endif
#ifndef BZ_NO_STDIO
extern void BZ2_bz__AssertH__fail ( int errcode );
#define AssertH(cond,errcode) \
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
#if BZ_DEBUG
#define AssertD(cond,msg) \
{ if (!(cond)) { \
fprintf ( stderr, \
"\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
exit(1); \
}}
#else
#define AssertD(cond,msg) /* */
#endif
#define VPrintf0(zf) \
fprintf(stderr,zf)
#define VPrintf1(zf,za1) \
fprintf(stderr,zf,za1)
#define VPrintf2(zf,za1,za2) \
fprintf(stderr,zf,za1,za2)
#define VPrintf3(zf,za1,za2,za3) \
fprintf(stderr,zf,za1,za2,za3)
#define VPrintf4(zf,za1,za2,za3,za4) \
fprintf(stderr,zf,za1,za2,za3,za4)
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
fprintf(stderr,zf,za1,za2,za3,za4,za5)
#else
extern void bz_internal_error ( int errcode );
#define AssertH(cond,errcode) \
{ if (!(cond)) bz_internal_error ( errcode ); }
#define AssertD(cond,msg) do { } while (0)
#define VPrintf0(zf) do { } while (0)
#define VPrintf1(zf,za1) do { } while (0)
#define VPrintf2(zf,za1,za2) do { } while (0)
#define VPrintf3(zf,za1,za2,za3) do { } while (0)
#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0)
#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
#endif
#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp))
/*-- Header bytes. --*/
#define BZ_HDR_B 0x42 /* 'B' */
#define BZ_HDR_Z 0x5a /* 'Z' */
#define BZ_HDR_h 0x68 /* 'h' */
#define BZ_HDR_0 0x30 /* '0' */
/*-- Constants for the back end. --*/
#define BZ_MAX_ALPHA_SIZE 258
#define BZ_MAX_CODE_LEN 23
#define BZ_RUNA 0
#define BZ_RUNB 1
#define BZ_N_GROUPS 6
#define BZ_G_SIZE 50
#define BZ_N_ITERS 4
#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
/*-- Stuff for randomising repetitive blocks. --*/
extern Int32 BZ2_rNums[512];
#define BZ_RAND_DECLS \
Int32 rNToGo; \
Int32 rTPos \
#define BZ_RAND_INIT_MASK \
s->rNToGo = 0; \
s->rTPos = 0 \
#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
#define BZ_RAND_UPD_MASK \
if (s->rNToGo == 0) { \
s->rNToGo = BZ2_rNums[s->rTPos]; \
s->rTPos++; \
if (s->rTPos == 512) s->rTPos = 0; \
} \
s->rNToGo--;
/*-- Stuff for doing CRCs. --*/
extern UInt32 BZ2_crc32Table[256];
#define BZ_INITIALISE_CRC(crcVar) \
{ \
crcVar = 0xffffffffL; \
}
#define BZ_FINALISE_CRC(crcVar) \
{ \
crcVar = ~(crcVar); \
}
#define BZ_UPDATE_CRC(crcVar,cha) \
{ \
crcVar = (crcVar << 8) ^ \
BZ2_crc32Table[(crcVar >> 24) ^ \
((UChar)cha)]; \
}
/*-- States and modes for compression. --*/
#define BZ_M_IDLE 1
#define BZ_M_RUNNING 2
#define BZ_M_FLUSHING 3
#define BZ_M_FINISHING 4
#define BZ_S_OUTPUT 1
#define BZ_S_INPUT 2
#define BZ_N_RADIX 2
#define BZ_N_QSORT 12
#define BZ_N_SHELL 18
#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
/*-- Structure holding all the compression-side stuff. --*/
typedef
struct {
/* pointer back to the struct bz_stream */
bz_stream* strm;
/* mode this stream is in, and whether inputting */
/* or outputting data */
Int32 mode;
Int32 state;
/* remembers avail_in when flush/finish requested */
UInt32 avail_in_expect;
/* for doing the block sorting */
UInt32* arr1;
UInt32* arr2;
UInt32* ftab;
Int32 origPtr;
/* aliases for arr1 and arr2 */
UInt32* ptr;
UChar* block;
UInt16* mtfv;
UChar* zbits;
/* for deciding when to use the fallback sorting algorithm */
Int32 workFactor;
/* run-length-encoding of the input */
UInt32 state_in_ch;
Int32 state_in_len;
BZ_RAND_DECLS;
/* input and output limits and current posns */
Int32 nblock;
Int32 nblockMAX;
Int32 numZ;
Int32 state_out_pos;
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
UChar unseqToSeq[256];
/* the buffer for bit stream creation */
UInt32 bsBuff;
Int32 bsLive;
/* block and combined CRCs */
UInt32 blockCRC;
UInt32 combinedCRC;
/* misc administratium */
Int32 verbosity;
Int32 blockNo;
Int32 blockSize100k;
/* stuff for coding the MTF values */
Int32 nMTF;
Int32 mtfFreq [BZ_MAX_ALPHA_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
/* second dimension: only 3 needed; 4 makes index calculations faster */
UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4];
}
EState;
/*-- externs for compression. --*/
extern void
BZ2_blockSort ( EState* );
extern void
BZ2_compressBlock ( EState*, Bool );
extern void
BZ2_bsInitWrite ( EState* );
extern void
BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
extern void
BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
/*-- states for decompression. --*/
#define BZ_X_IDLE 1
#define BZ_X_OUTPUT 2
#define BZ_X_MAGIC_1 10
#define BZ_X_MAGIC_2 11
#define BZ_X_MAGIC_3 12
#define BZ_X_MAGIC_4 13
#define BZ_X_BLKHDR_1 14
#define BZ_X_BLKHDR_2 15
#define BZ_X_BLKHDR_3 16
#define BZ_X_BLKHDR_4 17
#define BZ_X_BLKHDR_5 18
#define BZ_X_BLKHDR_6 19
#define BZ_X_BCRC_1 20
#define BZ_X_BCRC_2 21
#define BZ_X_BCRC_3 22
#define BZ_X_BCRC_4 23
#define BZ_X_RANDBIT 24
#define BZ_X_ORIGPTR_1 25
#define BZ_X_ORIGPTR_2 26
#define BZ_X_ORIGPTR_3 27
#define BZ_X_MAPPING_1 28
#define BZ_X_MAPPING_2 29
#define BZ_X_SELECTOR_1 30
#define BZ_X_SELECTOR_2 31
#define BZ_X_SELECTOR_3 32
#define BZ_X_CODING_1 33
#define BZ_X_CODING_2 34
#define BZ_X_CODING_3 35
#define BZ_X_MTF_1 36
#define BZ_X_MTF_2 37
#define BZ_X_MTF_3 38
#define BZ_X_MTF_4 39
#define BZ_X_MTF_5 40
#define BZ_X_MTF_6 41
#define BZ_X_ENDHDR_2 42
#define BZ_X_ENDHDR_3 43
#define BZ_X_ENDHDR_4 44
#define BZ_X_ENDHDR_5 45
#define BZ_X_ENDHDR_6 46
#define BZ_X_CCRC_1 47
#define BZ_X_CCRC_2 48
#define BZ_X_CCRC_3 49
#define BZ_X_CCRC_4 50
/*-- Constants for the fast MTF decoder. --*/
#define MTFA_SIZE 4096
#define MTFL_SIZE 16
/*-- Structure holding all the decompression-side stuff. --*/
typedef
struct {
/* pointer back to the struct bz_stream */
bz_stream* strm;
/* state indicator for this stream */
Int32 state;
/* for doing the final run-length decoding */
UChar state_out_ch;
Int32 state_out_len;
Bool blockRandomised;
BZ_RAND_DECLS;
/* the buffer for bit stream reading */
UInt32 bsBuff;
Int32 bsLive;
/* misc administratium */
Int32 blockSize100k;
Bool smallDecompress;
Int32 currBlockNo;
Int32 verbosity;
/* for undoing the Burrows-Wheeler transform */
Int32 origPtr;
UInt32 tPos;
Int32 k0;
Int32 unzftab[256];
Int32 nblock_used;
Int32 cftab[257];
Int32 cftabCopy[257];
/* for undoing the Burrows-Wheeler transform (FAST) */
UInt32 *tt;
/* for undoing the Burrows-Wheeler transform (SMALL) */
UInt16 *ll16;
UChar *ll4;
/* stored and calculated CRCs */
UInt32 storedBlockCRC;
UInt32 storedCombinedCRC;
UInt32 calculatedBlockCRC;
UInt32 calculatedCombinedCRC;
/* map of bytes used in block */
Int32 nInUse;
Bool inUse[256];
Bool inUse16[16];
UChar seqToUnseq[256];
/* for decoding the MTF values */
UChar mtfa [MTFA_SIZE];
Int32 mtfbase[256 / MTFL_SIZE];
UChar selector [BZ_MAX_SELECTORS];
UChar selectorMtf[BZ_MAX_SELECTORS];
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 minLens[BZ_N_GROUPS];
/* save area for scalars in the main decompress code */
Int32 save_i;
Int32 save_j;
Int32 save_t;
Int32 save_alphaSize;
Int32 save_nGroups;
Int32 save_nSelectors;
Int32 save_EOB;
Int32 save_groupNo;
Int32 save_groupPos;
Int32 save_nextSym;
Int32 save_nblockMAX;
Int32 save_nblock;
Int32 save_es;
Int32 save_N;
Int32 save_curr;
Int32 save_zt;
Int32 save_zn;
Int32 save_zvec;
Int32 save_zj;
Int32 save_gSel;
Int32 save_gMinlen;
Int32* save_gLimit;
Int32* save_gBase;
Int32* save_gPerm;
}
DState;
/*-- Macros for decompression. --*/
#define BZ_GET_FAST(cccc) \
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
s->tPos = s->tt[s->tPos]; \
cccc = (UChar)(s->tPos & 0xff); \
s->tPos >>= 8;
#define BZ_GET_FAST_C(cccc) \
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
c_tPos = c_tt[c_tPos]; \
cccc = (UChar)(c_tPos & 0xff); \
c_tPos >>= 8;
#define SET_LL4(i,n) \
{ if (((i) & 0x1) == 0) \
s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \
s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \
}
#define GET_LL4(i) \
((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
#define SET_LL(i,n) \
{ s->ll16[i] = (UInt16)(n & 0x0000ffff); \
SET_LL4(i, n >> 16); \
}
#define GET_LL(i) \
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
#define BZ_GET_SMALL(cccc) \
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
s->tPos = GET_LL(s->tPos);
/*-- externs for decompression. --*/
extern Int32
BZ2_indexIntoF ( Int32, Int32* );
extern Int32
BZ2_decompress ( DState* );
extern void
BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
Int32, Int32, Int32 );
#endif
/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
#ifdef BZ_NO_STDIO
#ifndef NULL
#define NULL 0
#endif
#endif
/*-------------------------------------------------------------*/
/*--- end bzlib_private.h ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,672 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Compression machinery (not incl block sorting) ---*/
/*--- compress.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
/* CHANGES
0.9.0 -- original version.
0.9.0a/b -- no changes in this file.
0.9.0c -- changed setting of nGroups in sendMTFValues()
so as to do a bit better on small files
*/
#include "bzlib_private.h"
/*---------------------------------------------------*/
/*--- Bit stream I/O ---*/
/*---------------------------------------------------*/
/*---------------------------------------------------*/
void BZ2_bsInitWrite ( EState* s )
{
s->bsLive = 0;
s->bsBuff = 0;
}
/*---------------------------------------------------*/
static
void bsFinishWrite ( EState* s )
{
while (s->bsLive > 0) {
s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
s->numZ++;
s->bsBuff <<= 8;
s->bsLive -= 8;
}
}
/*---------------------------------------------------*/
#define bsNEEDW(nz) \
{ \
while (s->bsLive >= 8) { \
s->zbits[s->numZ] \
= (UChar)(s->bsBuff >> 24); \
s->numZ++; \
s->bsBuff <<= 8; \
s->bsLive -= 8; \
} \
}
/*---------------------------------------------------*/
static
__inline__
void bsW ( EState* s, Int32 n, UInt32 v )
{
bsNEEDW ( n );
s->bsBuff |= (v << (32 - s->bsLive - n));
s->bsLive += n;
}
/*---------------------------------------------------*/
static
void bsPutUInt32 ( EState* s, UInt32 u )
{
bsW ( s, 8, (u >> 24) & 0xffL );
bsW ( s, 8, (u >> 16) & 0xffL );
bsW ( s, 8, (u >> 8) & 0xffL );
bsW ( s, 8, u & 0xffL );
}
/*---------------------------------------------------*/
static
void bsPutUChar ( EState* s, UChar c )
{
bsW( s, 8, (UInt32)c );
}
/*---------------------------------------------------*/
/*--- The back end proper ---*/
/*---------------------------------------------------*/
/*---------------------------------------------------*/
static
void makeMaps_e ( EState* s )
{
Int32 i;
s->nInUse = 0;
for (i = 0; i < 256; i++)
if (s->inUse[i]) {
s->unseqToSeq[i] = s->nInUse;
s->nInUse++;
}
}
/*---------------------------------------------------*/
static
void generateMTFValues ( EState* s )
{
UChar yy[256];
Int32 i, j;
Int32 zPend;
Int32 wr;
Int32 EOB;
/*
After sorting (eg, here),
s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
and
((UChar*)s->arr2) [ 0 .. s->nblock-1 ]
holds the original block data.
The first thing to do is generate the MTF values,
and put them in
((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
Because there are strictly fewer or equal MTF values
than block values, ptr values in this area are overwritten
with MTF values only when they are no longer needed.
The final compressed bitstream is generated into the
area starting at
(UChar*) (&((UChar*)s->arr2)[s->nblock])
These storage aliases are set up in bzCompressInit(),
except for the last one, which is arranged in
compressBlock().
*/
UInt32* ptr = s->ptr;
UChar* block = s->block;
UInt16* mtfv = s->mtfv;
makeMaps_e ( s );
EOB = s->nInUse+1;
for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
wr = 0;
zPend = 0;
for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
for (i = 0; i < s->nblock; i++) {
UChar ll_i;
AssertD ( wr <= i, "generateMTFValues(1)" );
j = ptr[i]-1; if (j < 0) j += s->nblock;
ll_i = s->unseqToSeq[block[j]];
AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
if (yy[0] == ll_i) {
zPend++;
} else {
if (zPend > 0) {
zPend--;
while (True) {
if (zPend & 1) {
mtfv[wr] = BZ_RUNB; wr++;
s->mtfFreq[BZ_RUNB]++;
} else {
mtfv[wr] = BZ_RUNA; wr++;
s->mtfFreq[BZ_RUNA]++;
}
if (zPend < 2) break;
zPend = (zPend - 2) / 2;
};
zPend = 0;
}
{
register UChar rtmp;
register UChar* ryy_j;
register UChar rll_i;
rtmp = yy[1];
yy[1] = yy[0];
ryy_j = &(yy[1]);
rll_i = ll_i;
while ( rll_i != rtmp ) {
register UChar rtmp2;
ryy_j++;
rtmp2 = rtmp;
rtmp = *ryy_j;
*ryy_j = rtmp2;
};
yy[0] = rtmp;
j = ryy_j - &(yy[0]);
mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
}
}
}
if (zPend > 0) {
zPend--;
while (True) {
if (zPend & 1) {
mtfv[wr] = BZ_RUNB; wr++;
s->mtfFreq[BZ_RUNB]++;
} else {
mtfv[wr] = BZ_RUNA; wr++;
s->mtfFreq[BZ_RUNA]++;
}
if (zPend < 2) break;
zPend = (zPend - 2) / 2;
};
zPend = 0;
}
mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
s->nMTF = wr;
}
/*---------------------------------------------------*/
#define BZ_LESSER_ICOST 0
#define BZ_GREATER_ICOST 15
static
void sendMTFValues ( EState* s )
{
Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
Int32 nGroups, nBytes;
/*--
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
is a global since the decoder also needs it.
Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
are also globals only used in this proc.
Made global to keep stack frame size small.
--*/
UInt16 cost[BZ_N_GROUPS];
Int32 fave[BZ_N_GROUPS];
UInt16* mtfv = s->mtfv;
if (s->verbosity >= 3)
VPrintf3( " %d in block, %d after MTF & 1-2 coding, "
"%d+2 syms in use\n",
s->nblock, s->nMTF, s->nInUse );
alphaSize = s->nInUse+2;
for (t = 0; t < BZ_N_GROUPS; t++)
for (v = 0; v < alphaSize; v++)
s->len[t][v] = BZ_GREATER_ICOST;
/*--- Decide how many coding tables to use ---*/
AssertH ( s->nMTF > 0, 3001 );
if (s->nMTF < 200) nGroups = 2; else
if (s->nMTF < 600) nGroups = 3; else
if (s->nMTF < 1200) nGroups = 4; else
if (s->nMTF < 2400) nGroups = 5; else
nGroups = 6;
/*--- Generate an initial set of coding tables ---*/
{
Int32 nPart, remF, tFreq, aFreq;
nPart = nGroups;
remF = s->nMTF;
gs = 0;
while (nPart > 0) {
tFreq = remF / nPart;
ge = gs-1;
aFreq = 0;
while (aFreq < tFreq && ge < alphaSize-1) {
ge++;
aFreq += s->mtfFreq[ge];
}
if (ge > gs
&& nPart != nGroups && nPart != 1
&& ((nGroups-nPart) % 2 == 1)) {
aFreq -= s->mtfFreq[ge];
ge--;
}
if (s->verbosity >= 3)
VPrintf5( " initial group %d, [%d .. %d], "
"has %d syms (%4.1f%%)\n",
nPart, gs, ge, aFreq,
(100.0 * (float)aFreq) / (float)(s->nMTF) );
for (v = 0; v < alphaSize; v++)
if (v >= gs && v <= ge)
s->len[nPart-1][v] = BZ_LESSER_ICOST; else
s->len[nPart-1][v] = BZ_GREATER_ICOST;
nPart--;
gs = ge+1;
remF -= aFreq;
}
}
/*---
Iterate up to BZ_N_ITERS times to improve the tables.
---*/
for (iter = 0; iter < BZ_N_ITERS; iter++) {
for (t = 0; t < nGroups; t++) fave[t] = 0;
for (t = 0; t < nGroups; t++)
for (v = 0; v < alphaSize; v++)
s->rfreq[t][v] = 0;
/*---
Set up an auxiliary length table which is used to fast-track
the common case (nGroups == 6).
---*/
if (nGroups == 6) {
for (v = 0; v < alphaSize; v++) {
s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
}
}
nSelectors = 0;
totc = 0;
gs = 0;
while (True) {
/*--- Set group start & end marks. --*/
if (gs >= s->nMTF) break;
ge = gs + BZ_G_SIZE - 1;
if (ge >= s->nMTF) ge = s->nMTF-1;
/*--
Calculate the cost of this group as coded
by each of the coding tables.
--*/
for (t = 0; t < nGroups; t++) cost[t] = 0;
if (nGroups == 6 && 50 == ge-gs+1) {
/*--- fast track the common case ---*/
register UInt32 cost01, cost23, cost45;
register UInt16 icv;
cost01 = cost23 = cost45 = 0;
# define BZ_ITER(nn) \
icv = mtfv[gs+(nn)]; \
cost01 += s->len_pack[icv][0]; \
cost23 += s->len_pack[icv][1]; \
cost45 += s->len_pack[icv][2]; \
BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4);
BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9);
BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
# undef BZ_ITER
cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
} else {
/*--- slow version which correctly handles all situations ---*/
for (i = gs; i <= ge; i++) {
UInt16 icv = mtfv[i];
for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
}
}
/*--
Find the coding table which is best for this group,
and record its identity in the selector table.
--*/
bc = 999999999; bt = -1;
for (t = 0; t < nGroups; t++)
if (cost[t] < bc) { bc = cost[t]; bt = t; };
totc += bc;
fave[bt]++;
s->selector[nSelectors] = bt;
nSelectors++;
/*--
Increment the symbol frequencies for the selected table.
--*/
if (nGroups == 6 && 50 == ge-gs+1) {
/*--- fast track the common case ---*/
# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4);
BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9);
BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
# undef BZ_ITUR
} else {
/*--- slow version which correctly handles all situations ---*/
for (i = gs; i <= ge; i++)
s->rfreq[bt][ mtfv[i] ]++;
}
gs = ge+1;
}
if (s->verbosity >= 3) {
VPrintf2 ( " pass %d: size is %d, grp uses are ",
iter+1, totc/8 );
for (t = 0; t < nGroups; t++)
VPrintf1 ( "%d ", fave[t] );
VPrintf0 ( "\n" );
}
/*--
Recompute the tables based on the accumulated frequencies.
--*/
/* maxLen was changed from 20 to 17 in bzip2-1.0.3. See
comment in huffman.c for details. */
for (t = 0; t < nGroups; t++)
BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]),
alphaSize, 17 /*20*/ );
}
AssertH( nGroups < 8, 3002 );
AssertH( nSelectors < 32768 &&
nSelectors <= (2 + (900000 / BZ_G_SIZE)),
3003 );
/*--- Compute MTF values for the selectors. ---*/
{
UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
for (i = 0; i < nGroups; i++) pos[i] = i;
for (i = 0; i < nSelectors; i++) {
ll_i = s->selector[i];
j = 0;
tmp = pos[j];
while ( ll_i != tmp ) {
j++;
tmp2 = tmp;
tmp = pos[j];
pos[j] = tmp2;
};
pos[0] = tmp;
s->selectorMtf[i] = j;
}
};
/*--- Assign actual codes for the tables. --*/
for (t = 0; t < nGroups; t++) {
minLen = 32;
maxLen = 0;
for (i = 0; i < alphaSize; i++) {
if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
if (s->len[t][i] < minLen) minLen = s->len[t][i];
}
AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
AssertH ( !(minLen < 1), 3005 );
BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]),
minLen, maxLen, alphaSize );
}
/*--- Transmit the mapping table. ---*/
{
Bool inUse16[16];
for (i = 0; i < 16; i++) {
inUse16[i] = False;
for (j = 0; j < 16; j++)
if (s->inUse[i * 16 + j]) inUse16[i] = True;
}
nBytes = s->numZ;
for (i = 0; i < 16; i++)
if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
for (i = 0; i < 16; i++)
if (inUse16[i])
for (j = 0; j < 16; j++) {
if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
}
if (s->verbosity >= 3)
VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes );
}
/*--- Now the selectors. ---*/
nBytes = s->numZ;
bsW ( s, 3, nGroups );
bsW ( s, 15, nSelectors );
for (i = 0; i < nSelectors; i++) {
for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
bsW(s,1,0);
}
if (s->verbosity >= 3)
VPrintf1( "selectors %d, ", s->numZ-nBytes );
/*--- Now the coding tables. ---*/
nBytes = s->numZ;
for (t = 0; t < nGroups; t++) {
Int32 curr = s->len[t][0];
bsW ( s, 5, curr );
for (i = 0; i < alphaSize; i++) {
while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
bsW ( s, 1, 0 );
}
}
if (s->verbosity >= 3)
VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
/*--- And finally, the block data proper ---*/
nBytes = s->numZ;
selCtr = 0;
gs = 0;
while (True) {
if (gs >= s->nMTF) break;
ge = gs + BZ_G_SIZE - 1;
if (ge >= s->nMTF) ge = s->nMTF-1;
AssertH ( s->selector[selCtr] < nGroups, 3006 );
if (nGroups == 6 && 50 == ge-gs+1) {
/*--- fast track the common case ---*/
UInt16 mtfv_i;
UChar* s_len_sel_selCtr
= &(s->len[s->selector[selCtr]][0]);
Int32* s_code_sel_selCtr
= &(s->code[s->selector[selCtr]][0]);
# define BZ_ITAH(nn) \
mtfv_i = mtfv[gs+(nn)]; \
bsW ( s, \
s_len_sel_selCtr[mtfv_i], \
s_code_sel_selCtr[mtfv_i] )
BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4);
BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9);
BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
# undef BZ_ITAH
} else {
/*--- slow version which correctly handles all situations ---*/
for (i = gs; i <= ge; i++) {
bsW ( s,
s->len [s->selector[selCtr]] [mtfv[i]],
s->code [s->selector[selCtr]] [mtfv[i]] );
}
}
gs = ge+1;
selCtr++;
}
AssertH( selCtr == nSelectors, 3007 );
if (s->verbosity >= 3)
VPrintf1( "codes %d\n", s->numZ-nBytes );
}
/*---------------------------------------------------*/
void BZ2_compressBlock ( EState* s, Bool is_last_block )
{
if (s->nblock > 0) {
BZ_FINALISE_CRC ( s->blockCRC );
s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
s->combinedCRC ^= s->blockCRC;
if (s->blockNo > 1) s->numZ = 0;
if (s->verbosity >= 2)
VPrintf4( " block %d: crc = 0x%08x, "
"combined CRC = 0x%08x, size = %d\n",
s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
BZ2_blockSort ( s );
}
s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
/*-- If this is the first block, create the stream header. --*/
if (s->blockNo == 1) {
BZ2_bsInitWrite ( s );
bsPutUChar ( s, BZ_HDR_B );
bsPutUChar ( s, BZ_HDR_Z );
bsPutUChar ( s, BZ_HDR_h );
bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) );
}
if (s->nblock > 0) {
bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
/*-- Now the block's CRC, so it is in a known place. --*/
bsPutUInt32 ( s, s->blockCRC );
/*--
Now a single bit indicating (non-)randomisation.
As of version 0.9.5, we use a better sorting algorithm
which makes randomisation unnecessary. So always set
the randomised bit to 'no'. Of course, the decoder
still needs to be able to handle randomised blocks
so as to maintain backwards compatibility with
older versions of bzip2.
--*/
bsW(s,1,0);
bsW ( s, 24, s->origPtr );
generateMTFValues ( s );
sendMTFValues ( s );
}
/*-- If this is the last block, add the stream trailer. --*/
if (is_last_block) {
bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
bsPutUInt32 ( s, s->combinedCRC );
if (s->verbosity >= 2)
VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC );
bsFinishWrite ( s );
}
}
/*-------------------------------------------------------------*/
/*--- end compress.c ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,104 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Table for doing CRCs ---*/
/*--- crctable.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#include "bzlib_private.h"
/*--
I think this is an implementation of the AUTODIN-II,
Ethernet & FDDI 32-bit CRC standard. Vaguely derived
from code by Rob Warnock, in Section 51 of the
comp.compression FAQ.
--*/
UInt32 BZ2_crc32Table[256] = {
/*-- Ugly, innit? --*/
0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
};
/*-------------------------------------------------------------*/
/*--- end crctable.c ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,646 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Decompression machinery ---*/
/*--- decompress.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#include "bzlib_private.h"
/*---------------------------------------------------*/
static
void makeMaps_d ( DState* s )
{
Int32 i;
s->nInUse = 0;
for (i = 0; i < 256; i++)
if (s->inUse[i]) {
s->seqToUnseq[s->nInUse] = i;
s->nInUse++;
}
}
/*---------------------------------------------------*/
#define RETURN(rrr) \
{ retVal = rrr; goto save_state_and_return; };
#define GET_BITS(lll,vvv,nnn) \
case lll: s->state = lll; \
while (True) { \
if (s->bsLive >= nnn) { \
UInt32 v; \
v = (s->bsBuff >> \
(s->bsLive-nnn)) & ((1 << nnn)-1); \
s->bsLive -= nnn; \
vvv = v; \
break; \
} \
if (s->strm->avail_in == 0) RETURN(BZ_OK); \
s->bsBuff \
= (s->bsBuff << 8) | \
((UInt32) \
(*((UChar*)(s->strm->next_in)))); \
s->bsLive += 8; \
s->strm->next_in++; \
s->strm->avail_in--; \
s->strm->total_in_lo32++; \
if (s->strm->total_in_lo32 == 0) \
s->strm->total_in_hi32++; \
}
#define GET_UCHAR(lll,uuu) \
GET_BITS(lll,uuu,8)
#define GET_BIT(lll,uuu) \
GET_BITS(lll,uuu,1)
/*---------------------------------------------------*/
#define GET_MTF_VAL(label1,label2,lval) \
{ \
if (groupPos == 0) { \
groupNo++; \
if (groupNo >= nSelectors) \
RETURN(BZ_DATA_ERROR); \
groupPos = BZ_G_SIZE; \
gSel = s->selector[groupNo]; \
gMinlen = s->minLens[gSel]; \
gLimit = &(s->limit[gSel][0]); \
gPerm = &(s->perm[gSel][0]); \
gBase = &(s->base[gSel][0]); \
} \
groupPos--; \
zn = gMinlen; \
GET_BITS(label1, zvec, zn); \
while (1) { \
if (zn > 20 /* the longest code */) \
RETURN(BZ_DATA_ERROR); \
if (zvec <= gLimit[zn]) break; \
zn++; \
GET_BIT(label2, zj); \
zvec = (zvec << 1) | zj; \
}; \
if (zvec - gBase[zn] < 0 \
|| zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \
RETURN(BZ_DATA_ERROR); \
lval = gPerm[zvec - gBase[zn]]; \
}
/*---------------------------------------------------*/
Int32 BZ2_decompress ( DState* s )
{
UChar uc;
Int32 retVal;
Int32 minLen, maxLen;
bz_stream* strm = s->strm;
/* stuff that needs to be saved/restored */
Int32 i;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
if (s->state == BZ_X_MAGIC_1) {
/*initialise the save area*/
s->save_i = 0;
s->save_j = 0;
s->save_t = 0;
s->save_alphaSize = 0;
s->save_nGroups = 0;
s->save_nSelectors = 0;
s->save_EOB = 0;
s->save_groupNo = 0;
s->save_groupPos = 0;
s->save_nextSym = 0;
s->save_nblockMAX = 0;
s->save_nblock = 0;
s->save_es = 0;
s->save_N = 0;
s->save_curr = 0;
s->save_zt = 0;
s->save_zn = 0;
s->save_zvec = 0;
s->save_zj = 0;
s->save_gSel = 0;
s->save_gMinlen = 0;
s->save_gLimit = NULL;
s->save_gBase = NULL;
s->save_gPerm = NULL;
}
/*restore from the save area*/
i = s->save_i;
j = s->save_j;
t = s->save_t;
alphaSize = s->save_alphaSize;
nGroups = s->save_nGroups;
nSelectors = s->save_nSelectors;
EOB = s->save_EOB;
groupNo = s->save_groupNo;
groupPos = s->save_groupPos;
nextSym = s->save_nextSym;
nblockMAX = s->save_nblockMAX;
nblock = s->save_nblock;
es = s->save_es;
N = s->save_N;
curr = s->save_curr;
zt = s->save_zt;
zn = s->save_zn;
zvec = s->save_zvec;
zj = s->save_zj;
gSel = s->save_gSel;
gMinlen = s->save_gMinlen;
gLimit = s->save_gLimit;
gBase = s->save_gBase;
gPerm = s->save_gPerm;
retVal = BZ_OK;
switch (s->state) {
GET_UCHAR(BZ_X_MAGIC_1, uc);
if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
GET_UCHAR(BZ_X_MAGIC_2, uc);
if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
GET_UCHAR(BZ_X_MAGIC_3, uc)
if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
if (s->blockSize100k < (BZ_HDR_0 + 1) ||
s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
s->blockSize100k -= BZ_HDR_0;
if (s->smallDecompress) {
s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
s->ll4 = BZALLOC(
((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
);
if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
} else {
s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
}
GET_UCHAR(BZ_X_BLKHDR_1, uc);
if (uc == 0x17) goto endhdr_2;
if (uc != 0x31) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_2, uc);
if (uc != 0x41) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_3, uc);
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_4, uc);
if (uc != 0x26) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_5, uc);
if (uc != 0x53) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_BLKHDR_6, uc);
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
s->currBlockNo++;
if (s->verbosity >= 2)
VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo );
s->storedBlockCRC = 0;
GET_UCHAR(BZ_X_BCRC_1, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_2, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_3, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_BCRC_4, uc);
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
s->origPtr = 0;
GET_UCHAR(BZ_X_ORIGPTR_1, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
GET_UCHAR(BZ_X_ORIGPTR_2, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
GET_UCHAR(BZ_X_ORIGPTR_3, uc);
s->origPtr = (s->origPtr << 8) | ((Int32)uc);
if (s->origPtr < 0)
RETURN(BZ_DATA_ERROR);
if (s->origPtr > 10 + 100000*s->blockSize100k)
RETURN(BZ_DATA_ERROR);
/*--- Receive the mapping table ---*/
for (i = 0; i < 16; i++) {
GET_BIT(BZ_X_MAPPING_1, uc);
if (uc == 1)
s->inUse16[i] = True; else
s->inUse16[i] = False;
}
for (i = 0; i < 256; i++) s->inUse[i] = False;
for (i = 0; i < 16; i++)
if (s->inUse16[i])
for (j = 0; j < 16; j++) {
GET_BIT(BZ_X_MAPPING_2, uc);
if (uc == 1) s->inUse[i * 16 + j] = True;
}
makeMaps_d ( s );
if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
alphaSize = s->nInUse+2;
/*--- Now the selectors ---*/
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
for (i = 0; i < nSelectors; i++) {
j = 0;
while (True) {
GET_BIT(BZ_X_SELECTOR_3, uc);
if (uc == 0) break;
j++;
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
}
s->selectorMtf[i] = j;
}
/*--- Undo the MTF values for the selectors. ---*/
{
UChar pos[BZ_N_GROUPS], tmp, v;
for (v = 0; v < nGroups; v++) pos[v] = v;
for (i = 0; i < nSelectors; i++) {
v = s->selectorMtf[i];
tmp = pos[v];
while (v > 0) { pos[v] = pos[v-1]; v--; }
pos[0] = tmp;
s->selector[i] = tmp;
}
}
/*--- Now the coding tables ---*/
for (t = 0; t < nGroups; t++) {
GET_BITS(BZ_X_CODING_1, curr, 5);
for (i = 0; i < alphaSize; i++) {
while (True) {
if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
GET_BIT(BZ_X_CODING_2, uc);
if (uc == 0) break;
GET_BIT(BZ_X_CODING_3, uc);
if (uc == 0) curr++; else curr--;
}
s->len[t][i] = curr;
}
}
/*--- Create the Huffman decoding tables ---*/
for (t = 0; t < nGroups; t++) {
minLen = 32;
maxLen = 0;
for (i = 0; i < alphaSize; i++) {
if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
if (s->len[t][i] < minLen) minLen = s->len[t][i];
}
BZ2_hbCreateDecodeTables (
&(s->limit[t][0]),
&(s->base[t][0]),
&(s->perm[t][0]),
&(s->len[t][0]),
minLen, maxLen, alphaSize
);
s->minLens[t] = minLen;
}
/*--- Now the MTF values ---*/
EOB = s->nInUse+1;
nblockMAX = 100000 * s->blockSize100k;
groupNo = -1;
groupPos = 0;
for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
/*-- MTF init --*/
{
Int32 ii, jj, kk;
kk = MTFA_SIZE-1;
for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
kk--;
}
s->mtfbase[ii] = kk + 1;
}
}
/*-- end MTF init --*/
nblock = 0;
GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
while (True) {
if (nextSym == EOB) break;
if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
es = -1;
N = 1;
do {
/* Check that N doesn't get too big, so that es doesn't
go negative. The maximum value that can be
RUNA/RUNB encoded is equal to the block size (post
the initial RLE), viz, 900k, so bounding N at 2
million should guard against overflow without
rejecting any legitimate inputs. */
if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
N = N * 2;
GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
}
while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
es++;
uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
s->unzftab[uc] += es;
if (s->smallDecompress)
while (es > 0) {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
s->ll16[nblock] = (UInt16)uc;
nblock++;
es--;
}
else
while (es > 0) {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
s->tt[nblock] = (UInt32)uc;
nblock++;
es--;
};
continue;
} else {
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
/*-- uc = MTF ( nextSym-1 ) --*/
{
Int32 ii, jj, kk, pp, lno, off;
UInt32 nn;
nn = (UInt32)(nextSym - 1);
if (nn < MTFL_SIZE) {
/* avoid general-case expense */
pp = s->mtfbase[0];
uc = s->mtfa[pp+nn];
while (nn > 3) {
Int32 z = pp+nn;
s->mtfa[(z) ] = s->mtfa[(z)-1];
s->mtfa[(z)-1] = s->mtfa[(z)-2];
s->mtfa[(z)-2] = s->mtfa[(z)-3];
s->mtfa[(z)-3] = s->mtfa[(z)-4];
nn -= 4;
}
while (nn > 0) {
s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--;
};
s->mtfa[pp] = uc;
} else {
/* general case */
lno = nn / MTFL_SIZE;
off = nn % MTFL_SIZE;
pp = s->mtfbase[lno] + off;
uc = s->mtfa[pp];
while (pp > s->mtfbase[lno]) {
s->mtfa[pp] = s->mtfa[pp-1]; pp--;
};
s->mtfbase[lno]++;
while (lno > 0) {
s->mtfbase[lno]--;
s->mtfa[s->mtfbase[lno]]
= s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
lno--;
}
s->mtfbase[0]--;
s->mtfa[s->mtfbase[0]] = uc;
if (s->mtfbase[0] == 0) {
kk = MTFA_SIZE-1;
for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
kk--;
}
s->mtfbase[ii] = kk + 1;
}
}
}
}
/*-- end uc = MTF ( nextSym-1 ) --*/
s->unzftab[s->seqToUnseq[uc]]++;
if (s->smallDecompress)
s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]);
nblock++;
GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
continue;
}
}
/* Now we know what nblock is, we can do a better sanity
check on s->origPtr.
*/
if (s->origPtr < 0 || s->origPtr >= nblock)
RETURN(BZ_DATA_ERROR);
/*-- Set up cftab to facilitate generation of T^(-1) --*/
/* Check: unzftab entries in range. */
for (i = 0; i <= 255; i++) {
if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
RETURN(BZ_DATA_ERROR);
}
/* Actually generate cftab. */
s->cftab[0] = 0;
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
/* Check: cftab entries in range. */
for (i = 0; i <= 256; i++) {
if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
/* s->cftab[i] can legitimately be == nblock */
RETURN(BZ_DATA_ERROR);
}
}
/* Check: cftab entries non-descending. */
for (i = 1; i <= 256; i++) {
if (s->cftab[i-1] > s->cftab[i]) {
RETURN(BZ_DATA_ERROR);
}
}
s->state_out_len = 0;
s->state_out_ch = 0;
BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
s->state = BZ_X_OUTPUT;
if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
if (s->smallDecompress) {
/*-- Make a copy of cftab, used in generation of T --*/
for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
/*-- compute the T vector --*/
for (i = 0; i < nblock; i++) {
uc = (UChar)(s->ll16[i]);
SET_LL(i, s->cftabCopy[uc]);
s->cftabCopy[uc]++;
}
/*-- Compute T^(-1) by pointer reversal on T --*/
i = s->origPtr;
j = GET_LL(i);
do {
Int32 tmp = GET_LL(j);
SET_LL(j, i);
i = j;
j = tmp;
}
while (i != s->origPtr);
s->tPos = s->origPtr;
s->nblock_used = 0;
if (s->blockRandomised) {
BZ_RAND_INIT_MASK;
BZ_GET_SMALL(s->k0); s->nblock_used++;
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
} else {
BZ_GET_SMALL(s->k0); s->nblock_used++;
}
} else {
/*-- compute the T^(-1) vector --*/
for (i = 0; i < nblock; i++) {
uc = (UChar)(s->tt[i] & 0xff);
s->tt[s->cftab[uc]] |= (i << 8);
s->cftab[uc]++;
}
s->tPos = s->tt[s->origPtr] >> 8;
s->nblock_used = 0;
if (s->blockRandomised) {
BZ_RAND_INIT_MASK;
BZ_GET_FAST(s->k0); s->nblock_used++;
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
} else {
BZ_GET_FAST(s->k0); s->nblock_used++;
}
}
RETURN(BZ_OK);
endhdr_2:
GET_UCHAR(BZ_X_ENDHDR_2, uc);
if (uc != 0x72) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_3, uc);
if (uc != 0x45) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_4, uc);
if (uc != 0x38) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_5, uc);
if (uc != 0x50) RETURN(BZ_DATA_ERROR);
GET_UCHAR(BZ_X_ENDHDR_6, uc);
if (uc != 0x90) RETURN(BZ_DATA_ERROR);
s->storedCombinedCRC = 0;
GET_UCHAR(BZ_X_CCRC_1, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_2, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_3, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
GET_UCHAR(BZ_X_CCRC_4, uc);
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
s->state = BZ_X_IDLE;
RETURN(BZ_STREAM_END);
default: AssertH ( False, 4001 );
}
AssertH ( False, 4002 );
save_state_and_return:
s->save_i = i;
s->save_j = j;
s->save_t = t;
s->save_alphaSize = alphaSize;
s->save_nGroups = nGroups;
s->save_nSelectors = nSelectors;
s->save_EOB = EOB;
s->save_groupNo = groupNo;
s->save_groupPos = groupPos;
s->save_nextSym = nextSym;
s->save_nblockMAX = nblockMAX;
s->save_nblock = nblock;
s->save_es = es;
s->save_N = N;
s->save_curr = curr;
s->save_zt = zt;
s->save_zn = zn;
s->save_zvec = zvec;
s->save_zj = zj;
s->save_gSel = gSel;
s->save_gMinlen = gMinlen;
s->save_gLimit = gLimit;
s->save_gBase = gBase;
s->save_gPerm = gPerm;
return retVal;
}
/*-------------------------------------------------------------*/
/*--- end decompress.c ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,205 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Huffman coding low-level stuff ---*/
/*--- huffman.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#include "bzlib_private.h"
/*---------------------------------------------------*/
#define WEIGHTOF(zz0) ((zz0) & 0xffffff00)
#define DEPTHOF(zz1) ((zz1) & 0x000000ff)
#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
#define ADDWEIGHTS(zw1,zw2) \
(WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \
(1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
#define UPHEAP(z) \
{ \
Int32 zz, tmp; \
zz = z; tmp = heap[zz]; \
while (weight[tmp] < weight[heap[zz >> 1]]) { \
heap[zz] = heap[zz >> 1]; \
zz >>= 1; \
} \
heap[zz] = tmp; \
}
#define DOWNHEAP(z) \
{ \
Int32 zz, yy, tmp; \
zz = z; tmp = heap[zz]; \
while (True) { \
yy = zz << 1; \
if (yy > nHeap) break; \
if (yy < nHeap && \
weight[heap[yy+1]] < weight[heap[yy]]) \
yy++; \
if (weight[tmp] < weight[heap[yy]]) break; \
heap[zz] = heap[yy]; \
zz = yy; \
} \
heap[zz] = tmp; \
}
/*---------------------------------------------------*/
void BZ2_hbMakeCodeLengths ( UChar *len,
Int32 *freq,
Int32 alphaSize,
Int32 maxLen )
{
/*--
Nodes and heap entries run from 1. Entry 0
for both the heap and nodes is a sentinel.
--*/
Int32 nNodes, nHeap, n1, n2, i, j, k;
Bool tooLong;
Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ];
Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ];
for (i = 0; i < alphaSize; i++)
weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
while (True) {
nNodes = alphaSize;
nHeap = 0;
heap[0] = 0;
weight[0] = 0;
parent[0] = -2;
for (i = 1; i <= alphaSize; i++) {
parent[i] = -1;
nHeap++;
heap[nHeap] = i;
UPHEAP(nHeap);
}
AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
while (nHeap > 1) {
n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
nNodes++;
parent[n1] = parent[n2] = nNodes;
weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
parent[nNodes] = -1;
nHeap++;
heap[nHeap] = nNodes;
UPHEAP(nHeap);
}
AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
tooLong = False;
for (i = 1; i <= alphaSize; i++) {
j = 0;
k = i;
while (parent[k] >= 0) { k = parent[k]; j++; }
len[i-1] = j;
if (j > maxLen) tooLong = True;
}
if (! tooLong) break;
/* 17 Oct 04: keep-going condition for the following loop used
to be 'i < alphaSize', which missed the last element,
theoretically leading to the possibility of the compressor
looping. However, this count-scaling step is only needed if
one of the generated Huffman code words is longer than
maxLen, which up to and including version 1.0.2 was 20 bits,
which is extremely unlikely. In version 1.0.3 maxLen was
changed to 17 bits, which has minimal effect on compression
ratio, but does mean this scaling step is used from time to
time, enough to verify that it works.
This means that bzip2-1.0.3 and later will only produce
Huffman codes with a maximum length of 17 bits. However, in
order to preserve backwards compatibility with bitstreams
produced by versions pre-1.0.3, the decompressor must still
handle lengths of up to 20. */
for (i = 1; i <= alphaSize; i++) {
j = weight[i] >> 8;
j = 1 + (j / 2);
weight[i] = j << 8;
}
}
}
/*---------------------------------------------------*/
void BZ2_hbAssignCodes ( Int32 *code,
UChar *length,
Int32 minLen,
Int32 maxLen,
Int32 alphaSize )
{
Int32 n, vec, i;
vec = 0;
for (n = minLen; n <= maxLen; n++) {
for (i = 0; i < alphaSize; i++)
if (length[i] == n) { code[i] = vec; vec++; };
vec <<= 1;
}
}
/*---------------------------------------------------*/
void BZ2_hbCreateDecodeTables ( Int32 *limit,
Int32 *base,
Int32 *perm,
UChar *length,
Int32 minLen,
Int32 maxLen,
Int32 alphaSize )
{
Int32 pp, i, j, vec;
pp = 0;
for (i = minLen; i <= maxLen; i++)
for (j = 0; j < alphaSize; j++)
if (length[j] == i) { perm[pp] = j; pp++; };
for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
vec = 0;
for (i = minLen; i <= maxLen; i++) {
vec += (base[i+1] - base[i]);
limit[i] = vec-1;
vec <<= 1;
}
for (i = minLen + 1; i <= maxLen; i++)
base[i] = ((limit[i-1] + 1) << 1) - base[i];
}
/*-------------------------------------------------------------*/
/*--- end huffman.c ---*/
/*-------------------------------------------------------------*/

View File

@@ -1,84 +0,0 @@
/*-------------------------------------------------------------*/
/*--- Table for randomising repetitive blocks ---*/
/*--- randtable.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2, a program and library for
lossless, block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Please read the WARNING, DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#include "bzlib_private.h"
/*---------------------------------------------*/
Int32 BZ2_rNums[512] = {
619, 720, 127, 481, 931, 816, 813, 233, 566, 247,
985, 724, 205, 454, 863, 491, 741, 242, 949, 214,
733, 859, 335, 708, 621, 574, 73, 654, 730, 472,
419, 436, 278, 496, 867, 210, 399, 680, 480, 51,
878, 465, 811, 169, 869, 675, 611, 697, 867, 561,
862, 687, 507, 283, 482, 129, 807, 591, 733, 623,
150, 238, 59, 379, 684, 877, 625, 169, 643, 105,
170, 607, 520, 932, 727, 476, 693, 425, 174, 647,
73, 122, 335, 530, 442, 853, 695, 249, 445, 515,
909, 545, 703, 919, 874, 474, 882, 500, 594, 612,
641, 801, 220, 162, 819, 984, 589, 513, 495, 799,
161, 604, 958, 533, 221, 400, 386, 867, 600, 782,
382, 596, 414, 171, 516, 375, 682, 485, 911, 276,
98, 553, 163, 354, 666, 933, 424, 341, 533, 870,
227, 730, 475, 186, 263, 647, 537, 686, 600, 224,
469, 68, 770, 919, 190, 373, 294, 822, 808, 206,
184, 943, 795, 384, 383, 461, 404, 758, 839, 887,
715, 67, 618, 276, 204, 918, 873, 777, 604, 560,
951, 160, 578, 722, 79, 804, 96, 409, 713, 940,
652, 934, 970, 447, 318, 353, 859, 672, 112, 785,
645, 863, 803, 350, 139, 93, 354, 99, 820, 908,
609, 772, 154, 274, 580, 184, 79, 626, 630, 742,
653, 282, 762, 623, 680, 81, 927, 626, 789, 125,
411, 521, 938, 300, 821, 78, 343, 175, 128, 250,
170, 774, 972, 275, 999, 639, 495, 78, 352, 126,
857, 956, 358, 619, 580, 124, 737, 594, 701, 612,
669, 112, 134, 694, 363, 992, 809, 743, 168, 974,
944, 375, 748, 52, 600, 747, 642, 182, 862, 81,
344, 805, 988, 739, 511, 655, 814, 334, 249, 515,
897, 955, 664, 981, 649, 113, 974, 459, 893, 228,
433, 837, 553, 268, 926, 240, 102, 654, 459, 51,
686, 754, 806, 760, 493, 403, 415, 394, 687, 700,
946, 670, 656, 610, 738, 392, 760, 799, 887, 653,
978, 321, 576, 617, 626, 502, 894, 679, 243, 440,
680, 879, 194, 572, 640, 724, 926, 56, 204, 700,
707, 151, 457, 449, 797, 195, 791, 558, 945, 679,
297, 59, 87, 824, 713, 663, 412, 693, 342, 606,
134, 108, 571, 364, 631, 212, 174, 643, 304, 329,
343, 97, 430, 751, 497, 314, 983, 374, 822, 928,
140, 206, 73, 263, 980, 736, 876, 478, 430, 305,
170, 514, 364, 692, 829, 82, 855, 953, 676, 246,
369, 970, 294, 750, 807, 827, 150, 790, 288, 923,
804, 378, 215, 828, 592, 281, 565, 555, 710, 82,
896, 831, 547, 261, 524, 462, 293, 465, 502, 56,
661, 821, 976, 991, 658, 869, 905, 758, 745, 193,
768, 550, 608, 933, 378, 286, 215, 979, 792, 961,
61, 688, 793, 644, 986, 403, 106, 366, 905, 644,
372, 567, 466, 434, 645, 210, 389, 550, 919, 135,
780, 773, 635, 389, 707, 100, 626, 958, 165, 504,
920, 176, 193, 713, 857, 265, 203, 50, 668, 108,
645, 990, 626, 197, 510, 357, 358, 850, 858, 364,
936, 638
};
/*-------------------------------------------------------------*/
/*--- end randtable.c ---*/
/*-------------------------------------------------------------*/

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}</ProjectGuid>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization Condition="$(Configuration.Contains(Release))">true</WholeProgramOptimization>
<UseDebugLibraries Condition="$(Configuration.Contains(Debug))">true</UseDebugLibraries>
<UseDebugLibraries Condition="!$(Configuration.Contains(Debug))">false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="PropertySheets">
<Import Project="$(SolutionDir)3rdparty\DefaultProjectRootDir.props" />
<Import Project="$(SolutionDir)3rdparty\3rdparty.props" />
<Import Condition="$(Configuration.Contains(Debug))" Project="$(SolutionDir)common\vsprops\CodeGen_Debug.props" />
<Import Condition="$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\CodeGen_Release.props" />
<Import Condition="!$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\IncrementalLinking.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>..\..\include;$(SolutionDir)3rdparty\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions Condition="!$(Configuration.Contains(Debug))">_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;FT2_BUILD_LIBRARY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="$(Configuration.Contains(Debug))">_CRT_SECURE_NO_WARNINGS;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE;FT2_BUILD_LIBRARY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<DisableSpecificWarnings>4001</DisableSpecificWarnings>
</ClCompile>
<Lib>
<TargetMachine Condition="'$(Platform)'=='Win32'">MachineX86</TargetMachine>
<TargetMachine Condition="'$(Platform)'=='x64'">MachineX64</TargetMachine>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\src\autofit\autofit.c" />
<ClCompile Include="..\..\src\bdf\bdf.c" />
<ClCompile Include="..\..\src\cff\cff.c" />
<ClCompile Include="..\..\src\base\ftbase.c" />
<ClCompile Include="..\..\src\base\ftbitmap.c" />
<ClCompile Include="..\..\src\cache\ftcache.c" />
<ClCompile Include="ftdebug.c" />
<ClCompile Include="..\..\src\base\ftfstype.c" />
<ClCompile Include="..\..\src\base\ftgasp.c" />
<ClCompile Include="..\..\src\base\ftglyph.c" />
<ClCompile Include="..\..\src\gzip\ftgzip.c" />
<ClCompile Include="..\..\src\base\ftinit.c" />
<ClCompile Include="..\..\src\lzw\ftlzw.c" />
<ClCompile Include="..\..\src\base\ftstroke.c" />
<ClCompile Include="..\..\src\base\ftsystem.c" />
<ClCompile Include="..\..\src\smooth\smooth.c" />
<ClCompile Include="..\..\src\base\ftbbox.c" />
<ClCompile Include="..\..\src\base\ftfntfmt.c" />
<ClCompile Include="..\..\src\base\ftmm.c" />
<ClCompile Include="..\..\src\base\ftpfr.c" />
<ClCompile Include="..\..\src\base\ftsynth.c" />
<ClCompile Include="..\..\src\base\fttype1.c" />
<ClCompile Include="..\..\src\base\ftwinfnt.c" />
<ClCompile Include="..\..\src\base\ftlcdfil.c" />
<ClCompile Include="..\..\src\base\ftgxval.c" />
<ClCompile Include="..\..\src\base\ftotval.c" />
<ClCompile Include="..\..\src\base\ftpatent.c" />
<ClCompile Include="..\..\src\pcf\pcf.c" />
<ClCompile Include="..\..\src\pfr\pfr.c" />
<ClCompile Include="..\..\src\psaux\psaux.c" />
<ClCompile Include="..\..\src\pshinter\pshinter.c" />
<ClCompile Include="..\..\src\psnames\psmodule.c" />
<ClCompile Include="..\..\src\raster\raster.c" />
<ClCompile Include="..\..\src\sfnt\sfnt.c" />
<ClCompile Include="..\..\src\truetype\truetype.c" />
<ClCompile Include="..\..\src\type1\type1.c" />
<ClCompile Include="..\..\src\cid\type1cid.c" />
<ClCompile Include="..\..\src\type42\type42.c" />
<ClCompile Include="..\..\src\winfonts\winfnt.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\ft2build.h" />
<ClInclude Include="..\..\include\freetype\config\ftconfig.h" />
<ClInclude Include="..\..\include\freetype\config\ftheader.h" />
<ClInclude Include="..\..\include\freetype\config\ftmodule.h" />
<ClInclude Include="..\..\include\freetype\config\ftoption.h" />
<ClInclude Include="..\..\include\freetype\config\ftstdlib.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\zlib\zlib.vcxproj">
<Project>{2f6c0388-20cb-4242-9f6c-a6ebb6a83f47}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{b4c15893-ec11-491d-9507-0ac184f9cc78}</UniqueIdentifier>
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
</Filter>
<Filter Include="Source Files\FT_MODULES">
<UniqueIdentifier>{4d3e4eff-3fbc-4b20-b413-2743b23b7109}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{e6cf6a0f-0404-4024-8bf8-ff5b29f35657}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\autofit\autofit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\bdf\bdf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\cff\cff.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftbase.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftbitmap.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\cache\ftcache.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ftdebug.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftfstype.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftgasp.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftglyph.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gzip\ftgzip.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftinit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\lzw\ftlzw.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftstroke.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftsystem.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\smooth\smooth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftbbox.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftfntfmt.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftmm.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftpfr.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftsynth.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\fttype1.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftwinfnt.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftlcdfil.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftgxval.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftotval.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\base\ftpatent.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\pcf\pcf.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\pfr\pfr.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\psaux\psaux.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\pshinter\pshinter.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\psnames\psmodule.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\raster\raster.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\sfnt\sfnt.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\truetype\truetype.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\type1\type1.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\cid\type1cid.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\type42\type42.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
<ClCompile Include="..\..\src\winfonts\winfnt.c">
<Filter>Source Files\FT_MODULES</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\include\ft2build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\include\freetype\config\ftconfig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\include\freetype\config\ftheader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\include\freetype\config\ftmodule.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\include\freetype\config\ftoption.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\include\freetype\config\ftstdlib.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,237 @@
/***************************************************************************/
/* */
/* ftdebug.c */
/* */
/* Debugging and logging component for Win32 (body). */
/* */
/* Copyright 1996-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
/*************************************************************************/
/* */
/* This component contains various macros and functions used to ease the */
/* debugging of the FreeType engine. Its main purpose is in assertion */
/* checking, tracing, and error detection. */
/* */
/* There are now three debugging modes: */
/* */
/* - trace mode */
/* */
/* Error and trace messages are sent to the log file (which can be the */
/* standard error output). */
/* */
/* - error mode */
/* */
/* Only error messages are generated. */
/* */
/* - release mode: */
/* */
/* No error message is sent or generated. The code is free from any */
/* debugging parts. */
/* */
/*************************************************************************/
#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#ifdef FT_DEBUG_LEVEL_ERROR
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
/* documentation is in ftdebug.h */
FT_BASE_DEF( void )
FT_Message( const char* fmt,
... )
{
static char buf[8192];
va_list ap;
va_start( ap, fmt );
vprintf( fmt, ap );
/* send the string to the debugger as well */
vsprintf( buf, fmt, ap );
OutputDebugStringA( buf );
va_end( ap );
}
/* documentation is in ftdebug.h */
FT_BASE_DEF( void )
FT_Panic( const char* fmt,
... )
{
static char buf[8192];
va_list ap;
va_start( ap, fmt );
vsprintf( buf, fmt, ap );
OutputDebugStringA( buf );
va_end( ap );
exit( EXIT_FAILURE );
}
/* documentation is in ftdebug.h */
FT_BASE_DEF( int )
FT_Throw( FT_Error error,
int line,
const char* file )
{
FT_UNUSED( error );
FT_UNUSED( line );
FT_UNUSED( file );
return 0;
}
#ifdef FT_DEBUG_LEVEL_TRACE
/* array of trace levels, initialized to 0 */
int ft_trace_levels[trace_count];
/* define array of trace toggle names */
#define FT_TRACE_DEF( x ) #x ,
static const char* ft_trace_toggles[trace_count + 1] =
{
#include FT_INTERNAL_TRACE_H
NULL
};
#undef FT_TRACE_DEF
/*************************************************************************/
/* */
/* Initialize the tracing sub-system. This is done by retrieving the */
/* value of the "FT2_DEBUG" environment variable. It must be a list of */
/* toggles, separated by spaces, `;' or `,'. Example: */
/* */
/* "any:3 memory:6 stream:5" */
/* */
/* This will request that all levels be set to 3, except the trace level */
/* for the memory and stream components which are set to 6 and 5, */
/* respectively. */
/* */
/* See the file `include/freetype/internal/fttrace.h' for details of the */
/* available toggle names. */
/* */
/* The level must be between 0 and 6; 0 means quiet (except for serious */
/* runtime errors), and 6 means _very_ verbose. */
/* */
FT_BASE_DEF( void )
ft_debug_init( void )
{
const char* ft2_debug = getenv( "FT2_DEBUG" );
if ( ft2_debug )
{
const char* p = ft2_debug;
const char* q;
for ( ; *p; p++ )
{
/* skip leading whitespace and separators */
if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' )
continue;
/* read toggle name, followed by ':' */
q = p;
while ( *p && *p != ':' )
p++;
if ( !*p )
break;
if ( *p == ':' && p > q )
{
int n, i, len = (int)( p - q );
int level = -1, found = -1;
for ( n = 0; n < trace_count; n++ )
{
const char* toggle = ft_trace_toggles[n];
for ( i = 0; i < len; i++ )
{
if ( toggle[i] != q[i] )
break;
}
if ( i == len && toggle[i] == 0 )
{
found = n;
break;
}
}
/* read level */
p++;
if ( *p )
{
level = *p - '0';
if ( level < 0 || level > 7 )
level = -1;
}
if ( found >= 0 && level >= 0 )
{
if ( found == trace_any )
{
/* special case for "any" */
for ( n = 0; n < trace_count; n++ )
ft_trace_levels[n] = level;
}
else
ft_trace_levels[found] = level;
}
}
}
}
}
#else /* !FT_DEBUG_LEVEL_TRACE */
FT_BASE_DEF( void )
ft_debug_init( void )
{
/* nothing */
}
#endif /* !FT_DEBUG_LEVEL_TRACE */
#endif /* FT_DEBUG_LEVEL_ERROR */
/* END */

169
3rdparty/freetype/docs/FTL.TXT vendored Normal file
View File

@@ -0,0 +1,169 @@
The FreeType Project LICENSE
----------------------------
2006-Jan-27
Copyright 1996-2002, 2006 by
David Turner, Robert Wilhelm, and Werner Lemberg
Introduction
============
The FreeType Project is distributed in several archive packages;
some of them may contain, in addition to the FreeType font engine,
various tools and contributions which rely on, or relate to, the
FreeType Project.
This license applies to all files found in such packages, and
which do not fall under their own explicit license. The license
affects thus the FreeType font engine, the test programs,
documentation and makefiles, at the very least.
This license was inspired by the BSD, Artistic, and IJG
(Independent JPEG Group) licenses, which all encourage inclusion
and use of free software in commercial and freeware products
alike. As a consequence, its main points are that:
o We don't promise that this software works. However, we will be
interested in any kind of bug reports. (`as is' distribution)
o You can use this software for whatever you want, in parts or
full form, without having to pay us. (`royalty-free' usage)
o You may not pretend that you wrote this software. If you use
it, or only parts of it, in a program, you must acknowledge
somewhere in your documentation that you have used the
FreeType code. (`credits')
We specifically permit and encourage the inclusion of this
software, with or without modifications, in commercial products.
We disclaim all warranties covering The FreeType Project and
assume no liability related to The FreeType Project.
Finally, many people asked us for a preferred form for a
credit/disclaimer to use in compliance with this license. We thus
encourage you to use the following text:
"""
Portions of this software are copyright © <year> The FreeType
Project (www.freetype.org). All rights reserved.
"""
Please replace <year> with the value from the FreeType version you
actually use.
Legal Terms
===========
0. Definitions
--------------
Throughout this license, the terms `package', `FreeType Project',
and `FreeType archive' refer to the set of files originally
distributed by the authors (David Turner, Robert Wilhelm, and
Werner Lemberg) as the `FreeType Project', be they named as alpha,
beta or final release.
`You' refers to the licensee, or person using the project, where
`using' is a generic term including compiling the project's source
code as well as linking it to form a `program' or `executable'.
This program is referred to as `a program using the FreeType
engine'.
This license applies to all files distributed in the original
FreeType Project, including all source code, binaries and
documentation, unless otherwise stated in the file in its
original, unmodified form as distributed in the original archive.
If you are unsure whether or not a particular file is covered by
this license, you must contact us to verify this.
The FreeType Project is copyright (C) 1996-2000 by David Turner,
Robert Wilhelm, and Werner Lemberg. All rights reserved except as
specified below.
1. No Warranty
--------------
THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
USE, OF THE FREETYPE PROJECT.
2. Redistribution
-----------------
This license grants a worldwide, royalty-free, perpetual and
irrevocable right and license to use, execute, perform, compile,
display, copy, create derivative works of, distribute and
sublicense the FreeType Project (in both source and object code
forms) and derivative works thereof for any purpose; and to
authorize others to exercise some or all of the rights granted
herein, subject to the following conditions:
o Redistribution of source code must retain this license file
(`FTL.TXT') unaltered; any additions, deletions or changes to
the original files must be clearly indicated in accompanying
documentation. The copyright notices of the unaltered,
original files must be preserved in all copies of source
files.
o Redistribution in binary form must provide a disclaimer that
states that the software is based in part of the work of the
FreeType Team, in the distribution documentation. We also
encourage you to put an URL to the FreeType web page in your
documentation, though this isn't mandatory.
These conditions apply to any software derived from or based on
the FreeType Project, not just the unmodified files. If you use
our work, you must acknowledge us. However, no fee need be paid
to us.
3. Advertising
--------------
Neither the FreeType authors and contributors nor you shall use
the name of the other for commercial, advertising, or promotional
purposes without specific prior written permission.
We suggest, but do not require, that you use one or more of the
following phrases to refer to this software in your documentation
or advertising materials: `FreeType Project', `FreeType Engine',
`FreeType library', or `FreeType Distribution'.
As you have not signed this license, you are not required to
accept it. However, as the FreeType Project is copyrighted
material, only this license, or another one contracted with the
authors, grants you the right to use, distribute, and modify it.
Therefore, by using, distributing, or modifying the FreeType
Project, you indicate that you understand and accept all the terms
of this license.
4. Contacts
-----------
There are two mailing lists related to FreeType:
o freetype@nongnu.org
Discusses general use and applications of FreeType, as well as
future and wanted additions to the library and distribution.
If you are looking for support, start in this list if you
haven't found anything to help you in the documentation.
o freetype-devel@nongnu.org
Discusses bugs, as well as engine internals, design issues,
specific licenses, porting, etc.
Our home page can be found at
http://www.freetype.org
--- end of FTL.TXT ---

View File

@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -338,5 +338,3 @@ proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

39
3rdparty/freetype/docs/LICENSE.TXT vendored Normal file
View File

@@ -0,0 +1,39 @@
The FreeType 2 font engine is copyrighted work and cannot be used
legally without a software license. In order to make this project
usable to a vast majority of developers, we distribute it under two
mutually exclusive open-source licenses.
This means that *you* must choose *one* of the two licenses described
below, then obey all its terms and conditions when using FreeType 2 in
any of your projects or products.
- The FreeType License, found in the file `FTL.TXT', which is similar
to the original BSD license *with* an advertising clause that forces
you to explicitly cite the FreeType project in your product's
documentation. All details are in the license file. This license
is suited to products which don't use the GNU General Public
License.
Note that this license is compatible to the GNU General Public
License version 3, but not version 2.
- The GNU General Public License version 2, found in `GPLv2.TXT' (any
later version can be used also), for programs which already use the
GPL. Note that the FTL is incompatible with GPLv2 due to its
advertisement clause.
The contributed BDF and PCF drivers come with a license similar to that
of the X Window System. It is compatible to the above two licenses (see
file src/bdf/README and src/pcf/README). The same holds for the files
`fthash.c' and `fthash.h'; their code was part of the BDF driver in
earlier FreeType versions.
The gzip module uses the zlib license (see src/gzip/zlib.h) which too is
compatible to the above two licenses.
The MD5 checksum support (only used for debugging in development builds)
is in the public domain.
--- end of LICENSE.TXT ---

View File

@@ -0,0 +1,473 @@
/***************************************************************************/
/* */
/* ftconfig.h */
/* */
/* ANSI-specific configuration file (specification only). */
/* */
/* Copyright 1996-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
/*************************************************************************/
/* */
/* This header file contains a number of macro definitions that are used */
/* by the rest of the engine. Most of the macros here are automatically */
/* determined at compile time, and you should not need to change it to */
/* port FreeType, except to compile the library with a non-ANSI */
/* compiler. */
/* */
/* Note however that if some specific modifications are needed, we */
/* advise you to place a modified copy in your build directory. */
/* */
/* The build directory is usually `builds/<system>', and contains */
/* system-specific files that are always included first when building */
/* the library. */
/* */
/* This ANSI version should stay in `include/config/'. */
/* */
/*************************************************************************/
#ifndef FTCONFIG_H_
#define FTCONFIG_H_
#include <ft2build.h>
#include FT_CONFIG_OPTIONS_H
#include FT_CONFIG_STANDARD_LIBRARY_H
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* PLATFORM-SPECIFIC CONFIGURATION MACROS */
/* */
/* These macros can be toggled to suit a specific system. The current */
/* ones are defaults used to compile FreeType in an ANSI C environment */
/* (16bit compilers are also supported). Copy this file to your own */
/* `builds/<system>' directory, and edit it to port the engine. */
/* */
/*************************************************************************/
/* There are systems (like the Texas Instruments 'C54x) where a `char' */
/* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
/* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
/* is probably unexpected. */
/* */
/* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
/* `char' type. */
#ifndef FT_CHAR_BIT
#define FT_CHAR_BIT CHAR_BIT
#endif
/* The size of an `int' type. */
#if FT_UINT_MAX == 0xFFFFUL
#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
#elif FT_UINT_MAX == 0xFFFFFFFFUL
#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
#else
#error "Unsupported size of `int' type!"
#endif
/* The size of a `long' type. A five-byte `long' (as used e.g. on the */
/* DM642) is recognized but avoided. */
#if FT_ULONG_MAX == 0xFFFFFFFFUL
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
#else
#error "Unsupported size of `long' type!"
#endif
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
/* used -- this is only used to get rid of unpleasant compiler warnings */
#ifndef FT_UNUSED
#define FT_UNUSED( arg ) ( (arg) = (arg) )
#endif
/*************************************************************************/
/* */
/* AUTOMATIC CONFIGURATION MACROS */
/* */
/* These macros are computed from the ones defined above. Don't touch */
/* their definition, unless you know precisely what you are doing. No */
/* porter should need to mess with them. */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* Mac support */
/* */
/* This is the only necessary change, so it is defined here instead */
/* providing a new configuration file. */
/* */
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
/* no Carbon frameworks for 64bit 10.4.x */
/* AvailabilityMacros.h is available since Mac OS X 10.2, */
/* so guess the system version by maximum errno before inclusion */
#include <errno.h>
#ifdef ECANCELED /* defined since 10.2 */
#include "AvailabilityMacros.h"
#endif
#if defined( __LP64__ ) && \
( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
#undef FT_MACINTOSH
#endif
#elif defined( __SC__ ) || defined( __MRC__ )
/* Classic MacOS compilers */
#include "ConditionalMacros.h"
#if TARGET_OS_MAC
#define FT_MACINTOSH 1
#endif
#endif
/*************************************************************************/
/* */
/* <Section> */
/* basic_types */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* <Type> */
/* FT_Int16 */
/* */
/* <Description> */
/* A typedef for a 16bit signed integer type. */
/* */
typedef signed short FT_Int16;
/*************************************************************************/
/* */
/* <Type> */
/* FT_UInt16 */
/* */
/* <Description> */
/* A typedef for a 16bit unsigned integer type. */
/* */
typedef unsigned short FT_UInt16;
/* */
/* this #if 0 ... #endif clause is for documentation purposes */
#if 0
/*************************************************************************/
/* */
/* <Type> */
/* FT_Int32 */
/* */
/* <Description> */
/* A typedef for a 32bit signed integer type. The size depends on */
/* the configuration. */
/* */
typedef signed XXX FT_Int32;
/*************************************************************************/
/* */
/* <Type> */
/* FT_UInt32 */
/* */
/* A typedef for a 32bit unsigned integer type. The size depends on */
/* the configuration. */
/* */
typedef unsigned XXX FT_UInt32;
/*************************************************************************/
/* */
/* <Type> */
/* FT_Int64 */
/* */
/* A typedef for a 64bit signed integer type. The size depends on */
/* the configuration. Only defined if there is real 64bit support; */
/* otherwise, it gets emulated with a structure (if necessary). */
/* */
typedef signed XXX FT_Int64;
/*************************************************************************/
/* */
/* <Type> */
/* FT_UInt64 */
/* */
/* A typedef for a 64bit unsigned integer type. The size depends on */
/* the configuration. Only defined if there is real 64bit support; */
/* otherwise, it gets emulated with a structure (if necessary). */
/* */
typedef unsigned XXX FT_UInt64;
/* */
#endif
#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT)
typedef signed int FT_Int32;
typedef unsigned int FT_UInt32;
#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT)
typedef signed long FT_Int32;
typedef unsigned long FT_UInt32;
#else
#error "no 32bit type found -- please check your configuration files"
#endif
/* look up an integer type that is at least 32 bits */
#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT)
typedef int FT_Fast;
typedef unsigned int FT_UFast;
#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT)
typedef long FT_Fast;
typedef unsigned long FT_UFast;
#endif
/* determine whether we have a 64-bit int type for platforms without */
/* Autoconf */
#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT)
/* FT_LONG64 must be defined if a 64-bit type is available */
#define FT_LONG64
#define FT_INT64 long
#define FT_UINT64 unsigned long
/*************************************************************************/
/* */
/* A 64-bit data type may create compilation problems if you compile */
/* in strict ANSI mode. To avoid them, we disable other 64-bit data */
/* types if __STDC__ is defined. You can however ignore this rule */
/* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
/* */
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
/* this compiler provides the __int64 type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
#elif defined( __BORLANDC__ ) /* Borland C++ */
/* XXXX: We should probably check the value of __BORLANDC__ in order */
/* to test the compiler version. */
/* this compiler provides the __int64 type */
#define FT_LONG64
#define FT_INT64 __int64
#define FT_UINT64 unsigned __int64
#elif defined( __WATCOMC__ ) /* Watcom C++ */
/* Watcom doesn't provide 64-bit data types */
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
#elif defined( __GNUC__ )
/* GCC provides the `long long' type */
#define FT_LONG64
#define FT_INT64 long long int
#define FT_UINT64 unsigned long long int
#endif /* __STDC_VERSION__ >= 199901L */
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
#ifdef FT_LONG64
typedef FT_INT64 FT_Int64;
typedef FT_UINT64 FT_UInt64;
#endif
/*************************************************************************/
/* */
/* miscellaneous */
/* */
/*************************************************************************/
#define FT_BEGIN_STMNT do {
#define FT_END_STMNT } while ( 0 )
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
/* typeof condition taken from gnulib's `intprops.h' header file */
#if ( __GNUC__ >= 2 || \
defined( __IBM__TYPEOF__ ) || \
( __SUNPRO_C >= 0x5110 && !__STDC__ ) )
#define FT_TYPEOF( type ) (__typeof__ (type))
#else
#define FT_TYPEOF( type ) /* empty */
#endif
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
#define FT_LOCAL( x ) static x
#define FT_LOCAL_DEF( x ) static x
#else
#ifdef __cplusplus
#define FT_LOCAL( x ) extern "C" x
#define FT_LOCAL_DEF( x ) extern "C" x
#else
#define FT_LOCAL( x ) extern x
#define FT_LOCAL_DEF( x ) x
#endif
#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
#define FT_LOCAL_ARRAY( x ) extern const x
#define FT_LOCAL_ARRAY_DEF( x ) const x
#ifndef FT_BASE
#ifdef __cplusplus
#define FT_BASE( x ) extern "C" x
#else
#define FT_BASE( x ) extern x
#endif
#endif /* !FT_BASE */
#ifndef FT_BASE_DEF
#ifdef __cplusplus
#define FT_BASE_DEF( x ) x
#else
#define FT_BASE_DEF( x ) x
#endif
#endif /* !FT_BASE_DEF */
#ifndef FT_EXPORT
#ifdef __cplusplus
#define FT_EXPORT( x ) extern "C" x
#else
#define FT_EXPORT( x ) extern x
#endif
#endif /* !FT_EXPORT */
#ifndef FT_EXPORT_DEF
#ifdef __cplusplus
#define FT_EXPORT_DEF( x ) extern "C" x
#else
#define FT_EXPORT_DEF( x ) extern x
#endif
#endif /* !FT_EXPORT_DEF */
#ifndef FT_EXPORT_VAR
#ifdef __cplusplus
#define FT_EXPORT_VAR( x ) extern "C" x
#else
#define FT_EXPORT_VAR( x ) extern x
#endif
#endif /* !FT_EXPORT_VAR */
/* The following macros are needed to compile the library with a */
/* C++ compiler and with 16bit compilers. */
/* */
/* This is special. Within C++, you must specify `extern "C"' for */
/* functions which are used via function pointers, and you also */
/* must do that for structures which contain function pointers to */
/* assure C linkage -- it's not possible to have (local) anonymous */
/* functions which are accessed by (global) function pointers. */
/* */
/* */
/* FT_CALLBACK_DEF is used to _define_ a callback function. */
/* */
/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
/* contains pointers to callback functions. */
/* */
/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
/* that contains pointers to callback functions. */
/* */
/* */
/* Some 16bit compilers have to redefine these macros to insert */
/* the infamous `_cdecl' or `__fastcall' declarations. */
/* */
#ifndef FT_CALLBACK_DEF
#ifdef __cplusplus
#define FT_CALLBACK_DEF( x ) extern "C" x
#else
#define FT_CALLBACK_DEF( x ) static x
#endif
#endif /* FT_CALLBACK_DEF */
#ifndef FT_CALLBACK_TABLE
#ifdef __cplusplus
#define FT_CALLBACK_TABLE extern "C"
#define FT_CALLBACK_TABLE_DEF extern "C"
#else
#define FT_CALLBACK_TABLE extern
#define FT_CALLBACK_TABLE_DEF /* nothing */
#endif
#endif /* FT_CALLBACK_TABLE */
FT_END_HEADER
#endif /* FTCONFIG_H_ */
/* END */

View File

@@ -0,0 +1,833 @@
/***************************************************************************/
/* */
/* ftheader.h */
/* */
/* Build macros of the FreeType 2 library. */
/* */
/* Copyright 1996-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTHEADER_H_
#define FTHEADER_H_
/*@***********************************************************************/
/* */
/* <Macro> */
/* FT_BEGIN_HEADER */
/* */
/* <Description> */
/* This macro is used in association with @FT_END_HEADER in header */
/* files to ensure that the declarations within are properly */
/* encapsulated in an `extern "C" { .. }' block when included from a */
/* C++ compiler. */
/* */
#ifdef __cplusplus
#define FT_BEGIN_HEADER extern "C" {
#else
#define FT_BEGIN_HEADER /* nothing */
#endif
/*@***********************************************************************/
/* */
/* <Macro> */
/* FT_END_HEADER */
/* */
/* <Description> */
/* This macro is used in association with @FT_BEGIN_HEADER in header */
/* files to ensure that the declarations within are properly */
/* encapsulated in an `extern "C" { .. }' block when included from a */
/* C++ compiler. */
/* */
#ifdef __cplusplus
#define FT_END_HEADER }
#else
#define FT_END_HEADER /* nothing */
#endif
/*************************************************************************/
/* */
/* Aliases for the FreeType 2 public and configuration files. */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* <Section> */
/* header_file_macros */
/* */
/* <Title> */
/* Header File Macros */
/* */
/* <Abstract> */
/* Macro definitions used to #include specific header files. */
/* */
/* <Description> */
/* The following macros are defined to the name of specific */
/* FreeType~2 header files. They can be used directly in #include */
/* statements as in: */
/* */
/* { */
/* #include FT_FREETYPE_H */
/* #include FT_MULTIPLE_MASTERS_H */
/* #include FT_GLYPH_H */
/* } */
/* */
/* There are several reasons why we are now using macros to name */
/* public header files. The first one is that such macros are not */
/* limited to the infamous 8.3~naming rule required by DOS (and */
/* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */
/* */
/* The second reason is that it allows for more flexibility in the */
/* way FreeType~2 is installed on a given system. */
/* */
/*************************************************************************/
/* configuration files */
/*************************************************************************
*
* @macro:
* FT_CONFIG_CONFIG_H
*
* @description:
* A macro used in #include statements to name the file containing
* FreeType~2 configuration data.
*
*/
#ifndef FT_CONFIG_CONFIG_H
#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
#endif
/*************************************************************************
*
* @macro:
* FT_CONFIG_STANDARD_LIBRARY_H
*
* @description:
* A macro used in #include statements to name the file containing
* FreeType~2 interface to the standard C library functions.
*
*/
#ifndef FT_CONFIG_STANDARD_LIBRARY_H
#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
#endif
/*************************************************************************
*
* @macro:
* FT_CONFIG_OPTIONS_H
*
* @description:
* A macro used in #include statements to name the file containing
* FreeType~2 project-specific configuration options.
*
*/
#ifndef FT_CONFIG_OPTIONS_H
#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
#endif
/*************************************************************************
*
* @macro:
* FT_CONFIG_MODULES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* list of FreeType~2 modules that are statically linked to new library
* instances in @FT_Init_FreeType.
*
*/
#ifndef FT_CONFIG_MODULES_H
#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
#endif
/* */
/* public headers */
/*************************************************************************
*
* @macro:
* FT_FREETYPE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* base FreeType~2 API.
*
*/
#define FT_FREETYPE_H <freetype/freetype.h>
/*************************************************************************
*
* @macro:
* FT_ERRORS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* list of FreeType~2 error codes (and messages).
*
* It is included by @FT_FREETYPE_H.
*
*/
#define FT_ERRORS_H <freetype/fterrors.h>
/*************************************************************************
*
* @macro:
* FT_MODULE_ERRORS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* list of FreeType~2 module error offsets (and messages).
*
*/
#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
/*************************************************************************
*
* @macro:
* FT_SYSTEM_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 interface to low-level operations (i.e., memory management
* and stream i/o).
*
* It is included by @FT_FREETYPE_H.
*
*/
#define FT_SYSTEM_H <freetype/ftsystem.h>
/*************************************************************************
*
* @macro:
* FT_IMAGE_H
*
* @description:
* A macro used in #include statements to name the file containing type
* definitions related to glyph images (i.e., bitmaps, outlines,
* scan-converter parameters).
*
* It is included by @FT_FREETYPE_H.
*
*/
#define FT_IMAGE_H <freetype/ftimage.h>
/*************************************************************************
*
* @macro:
* FT_TYPES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* basic data types defined by FreeType~2.
*
* It is included by @FT_FREETYPE_H.
*
*/
#define FT_TYPES_H <freetype/fttypes.h>
/*************************************************************************
*
* @macro:
* FT_LIST_H
*
* @description:
* A macro used in #include statements to name the file containing the
* list management API of FreeType~2.
*
* (Most applications will never need to include this file.)
*
*/
#define FT_LIST_H <freetype/ftlist.h>
/*************************************************************************
*
* @macro:
* FT_OUTLINE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* scalable outline management API of FreeType~2.
*
*/
#define FT_OUTLINE_H <freetype/ftoutln.h>
/*************************************************************************
*
* @macro:
* FT_SIZES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* API which manages multiple @FT_Size objects per face.
*
*/
#define FT_SIZES_H <freetype/ftsizes.h>
/*************************************************************************
*
* @macro:
* FT_MODULE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* module management API of FreeType~2.
*
*/
#define FT_MODULE_H <freetype/ftmodapi.h>
/*************************************************************************
*
* @macro:
* FT_RENDER_H
*
* @description:
* A macro used in #include statements to name the file containing the
* renderer module management API of FreeType~2.
*
*/
#define FT_RENDER_H <freetype/ftrender.h>
/*************************************************************************
*
* @macro:
* FT_AUTOHINTER_H
*
* @description:
* A macro used in #include statements to name the file containing
* structures and macros related to the auto-hinting module.
*
*/
#define FT_AUTOHINTER_H <freetype/ftautoh.h>
/*************************************************************************
*
* @macro:
* FT_CFF_DRIVER_H
*
* @description:
* A macro used in #include statements to name the file containing
* structures and macros related to the CFF driver module.
*
*/
#define FT_CFF_DRIVER_H <freetype/ftcffdrv.h>
/*************************************************************************
*
* @macro:
* FT_TRUETYPE_DRIVER_H
*
* @description:
* A macro used in #include statements to name the file containing
* structures and macros related to the TrueType driver module.
*
*/
#define FT_TRUETYPE_DRIVER_H <freetype/ftttdrv.h>
/*************************************************************************
*
* @macro:
* FT_TYPE1_TABLES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* types and API specific to the Type~1 format.
*
*/
#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
/*************************************************************************
*
* @macro:
* FT_TRUETYPE_IDS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* enumeration values which identify name strings, languages, encodings,
* etc. This file really contains a _large_ set of constant macro
* definitions, taken from the TrueType and OpenType specifications.
*
*/
#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
/*************************************************************************
*
* @macro:
* FT_TRUETYPE_TABLES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* types and API specific to the TrueType (as well as OpenType) format.
*
*/
#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
/*************************************************************************
*
* @macro:
* FT_TRUETYPE_TAGS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of TrueType four-byte `tags' which identify blocks in
* SFNT-based font formats (i.e., TrueType and OpenType).
*
*/
#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
/*************************************************************************
*
* @macro:
* FT_BDF_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which accesses BDF-specific strings from a
* face.
*
*/
#define FT_BDF_H <freetype/ftbdf.h>
/*************************************************************************
*
* @macro:
* FT_CID_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which access CID font information from a
* face.
*
*/
#define FT_CID_H <freetype/ftcid.h>
/*************************************************************************
*
* @macro:
* FT_GZIP_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which supports gzip-compressed files.
*
*/
#define FT_GZIP_H <freetype/ftgzip.h>
/*************************************************************************
*
* @macro:
* FT_LZW_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which supports LZW-compressed files.
*
*/
#define FT_LZW_H <freetype/ftlzw.h>
/*************************************************************************
*
* @macro:
* FT_BZIP2_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which supports bzip2-compressed files.
*
*/
#define FT_BZIP2_H <freetype/ftbzip2.h>
/*************************************************************************
*
* @macro:
* FT_WINFONTS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* definitions of an API which supports Windows FNT files.
*
*/
#define FT_WINFONTS_H <freetype/ftwinfnt.h>
/*************************************************************************
*
* @macro:
* FT_GLYPH_H
*
* @description:
* A macro used in #include statements to name the file containing the
* API of the optional glyph management component.
*
*/
#define FT_GLYPH_H <freetype/ftglyph.h>
/*************************************************************************
*
* @macro:
* FT_BITMAP_H
*
* @description:
* A macro used in #include statements to name the file containing the
* API of the optional bitmap conversion component.
*
*/
#define FT_BITMAP_H <freetype/ftbitmap.h>
/*************************************************************************
*
* @macro:
* FT_BBOX_H
*
* @description:
* A macro used in #include statements to name the file containing the
* API of the optional exact bounding box computation routines.
*
*/
#define FT_BBOX_H <freetype/ftbbox.h>
/*************************************************************************
*
* @macro:
* FT_CACHE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* API of the optional FreeType~2 cache sub-system.
*
*/
#define FT_CACHE_H <freetype/ftcache.h>
/*************************************************************************
*
* @macro:
* FT_CACHE_IMAGE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* `glyph image' API of the FreeType~2 cache sub-system.
*
* It is used to define a cache for @FT_Glyph elements. You can also
* use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
* store small glyph bitmaps, as it will use less memory.
*
* This macro is deprecated. Simply include @FT_CACHE_H to have all
* glyph image-related cache declarations.
*
*/
#define FT_CACHE_IMAGE_H FT_CACHE_H
/*************************************************************************
*
* @macro:
* FT_CACHE_SMALL_BITMAPS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* `small bitmaps' API of the FreeType~2 cache sub-system.
*
* It is used to define a cache for small glyph bitmaps in a relatively
* memory-efficient way. You can also use the API defined in
* @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
* including scalable outlines.
*
* This macro is deprecated. Simply include @FT_CACHE_H to have all
* small bitmaps-related cache declarations.
*
*/
#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
/*************************************************************************
*
* @macro:
* FT_CACHE_CHARMAP_H
*
* @description:
* A macro used in #include statements to name the file containing the
* `charmap' API of the FreeType~2 cache sub-system.
*
* This macro is deprecated. Simply include @FT_CACHE_H to have all
* charmap-based cache declarations.
*
*/
#define FT_CACHE_CHARMAP_H FT_CACHE_H
/*************************************************************************
*
* @macro:
* FT_MAC_H
*
* @description:
* A macro used in #include statements to name the file containing the
* Macintosh-specific FreeType~2 API. The latter is used to access
* fonts embedded in resource forks.
*
* This header file must be explicitly included by client applications
* compiled on the Mac (note that the base API still works though).
*
*/
#define FT_MAC_H <freetype/ftmac.h>
/*************************************************************************
*
* @macro:
* FT_MULTIPLE_MASTERS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* optional multiple-masters management API of FreeType~2.
*
*/
#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
/*************************************************************************
*
* @macro:
* FT_SFNT_NAMES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* optional FreeType~2 API which accesses embedded `name' strings in
* SFNT-based font formats (i.e., TrueType and OpenType).
*
*/
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
/*************************************************************************
*
* @macro:
* FT_OPENTYPE_VALIDATE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
* GPOS, GSUB, JSTF).
*
*/
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
/*************************************************************************
*
* @macro:
* FT_GX_VALIDATE_H
*
* @description:
* A macro used in #include statements to name the file containing the
* optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
* mort, morx, bsln, just, kern, opbd, trak, prop).
*
*/
#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
/*************************************************************************
*
* @macro:
* FT_PFR_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which accesses PFR-specific data.
*
*/
#define FT_PFR_H <freetype/ftpfr.h>
/*************************************************************************
*
* @macro:
* FT_STROKER_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which provides functions to stroke outline paths.
*/
#define FT_STROKER_H <freetype/ftstroke.h>
/*************************************************************************
*
* @macro:
* FT_SYNTHESIS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which performs artificial obliquing and emboldening.
*/
#define FT_SYNTHESIS_H <freetype/ftsynth.h>
/*************************************************************************
*
* @macro:
* FT_FONT_FORMATS_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which provides functions specific to font formats.
*/
#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h>
/* deprecated */
#define FT_XFREE86_H FT_FONT_FORMATS_H
/*************************************************************************
*
* @macro:
* FT_TRIGONOMETRY_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which performs trigonometric computations (e.g.,
* cosines and arc tangents).
*/
#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
/*************************************************************************
*
* @macro:
* FT_LCD_FILTER_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which performs color filtering for subpixel rendering.
*/
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
/*************************************************************************
*
* @macro:
* FT_UNPATENTED_HINTING_H
*
* @description:
* Deprecated.
*/
#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h>
/*************************************************************************
*
* @macro:
* FT_INCREMENTAL_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which performs incremental glyph loading.
*/
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
/*************************************************************************
*
* @macro:
* FT_GASP_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which returns entries from the TrueType GASP table.
*/
#define FT_GASP_H <freetype/ftgasp.h>
/*************************************************************************
*
* @macro:
* FT_ADVANCES_H
*
* @description:
* A macro used in #include statements to name the file containing the
* FreeType~2 API which returns individual and ranged glyph advances.
*/
#define FT_ADVANCES_H <freetype/ftadvanc.h>
/* */
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
/* The internals of the cache sub-system are no longer exposed. We */
/* default to FT_CACHE_H at the moment just in case, but we know of */
/* no rogue client that uses them. */
/* */
#define FT_CACHE_MANAGER_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h>
#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h>
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h>
/*
* Include internal headers definitions from <internal/...>
* only when building the library.
*/
#ifdef FT2_BUILD_LIBRARY
#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h>
#include FT_INTERNAL_INTERNAL_H
#endif /* FT2_BUILD_LIBRARY */
#endif /* FTHEADER_H_ */
/* END */

View File

@@ -0,0 +1,32 @@
/*
* This file registers the FreeType modules compiled into the library.
*
* If you use GNU make, this file IS NOT USED! Instead, it is created in
* the objects directory (normally `<topdir>/objs/') based on information
* from `<topdir>/modules.cfg'.
*
* Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
* FreeType without GNU make.
*
*/
FT_USE_MODULE( FT_Module_Class, autofit_module_class )
FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
/* EOF */

View File

@@ -0,0 +1,933 @@
/***************************************************************************/
/* */
/* ftoption.h */
/* */
/* User-selectable configuration macros (specification only). */
/* */
/* Copyright 1996-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTOPTION_H_
#define FTOPTION_H_
#include <ft2build.h>
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* USER-SELECTABLE CONFIGURATION MACROS */
/* */
/* This file contains the default configuration macro definitions for */
/* a standard build of the FreeType library. There are three ways to */
/* use this file to build project-specific versions of the library: */
/* */
/* - You can modify this file by hand, but this is not recommended in */
/* cases where you would like to build several versions of the */
/* library from a single source directory. */
/* */
/* - You can put a copy of this file in your build directory, more */
/* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */
/* is the name of a directory that is included _before_ the FreeType */
/* include path during compilation. */
/* */
/* The default FreeType Makefiles and Jamfiles use the build */
/* directory `builds/<system>' by default, but you can easily change */
/* that for your own projects. */
/* */
/* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */
/* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */
/* locate this file during the build. For example, */
/* */
/* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */
/* #include <freetype/config/ftheader.h> */
/* */
/* will use `$BUILD/myftoptions.h' instead of this file for macro */
/* definitions. */
/* */
/* Note also that you can similarly pre-define the macro */
/* FT_CONFIG_MODULES_H used to locate the file listing of the modules */
/* that are statically linked to the library at compile time. By */
/* default, this file is <freetype/config/ftmodule.h>. */
/* */
/* We highly recommend using the third method whenever possible. */
/* */
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* If you enable this configuration option, FreeType recognizes an */
/* environment variable called `FREETYPE_PROPERTIES', which can be used */
/* to control the various font drivers and modules. The controllable */
/* properties are listed in the section `Controlling FreeType Modules' */
/* in the reference's table of contents; currently there are properties */
/* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), and */
/* TrueType (file `ftttdrv.h'). */
/* */
/* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */
/* multiple lines for better readability). */
/* */
/* <optional whitespace> */
/* <module-name1> ':' */
/* <property-name1> '=' <property-value1> */
/* <whitespace> */
/* <module-name2> ':' */
/* <property-name2> '=' <property-value2> */
/* ... */
/* */
/* Example: */
/* */
/* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ */
/* cff:no-stem-darkening=1 \ */
/* autofitter:warping=1 */
/* */
#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
/*************************************************************************/
/* */
/* Uncomment the line below if you want to activate sub-pixel rendering */
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
/* */
/* Note that this feature is covered by several Microsoft patents */
/* and should not be activated in any default build of the library. */
/* */
/* This macro has no impact on the FreeType API, only on its */
/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
/* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
/* the original size in case this macro isn't defined; however, each */
/* triplet of subpixels has R=G=B. */
/* */
/* This is done to allow FreeType clients to run unmodified, forcing */
/* them to display normal gray-level anti-aliased glyphs. */
/* */
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
/*************************************************************************/
/* */
/* Many compilers provide a non-ANSI 64-bit data type that can be used */
/* by FreeType to speed up some computations. However, this will create */
/* some problems when compiling the library in strict ANSI mode. */
/* */
/* For this reason, the use of 64-bit integers is normally disabled when */
/* the __STDC__ macro is defined. You can however disable this by */
/* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */
/* */
/* For most compilers, this will only create compilation warnings when */
/* building the library. */
/* */
/* ObNote: The compiler-specific 64-bit integers are detected in the */
/* file `ftconfig.h' either statically or through the */
/* `configure' script on supported platforms. */
/* */
#undef FT_CONFIG_OPTION_FORCE_INT64
/*************************************************************************/
/* */
/* If this macro is defined, do not try to use an assembler version of */
/* performance-critical functions (e.g. FT_MulFix). You should only do */
/* that to verify that the assembler function works properly, or to */
/* execute benchmark tests of the various implementations. */
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
/*************************************************************************/
/* */
/* If this macro is defined, try to use an inlined assembler version of */
/* the `FT_MulFix' function, which is a `hotspot' when loading and */
/* hinting glyphs, and which should be executed as fast as possible. */
/* */
/* Note that if your compiler or CPU is not supported, this will default */
/* to the standard and portable implementation found in `ftcalc.c'. */
/* */
#define FT_CONFIG_OPTION_INLINE_MULFIX
/*************************************************************************/
/* */
/* LZW-compressed file support. */
/* */
/* FreeType now handles font files that have been compressed with the */
/* `compress' program. This is mostly used to parse many of the PCF */
/* files that come with various X11 distributions. The implementation */
/* uses NetBSD's `zopen' to partially uncompress the file on the fly */
/* (see src/lzw/ftgzip.c). */
/* */
/* Define this macro if you want to enable this `feature'. */
/* */
#define FT_CONFIG_OPTION_USE_LZW
/*************************************************************************/
/* */
/* Gzip-compressed file support. */
/* */
/* FreeType now handles font files that have been compressed with the */
/* `gzip' program. This is mostly used to parse many of the PCF files */
/* that come with XFree86. The implementation uses `zlib' to */
/* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */
/* */
/* Define this macro if you want to enable this `feature'. See also */
/* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */
/* */
#define FT_CONFIG_OPTION_USE_ZLIB
/*************************************************************************/
/* */
/* ZLib library selection */
/* */
/* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */
/* It allows FreeType's `ftgzip' component to link to the system's */
/* installation of the ZLib library. This is useful on systems like */
/* Unix or VMS where it generally is already available. */
/* */
/* If you let it undefined, the component will use its own copy */
/* of the zlib sources instead. These have been modified to be */
/* included directly within the component and *not* export external */
/* function names. This allows you to link any program with FreeType */
/* _and_ ZLib without linking conflicts. */
/* */
/* Do not #undef this macro here since the build system might define */
/* it for certain configurations only. */
/* */
#define FT_CONFIG_OPTION_SYSTEM_ZLIB
/*************************************************************************/
/* */
/* Bzip2-compressed file support. */
/* */
/* FreeType now handles font files that have been compressed with the */
/* `bzip2' program. This is mostly used to parse many of the PCF */
/* files that come with XFree86. The implementation uses `libbz2' to */
/* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
/* Contrary to gzip, bzip2 currently is not included and need to use */
/* the system available bzip2 implementation. */
/* */
/* Define this macro if you want to enable this `feature'. */
/* */
/* #define FT_CONFIG_OPTION_USE_BZIP2 */
/*************************************************************************/
/* */
/* Define to disable the use of file stream functions and types, FILE, */
/* fopen() etc. Enables the use of smaller system libraries on embedded */
/* systems that have multiple system libraries, some with or without */
/* file stream support, in the cases where file stream support is not */
/* necessary such as memory loading of font files. */
/* */
/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
/*************************************************************************/
/* */
/* PNG bitmap support. */
/* */
/* FreeType now handles loading color bitmap glyphs in the PNG format. */
/* This requires help from the external libpng library. Uncompressed */
/* color bitmaps do not need any external libraries and will be */
/* supported regardless of this configuration. */
/* */
/* Define this macro if you want to enable this `feature'. */
/* */
/* #define FT_CONFIG_OPTION_USE_PNG */
/*************************************************************************/
/* */
/* HarfBuzz support. */
/* */
/* FreeType uses the HarfBuzz library to improve auto-hinting of */
/* OpenType fonts. If available, many glyphs not directly addressable */
/* by a font's character map will be hinted also. */
/* */
/* Define this macro if you want to enable this `feature'. */
/* */
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
/*************************************************************************/
/* */
/* DLL export compilation */
/* */
/* When compiling FreeType as a DLL, some systems/compilers need a */
/* special keyword in front OR after the return type of function */
/* declarations. */
/* */
/* Two macros are used within the FreeType source code to define */
/* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
/* */
/* FT_EXPORT( return_type ) */
/* */
/* is used in a function declaration, as in */
/* */
/* FT_EXPORT( FT_Error ) */
/* FT_Init_FreeType( FT_Library* alibrary ); */
/* */
/* */
/* FT_EXPORT_DEF( return_type ) */
/* */
/* is used in a function definition, as in */
/* */
/* FT_EXPORT_DEF( FT_Error ) */
/* FT_Init_FreeType( FT_Library* alibrary ) */
/* { */
/* ... some code ... */
/* return FT_Err_Ok; */
/* } */
/* */
/* You can provide your own implementation of FT_EXPORT and */
/* FT_EXPORT_DEF here if you want. If you leave them undefined, they */
/* will be later automatically defined as `extern return_type' to */
/* allow normal compilation. */
/* */
/* Do not #undef these macros here since the build system might define */
/* them for certain configurations only. */
/* */
/* #define FT_EXPORT(x) extern x */
/* #define FT_EXPORT_DEF(x) x */
/*************************************************************************/
/* */
/* Glyph Postscript Names handling */
/* */
/* By default, FreeType 2 is compiled with the `psnames' module. This */
/* module is in charge of converting a glyph name string into a */
/* Unicode value, or return a Macintosh standard glyph name for the */
/* use with the TrueType `post' table. */
/* */
/* Undefine this macro if you do not want `psnames' compiled in your */
/* build of FreeType. This has the following effects: */
/* */
/* - The TrueType driver will provide its own set of glyph names, */
/* if you build it to support postscript names in the TrueType */
/* `post' table. */
/* */
/* - The Type 1 driver will not be able to synthesize a Unicode */
/* charmap out of the glyphs found in the fonts. */
/* */
/* You would normally undefine this configuration macro when building */
/* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
/* */
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
/*************************************************************************/
/* */
/* Postscript Names to Unicode Values support */
/* */
/* By default, FreeType 2 is built with the `PSNames' module compiled */
/* in. Among other things, the module is used to convert a glyph name */
/* into a Unicode value. This is especially useful in order to */
/* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */
/* through a big table named the `Adobe Glyph List' (AGL). */
/* */
/* Undefine this macro if you do not want the Adobe Glyph List */
/* compiled in your `PSNames' module. The Type 1 driver will not be */
/* able to synthesize a Unicode charmap out of the glyphs found in the */
/* fonts. */
/* */
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
/*************************************************************************/
/* */
/* Support for Mac fonts */
/* */
/* Define this macro if you want support for outline fonts in Mac */
/* format (mac dfont, mac resource, macbinary containing a mac */
/* resource) on non-Mac platforms. */
/* */
/* Note that the `FOND' resource isn't checked. */
/* */
#define FT_CONFIG_OPTION_MAC_FONTS
/*************************************************************************/
/* */
/* Guessing methods to access embedded resource forks */
/* */
/* Enable extra Mac fonts support on non-Mac platforms (e.g. */
/* GNU/Linux). */
/* */
/* Resource forks which include fonts data are stored sometimes in */
/* locations which users or developers don't expected. In some cases, */
/* resource forks start with some offset from the head of a file. In */
/* other cases, the actual resource fork is stored in file different */
/* from what the user specifies. If this option is activated, */
/* FreeType tries to guess whether such offsets or different file */
/* names must be used. */
/* */
/* Note that normal, direct access of resource forks is controlled via */
/* the FT_CONFIG_OPTION_MAC_FONTS option. */
/* */
#ifdef FT_CONFIG_OPTION_MAC_FONTS
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
#endif
/*************************************************************************/
/* */
/* Allow the use of FT_Incremental_Interface to load typefaces that */
/* contain no glyph data, but supply it via a callback function. */
/* This is required by clients supporting document formats which */
/* supply font data incrementally as the document is parsed, such */
/* as the Ghostscript interpreter for the PostScript language. */
/* */
#define FT_CONFIG_OPTION_INCREMENTAL
/*************************************************************************/
/* */
/* The size in bytes of the render pool used by the scan-line converter */
/* to do all of its work. */
/* */
#define FT_RENDER_POOL_SIZE 16384L
/*************************************************************************/
/* */
/* FT_MAX_MODULES */
/* */
/* The maximum number of modules that can be registered in a single */
/* FreeType library object. 32 is the default. */
/* */
#define FT_MAX_MODULES 32
/*************************************************************************/
/* */
/* Debug level */
/* */
/* FreeType can be compiled in debug or trace mode. In debug mode, */
/* errors are reported through the `ftdebug' component. In trace */
/* mode, additional messages are sent to the standard output during */
/* execution. */
/* */
/* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
/* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
/* */
/* Don't define any of these macros to compile in `release' mode! */
/* */
/* Do not #undef these macros here since the build system might define */
/* them for certain configurations only. */
/* */
/* #define FT_DEBUG_LEVEL_ERROR */
/* #define FT_DEBUG_LEVEL_TRACE */
/*************************************************************************/
/* */
/* Autofitter debugging */
/* */
/* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */
/* control the autofitter behaviour for debugging purposes with global */
/* boolean variables (consequently, you should *never* enable this */
/* while compiling in `release' mode): */
/* */
/* _af_debug_disable_horz_hints */
/* _af_debug_disable_vert_hints */
/* _af_debug_disable_blue_hints */
/* */
/* Additionally, the following functions provide dumps of various */
/* internal autofit structures to stdout (using `printf'): */
/* */
/* af_glyph_hints_dump_points */
/* af_glyph_hints_dump_segments */
/* af_glyph_hints_dump_edges */
/* af_glyph_hints_get_num_segments */
/* af_glyph_hints_get_segment_offset */
/* */
/* As an argument, they use another global variable: */
/* */
/* _af_debug_hints */
/* */
/* Please have a look at the `ftgrid' demo program to see how those */
/* variables and macros should be used. */
/* */
/* Do not #undef these macros here since the build system might define */
/* them for certain configurations only. */
/* */
/* #define FT_DEBUG_AUTOFIT */
/*************************************************************************/
/* */
/* Memory Debugging */
/* */
/* FreeType now comes with an integrated memory debugger that is */
/* capable of detecting simple errors like memory leaks or double */
/* deletes. To compile it within your build of the library, you */
/* should define FT_DEBUG_MEMORY here. */
/* */
/* Note that the memory debugger is only activated at runtime when */
/* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
/* */
/* Do not #undef this macro here since the build system might define */
/* it for certain configurations only. */
/* */
/* #define FT_DEBUG_MEMORY */
/*************************************************************************/
/* */
/* Module errors */
/* */
/* If this macro is set (which is _not_ the default), the higher byte */
/* of an error code gives the module in which the error has occurred, */
/* while the lower byte is the real error code. */
/* */
/* Setting this macro makes sense for debugging purposes only, since */
/* it would break source compatibility of certain programs that use */
/* FreeType 2. */
/* */
/* More details can be found in the files ftmoderr.h and fterrors.h. */
/* */
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
/*************************************************************************/
/* */
/* Position Independent Code */
/* */
/* If this macro is set (which is _not_ the default), FreeType2 will */
/* avoid creating constants that require address fixups. Instead the */
/* constants will be moved into a struct and additional intialization */
/* code will be used. */
/* */
/* Setting this macro is needed for systems that prohibit address */
/* fixups, such as BREW. [Note that standard compilers like gcc or */
/* clang handle PIC generation automatically; you don't have to set */
/* FT_CONFIG_OPTION_PIC, which is only necessary for very special */
/* compilers.] */
/* */
/* Note that FT_CONFIG_OPTION_PIC support is not available for all */
/* modules (see `modules.cfg' for a complete list). For building with */
/* FT_CONFIG_OPTION_PIC support, do the following. */
/* */
/* 0. Clone the repository. */
/* 1. Define FT_CONFIG_OPTION_PIC. */
/* 2. Remove all subdirectories in `src' that don't have */
/* FT_CONFIG_OPTION_PIC support. */
/* 3. Comment out the corresponding modules in `modules.cfg'. */
/* 4. Compile. */
/* */
/* #define FT_CONFIG_OPTION_PIC */
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** S F N T D R I V E R C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
/* embedded bitmaps in all formats using the SFNT module (namely */
/* TrueType & OpenType). */
/* */
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
/* load and enumerate the glyph Postscript names in a TrueType or */
/* OpenType file. */
/* */
/* Note that when you do not compile the `PSNames' module by undefining */
/* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
/* contain additional code used to read the PS Names table from a font. */
/* */
/* (By default, the module uses `PSNames' to extract glyph names.) */
/* */
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
/* access the internal name table in a SFNT-based format like TrueType */
/* or OpenType. The name table contains various strings used to */
/* describe the font, like family name, copyright, version, etc. It */
/* does not contain any glyph name though. */
/* */
/* Accessing SFNT names is done through the functions declared in */
/* `ftsnames.h'. */
/* */
#define TT_CONFIG_OPTION_SFNT_NAMES
/*************************************************************************/
/* */
/* TrueType CMap support */
/* */
/* Here you can fine-tune which TrueType CMap table format shall be */
/* supported. */
#define TT_CONFIG_CMAP_FORMAT_0
#define TT_CONFIG_CMAP_FORMAT_2
#define TT_CONFIG_CMAP_FORMAT_4
#define TT_CONFIG_CMAP_FORMAT_6
#define TT_CONFIG_CMAP_FORMAT_8
#define TT_CONFIG_CMAP_FORMAT_10
#define TT_CONFIG_CMAP_FORMAT_12
#define TT_CONFIG_CMAP_FORMAT_13
#define TT_CONFIG_CMAP_FORMAT_14
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
/* a bytecode interpreter in the TrueType driver. */
/* */
/* By undefining this, you will only compile the code necessary to load */
/* TrueType glyphs without hinting. */
/* */
/* Do not #undef this macro here, since the build system might */
/* define it for certain configurations only. */
/* */
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */
/* subpixel hinting support into the TrueType driver. This modifies the */
/* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */
/* requested. */
/* */
/* In particular, it modifies the bytecode interpreter to interpret (or */
/* not) instructions in a certain way so that all TrueType fonts look */
/* like they do in a Windows ClearType (DirectWrite) environment. See */
/* [1] for a technical overview on what this means. See `ttinterp.h' */
/* for more details on the LEAN option. */
/* */
/* There are three options. */
/* */
/* 1. This option is associated with the `Infinality' moniker. */
/* Contributed by an individual nicknamed Infinality with the goal of */
/* making TrueType fonts render better than on Windows. A high */
/* amount of configurability and flexibility, down to rules for */
/* single glyphs in fonts, but also very slow. Its experimental and */
/* slow nature and the original developer losing interest meant that */
/* this option was never enabled in default builds. */
/* */
/* 2. The new default mode for the TrueType driver. The Infinality code */
/* base was stripped to the bare minimum and all configurability */
/* removed in the name of speed and simplicity. The configurability */
/* was mainly aimed at legacy fonts like Arial, Times New Roman, or */
/* Courier. Legacy fonts are fonts that modify vertical stems to */
/* achieve clean black-and-white bitmaps. The new mode focuses on */
/* applying a minimal set of rules to all fonts indiscriminately so */
/* that modern and web fonts render well while legacy fonts render */
/* okay. */
/* */
/* 3. Compile both. */
/* */
/* By undefining these, you get rendering behavior like on Windows */
/* without ClearType, i.e., Windows XP without ClearType enabled and */
/* Win9x (interpreter version v35). Or not, depending on how much */
/* hinting blood and testing tears the font designer put into a given */
/* font. If you define one or both subpixel hinting options, you can */
/* switch between between v35 and the ones you define. */
/* */
/* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */
/* defined. */
/* */
/* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
/* */
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
/* TrueType glyph loader to use Apple's definition of how to handle */
/* component offsets in composite glyphs. */
/* */
/* Apple and MS disagree on the default behavior of component offsets */
/* in composites. Apple says that they should be scaled by the scaling */
/* factors in the transformation matrix (roughly, it's more complex) */
/* while MS says they should not. OpenType defines two bits in the */
/* composite flags array which can be used to disambiguate, but old */
/* fonts will not have them. */
/* */
/* http://www.microsoft.com/typography/otspec/glyf.htm */
/* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
/* */
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */
/* support for Apple's distortable font technology (fvar, gvar, cvar, */
/* and avar tables). This has many similarities to Type 1 Multiple */
/* Masters support. */
/* */
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_BDF if you want to include support for */
/* an embedded `BDF ' table within SFNT-based bitmap formats. */
/* */
#define TT_CONFIG_OPTION_BDF
/*************************************************************************/
/* */
/* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum */
/* number of bytecode instructions executed for a single run of the */
/* bytecode interpreter, needed to prevent infinite loops. You don't */
/* want to change this except for very special situations (e.g., making */
/* a library fuzzer spend less time to handle broken fonts). */
/* */
/* It is not expected that this value is ever modified by a configuring */
/* script; instead, it gets surrounded with #ifndef ... #endif so that */
/* the value can be set as a preprocessor option on the compiler's */
/* command line. */
/* */
#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L
#endif
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */
/* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
/* required. */
/* */
#define T1_MAX_DICT_DEPTH 5
/*************************************************************************/
/* */
/* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
/* calls during glyph loading. */
/* */
#define T1_MAX_SUBRS_CALLS 16
/*************************************************************************/
/* */
/* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
/* minimum of 16 is required. */
/* */
/* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
/* */
#define T1_MAX_CHARSTRINGS_OPERANDS 256
/*************************************************************************/
/* */
/* Define this configuration macro if you want to prevent the */
/* compilation of `t1afm', which is in charge of reading Type 1 AFM */
/* files into an existing face. Note that if set, the T1 driver will be */
/* unable to produce kerning distances. */
/* */
#undef T1_CONFIG_OPTION_NO_AFM
/*************************************************************************/
/* */
/* Define this configuration macro if you want to prevent the */
/* compilation of the Multiple Masters font support in the Type 1 */
/* driver. */
/* */
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** C F F D R I V E R C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */
/* possible to set up the default values of the four control points that */
/* define the stem darkening behaviour of the (new) CFF engine. For */
/* more details please read the documentation of the */
/* `darkening-parameters' property of the cff driver module (file */
/* `ftcffdrv.h'), which allows the control at run-time. */
/* */
/* Do *not* undefine these macros! */
/* */
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0
/*************************************************************************/
/* */
/* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */
/* engine gets compiled into FreeType. If defined, it is possible to */
/* switch between the two engines using the `hinting-engine' property of */
/* the cff driver module. */
/* */
/* #define CFF_CONFIG_OPTION_OLD_ENGINE */
/*************************************************************************/
/*************************************************************************/
/**** ****/
/**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/
/**** ****/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/* */
/* Compile autofit module with CJK (Chinese, Japanese, Korean) script */
/* support. */
/* */
#define AF_CONFIG_OPTION_CJK
/*************************************************************************/
/* */
/* Compile autofit module with Indic script support. */
/* */
#define AF_CONFIG_OPTION_INDIC
/*************************************************************************/
/* */
/* Compile autofit module with warp hinting. The idea of the warping */
/* code is to slightly scale and shift a glyph within a single dimension */
/* so that as much of its segments are aligned (more or less) on the */
/* grid. To find out the optimal scaling and shifting value, various */
/* parameter combinations are tried and scored. */
/* */
/* This experimental option is active only if the rendering mode is */
/* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */
/* `warping' property of the auto-hinter (see file `ftautoh.h' for more */
/* information; by default it is switched off). */
/* */
#define AF_CONFIG_OPTION_USE_WARPER
/* */
/*
* This macro is obsolete. Support has been removed in FreeType
* version 2.5.
*/
/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
/*
* This macro is defined if native TrueType hinting is requested by the
* definitions above.
*/
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
#define TT_USE_BYTECODE_INTERPRETER
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1
#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
#endif
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
#endif
#endif
/*
* Check CFF darkening parameters. The checks are the same as in function
* `cff_property_set' in file `cffdrivr.c'.
*/
#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \
\
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \
\
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \
\
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500
#error "Invalid CFF darkening parameters!"
#endif
FT_END_HEADER
#endif /* FTOPTION_H_ */
/* END */

View File

@@ -0,0 +1,175 @@
/***************************************************************************/
/* */
/* ftstdlib.h */
/* */
/* ANSI-specific library and header configuration file (specification */
/* only). */
/* */
/* Copyright 2002-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
/*************************************************************************/
/* */
/* This file is used to group all #includes to the ANSI C library that */
/* FreeType normally requires. It also defines macros to rename the */
/* standard functions within the FreeType source code. */
/* */
/* Load a file which defines FTSTDLIB_H_ before this one to override it. */
/* */
/*************************************************************************/
#ifndef FTSTDLIB_H_
#define FTSTDLIB_H_
#include <stddef.h>
#define ft_ptrdiff_t ptrdiff_t
/**********************************************************************/
/* */
/* integer limits */
/* */
/* UINT_MAX and ULONG_MAX are used to automatically compute the size */
/* of `int' and `long' in bytes at compile-time. So far, this works */
/* for all platforms the library has been tested on. */
/* */
/* Note that on the extremely rare platforms that do not provide */
/* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */
/* old Crays where `int' is 36 bits), we do not make any guarantee */
/* about the correct behaviour of FT2 with all fonts. */
/* */
/* In these case, `ftconfig.h' will refuse to compile anyway with a */
/* message like `couldn't find 32-bit type' or something similar. */
/* */
/**********************************************************************/
#include <limits.h>
#define FT_CHAR_BIT CHAR_BIT
#define FT_USHORT_MAX USHRT_MAX
#define FT_INT_MAX INT_MAX
#define FT_INT_MIN INT_MIN
#define FT_UINT_MAX UINT_MAX
#define FT_LONG_MIN LONG_MIN
#define FT_LONG_MAX LONG_MAX
#define FT_ULONG_MAX ULONG_MAX
/**********************************************************************/
/* */
/* character and string processing */
/* */
/**********************************************************************/
#include <string.h>
#define ft_memchr memchr
#define ft_memcmp memcmp
#define ft_memcpy memcpy
#define ft_memmove memmove
#define ft_memset memset
#define ft_strcat strcat
#define ft_strcmp strcmp
#define ft_strcpy strcpy
#define ft_strlen strlen
#define ft_strncmp strncmp
#define ft_strncpy strncpy
#define ft_strrchr strrchr
#define ft_strstr strstr
/**********************************************************************/
/* */
/* file handling */
/* */
/**********************************************************************/
#include <stdio.h>
#define FT_FILE FILE
#define ft_fclose fclose
#define ft_fopen fopen
#define ft_fread fread
#define ft_fseek fseek
#define ft_ftell ftell
#define ft_sprintf sprintf
/**********************************************************************/
/* */
/* sorting */
/* */
/**********************************************************************/
#include <stdlib.h>
#define ft_qsort qsort
/**********************************************************************/
/* */
/* memory allocation */
/* */
/**********************************************************************/
#define ft_scalloc calloc
#define ft_sfree free
#define ft_smalloc malloc
#define ft_srealloc realloc
/**********************************************************************/
/* */
/* miscellaneous */
/* */
/**********************************************************************/
#define ft_strtol strtol
#define ft_getenv getenv
/**********************************************************************/
/* */
/* execution control */
/* */
/**********************************************************************/
#include <setjmp.h>
#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
/* jmp_buf is defined as a macro */
/* on certain platforms */
#define ft_longjmp longjmp
#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
/* the following is only used for debugging purposes, i.e., if */
/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */
#include <stdarg.h>
#endif /* FTSTDLIB_H_ */
/* END */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,187 @@
/***************************************************************************/
/* */
/* ftadvanc.h */
/* */
/* Quick computation of advance widths (specification only). */
/* */
/* Copyright 2008-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTADVANC_H_
#define FTADVANC_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/**************************************************************************
*
* @section:
* quick_advance
*
* @title:
* Quick retrieval of advance values
*
* @abstract:
* Retrieve horizontal and vertical advance values without processing
* glyph outlines, if possible.
*
* @description:
* This section contains functions to quickly extract advance values
* without handling glyph outlines, if possible.
*
* @order:
* FT_Get_Advance
* FT_Get_Advances
*
*/
/*************************************************************************/
/* */
/* <Const> */
/* FT_ADVANCE_FLAG_FAST_ONLY */
/* */
/* <Description> */
/* A bit-flag to be OR-ed with the `flags' parameter of the */
/* @FT_Get_Advance and @FT_Get_Advances functions. */
/* */
/* If set, it indicates that you want these functions to fail if the */
/* corresponding hinting mode or font driver doesn't allow for very */
/* quick advance computation. */
/* */
/* Typically, glyphs that are either unscaled, unhinted, bitmapped, */
/* or light-hinted can have their advance width computed very */
/* quickly. */
/* */
/* Normal and bytecode hinted modes that require loading, scaling, */
/* and hinting of the glyph outline, are extremely slow by */
/* comparison. */
/* */
#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_Advance */
/* */
/* <Description> */
/* Retrieve the advance value of a given glyph outline in an */
/* @FT_Face. */
/* */
/* <Input> */
/* face :: The source @FT_Face handle. */
/* */
/* gindex :: The glyph index. */
/* */
/* load_flags :: A set of bit flags similar to those used when */
/* calling @FT_Load_Glyph, used to determine what kind */
/* of advances you need. */
/* <Output> */
/* padvance :: The advance value. If scaling is performed (based on */
/* the value of `load_flags'), the advance value is in */
/* 16.16 format. Otherwise, it is in font units. */
/* */
/* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */
/* vertical advance corresponding to a vertical layout. */
/* Otherwise, it is the horizontal advance in a */
/* horizontal layout. */
/* */
/* <Return> */
/* FreeType error code. 0 means success. */
/* */
/* <Note> */
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
/* if the corresponding font backend doesn't have a quick way to */
/* retrieve the advances. */
/* */
/* A scaled advance is returned in 16.16 format but isn't transformed */
/* by the affine transformation specified by @FT_Set_Transform. */
/* */
FT_EXPORT( FT_Error )
FT_Get_Advance( FT_Face face,
FT_UInt gindex,
FT_Int32 load_flags,
FT_Fixed *padvance );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_Advances */
/* */
/* <Description> */
/* Retrieve the advance values of several glyph outlines in an */
/* @FT_Face. */
/* */
/* <Input> */
/* face :: The source @FT_Face handle. */
/* */
/* start :: The first glyph index. */
/* */
/* count :: The number of advance values you want to retrieve. */
/* */
/* load_flags :: A set of bit flags similar to those used when */
/* calling @FT_Load_Glyph. */
/* */
/* <Output> */
/* padvance :: The advance values. This array, to be provided by the */
/* caller, must contain at least `count' elements. */
/* */
/* If scaling is performed (based on the value of */
/* `load_flags'), the advance values are in 16.16 format. */
/* Otherwise, they are in font units. */
/* */
/* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */
/* vertical advances corresponding to a vertical layout. */
/* Otherwise, they are the horizontal advances in a */
/* horizontal layout. */
/* */
/* <Return> */
/* FreeType error code. 0 means success. */
/* */
/* <Note> */
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
/* if the corresponding font backend doesn't have a quick way to */
/* retrieve the advances. */
/* */
/* Scaled advances are returned in 16.16 format but aren't */
/* transformed by the affine transformation specified by */
/* @FT_Set_Transform. */
/* */
FT_EXPORT( FT_Error )
FT_Get_Advances( FT_Face face,
FT_UInt start,
FT_UInt count,
FT_Int32 load_flags,
FT_Fixed *padvances );
/* */
FT_END_HEADER
#endif /* FTADVANC_H_ */
/* END */

View File

@@ -0,0 +1,511 @@
/***************************************************************************/
/* */
/* ftautoh.h */
/* */
/* FreeType API for controlling the auto-hinter (specification only). */
/* */
/* Copyright 2012-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTAUTOH_H_
#define FTAUTOH_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/**************************************************************************
*
* @section:
* auto_hinter
*
* @title:
* The auto-hinter
*
* @abstract:
* Controlling the auto-hinting module.
*
* @description:
* While FreeType's auto-hinter doesn't expose API functions by itself,
* it is possible to control its behaviour with @FT_Property_Set and
* @FT_Property_Get. The following lists the available properties
* together with the necessary macros and structures.
*
* Note that the auto-hinter's module name is `autofitter' for
* historical reasons.
*
*/
/**************************************************************************
*
* @property:
* glyph-to-script-map
*
* @description:
* *Experimental* *only*
*
* The auto-hinter provides various script modules to hint glyphs.
* Examples of supported scripts are Latin or CJK. Before a glyph is
* auto-hinted, the Unicode character map of the font gets examined, and
* the script is then determined based on Unicode character ranges, see
* below.
*
* OpenType fonts, however, often provide much more glyphs than
* character codes (small caps, superscripts, ligatures, swashes, etc.),
* to be controlled by so-called `features'. Handling OpenType features
* can be quite complicated and thus needs a separate library on top of
* FreeType.
*
* The mapping between glyph indices and scripts (in the auto-hinter
* sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
* array with `num_glyphs' elements, as found in the font's @FT_Face
* structure. The `glyph-to-script-map' property returns a pointer to
* this array, which can be modified as needed. Note that the
* modification should happen before the first glyph gets processed by
* the auto-hinter so that the global analysis of the font shapes
* actually uses the modified mapping.
*
* The following example code demonstrates how to access it (omitting
* the error handling).
*
* {
* FT_Library library;
* FT_Face face;
* FT_Prop_GlyphToScriptMap prop;
*
*
* FT_Init_FreeType( &library );
* FT_New_Face( library, "foo.ttf", 0, &face );
*
* prop.face = face;
*
* FT_Property_Get( library, "autofitter",
* "glyph-to-script-map", &prop );
*
* // adjust `prop.map' as needed right here
*
* FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT );
* }
*
*/
/**************************************************************************
*
* @enum:
* FT_AUTOHINTER_SCRIPT_XXX
*
* @description:
* *Experimental* *only*
*
* A list of constants used for the @glyph-to-script-map property to
* specify the script submodule the auto-hinter should use for hinting a
* particular glyph.
*
* @values:
* FT_AUTOHINTER_SCRIPT_NONE ::
* Don't auto-hint this glyph.
*
* FT_AUTOHINTER_SCRIPT_LATIN ::
* Apply the latin auto-hinter. For the auto-hinter, `latin' is a
* very broad term, including Cyrillic and Greek also since characters
* from those scripts share the same design constraints.
*
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
* {
* U+0020 - U+007F // Basic Latin (no control characters)
* U+00A0 - U+00FF // Latin-1 Supplement (no control characters)
* U+0100 - U+017F // Latin Extended-A
* U+0180 - U+024F // Latin Extended-B
* U+0250 - U+02AF // IPA Extensions
* U+02B0 - U+02FF // Spacing Modifier Letters
* U+0300 - U+036F // Combining Diacritical Marks
* U+0370 - U+03FF // Greek and Coptic
* U+0400 - U+04FF // Cyrillic
* U+0500 - U+052F // Cyrillic Supplement
* U+1D00 - U+1D7F // Phonetic Extensions
* U+1D80 - U+1DBF // Phonetic Extensions Supplement
* U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement
* U+1E00 - U+1EFF // Latin Extended Additional
* U+1F00 - U+1FFF // Greek Extended
* U+2000 - U+206F // General Punctuation
* U+2070 - U+209F // Superscripts and Subscripts
* U+20A0 - U+20CF // Currency Symbols
* U+2150 - U+218F // Number Forms
* U+2460 - U+24FF // Enclosed Alphanumerics
* U+2C60 - U+2C7F // Latin Extended-C
* U+2DE0 - U+2DFF // Cyrillic Extended-A
* U+2E00 - U+2E7F // Supplemental Punctuation
* U+A640 - U+A69F // Cyrillic Extended-B
* U+A720 - U+A7FF // Latin Extended-D
* U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures)
* U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols
* U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement
* }
*
* FT_AUTOHINTER_SCRIPT_CJK ::
* Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old
* Vietnamese, and some other scripts.
*
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
* {
* U+1100 - U+11FF // Hangul Jamo
* U+2E80 - U+2EFF // CJK Radicals Supplement
* U+2F00 - U+2FDF // Kangxi Radicals
* U+2FF0 - U+2FFF // Ideographic Description Characters
* U+3000 - U+303F // CJK Symbols and Punctuation
* U+3040 - U+309F // Hiragana
* U+30A0 - U+30FF // Katakana
* U+3100 - U+312F // Bopomofo
* U+3130 - U+318F // Hangul Compatibility Jamo
* U+3190 - U+319F // Kanbun
* U+31A0 - U+31BF // Bopomofo Extended
* U+31C0 - U+31EF // CJK Strokes
* U+31F0 - U+31FF // Katakana Phonetic Extensions
* U+3200 - U+32FF // Enclosed CJK Letters and Months
* U+3300 - U+33FF // CJK Compatibility
* U+3400 - U+4DBF // CJK Unified Ideographs Extension A
* U+4DC0 - U+4DFF // Yijing Hexagram Symbols
* U+4E00 - U+9FFF // CJK Unified Ideographs
* U+A960 - U+A97F // Hangul Jamo Extended-A
* U+AC00 - U+D7AF // Hangul Syllables
* U+D7B0 - U+D7FF // Hangul Jamo Extended-B
* U+F900 - U+FAFF // CJK Compatibility Ideographs
* U+FE10 - U+FE1F // Vertical forms
* U+FE30 - U+FE4F // CJK Compatibility Forms
* U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms
* U+1B000 - U+1B0FF // Kana Supplement
* U+1D300 - U+1D35F // Tai Xuan Hing Symbols
* U+1F200 - U+1F2FF // Enclosed Ideographic Supplement
* U+20000 - U+2A6DF // CJK Unified Ideographs Extension B
* U+2A700 - U+2B73F // CJK Unified Ideographs Extension C
* U+2B740 - U+2B81F // CJK Unified Ideographs Extension D
* U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement
* }
*
* FT_AUTOHINTER_SCRIPT_INDIC ::
* Apply the indic auto-hinter, covering all major scripts from the
* Indian sub-continent and some other related scripts like Thai, Lao,
* or Tibetan.
*
* By default, characters from the following Unicode ranges are
* assigned to this submodule.
*
* {
* U+0900 - U+0DFF // Indic Range
* U+0F00 - U+0FFF // Tibetan
* U+1900 - U+194F // Limbu
* U+1B80 - U+1BBF // Sundanese
* U+A800 - U+A82F // Syloti Nagri
* U+ABC0 - U+ABFF // Meetei Mayek
* U+11800 - U+118DF // Sharada
* }
*
* Note that currently Indic support is rudimentary only, missing blue
* zone support.
*
*/
#define FT_AUTOHINTER_SCRIPT_NONE 0
#define FT_AUTOHINTER_SCRIPT_LATIN 1
#define FT_AUTOHINTER_SCRIPT_CJK 2
#define FT_AUTOHINTER_SCRIPT_INDIC 3
/**************************************************************************
*
* @struct:
* FT_Prop_GlyphToScriptMap
*
* @description:
* *Experimental* *only*
*
* The data exchange structure for the @glyph-to-script-map property.
*
*/
typedef struct FT_Prop_GlyphToScriptMap_
{
FT_Face face;
FT_UShort* map;
} FT_Prop_GlyphToScriptMap;
/**************************************************************************
*
* @property:
* fallback-script
*
* @description:
* *Experimental* *only*
*
* If no auto-hinter script module can be assigned to a glyph, a
* fallback script gets assigned to it (see also the
* @glyph-to-script-map property). By default, this is
* @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property,
* this fallback value can be changed.
*
* {
* FT_Library library;
* FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "autofitter",
* "fallback-script", &fallback_script );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* It's important to use the right timing for changing this value: The
* creation of the glyph-to-script map that eventually uses the
* fallback script value gets triggered either by setting or reading a
* face-specific property like @glyph-to-script-map, or by auto-hinting
* any glyph from that face. In particular, if you have already created
* an @FT_Face structure but not loaded any glyph (using the
* auto-hinter), a change of the fallback script will affect this face.
*
*/
/**************************************************************************
*
* @property:
* default-script
*
* @description:
* *Experimental* *only*
*
* If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make
* the HarfBuzz library access OpenType features for getting better
* glyph coverages, this property sets the (auto-fitter) script to be
* used for the default (OpenType) script data of a font's GSUB table.
* Features for the default script are intended for all scripts not
* explicitly handled in GSUB; an example is a `dlig' feature,
* containing the combination of the characters `T', `E', and `L' to
* form a `TEL' ligature.
*
* By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the
* `default-script' property, this default value can be changed.
*
* {
* FT_Library library;
* FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "autofitter",
* "default-script", &default_script );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* It's important to use the right timing for changing this value: The
* creation of the glyph-to-script map that eventually uses the
* default script value gets triggered either by setting or reading a
* face-specific property like @glyph-to-script-map, or by auto-hinting
* any glyph from that face. In particular, if you have already created
* an @FT_Face structure but not loaded any glyph (using the
* auto-hinter), a change of the default script will affect this face.
*
*/
/**************************************************************************
*
* @property:
* increase-x-height
*
* @description:
* For ppem values in the range 6~<= ppem <= `increase-x-height', round
* up the font's x~height much more often than normally. If the value
* is set to~0, which is the default, this feature is switched off. Use
* this property to improve the legibility of small font sizes if
* necessary.
*
* {
* FT_Library library;
* FT_Face face;
* FT_Prop_IncreaseXHeight prop;
*
*
* FT_Init_FreeType( &library );
* FT_New_Face( library, "foo.ttf", 0, &face );
* FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 );
*
* prop.face = face;
* prop.limit = 14;
*
* FT_Property_Set( library, "autofitter",
* "increase-x-height", &prop );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* Set this value right after calling @FT_Set_Char_Size, but before
* loading any glyph (using the auto-hinter).
*
*/
/**************************************************************************
*
* @struct:
* FT_Prop_IncreaseXHeight
*
* @description:
* The data exchange structure for the @increase-x-height property.
*
*/
typedef struct FT_Prop_IncreaseXHeight_
{
FT_Face face;
FT_UInt limit;
} FT_Prop_IncreaseXHeight;
/**************************************************************************
*
* @property:
* warping
*
* @description:
* *Experimental* *only*
*
* If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to
* activate the warp hinting code in the auto-hinter, this property
* switches warping on and off.
*
* Warping only works in `light' auto-hinting mode. The idea of the
* code is to slightly scale and shift a glyph along the non-hinted
* dimension (which is usually the horizontal axis) so that as much of
* its segments are aligned (more or less) to the grid. To find out a
* glyph's optimal scaling and shifting value, various parameter
* combinations are tried and scored.
*
* By default, warping is off. The example below shows how to switch on
* warping (omitting the error handling).
*
* {
* FT_Library library;
* FT_Bool warping = 1;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "autofitter",
* "warping", &warping );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable (using values 1 and 0 for `on' and `off', respectively).
*
* The warping code can also change advance widths. Have a look at the
* `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure
* for details on improving inter-glyph distances while rendering.
*
* Since warping is a global property of the auto-hinter it is best to
* change its value before rendering any face. Otherwise, you should
* reload all faces that get auto-hinted in `light' hinting mode.
*
*/
/**************************************************************************
*
* @property:
* no-stem-darkening[autofit]
*
* @description:
* *Experimental* *only,* *requires* *linear* *alpha* *blending* *and*
* *gamma* *correction*
*
* Stem darkening emboldens glyphs at smaller sizes to make them more
* readable on common low-DPI screens when using linear alpha blending
* and gamma correction, see @FT_Render_Glyph. When not using linear
* alpha blending and gamma correction, glyphs will appear heavy and
* fuzzy!
*
* Gamma correction essentially lightens fonts since shades of grey are
* shifted to higher pixel values (=~higher brightness) to match the
* original intention to the reality of our screens. The side-effect is
* that glyphs `thin out'. Mac OS~X and Adobe's proprietary font
* rendering library implement a counter-measure: stem darkening at
* smaller sizes where shades of gray dominate. By emboldening a glyph
* slightly in relation to its pixel size, individual pixels get higher
* coverage of filled-in outlines and are therefore `blacker'. This
* counteracts the `thinning out' of glyphs, making text remain readable
* at smaller sizes. All glyphs that pass through the auto-hinter will
* be emboldened unless this property is set to TRUE.
*
* See the description of the CFF driver for algorithmic details. Total
* consistency with the CFF driver is currently not achieved because the
* emboldening method differs and glyphs must be scaled down on the
* Y-axis to keep outline points inside their precomputed blue zones.
* The smaller the size (especially 9ppem and down), the higher the loss
* of emboldening versus the CFF driver.
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable similar to the CFF driver.
*
*/
/**************************************************************************
*
* @property:
* darkening-parameters[autofit]
*
* @description:
* *Experimental* *only*
*
* See the description of the CFF driver for details. This
* implementation appropriates the
* CFF_CONFIG_OPTION_DARKENING_PARAMETER_* #defines for consistency.
* Note the differences described in @no-stem-darkening[autofit].
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable similar to the CFF driver.
*/
/* */
FT_END_HEADER
#endif /* FTAUTOH_H_ */
/* END */

View File

@@ -0,0 +1,101 @@
/***************************************************************************/
/* */
/* ftbbox.h */
/* */
/* FreeType exact bbox computation (specification). */
/* */
/* Copyright 1996-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
/*************************************************************************/
/* */
/* This component has a _single_ role: to compute exact outline bounding */
/* boxes. */
/* */
/* It is separated from the rest of the engine for various technical */
/* reasons. It may well be integrated in `ftoutln' later. */
/* */
/*************************************************************************/
#ifndef FTBBOX_H_
#define FTBBOX_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* outline_processing */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* <Function> */
/* FT_Outline_Get_BBox */
/* */
/* <Description> */
/* Compute the exact bounding box of an outline. This is slower */
/* than computing the control box. However, it uses an advanced */
/* algorithm that returns _very_ quickly when the two boxes */
/* coincide. Otherwise, the outline Bézier arcs are traversed to */
/* extract their extrema. */
/* */
/* <Input> */
/* outline :: A pointer to the source outline. */
/* */
/* <Output> */
/* abbox :: The outline's exact bounding box. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
/* <Note> */
/* If the font is tricky and the glyph has been loaded with */
/* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */
/* reasonable values for the BBox it is necessary to load the glyph */
/* at a large ppem value (so that the hinting instructions can */
/* properly shift and scale the subglyphs), then extracting the BBox, */
/* which can be eventually converted back to font units. */
/* */
FT_EXPORT( FT_Error )
FT_Outline_Get_BBox( FT_Outline* outline,
FT_BBox *abbox );
/* */
FT_END_HEADER
#endif /* FTBBOX_H_ */
/* END */
/* Local Variables: */
/* coding: utf-8 */
/* End: */

View File

@@ -0,0 +1,210 @@
/***************************************************************************/
/* */
/* ftbdf.h */
/* */
/* FreeType API for accessing BDF-specific strings (specification). */
/* */
/* Copyright 2002-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTBDF_H_
#define FTBDF_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* bdf_fonts */
/* */
/* <Title> */
/* BDF and PCF Files */
/* */
/* <Abstract> */
/* BDF and PCF specific API. */
/* */
/* <Description> */
/* This section contains the declaration of functions specific to BDF */
/* and PCF fonts. */
/* */
/*************************************************************************/
/**********************************************************************
*
* @enum:
* BDF_PropertyType
*
* @description:
* A list of BDF property types.
*
* @values:
* BDF_PROPERTY_TYPE_NONE ::
* Value~0 is used to indicate a missing property.
*
* BDF_PROPERTY_TYPE_ATOM ::
* Property is a string atom.
*
* BDF_PROPERTY_TYPE_INTEGER ::
* Property is a 32-bit signed integer.
*
* BDF_PROPERTY_TYPE_CARDINAL ::
* Property is a 32-bit unsigned integer.
*/
typedef enum BDF_PropertyType_
{
BDF_PROPERTY_TYPE_NONE = 0,
BDF_PROPERTY_TYPE_ATOM = 1,
BDF_PROPERTY_TYPE_INTEGER = 2,
BDF_PROPERTY_TYPE_CARDINAL = 3
} BDF_PropertyType;
/**********************************************************************
*
* @type:
* BDF_Property
*
* @description:
* A handle to a @BDF_PropertyRec structure to model a given
* BDF/PCF property.
*/
typedef struct BDF_PropertyRec_* BDF_Property;
/**********************************************************************
*
* @struct:
* BDF_PropertyRec
*
* @description:
* This structure models a given BDF/PCF property.
*
* @fields:
* type ::
* The property type.
*
* u.atom ::
* The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be
* NULL, indicating an empty string.
*
* u.integer ::
* A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
*
* u.cardinal ::
* An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
*/
typedef struct BDF_PropertyRec_
{
BDF_PropertyType type;
union {
const char* atom;
FT_Int32 integer;
FT_UInt32 cardinal;
} u;
} BDF_PropertyRec;
/**********************************************************************
*
* @function:
* FT_Get_BDF_Charset_ID
*
* @description:
* Retrieve a BDF font character set identity, according to
* the BDF specification.
*
* @input:
* face ::
* A handle to the input face.
*
* @output:
* acharset_encoding ::
* Charset encoding, as a C~string, owned by the face.
*
* acharset_registry ::
* Charset registry, as a C~string, owned by the face.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This function only works with BDF faces, returning an error otherwise.
*/
FT_EXPORT( FT_Error )
FT_Get_BDF_Charset_ID( FT_Face face,
const char* *acharset_encoding,
const char* *acharset_registry );
/**********************************************************************
*
* @function:
* FT_Get_BDF_Property
*
* @description:
* Retrieve a BDF property from a BDF or PCF font file.
*
* @input:
* face :: A handle to the input face.
*
* name :: The property name.
*
* @output:
* aproperty :: The property.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This function works with BDF _and_ PCF fonts. It returns an error
* otherwise. It also returns an error if the property is not in the
* font.
*
* A `property' is a either key-value pair within the STARTPROPERTIES
* ... ENDPROPERTIES block of a BDF font or a key-value pair from the
* `info->props' array within a `FontRec' structure of a PCF font.
*
* Integer properties are always stored as `signed' within PCF fonts;
* consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
* for BDF fonts only.
*
* In case of error, `aproperty->type' is always set to
* @BDF_PROPERTY_TYPE_NONE.
*/
FT_EXPORT( FT_Error )
FT_Get_BDF_Property( FT_Face face,
const char* prop_name,
BDF_PropertyRec *aproperty );
/* */
FT_END_HEADER
#endif /* FTBDF_H_ */
/* END */

View File

@@ -0,0 +1,240 @@
/***************************************************************************/
/* */
/* ftbitmap.h */
/* */
/* FreeType utility functions for bitmaps (specification). */
/* */
/* Copyright 2004-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTBITMAP_H_
#define FTBITMAP_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* bitmap_handling */
/* */
/* <Title> */
/* Bitmap Handling */
/* */
/* <Abstract> */
/* Handling FT_Bitmap objects. */
/* */
/* <Description> */
/* This section contains functions for handling @FT_Bitmap objects. */
/* Note that none of the functions changes the bitmap's `flow' (as */
/* indicated by the sign of the `pitch' field in `FT_Bitmap'). */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* <Function> */
/* FT_Bitmap_Init */
/* */
/* <Description> */
/* Initialize a pointer to an @FT_Bitmap structure. */
/* */
/* <InOut> */
/* abitmap :: A pointer to the bitmap structure. */
/* */
/* <Note> */
/* A deprecated name for the same function is `FT_Bitmap_New'. */
/* */
FT_EXPORT( void )
FT_Bitmap_Init( FT_Bitmap *abitmap );
/* deprecated */
FT_EXPORT( void )
FT_Bitmap_New( FT_Bitmap *abitmap );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Bitmap_Copy */
/* */
/* <Description> */
/* Copy a bitmap into another one. */
/* */
/* <Input> */
/* library :: A handle to a library object. */
/* */
/* source :: A handle to the source bitmap. */
/* */
/* <Output> */
/* target :: A handle to the target bitmap. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
FT_EXPORT( FT_Error )
FT_Bitmap_Copy( FT_Library library,
const FT_Bitmap *source,
FT_Bitmap *target);
/*************************************************************************/
/* */
/* <Function> */
/* FT_Bitmap_Embolden */
/* */
/* <Description> */
/* Embolden a bitmap. The new bitmap will be about `xStrength' */
/* pixels wider and `yStrength' pixels higher. The left and bottom */
/* borders are kept unchanged. */
/* */
/* <Input> */
/* library :: A handle to a library object. */
/* */
/* xStrength :: How strong the glyph is emboldened horizontally. */
/* Expressed in 26.6 pixel format. */
/* */
/* yStrength :: How strong the glyph is emboldened vertically. */
/* Expressed in 26.6 pixel format. */
/* */
/* <InOut> */
/* bitmap :: A handle to the target bitmap. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
/* <Note> */
/* The current implementation restricts `xStrength' to be less than */
/* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
/* */
/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */
/* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */
/* */
/* Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format */
/* are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). */
/* */
FT_EXPORT( FT_Error )
FT_Bitmap_Embolden( FT_Library library,
FT_Bitmap* bitmap,
FT_Pos xStrength,
FT_Pos yStrength );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Bitmap_Convert */
/* */
/* <Description> */
/* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
/* to a bitmap object with depth 8bpp, making the number of used */
/* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */
/* */
/* <Input> */
/* library :: A handle to a library object. */
/* */
/* source :: The source bitmap. */
/* */
/* alignment :: The pitch of the bitmap is a multiple of this */
/* parameter. Common values are 1, 2, or 4. */
/* */
/* <Output> */
/* target :: The target bitmap. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
/* <Note> */
/* It is possible to call @FT_Bitmap_Convert multiple times without */
/* calling @FT_Bitmap_Done (the memory is simply reallocated). */
/* */
/* Use @FT_Bitmap_Done to finally remove the bitmap object. */
/* */
/* The `library' argument is taken to have access to FreeType's */
/* memory handling functions. */
/* */
FT_EXPORT( FT_Error )
FT_Bitmap_Convert( FT_Library library,
const FT_Bitmap *source,
FT_Bitmap *target,
FT_Int alignment );
/*************************************************************************/
/* */
/* <Function> */
/* FT_GlyphSlot_Own_Bitmap */
/* */
/* <Description> */
/* Make sure that a glyph slot owns `slot->bitmap'. */
/* */
/* <Input> */
/* slot :: The glyph slot. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
/* <Note> */
/* This function is to be used in combination with */
/* @FT_Bitmap_Embolden. */
/* */
FT_EXPORT( FT_Error )
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
/*************************************************************************/
/* */
/* <Function> */
/* FT_Bitmap_Done */
/* */
/* <Description> */
/* Destroy a bitmap object initialized with @FT_Bitmap_Init. */
/* */
/* <Input> */
/* library :: A handle to a library object. */
/* */
/* bitmap :: The bitmap object to be freed. */
/* */
/* <Return> */
/* FreeType error code. 0~means success. */
/* */
/* <Note> */
/* The `library' argument is taken to have access to FreeType's */
/* memory handling functions. */
/* */
FT_EXPORT( FT_Error )
FT_Bitmap_Done( FT_Library library,
FT_Bitmap *bitmap );
/* */
FT_END_HEADER
#endif /* FTBITMAP_H_ */
/* END */

View File

@@ -0,0 +1,102 @@
/***************************************************************************/
/* */
/* ftbzip2.h */
/* */
/* Bzip2-compressed stream support. */
/* */
/* Copyright 2010-2016 by */
/* Joel Klinghed. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTBZIP2_H_
#define FTBZIP2_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* bzip2 */
/* */
/* <Title> */
/* BZIP2 Streams */
/* */
/* <Abstract> */
/* Using bzip2-compressed font files. */
/* */
/* <Description> */
/* This section contains the declaration of Bzip2-specific functions. */
/* */
/*************************************************************************/
/************************************************************************
*
* @function:
* FT_Stream_OpenBzip2
*
* @description:
* Open a new stream to parse bzip2-compressed font files. This is
* mainly used to support the compressed `*.pcf.bz2' fonts that come
* with XFree86.
*
* @input:
* stream ::
* The target embedding stream.
*
* source ::
* The source stream.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* The source stream must be opened _before_ calling this function.
*
* Calling the internal function `FT_Stream_Close' on the new stream will
* *not* call `FT_Stream_Close' on the source stream. None of the stream
* objects will be released to the heap.
*
* The stream implementation is very basic and resets the decompression
* process each time seeking backwards is needed within the stream.
*
* In certain builds of the library, bzip2 compression recognition is
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
* This means that if no font driver is capable of handling the raw
* compressed file, the library will try to open a bzip2 compressed stream
* from it and re-open the face with it.
*
* This function may return `FT_Err_Unimplemented_Feature' if your build
* of FreeType was not compiled with bzip2 support.
*/
FT_EXPORT( FT_Error )
FT_Stream_OpenBzip2( FT_Stream stream,
FT_Stream source );
/* */
FT_END_HEADER
#endif /* FTBZIP2_H_ */
/* END */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,275 @@
/***************************************************************************/
/* */
/* ftcffdrv.h */
/* */
/* FreeType API for controlling the CFF driver (specification only). */
/* */
/* Copyright 2013-2016 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTCFFDRV_H_
#define FTCFFDRV_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/**************************************************************************
*
* @section:
* cff_driver
*
* @title:
* The CFF driver
*
* @abstract:
* Controlling the CFF driver module.
*
* @description:
* While FreeType's CFF driver doesn't expose API functions by itself,
* it is possible to control its behaviour with @FT_Property_Set and
* @FT_Property_Get. The list below gives the available properties
* together with the necessary macros and structures.
*
* The CFF driver's module name is `cff'.
*
* *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
*
* The rasterizer is positioning horizontal features (e.g., ascender
* height & x-height, or crossbars) on the pixel grid and minimizing the
* amount of antialiasing applied to them, while placing vertical
* features (vertical stems) on the pixel grid without hinting, thus
* representing the stem position and weight accurately. Sometimes the
* vertical stems may be only partially black. In this context,
* `antialiasing' means that stems are not positioned exactly on pixel
* borders, causing a fuzzy appearance.
*
* There are two principles behind this approach.
*
* 1) No hinting in the horizontal direction: Unlike `superhinted'
* TrueType, which changes glyph widths to accommodate regular
* inter-glyph spacing, Adobe's approach is `faithful to the design' in
* representing both the glyph width and the inter-glyph spacing
* designed for the font. This makes the screen display as close as it
* can be to the result one would get with infinite resolution, while
* preserving what is considered the key characteristics of each glyph.
* Note that the distances between unhinted and grid-fitted positions at
* small sizes are comparable to kerning values and thus would be
* noticeable (and distracting) while reading if hinting were applied.
*
* One of the reasons to not hint horizontally is antialiasing for LCD
* screens: The pixel geometry of modern displays supplies three
* vertical sub-pixels as the eye moves horizontally across each visible
* pixel. On devices where we can be certain this characteristic is
* present a rasterizer can take advantage of the sub-pixels to add
* increments of weight. In Western writing systems this turns out to
* be the more critical direction anyway; the weights and spacing of
* vertical stems (see above) are central to Armenian, Cyrillic, Greek,
* and Latin type designs. Even when the rasterizer uses greyscale
* antialiasing instead of color (a necessary compromise when one
* doesn't know the screen characteristics), the unhinted vertical
* features preserve the design's weight and spacing much better than
* aliased type would.
*
* 2) Alignment in the vertical direction: Weights and spacing along the
* y~axis are less critical; what is much more important is the visual
* alignment of related features (like cap-height and x-height). The
* sense of alignment for these is enhanced by the sharpness of grid-fit
* edges, while the cruder vertical resolution (full pixels instead of
* 1/3 pixels) is less of a problem.
*
* On the technical side, horizontal alignment zones for ascender,
* x-height, and other important height values (traditionally called
* `blue zones') as defined in the font are positioned independently,
* each being rounded to the nearest pixel edge, taking care of
* overshoot suppression at small sizes, stem darkening, and scaling.
*
* Hstems (this is, hint values defined in the font to help align
* horizontal features) that fall within a blue zone are said to be
* `captured' and are aligned to that zone. Uncaptured stems are moved
* in one of four ways, top edge up or down, bottom edge up or down.
* Unless there are conflicting hstems, the smallest movement is taken
* to minimize distortion.
*
* @order:
* hinting-engine[cff]
* no-stem-darkening[cff]
* darkening-parameters[cff]
*
*/
/**************************************************************************
*
* @property:
* hinting-engine[cff]
*
* @description:
* Thanks to Adobe, which contributed a new hinting (and parsing)
* engine, an application can select between `freetype' and `adobe' if
* compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration
* macro isn't defined, `hinting-engine' does nothing.
*
* The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
* defined, and `adobe' otherwise.
*
* The following example code demonstrates how to select Adobe's hinting
* engine (omitting the error handling).
*
* {
* FT_Library library;
* FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "cff",
* "hinting-engine", &hinting_engine );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable (using values `adobe' or `freetype').
*/
/**************************************************************************
*
* @enum:
* FT_CFF_HINTING_XXX
*
* @description:
* A list of constants used for the @hinting-engine[cff] property to
* select the hinting engine for CFF fonts.
*
* @values:
* FT_CFF_HINTING_FREETYPE ::
* Use the old FreeType hinting engine.
*
* FT_CFF_HINTING_ADOBE ::
* Use the hinting engine contributed by Adobe.
*
*/
#define FT_CFF_HINTING_FREETYPE 0
#define FT_CFF_HINTING_ADOBE 1
/**************************************************************************
*
* @property:
* no-stem-darkening[cff]
*
* @description:
* By default, the Adobe CFF engine darkens stems at smaller sizes,
* regardless of hinting, to enhance contrast. This feature requires
* a rendering system with proper gamma correction. Setting this
* property, stem darkening gets switched off.
*
* Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
*
* {
* FT_Library library;
* FT_Bool no_stem_darkening = TRUE;
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "cff",
* "no-stem-darkening", &no_stem_darkening );
* }
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable (using values 1 and 0 for `on' and `off', respectively).
*
*/
/**************************************************************************
*
* @property:
* darkening-parameters[cff]
*
* @description:
* By default, the Adobe CFF engine darkens stems as follows (if the
* `no-stem-darkening' property isn't set):
*
* {
* stem width <= 0.5px: darkening amount = 0.4px
* stem width = 1px: darkening amount = 0.275px
* stem width = 1.667px: darkening amount = 0.275px
* stem width >= 2.333px: darkening amount = 0px
* }
*
* and piecewise linear in-between. At configuration time, these four
* control points can be set with the macro
* `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control
* points can be changed using the `darkening-parameters' property, as
* the following example demonstrates.
*
* {
* FT_Library library;
* FT_Int darken_params[8] = { 500, 300, // x1, y1
* 1000, 200, // x2, y2
* 1500, 100, // x3, y3
* 2000, 0 }; // x4, y4
*
*
* FT_Init_FreeType( &library );
*
* FT_Property_Set( library, "cff",
* "darkening-parameters", darken_params );
* }
*
* The x~values give the stem width, and the y~values the darkening
* amount. The unit is 1000th of pixels. All coordinate values must be
* positive; the x~values must be monotonically increasing; the
* y~values must be monotonically decreasing and smaller than or
* equal to 500 (corresponding to half a pixel); the slope of each
* linear piece must be shallower than -1 (e.g., -.4).
*
* @note:
* This property can be used with @FT_Property_Get also.
*
* This property can be set via the `FREETYPE_PROPERTIES' environment
* variable, using eight comma-separated integers without spaces. Here
* the above example, using `\' to break the line for readability.
*
* {
* FREETYPE_PROPERTIES=\
* cff:darkening-parameters=500,300,1000,200,1500,100,2000,0
* }
*/
/* */
FT_END_HEADER
#endif /* FTCFFDRV_H_ */
/* END */

View File

@@ -0,0 +1,135 @@
/***************************************************************************/
/* */
/* This file defines the structure of the FreeType reference. */
/* It is used by the python script that generates the HTML files. */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* general_remarks */
/* */
/* <Title> */
/* General Remarks */
/* */
/* <Sections> */
/* header_inclusion */
/* user_allocation */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* core_api */
/* */
/* <Title> */
/* Core API */
/* */
/* <Sections> */
/* version */
/* basic_types */
/* base_interface */
/* glyph_variants */
/* glyph_management */
/* mac_specific */
/* sizes_management */
/* header_file_macros */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* format_specific */
/* */
/* <Title> */
/* Format-Specific API */
/* */
/* <Sections> */
/* multiple_masters */
/* truetype_tables */
/* type1_tables */
/* sfnt_names */
/* bdf_fonts */
/* cid_fonts */
/* pfr_fonts */
/* winfnt_fonts */
/* font_formats */
/* gasp_table */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* module_specific */
/* */
/* <Title> */
/* Controlling FreeType Modules */
/* */
/* <Sections> */
/* auto_hinter */
/* cff_driver */
/* tt_driver */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* cache_subsystem */
/* */
/* <Title> */
/* Cache Sub-System */
/* */
/* <Sections> */
/* cache_subsystem */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* support_api */
/* */
/* <Title> */
/* Support API */
/* */
/* <Sections> */
/* computations */
/* list_processing */
/* outline_processing */
/* quick_advance */
/* bitmap_handling */
/* raster */
/* glyph_stroker */
/* system_interface */
/* module_management */
/* gzip */
/* lzw */
/* bzip2 */
/* lcd_filtering */
/* */
/***************************************************************************/
/***************************************************************************/
/* */
/* <Chapter> */
/* error_codes */
/* */
/* <Title> */
/* Error Codes */
/* */
/* <Sections> */
/* error_enumerations */
/* error_code_values */
/* */
/***************************************************************************/

View File

@@ -0,0 +1,168 @@
/***************************************************************************/
/* */
/* ftcid.h */
/* */
/* FreeType API for accessing CID font information (specification). */
/* */
/* Copyright 2007-2016 by */
/* Dereg Clegg and Michael Toftdal. */
/* */
/* This file is part of the FreeType project, and may only be used, */
/* modified, and distributed under the terms of the FreeType project */
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
/* this file you indicate that you have read the license and */
/* understand and accept it fully. */
/* */
/***************************************************************************/
#ifndef FTCID_H_
#define FTCID_H_
#include <ft2build.h>
#include FT_FREETYPE_H
#ifdef FREETYPE_H
#error "freetype.h of FreeType 1 has been loaded!"
#error "Please fix the directory search order for header files"
#error "so that freetype.h of FreeType 2 is found first."
#endif
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* cid_fonts */
/* */
/* <Title> */
/* CID Fonts */
/* */
/* <Abstract> */
/* CID-keyed font specific API. */
/* */
/* <Description> */
/* This section contains the declaration of CID-keyed font specific */
/* functions. */
/* */
/*************************************************************************/
/**********************************************************************
*
* @function:
* FT_Get_CID_Registry_Ordering_Supplement
*
* @description:
* Retrieve the Registry/Ordering/Supplement triple (also known as the
* "R/O/S") from a CID-keyed font.
*
* @input:
* face ::
* A handle to the input face.
*
* @output:
* registry ::
* The registry, as a C~string, owned by the face.
*
* ordering ::
* The ordering, as a C~string, owned by the face.
*
* supplement ::
* The supplement.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This function only works with CID faces, returning an error
* otherwise.
*
* @since:
* 2.3.6
*/
FT_EXPORT( FT_Error )
FT_Get_CID_Registry_Ordering_Supplement( FT_Face face,
const char* *registry,
const char* *ordering,
FT_Int *supplement);
/**********************************************************************
*
* @function:
* FT_Get_CID_Is_Internally_CID_Keyed
*
* @description:
* Retrieve the type of the input face, CID keyed or not. In
* contrast to the @FT_IS_CID_KEYED macro this function returns
* successfully also for CID-keyed fonts in an SFNT wrapper.
*
* @input:
* face ::
* A handle to the input face.
*
* @output:
* is_cid ::
* The type of the face as an @FT_Bool.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This function only works with CID faces and OpenType fonts,
* returning an error otherwise.
*
* @since:
* 2.3.9
*/
FT_EXPORT( FT_Error )
FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
FT_Bool *is_cid );
/**********************************************************************
*
* @function:
* FT_Get_CID_From_Glyph_Index
*
* @description:
* Retrieve the CID of the input glyph index.
*
* @input:
* face ::
* A handle to the input face.
*
* glyph_index ::
* The input glyph index.
*
* @output:
* cid ::
* The CID as an @FT_UInt.
*
* @return:
* FreeType error code. 0~means success.
*
* @note:
* This function only works with CID faces and OpenType fonts,
* returning an error otherwise.
*
* @since:
* 2.3.9
*/
FT_EXPORT( FT_Error )
FT_Get_CID_From_Glyph_Index( FT_Face face,
FT_UInt glyph_index,
FT_UInt *cid );
/* */
FT_END_HEADER
#endif /* FTCID_H_ */
/* END */

Some files were not shown because too many files have changed in this diff Show More