Commit Graph
9567 Commits
Author SHA1 Message Date
Henrik Rydgård 6560123257 Restore optimization of memory info strings, avoiding allocations 2022-12-01 15:39:45 +01:00
Henrik Rydgård 40ae99073b Remove std::string from VulkanTexture 2022-12-01 12:17:03 +01:00
Unknown W. Brackets 5bc51cb01d GE Debugger: Remove dup block transfer record.
We already record it as a block transfer, we don't need to also do it as a
memcpy.
2022-12-01 01:36:27 -08:00
Unknown W. Brackets 73489349cc GPU: Oops, simplify an expression. 2022-12-01 01:34:48 -08:00
Unknown W. Brackets cbe96d3774 GPU: Use common block transfer logic in all cases. 2022-12-01 01:34:16 -08:00
Unknown W. Brackets 3589c1e826 softgpu: Handle block transfer VRAM wrapping.
Note: mirrors still act as mirrors, swizzle and all.
2022-12-01 01:31:44 -08:00
Unknown W. Brackets 1c5f0d575c softgpu: Improve meminfo detail on block transfer.
Gaps are useful to understand.
2022-12-01 01:31:44 -08:00
Unknown W. Brackets 68515aaee2 softgpu: Account for width!=stride in xfer checks. 2022-12-01 01:31:43 -08:00
Unknown W. Brackets 2adc18cfba softgpu: Correct src/dst overlap in block transfer.
If dest is inside src, it seems to consistently copy in blocks of 64
bytes.
2022-12-01 01:31:43 -08:00
Henrik RydgårdandGitHub c3aaf5b184 Merge pull request #16472 from unknownbrackets/fetch-fix
GLES: Correct unit tests for framebuffer fetch
2022-12-01 10:16:45 +01:00
Henrik RydgårdandGitHub 4b7084401d Merge pull request #16470 from unknownbrackets/softgpu-inversion
softgpu: Correctly fix inversions, matching tests
2022-12-01 09:59:56 +01:00
Unknown W. Brackets fc5dcd0c16 GLES: Correct unit tests for framebuffer fetch. 2022-12-01 00:59:22 -08:00
Unknown W. Brackets d763dca024 GPU: Correct fetch assert. 2022-12-01 00:17:14 -08:00
Unknown W. Brackets dc962094f8 softgpu: Correctly fix inversions, matching tests.
Inversions are allowed just fine, but if clipping results in coordinates
outside range, the triangle should be culled.  Fixes more wanted
inversions.
2022-11-30 23:20:39 -08:00
Lubos 09d48075bc Merge branch 'master' into compat_openxr_fixes 2022-11-30 22:00:33 +01:00
Henrik RydgårdandGitHub f4385e1bea Merge pull request #16456 from hrydgard/soft-gpu-range-checks
SoftGPU: Range check block copies.
2022-11-30 14:56:15 +01:00
Henrik Rydgård d72ad3b3f4 Fragment shader generator: Move the framebuffer fetch bit to the shader ID.
Will resolve a future issue in the multisampling PR, where the
GPU_USE_FRAMEBUFFER_FETCH flag changes at runtime if you switch between no AA and MSAA.

Just figured I'd get it in separately for safety.
2022-11-30 00:26:15 +01:00
Lubos de78007e66 OpenXR - Enable HUD in a few more games 2022-11-29 22:17:12 +01:00
Lubos 812c7d13aa OpenXR - HUD disappearing in Flatout fixed 2022-11-29 21:25:13 +01:00
Henrik Rydgård 390bf3e912 Fix Burnout Dominator lens flare on OpenGL ES
Not the prettiest solution, but works: Use R8_UNORM as a fallback
if R16_UNORM is not available.
2022-11-29 13:05:18 +01:00
Lubos d466ae161a OpenXR - HUD max scale fixed 2022-11-28 19:46:46 +01:00
Lubos 164c27f5ec OpenXR - Screen stretching fixed 2022-11-28 19:25:13 +01:00
Henrik Rydgård 9bb0c91a75 Sneak in a minor software transform optimization 2022-11-28 11:10:50 +01:00
Henrik Rydgård 6c8ccc149e Stop logspam from bad block transfer corners. 2022-11-28 10:46:45 +01:00
Henrik Rydgård 3246baec4b SoftGPU: Range check block copies.
Needs testing to verify if we should copy zeroes instead if the src range is
partial, etc, quite a few possible edge cases.

Though on its own, this probably fixes the crash in #16427.

