Unknown W. Brackets
6aec68aa5c
samplerjit: Correct wrong bufw at mip levels.
...
Oops, was always using the base bufw.
2022-01-01 16:40:02 -08:00
Unknown W. Brackets
dbb015f427
samplerjit: Oops, fix Linux mipmap handling.
2022-01-01 16:40:02 -08:00
Unknown W. Brackets
8c31f1bb38
softjit: Fix regcache error when clearing.
...
Happens for non-through clears.
2022-01-01 16:40:01 -08:00
Unknown W. Brackets
8ea67b571b
samplerjit: Tiny dependency optimizations.
...
This had a small but measureable impact (~0.3%.)
2021-12-31 08:11:57 -08:00
Unknown W. Brackets
fc3688d273
samplerjit: Small AVX optimization to modulate.
...
Only gives about 0.5% but it's still something.
2021-12-31 08:10:04 -08:00
Henrik Rydgård
244b0a86f6
Merge pull request #15262 from unknownbrackets/samplerjit-vec
...
samplerjit: Use SSSE3/SSE4 in linear filtering
2021-12-31 09:29:59 +01:00
Unknown W. Brackets
33e9841a4a
softgpu: Skip zero size triangles.
...
These were drawing before, incorrectly, which caused artifacts.
Noticeable in Blade Dancer.
2021-12-31 00:20:12 -08:00
Unknown W. Brackets
1addf84e90
samplerjit: Use SSSE3/SSE4 in linear filtering.
2021-12-30 23:22:56 -08:00
Unknown W. Brackets
147b81d6f7
x64jit: Add AVX/AVX2 encodings.
...
Also fix the FMA double ones, which were passing W wrongly.
2021-12-29 19:46:26 -08:00
Unknown W. Brackets
4bd94a4e5e
samplerjit: Pass funcs as an argument.
...
Seeing computing the ID in some profiles, so want to avoid computing per
thread/invocation.
2021-12-29 07:11:53 -08:00
Unknown W. Brackets
28cfbe0e5a
samplerjit: Add an alternate profiling method.
...
This is more useful to group common operations together for profiling.
2021-12-29 07:11:39 -08:00
Unknown W. Brackets
3aedea89eb
samplerjit: Correct level lookup offset.
2021-12-29 07:09:36 -08:00
Unknown W. Brackets
bf06342f9d
samplerjit: Minor SSE4 optimizations.
...
These seem to be a bit faster.
2021-12-29 07:07:35 -08:00
Unknown W. Brackets
631706a8ba
samplerjit: Set stackArgPos_ early.
...
Unfortunately, this has to match the value set lower...
2021-12-28 20:21:21 -08:00
Unknown W. Brackets
74eb450e76
samplerjit: Move texture function into jit.
...
Could do this also for nearest, might end up with a third set of functions
there for a direct sample lookup (for debug funcs.)
2021-12-28 17:52:17 -08:00
Unknown W. Brackets
940e6bb1d7
samplerjit: Lookup both mip tex values.
2021-12-28 16:22:54 -08:00
Unknown W. Brackets
6b55d328e5
samplerjit: Use regcache for linear filtering.
...
This makes it easier to reuse for mipmap filtering.
2021-12-28 15:37:25 -08:00
Unknown W. Brackets
cdf14c8579
samplerjit: Calculate mip level U/V/offsets.
...
Not actually doing the sampling for the second mip level in the single jit
pass yet, but close.
2021-12-28 14:12:58 -08:00
Unknown W. Brackets
a4558a5736
samplerjit: Take texptr/bufw as arrays.
...
Prep for moving mip map sampling into linear.
2021-12-28 12:04:16 -08:00
Unknown W. Brackets
4864850b3b
samplerjit: Handle mipmap width/height in S/T calc.
2021-12-28 11:29:29 -08:00
Unknown W. Brackets
a84accf713
samplerjit: Move S/T calculation into jit.
...
Gives a pretty decent 5-10% improvement in many places.
2021-12-28 09:58:23 -08:00
Unknown W. Brackets
476dfdf731
samplerjit: Add more bits for S/T, skip multiply.
...
For now, we're not using those other bits yet.
2021-12-27 18:24:37 -08:00
Unknown W. Brackets
9cc0883d53
softgpu: Correct non-SSE T clamp.
2021-12-27 15:31:37 -08:00
Unknown W. Brackets
39d5b1c221
softgpu: Reduce mipmap fraction to 4 bits.
...
For CONST (and SLOPE with flat w), this produces accurate values.
SLOPE is still wrong in its handling of w, and AUTO seems to calculate
using a different and less accurate ramp. But they both produce values
with 16 steps, in any case.
2021-12-27 11:37:33 -08:00
Unknown W. Brackets
d6b6ef4cb1
softgpu: Correct nearest filtering too.
...
Turns out to have the same behavior as linear, when it comes to the
subpixel offset.
2021-12-27 11:37:33 -08:00
Unknown W. Brackets
1dfaea9062
softgpu: Remove no longer possible report.
...
Also, it's known how this behaves, now.
2021-12-27 11:37:33 -08:00
Unknown W. Brackets
75f105f84b
softgpu: Make linear filtering more accurate.
...
This matches tests for various u/v offsets and x/y subpixel offsets.
Mipmaps are probably still wrong.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
3cd19b02ac
samplerjit: Handle unswizzled offsets too.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
820361f34b
samplerjit: Calculate texel byte offset as vector.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
4d6a2f3919
samplerjit: Blend linear using integers.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
6f4e735757
samplerjit: Accumulate results in an XMM.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
b00a66e34c
samplerjit: Pass u/v coords as vector.
2021-12-27 11:37:32 -08:00
Unknown W. Brackets
ce3e29a649
softjit: Fix a function arg template warning.
...
We're just ignoring it because it's a false positive in this case.
2021-12-11 10:45:27 -08:00
Unknown W. Brackets
0d4ec5ca20
softjit: Fix an enum type comparion error.
...
Same values, though, so didn't matter.
2021-12-11 10:45:27 -08:00
Henrik Rydgård
818f33d979
Merge pull request #15225 from unknownbrackets/softjit-cond-fix
...
softjit: Throw away regs allocated in conditionals
2021-12-11 09:30:43 +01:00
Unknown W. Brackets
5593b8ff64
softjit: Skip a common case CMP.
2021-12-11 00:06:45 -08:00
Unknown W. Brackets
d35ef352c3
softjit: Throw away regs allocated in conditionals.
...
If this happens, the register no longer has a deterministic value.
2021-12-11 00:06:14 -08:00
Unknown W. Brackets
b3cd135000
samplerjit: Fix DXT1/DXT5 register releasing.
...
Oops, broke this while refactoring.
2021-12-09 08:17:29 -08:00
Unknown W. Brackets
3180e6c043
softgpu: Correct alpha on add + invalid texfuncs.
2021-12-05 16:28:37 -08:00
Unknown W. Brackets
325a1f75aa
softgpu: Match texenv blend texfunc accurately.
2021-12-05 16:09:26 -08:00
Unknown W. Brackets
0b6e7c421f
softgpu: Make decal tex func more accurate.
...
Tested for all values of A * B + 0 * (255 - B), as well as A * 127 + B *
(255 - 127), and matches accurately. Spot checked other values, but not
exhaustively.
2021-12-05 13:34:19 -08:00
Unknown W. Brackets
154bb53744
softgpu: Correct accuracy on fast path modulate.
2021-12-05 13:10:18 -08:00
Unknown W. Brackets
73460f7461
softgpu: Correct accuracy of MODULATE texfunc.
...
This matches hardware tests for every value of A * B.
Interesting that it's a different formula than alpha blend.
2021-12-05 12:06:52 -08:00
Unknown W. Brackets
891fa8c613
softgpu: Template away uncommon mip usage.
...
Improves general case about 10%.
2021-12-04 15:45:06 -08:00
Unknown W. Brackets
48e9404419
softgpu: Remove useless switch by UV gen mode.
...
They're all handled earlier now, and the switch is on a value & 3, so the
default wasn't even possible.
2021-12-04 15:45:06 -08:00
Unknown W. Brackets
ff94974df9
softgpu: Avoid texlevel check when maxlevel is 0.
2021-12-04 15:45:06 -08:00
Unknown W. Brackets
823c4adb15
softgpu: Keep arguments in vectors for sampling.
2021-12-04 15:45:06 -08:00
Unknown W. Brackets
d7c25b3e7c
samplerjit: Refactor nearest using reg cache.
2021-12-04 13:04:53 -08:00
Unknown W. Brackets
4aa5bee14c
softjit: Make it an error to unlock a temp.
...
Also fix some register usage in logic ops.
2021-12-01 21:50:02 -08:00
Unknown W. Brackets
75a918f96f
softjit: Get rid of pointless AGE00 tests.
2021-12-01 21:44:10 -08:00