Commit Graph

118932 Commits

Author SHA1 Message Date
Matt Borgerson c3a8b9569f nv2a: Simplify surface clip to scissor size calculation 2025-03-17 14:48:47 -07:00
Logan Stromberg 860bccb722
nv2a: Fix surface clip to scissor origin 2025-03-17 14:32:40 -07:00
Matt Borgerson b455d58227 build.sh: Bump macOS on arm64 to 13.7.4 2025-03-17 13:41:55 -07:00
Matt Borgerson 6877015941 scripts/download-macos-libs.py: Bump arm64 to macOS 13.x (darwin 22) 2025-03-17 13:41:55 -07:00
Matt Borgerson c782b1e8ed scripts/download-macos-libs.py: Set mirror to main packages.macports.org 2025-03-17 13:41:55 -07:00
coldhex 02659dd3cc nv2a: Fix cubemap fourth texture coordinate component handling
Xbox hardware ignores fourth texture coordinate component for cubemaps.
2025-03-17 11:37:41 -07:00
wilkovatch a00820746f
nv2a: Handle texture dimensions not divisible by 4 in S3TC decoder 2025-03-14 18:44:25 -07:00
Matt Borgerson fac9ae83c7 scripts/xemu-version.sh: Use 0.0.0 if version cannot be detected 2025-03-13 15:10:32 -07:00
Matt Borgerson a143f66ce4 nv2a/psh: Handle 3D textures in PROJECT2D mode 2025-03-10 16:13:09 -07:00
Matt Borgerson 6e3dfb36d8 nv2a/vk: Don't set compressed, swizzled when attribute is uniform 2025-03-10 14:23:43 -07:00
Matt Borgerson 4665515d80 nv2a: Group attributes in pgraph_get_glsl_vtx_header 2025-03-10 12:30:16 -07:00
Alexandre Bouvier dfbf4dfd36
meson: Drop glslang dependency method param for CMake search 2025-03-08 15:14:58 -07:00
coldhex 3eb22b6b81 nv2a: Explicit float representation for RCC and vertex shader W range 2025-03-08 14:54:18 -07:00
coldhex 63cb75ce84 nv2a: Fix -0.0 clamping of RCC instruction and vertex shader W-output
Xbox rounds -0.0 to the negative range and 0.0 to the positive range. This
commit also restores RCC instruction clamping to be done on the output of
reciprocal calculation (which current Xemu release does) with fix for the
input=Infinity case.
2025-03-08 14:54:18 -07:00
coldhex 8dc6c90e11 nv2a/vk: Drop unnecessary dirty check for NV_PGRAPH_ZCOMPRESSOCCLUDE
This was used to enable/disable Vulkan depth clamping, but that was
removed in previous commit.
2025-03-08 14:54:18 -07:00
coldhex 854a001063 nv2a: Fix zero-vector input in fixed function vertex shader
If tPosition is a zero-vector, then invViewport matrix had no effect.
Bounding w-coordinate away from zero and infinity must be done before
applying invViewport (which is needed for OpenGL/Vulkan) to emulate
Xbox hardware behaviour properly.
2025-03-08 14:54:18 -07:00
coldhex 798ad30819 nv2a: Perspective-correct interpolation for w-buffering
z_perspective is true implies w-buffering and then the w-coordinate stored
in the depth buffer should also be interpolated in a perspective-correct
way. We do this by calculating w and setting gl_FragDepth in the fragment
shader.

Since enabling polygon offset and setting values using glPolygonOffset
won't have any effect when manually setting gl_FragDepth for w-buffering,
we introduce the depthOffset variable to obtain similar behaviour (but the
glPolygonOffset factor-argument is currently not emulated.) (Note that
glPolygonOffset is OpenGL implementation-dependent and it might be good to
use depthOffset for z-buffering as well, but this is not done here and we
still use OpenGL/Vulkan zbias functionality.)

This also implements depth clipping and clamping in the fragment shader.
If triangles are clipped, the shadows of the small rocks in Halo 2 Beaver
Creek map can have flickering horizontal lines. The shadows are drawn on
the ground in another pass with the same models as for the ground, but for
some reason with depth clamping enabled. The flickering happens if Xemu
clips the ground triangles, but the exact same shadow triangles are depth
clamped, so there are small differences in the coordinates. The shadows
are drawn with depth function GL_EQUAL so there is no tolerance for any
differences. Clipping in the fragment shader solves the problem because
the ground and shadow triangles remain exactly the same regardless of
depth clipping/clamping. For some performance gain, it might be a good
idea to cull triangles by depth in the geometry shader, but this is not
implemented here.

In the programmable vertex shader we always multiply position output by w
because this improves numerical stability in subsequent floating point
computations by modern GPUs. This usually means that the perspective
divide done by the vertex program gets undone.

The magic bounding constants 5.42101e-020 and 1.884467e+019 are replaced
by 5.421011e-20 and 1.8446744e19, i.e. more decimals added. This makes the
32-bit floating point numbers represent exactly 2^(-64) and 2^64 (raw bits
0x1f800000 and 0x5f800000) which seem more likely the correct values
although testing with hardware was not done to this precision.

