dolphin
dolphin copied to clipboard
BitFieldView: Video Changes
This PR is part 2 of splitting the monolithic PR #10610. It is dependent on PR #10846.
This pull request increments GX_PIPELINE_UID_VERSION (GXPipelineTypes.h) and STATE_VERSION (State.cpp).
What a headache that rebase was.
FifoCI detected that this change impacts graphical rendering. Here are the behavior differences detected by the system:
-
burnout2-vehicletextures
onogl-lin-radeon
: diff -
custom-brawl-char
onogl-lin-radeon
: diff -
fishing-resort-map
onogl-lin-radeon
: diff -
fortune-street
onogl-lin-radeon
: diff -
fortune-street-fog
onogl-lin-radeon
: diff -
f-zero-rain
onogl-lin-radeon
: diff -
mini-ninjas
onogl-lin-radeon
: diff -
mkdd-efb
onogl-lin-radeon
: diff -
nddemo-lighting
onogl-lin-radeon
: diff -
pbr-sfx
onogl-lin-radeon
: diff -
rs2-skybox
onogl-lin-radeon
: diff -
sadx-ui
onogl-lin-radeon
: diff -
sfa-shadows
onogl-lin-radeon
: diff -
sf-assault-flashing
onogl-lin-radeon
: diff -
soa-black
onogl-lin-radeon
: diff -
sonic-riders-blur
onogl-lin-radeon
: diff -
sonic-riders-zg-4p
onogl-lin-radeon
: diff -
sonicriderszg-gb
onogl-lin-radeon
: diff -
spyro-bloom
onogl-lin-radeon
: diff -
spyro-depth
onogl-lin-radeon
: diff -
ssbb-mod-lloyd
onogl-lin-radeon
: diff -
sw3-dt
onogl-lin-radeon
: diff -
tla-menu
onogl-lin-radeon
: diff -
tp-skin
onogl-lin-radeon
: diff -
tsp3-pinkgrass
onogl-lin-radeon
: diff -
vegas-party-depth
onogl-lin-radeon
: diff -
xenoblade-menu
onogl-lin-radeon
: diff -
ztp-grass
onogl-lin-radeon
: diff -
zww-armos
onogl-lin-radeon
: diff -
zww-water
onogl-lin-radeon
: diff -
zww-waves
onogl-lin-radeon
: diff
automated-fifoci-reporter
And that is why I made a backup
Do not be alarmed by the force push. I decided to remake this goliath of a PR to both further split it into commits and also because rebasing proved difficult. I have a backup of the original changes on branch bfview-video-copy which I will be referencing throughout the process.
I found conflicting info on whether a TexInputForm field is supposed to be two bits or one bit wide. I think the info in XFMemory.h strongly suggests the latter.
I am thinking the cc and ac 24-bit values in the PixelShader UID's stagehashes might be better off as C bit fields. I really want to make them into C23's BitInts or some kind of native int24_t, and a C bit field is the next best thing.
I've wanted to make the usage of the component field cleaner, but I think the code might end up less efficient. Before, it would be right shift by constant (since it is zero, this is a no-op), mask by constant, mask by constant, compare against 0 (two operations, after the two masks get fused). Now it is right shift by constant, mask by constant, compare against 0 (three operations).
Well I thought I was clever in optimizing Common::ExtractBit to use the same idiom as seen in VertexShaderGen, only to see the compiler do this: https://godbolt.org/z/evjr8hrrx.