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.
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.
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 😄
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.
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.
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.
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.
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.
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.
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.
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
* 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
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
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.
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
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.
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.
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
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.
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.
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.
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