Still don't understand why that one has issues in hardware renderers
though since they do bounds-check the copies.
2022-11-28 10:39:46 +01:00
Henrik RydgårdandGitHub ed151473c2 Merge pull request #16454 from unknownbrackets/fb-depal-fb
GPU: Support framebuf depal from rendered CLUT
2022-11-28 09:47:22 +01:00
Henrik RydgårdandGitHub 06b7fb9a6a Merge pull request #16452 from unknownbrackets/gedebugger
GE Debugger: Correct LastVRAM mirror wrap around
2022-11-28 08:02:09 +01:00
Unknown W. Brackets 9425d0670a GPU: Prevent decimating CLUT framebuffers.
Fixes color changing after a few moments in Kurohyo.
2022-11-27 21:24:02 -08:00
Unknown W. Brackets a7c4258e9f GPU: Support framebuf depal from rendered CLUT.
Using a temporary always for simplicity.
2022-11-27 21:16:24 -08:00
Unknown W. Brackets 194c4b0286 TexCache: Support offset in rendered CLUTs.
We already copy to a temp, so just use that copy to normalize out the
offset.  Should even get RECT2LIN correct, but most cases are 1 pixel high
anyway.
2022-11-27 21:15:15 -08:00
Unknown W. Brackets a6bc9acf16 GE Debugger: Correct LastVRAM mirror wrap around.
Oops, this fixes crashes when textures are used near the edge of VRAM.
2022-11-27 19:59:57 -08:00
Henrik Rydgård 72029b678a Empirical attempt at fixing #15661
Basically, software culling fails in some configuration, like the one we
end up with on Mali.

As noted by unknownbrackets in #15661, the viewport Z scale, offset is -0.0, 0.0.

We end up with CalcCullParams computing minZValue == maxZValue == 1.0f,
and with the vertices ending up with z,w == 1.0, 1.0.
and as a result, the inside/outside calculations will always decide that
it's outside.

Changing the comparisons from >= / <= to > / < fixes the problem, but I
don't know if this might break something else.

Anyhow, here's the simple way to repro on PC:

Change the ending of GPU_Vulkan::CheckFeatures to:

```c
	return GPU_USE_LIGHT_UBERSHADER | GPU_USE_BLEND_MINMAX | GPU_USE_TEXTURE_NPOT | GPU_USE_INSTANCE_RENDERING |
		GPU_USE_VERTEX_TEXTURE_FETCH | GPU_USE_TEXTURE_FLOAT | GPU_USE_16BIT_FORMATS | GPU_USE_TEXTURE_LOD_CONTROL |
		GPU_USE_DEPTH_TEXTURE | GPU_USE_ACCURATE_DEPTH;
```
2022-11-27 23:16:16 +01:00
Henrik Rydgård 200e2f26c4 OffsetY fix for non-vulkan backends 2022-11-27 22:58:49 +01:00
Henrik Rydgård d667bd84a3 Add back the old stretch-if-close-to-16:9 hack 2022-11-27 16:16:18 +01:00
Henrik Rydgård bdfde4cbac Implement the new screen sizing parameters 2022-11-27 16:16:04 +01:00
Henrik RydgårdandGitHub e4998ade6f Merge pull request #16442 from unknownbrackets/vulkan-geometry-safety
Vulkan: Only use geometry shaders with accurate depth
2022-11-27 09:02:57 +01:00
Unknown W. Brackets 1d00824528 Vulkan: Only use geometry shaders with accurate z.
Just to be safe, since that's what it's most well tested with.
2022-11-26 23:28:57 -08:00
Unknown W. Brackets 909f3feaea softgpu: Allow inversions when w >= -1.0.
This seems to match desired cases well, see #16131.  Likely still
inaccurate to what hardware actually does.
2022-11-26 12:11:56 -08:00
Henrik Rydgård 0b375bb357 Colin McRae: Use compat flag to avoid GPU readbacks for VRAM->VRAM copies.
Improves performance when the sun is visible, see #7810
2022-11-26 18:53:13 +01:00
Henrik RydgårdandGitHub 9c033fb57c Merge pull request #16437 from lvonasek/feature_openxr_hud_improvement
OpenXR - HUD improvements
2022-11-25 21:21:57 +01:00
Lubos aa66b93124 MOve VR heuristics into a standalone method 2022-11-25 16:05:30 +01:00
Lubos b2d809f4cd typos fixed 2022-11-25 15:58:51 +01:00
Lubos 1ef036d07c OpenXR - Farplane distance limit adjusted 2022-11-25 13:33:53 +01:00
Lubos 390ee28cd9 OpenXR - HUD fixes 2022-11-25 12:01:51 +01:00
Lubos 0b089dd1e5 OpenXR - HUD support improved 2022-11-25 11:08:49 +01:00
Henrik RydgårdandGitHub d97035fffc Merge pull request #16434 from unknownbrackets/stencil-opt
Vulkan: Use stencil export when available
2022-11-25 10:06:41 +01:00
Lubos 3aae47c331 OpenXR - Add a TODO for follow-up PR 2022-11-25 09:31:44 +01:00
Lubos 08432dd4e1 OpenXR - Camera controls adjust HUD instead of FOV 2022-11-25 09:25:23 +01:00
Lubos a58ea86318 OpenXR - HUD scale option added 2022-11-25 09:18:16 +01:00
Lubos 5417e828de OpenXR - Do not rescale the postprocess effects 2022-11-25 09:05:48 +01:00