Testing indicates that the same RCC instruction magic constants are also
applied to both fixed function and programmable vertex shader w-coordinate
output. This bounding replaces the special test for w==0.0 and abs(w)==inf
which used to set vtx_inv_w=1.0 (which did not match Xbox hardware
behaviour.)
2025-03-08 14:54:18 -07:00
Matt Borgerson 45078ef51f ui: InputTextMultiline buf_size should include the null-terminator 2025-03-08 04:00:18 -07:00
Matt Borgerson 355228913c meson: Update imgui,implot 2025-03-08 04:00:18 -07:00
Matt Borgerson 1d662cb49e meson: Replace in-tree nlohmann_json with a subproject wrap 2025-03-08 02:36:24 -07:00
Matt Borgerson f1ce017bd2 meson: Support system glslang 2025-03-08 00:55:46 -07:00
Alexandre Bouvier 7b9b7a0c25 meson: Optionally use system tomlplusplus, xxhash, json 2025-03-08 00:55:46 -07:00
Matt Borgerson 05072e23f1 build.sh: Change macOS PKG_CONFIG_PATH -> PKG_CONFIG_LIBDIR 2025-03-08 00:55:46 -07:00
Matt Borgerson 67bb27f760 meson: Enable curl platform-specific features 2025-03-08 00:55:46 -07:00
Matt Borgerson f305279f67 scripts/gen-license.py: Drop openssl 2025-03-07 22:12:49 -07:00
Matt Borgerson 7c8cde51d1 build.sh: Drop openssl11 fixes 2025-03-07 22:12:49 -07:00
Matt Borgerson 38b7cbe668 scripts/download-macos-libs.py: Drop openssl11 dep 2025-03-07 22:12:49 -07:00
Matt Borgerson f2830ce9ae meson: Drop openssl dep 2025-03-07 22:12:49 -07:00
Matt Borgerson d2948f18fe scripts/gen-license.py: Drop cpp-httplib 2025-03-07 22:12:49 -07:00
Matt Borgerson 5428760104 meson: Drop cpp-httplib dep 2025-03-07 22:12:49 -07:00
Matt Borgerson 8d2c1dbc32 ui: Migrate updater from httplib to libcurl wrapper 2025-03-07 22:12:49 -07:00
Matt Borgerson f6de4f03d7 ui: Migrate reporter from httplib to libcurl wrapper 2025-03-07 22:12:49 -07:00
Matt Borgerson 1cf3858ba1 util/http: Add simple wrapper functions for libcurl 2025-03-07 22:12:49 -07:00
Matt Borgerson ccbf45aecf scripts/gen-license.py: Add libcurl 2025-03-07 22:12:49 -07:00
Matt Borgerson 3decda5614 meson: Add libcurl subproject fallback 2025-03-07 22:12:49 -07:00
Matt Borgerson 714ec0c4da meson: Require libcurl 2025-03-07 22:12:49 -07:00
Matt Borgerson 14c35466f3 debian: Add libcurl4-gnutls-dev dep 2025-03-07 22:12:49 -07:00
Matt Borgerson 046d127f31 ui: Trim FontAwesome font to glyphs in use (save 940KiB) 2025-03-06 03:00:45 -07:00
Matt Borgerson fdb78c5dbd meson: Don't build glslang with hlsl support 2025-03-06 00:50:08 -07:00
Matt Borgerson eeaee81223 ci: Drop -fuse-ld option on Ubuntu builds 2025-03-06 00:49:06 -07:00
Erik Abair f701573d44 nv2a: Use rounded values for alpha testing 2025-03-05 17:12:14 -07:00
Matt Borgerson 203b33ecf0 ci: Zero Ubuntu dpkg version to eliminate cflag differences 2025-03-05 14:40:46 -07:00
Matt Borgerson c3120831bb ci: Update Ubuntu x86-64 release runner to ubuntu-24.04 2025-03-05 14:40:46 -07:00
Matt Borgerson 41ad49c9e9 scripts/download-macos-libs.py: Skip libsndfile 2025-03-04 22:58:26 -07:00
Matt Borgerson 4ca9cd9691 ci: Bump Windows build container 2025-03-04 22:58:26 -07:00
Matt Borgerson 3bdb9e7fd4 ubuntu-win64-cross: Bump mxe/build-win64-mxe 2025-02-15 16:56:30 -07:00
Matt Borgerson 906d085d66 meson: Update xxHash wrap 2025-02-15 16:56:30 -07:00
Matt Borgerson 65844f02e3 meson: Update VulkanMemoryAllocator wrap 2025-02-15 16:56:30 -07:00
Daniel Cook 33046acd82
ui: Add 720x480 resolution to Window size options 2025-02-15 16:17:58 -07:00
mborgerson de1f311efa
Merge QEMU v9.2.1 2025-02-15 15:17:25 -07:00