Commit Graph

506 Commits

Author SHA1 Message Date
Matt Borgerson 792ed56d58 nv2a: Block renderer finalization on display present 2024-12-31 01:37:05 -07:00
Matt Borgerson 25afb8603d nv2a: Handle renderer init errors more gracefully 2024-12-31 01:37:05 -07:00
Matt Borgerson c1bbe39f22 nv2a/gl: Rename some functions for clarity 2024-12-31 01:37:05 -07:00
Matt Borgerson f3b6d50d99 nv2a: Merge renderer init, init_thread methods 2024-12-31 01:37:05 -07:00
Matt Borgerson 98fa394f84 nv2a: Add note about downloading dirty surfaces during flush 2024-12-31 01:37:05 -07:00
Matt Borgerson 6fd0f175b4 nv2a: Support switching renderers at runtime 2024-12-31 01:37:05 -07:00
Matt Borgerson 7b6b5f396c nv2a/vk: Release report queue nodes at finalize 2024-12-31 01:37:05 -07:00
Matt Borgerson 3ccea5fa12 nv2a/vk: Release renderer state at finalize 2024-12-31 01:37:05 -07:00
Matt Borgerson d6e8307950 nv2a/vk: Always provide early_context_init 2024-12-31 01:37:05 -07:00
Matt Borgerson c4ac083d3d nv2a/vk: Sync RAM buffer during renderer init 2024-12-31 01:37:05 -07:00
Matt Borgerson 71d00d2208 nv2a/vk: Ensure texture bindings exist before dirty check 2024-12-31 01:37:05 -07:00
Matt Borgerson 4bd0406797 nv2a/gl: Make sure vulkan is not set on ShaderState 2024-12-31 01:37:05 -07:00
Matt Borgerson cd2278dd62 nv2a/gl: Ensure shader_binding exists before dirty check 2024-12-31 01:37:05 -07:00
Matt Borgerson 84dd112186 nv2a/gl: Improve renderer teardown 2024-12-31 01:37:05 -07:00
Matt Borgerson c1eb48b62f nv2a/vk: Fix snode->geometry init 2024-12-31 01:37:05 -07:00
Matt Borgerson 40526389f6 nv2a/vk: Clear bindings before tearing down cache 2024-12-31 01:37:05 -07:00
Matt Borgerson 6403c69326 nv2a/vk: Fix shader cache node init flag 2024-12-31 01:37:05 -07:00
Matt Borgerson fadaf19cdd nv2a/vk: Fix GArray free 2024-12-31 01:37:05 -07:00
Matt Borgerson 1973ed7f58 n2va/vk: Drop debug message 2024-12-31 01:37:05 -07:00
Matt Borgerson 27531ec1ca nv2a: Wrap nv2a_vm_state_change direct renderer calls 2024-12-31 01:37:05 -07:00
Matt Borgerson 093e654725 nv2a: Wrap pfifo direct renderer calls 2024-12-31 01:37:05 -07:00
Matt Borgerson 2800b8d22a meson: Move VMA options into meson config 2024-12-31 01:37:05 -07:00
Matt Borgerson 2bc8cb3050 nv2a/vk: Remove extraneous VK_NO_PROTOTYPES defn 2024-12-31 01:37:05 -07:00
Matt Borgerson a5385803db nv2a: Add Vulkan renderer 2024-12-31 01:37:05 -07:00
Fred Hallock 79441500fe
nv2a: Check supported line width
* Added logic to check for the supported line width range before setting the line width to avoid errors.

I also moved the glLineWidth call so that it could be after the call to get the supported line width range for the desired line type.

* Moved the glLineWidth call outside the if/else

* Moved the code to query line GL_SMOOTH_LINE_WIDTH_RANGE and GL_ALIASED_LINE_WIDTH_RANGE to nv2a_gl_context_init(void) so that it's just called while OpenGL is being initialized.

* Removed the lineWidth local variable. It's simpler to just call glLineWidth in the if and else blocks
2024-11-23 11:49:01 +13:00
Fred Hallock 7f5176bc5f
nv2a: Scale line thickness by surface scale factor 2024-11-14 21:48:22 -07:00
Matt Borgerson a8d8ef5484 nv2a: Drop unused ShaderState field material_alpha 2024-07-22 23:52:43 -07:00
Matt Borgerson 2be220df98 nv2a: Implement HILO texture modifier 2024-05-21 00:44:29 -07:00
Matt Borgerson b3fc80b3a8 nv2a: Implement ZCLIP_MIN,MAX with gl_ClipDistance 2023-10-22 00:22:03 -07:00
Matt Borgerson 5fa08d20d6 nv2a: Scale Z by full depth range in inverse viewport transform 2023-10-22 00:22:03 -07:00
Matt Borgerson de611d611b nv2a: Left-align surface type in nv2a_pgraph_surface_target trace 2023-07-27 22:23:52 -07:00
Matt Borgerson 5c495db618 nv2a: Add [last_]surface_shape.clip_y to vmstate 2023-07-27 22:09:02 -07:00
Matt Borgerson 8da35b81a8 Merge remote-tracking branch 'origin/master' into sync/qemu-7.2.0 2023-07-15 17:24:01 -07:00
Erik Abair 7bfb7c8537 nv2a: Remove assert on TEXGEN_OBJECT_LINEAR
The behavior seems to match HW.

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/texgen_tests.cpp#L22)
![HW results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Texgen#objectlinearpng)

Fixes #379
2023-07-09 21:19:43 -07:00
Erik Abair 22aaac801c nv2a: Compile fix for DEBUG_NV2A enabled 2023-07-08 21:52:41 -07:00
Matt Borgerson 976319b391 Merge remote-tracking branch 'origin/master' into sync/qemu-7.2.0 2023-06-18 01:19:02 -07:00
mborgerson 129c48dd6e
ui: Blank screen when VGA SCREEN_OFF is set 2023-06-14 03:36:47 -07:00
Matt Borgerson bb05a4f181 nv2a: Fix SET_ANTI_ALIASING_CONTROL
- Rename from SET_SMOOTHING_CONTROL
- Use correct register
2023-06-11 22:52:32 -07:00
Erik Abair 5cd1e3cbca nv2a: (Probably partial) handling for `1D7C`
Implements handling for the unknown 0x1D7C command in order to match observed
behavior in the MS Dashboard and Tenchu: Return from Darkness.

Setting 1D7C's low bit appears to disable the line and poly smoothing commands.

Fixes #1162

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/three_d_primitive_tests.cpp)
[HW Results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-3D_primitive)
2023-06-11 22:44:13 -07:00
Antonio Abbatangelo 546fe068de nv2a: Ignore nop draws in SET_BEGIN_END_OP_END 2023-05-17 00:15:47 +08:00
Erik Abair 9723b435fb nv2a: Make multiplication by 0 match HW behavior.
Fixes #1008

The nv2a returns 0 for anything multiplied by zero, including exceptional
values such as Inf and NaN. Desktop GPUs do not enforce this, leading to
conditions where NaNs wipe out calculations and lead to erroneous behavior.

[Test](https://github.com/abaire/nxdk_vsh_tests/blob/main/src/tests/americasarmyshader.cpp)
[HW Results](https://github.com/abaire/nxdk_vsh_tests_golden_results/wiki/Results-AmericasArmyShader)
2023-05-01 13:58:48 -07:00
wutno 065c74a00f nv2a: Don't manually set NV_PFB_CFG0 reg 2023-03-06 14:02:41 -07:00
Matt Borgerson b1a59ba2e9 nv2a: Add missing vga headers 2023-01-23 00:30:40 -07:00
Matt Borgerson 381ac7e72c nv2a: Pass error_fatal to vga_common_init 2023-01-23 00:30:40 -07:00
Matt Borgerson b135dd14ea nv2a, mcpx: Drop minimum_version_id_old from vmsd 2023-01-23 00:30:40 -07:00
Matt Borgerson a198f22981 include: Drop various qemu-common.h imports 2023-01-23 00:30:40 -07:00
Antonio Abbatangelo 27c99af5e3 nv2a: Set unpack alignment on surface upload 2023-01-05 13:22:18 -07:00
Antonio Abbatangelo 080022833d nv2a: Cache shaders to disk 2022-09-10 12:52:51 -07:00
Erik Abair f7b2acbb79 nv2a: Ensure SurfaceBinding.size can always fit surface
It is possible to specify a pitch that is smaller than the native size of a
surface (i.e., `pitch < width * bytes_per_pixel`). On hardware this is handled
gracefully, whereas in xemu it will cause buffer overruns when dealing with
swizzling/unswizzling.

Fixes #1152

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/surface_pitch_tests.cpp)
[HW Results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Surface_pitch)

Note that xemu's swizzling behavior still does not match HW with this change,
it just prevents the test from crashing.
2022-09-09 13:56:53 -07:00
Erik Abair c2031108c5 nv2a: Cache texture attributes to avoid resetting unnecessarily 2022-07-25 10:44:38 -07:00
Erik Abair 5f306e749e nv2a: Apply texture parameters when reusing textures
Fixes the edge case where a texture is reusable but has modified usage
parameters (e.g., `GL_TEXTURE_WRAP_S`). Prior to this change, texture
parameters would be cached permanently until the texture was recreated.

Fixes #1034
2022-07-25 10:44:38 -07:00
Erik Abair c83b53e09d nv2a: Handles depth borders in 3D bordered textures
3D textures with texture borders have 4 layers of border on either side of the
content layers in addition to the normal 4 pixel border per layer. This change
handles those extra depth layers in roughly the same way that the per-layer
border texels are handled.

Fixes #1171

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/texture_border_tests.cpp)
[HW results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Texture_border)
2022-07-25 10:02:15 -07:00
Erik Abair 248fc788c1 nv2a: Ignore pitch check for swizzled textures 2022-07-18 18:03:48 -07:00
Erik Abair 1e221e8da9 nv2a: Fallback to recreating texture on surface size mismatch.
There is no requirement that a surface and texture using the same VRAM address
match with respect to size (in particular pitch). This change prevents
incorrect reuse of a surface binding in the event that the texture size does
not match.

Fixes #1127
2022-07-18 11:33:53 -07:00
Erik Abair ea0a906707 nv2a: Handle value in NV_PVIDEO_STOP writes
Interprets the value written to the `NV_PVIDEO_STOP` register in a manner more
consistent with hardware. Specifically, if the low bit of the value is not set,
the PVIDEO overlay should remain active.

Fixes #1049

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/pvideo_tests.cpp)
Note that, as this is testing video behavior, this test is interactive and
the value passed to the final SetPvideoStop call needs to be mutated and the
behavior observed.
2022-07-18 11:14:15 -07:00
Erik Abair f29c2ff42c nv2a: Handle PVIDEO ds_dx and dt_dy registers
ds_dx and dt_dy describe how the PVIDEO content should be scaled to fit the
output area. Each is calculated via `((in - 1) << 20) / (out - 1)`, this
commit calculates the full frame scale (in / out) and applies that when
determining the texture coordinates for the overlay.
2022-07-18 10:59:08 -07:00
Erik Abair 9fd957d950 nv2a: Add hack for NV_PVIDEO_SIZE_IN sentinel 2022-07-18 10:59:08 -07:00
Erik Abair a675666051 nv2a: Handle SIZE_IN > SIZE_OUT case
`NV_PVIDEO_SIZE_IN` is set to 0xFFFFFFFF during initialization and teardown
of the PVIDEO overlay. In some cases this can happen before the overlay is
explicitly stopped, leading to an assert. On hardware SIZE_IN values larger
than SIZE_OUT are capped (content is not scaled).

Fixes #330

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/pvideo_tests.cpp)
2022-07-18 10:59:08 -07:00
Erik Abair 8d274e5f9a nv2a: Match inv_w qualifier to attribute qualifier
Calculates both interpolated and flat shaded inv_w so that the appropriate
value may be used when undoing the perspective divide in the pixel shader.
2022-07-13 16:16:38 -07:00
Erik Abair ae1a140ecb nv2a: Fix missing flat qualifier for inv_w param
`vtx_inv_w` should also be flat, since interpolating it causes incorrect values
for the flat shaded colors.

Fixes #1179

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/shade_model_tests.cpp)
[HW results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Shade_model)
2022-07-13 16:16:38 -07:00
Erik Abair 6f878ede01 nv2a: Do not force oFog to 1.0
This code was added ~7 years ago in
[this commit](97be3f5986)

From what I can see from the [HW test results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Fog_coord_vec4)
the behavior on nv2a is more subtle than the cited `NV_vertex_program`
documentation.

In practice the register more or less retains its value until it is explicitly
modified.[The test](4cff2b2ebe/src/tests/fog_tests.cpp (L432))
renders something with an explicitly set oFog.x, then renders again with a
shader that does not modify oFog.x but references it in the pixel shader. The
value carries over rather than being forced to 1.0.

Interestingly, this test is apparently not hermetic; running the other
vec4_coord test (that explictly set various components of oFog) lead to unusual
behavior where the fogging effect is not uniform across all vertices, despite
never being set. Even more interestingly, re-running the test once it's in this
state will often produce variations as to which vertices are apparently using
a stale/incorrect fog value.
2022-07-05 19:12:03 -07:00
Lynne 6a8a967438 nv2a/psh: fix shader compilation errors
dotSTR had an extra bracket at the end, and an incorrect
variable type.
2022-07-02 10:39:44 -07:00
Erik Abair d06a0c22f1 nv2a: Fix incorrect use of bytes for GL_UNPACK_ROW_LENGTH
`GL_UNPACK_ROW_LENGTH` is supposed to set the length in pixels, but the DXT
path is setting it to bytes, causing it to read beyond the end of the texture.
[Reference](https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glPixelStore.xhtml)

Fixes #1002

[Test](https://github.com/abaire/nxdk_pgraph_tests/blob/main/src/tests/texture_format_dxt_tests.cpp)
[HW Results](https://github.com/abaire/nxdk_pgraph_tests_golden_results/wiki/Results-Texture_DXT)
2022-07-01 13:44:20 -07:00
mborgerson db389b1508 nv2a: Fix missing emit_vertex param 2022-06-25 22:56:11 -07:00
Matt Borgerson 83e16c996d nv2a: Store shading mode in CONTROL_3 2022-06-25 21:11:30 -07:00
Erik Abair 4132845336 nv2a: Implement SET_SHADE_MODEL 2022-06-25 20:39:55 -07:00
Erik Abair 0d84befb82 nv2a: Implement support for border textures 2022-06-25 18:08:55 -07:00
Matt Borgerson be8b612186 nv2a: Set C numeric locale before shader gen 2022-06-25 15:34:26 -07:00
Erik Abair b3abb982e8 nv2a_vsh_cpu: Fix incorrect ilu input handling due to mismerge 2022-06-24 23:47:36 -07:00
Erik Abair f54b207812 nv2a: Handle invalid w in fixed function pipeline 2022-06-24 22:44:19 -07:00
Erik Abair 9d2d8691b5 nv2a: Implement NV097_LAUNCH_TRANSFORM_PROGRAM 2022-06-24 20:41:04 -07:00
Erik Abair 8043abc738 nv2a: Add CPU emulation of nv2a vertex shader 2022-06-24 20:34:57 -07:00
Erik Abair cc21fbea78 nv2a: Stop passing ShaderState by value 2022-06-22 15:59:49 -07:00
Matt Borgerson bb855d43da nv2a: Reset all draw arrays tracking on expand 2022-06-20 18:54:21 -07:00
Erik Abair baa7e914fb nv2a: Fix assert in single DrawArray + ArrayElement case 2022-06-20 18:33:18 -07:00
Matt Borgerson 12134404df nv2a: Refactor inline buffer clear, clear on draw flush 2022-06-15 17:30:05 -07:00
Matt Borgerson 84260dfc18 nv2a: Add begin/end sanity debug checks 2022-06-15 17:30:05 -07:00
Matt Borgerson d8723e047b nv2a: Store primitive mode in vmstate 2022-06-15 17:30:05 -07:00
Matt Borgerson d6abaca904 nv2a: Minor cleanup 2022-06-15 17:30:05 -07:00
Matt Borgerson 463c815a9b nv2a: Always clear inline vertex buffers on begin 2022-06-15 17:30:05 -07:00
Erik Abair 88409a92bf
nv2a: Fix intermixed use of DRAW_ARRAYS and ARRAY_ELEMENTx
Co-authored-by: Matt Borgerson <contact@mborgerson.com>
2022-06-15 13:13:51 -07:00
Erik Abair daa2748a2f nv2a: Gracefully ignore draws with no target bindings 2022-06-14 18:35:00 -07:00
Matt Borgerson 191f927517 nv2a: Store zclamp config to registers 2022-06-14 17:52:55 -07:00
Erik Abair 875c0659d6 nv2a: Implement gl_depth_clamp control 2022-06-14 17:05:21 -07:00
Mike Davis c16db47bab
nv2a: Add RenderDoc support for Windows builds 2022-06-14 14:03:26 -07:00
Erik Abair 30829497d2 nv2a: Assert on unimplemented writable const register path 2022-06-10 16:28:04 -07:00
Erik Abair 5cb31da44b nv2a: Increase DrawArrays buffer size
Fixes #364
2022-06-09 22:28:28 -07:00
Erik Abair 30d3bb53b5 nv2a: Fix clip region at renderscales > 1
Fixes #1054
2022-06-09 20:41:38 -07:00
Erik Abair 176b574403 nv2a: Fix oFog write behavior with non-x destination masks. 2022-06-03 14:38:16 -07:00
Erik Abair 8a97cec99f nv2a: Implement z16 float shadow comparison 2022-06-03 13:50:36 -07:00
Erik Abair 84fa8dac3e nv2a: Check for CPU-modifications to textures before reusing 2022-06-03 13:29:38 -07:00
Erik Abair 7d6da227ba nv2a: Fix combiner single stage color+alpha interdependence 2022-05-30 16:04:12 -07:00
Erik Abair 9f6b9670d6 nv2a: Ignore excess inline array data 2022-05-28 15:08:22 -07:00
Erik Abair 8334f294df nv2a: Do not set surface dirty if writes were disabled 2022-05-28 11:58:27 -07:00
Matt Borgerson 0cdcdde70c nv2a: Emulate floating Z24S8 with fixed Z24S8 2022-05-25 23:51:05 -07:00
Matt Borgerson bb78ad0e2f nv2a: Rename zeta surface map 'int' to 'fixed' 2022-05-25 23:51:05 -07:00
Erik Abair 7c5d8b6546 nv2a: Implement shadow comparison for PROJECT2D mode 2022-05-25 14:38:32 -07:00
Erik Abair 9fe352c56c nv2a: Migrate surface dbg messages to trace framework 2022-05-24 16:42:23 -07:00
Matt Borgerson 280a1bb6a1 nv2a: Support compressed 2D texture padding 2022-05-24 01:46:38 -07:00
Matt Borgerson 14748d9bbb nv2a: Limit base, max mipmap level 2022-05-24 01:46:38 -07:00
Matt Borgerson 0efef88181 nv2a: Use soft 2D texture decompression 2022-05-24 01:46:38 -07:00
Erik Abair 66b57dca9c
nv2a: Invalidate zeta when constructing non-matching color surface 2022-05-19 18:07:03 -07:00
Erik Abair 397957a36c nv2a: Unbind dirty buffers on invalidate 2022-05-19 17:52:02 -07:00
Erik Abair 9a446a6544 nv2a: Add pitch to surface debug info 2022-05-18 16:52:32 -07:00
Erik Abair e64ffe8091 nv2a: Invalidate GL textures after surface blit 2022-05-18 16:51:51 -07:00
Matt Borgerson 9fafe92b25 nv2a: Don't add clip offset to swizzled surfaces 2022-05-18 16:19:10 -07:00
Matt Borgerson 38a0e46f8c nv2a: Don't bind unsampled textures 2022-05-18 03:40:04 -07:00
Matt Borgerson 2c1012ede4 nv2a: Add SHADOWCTL to shader dirty test 2022-05-17 18:13:35 -07:00
Matt Borgerson a1f34c339a nv2a: Add SHADOWCTL register to store depth func 2022-05-17 18:13:35 -07:00
Erik Abair c33d96127c nv2a: Implement shadow samplers 2022-05-17 17:45:16 -07:00
Erik Abair b9aef0c57c nv2a: Move palette offset behind texture reuse check 2022-05-17 17:32:32 -07:00
Erik Abair b0f20c9bba nv2a: Fix stale texture in surface input and output case 2022-05-17 17:18:15 -07:00
Matt Borgerson 3451fdb8c0 gloffscreen.h: Remove platform-specific includes 2022-05-17 16:55:41 -07:00
Erik Abair a6cd0c2110 nv2a: Prevent GPU download after blit operation 2022-05-17 16:29:16 -07:00
Erik Abair aec2883c6b
nv2a: Process pending surface uploads before render to texture 2022-05-10 17:56:58 -07:00
Erik Abair 2d50239832 nv2a: Fix subscreen pvideo overlay position 2022-05-10 14:51:51 -07:00
Erik Abair 989dbcc76d nv2a: Match HW behavior when setting window clip 2022-05-10 13:15:30 -07:00
Erik Abair 306891b98c nv2a: Disable stderr print on image_blit when GL debugging is enabled 2022-05-05 14:50:07 -07:00
Erik Abair 6d7f329880 nv2a: Fix glsl ambiguous overload to prevent renderdoc failure 2022-04-26 22:08:51 -07:00
Antonio Abbatangelo 4bd1a07706 nv2a: adjust display resolution in 1080i mode 2022-04-26 13:46:28 -07:00
Erik Abair a654a1f99a nv2a: Prevent renderdoc from crashing xemu when capturing a frame 2022-04-26 13:44:13 -07:00
Erik Abair 8125e1302f nv2a: Fix renderdoc detection on macOS 2022-04-25 13:30:47 -07:00
Matt Borgerson d14cdbc7ba config: Migrate to genconfig system 2022-04-24 21:15:57 -07:00
Erik Abair 440f4c53ec nv2a: Ignore color/depth mask in CLEAR_SURFACE 2022-04-24 15:41:10 -07:00
Erik Abair 6dbd51fbe1 nv2a: Fix MAC/ILU independence 2022-04-24 15:34:14 -07:00
Erik Abair 4c8342725e nv2a: Make combiner assignment independent 2022-04-24 15:11:47 -07:00
Erik Abair f245e08560 nv2a: Set oFog.x with most significant oFog mutation 2022-04-24 15:02:39 -07:00
Erik Abair 6f507c80af nv2a: Fix handling of 0-stride vertex attributes 2022-03-22 17:35:26 -07:00
Matt Borgerson 6e1969001e nv2a: Rename sum to muxsum, simplify mux string build 2022-03-18 18:28:09 -07:00
Erik Abair cb0a92b46c nv2a: Handle LSB mux flag 2022-03-18 17:35:32 -07:00
Erik Abair f0abe3c4fc nv2a: Fix handling of R8B8 and G8B8 texture modes 2022-03-18 16:09:55 -07:00
Erik Abair 2ff5f23235 nv2a: Implement v1r0_sum flags 2022-03-16 21:22:16 -07:00
Erik Abair 4cff9c27f3 nv2a: Fix swapped R and Q texgen planes 2022-03-16 20:36:41 -07:00
Erik Abair 83d4cbb418
nv2a: Update attribute inline_value as rendering side-effect 2022-02-22 15:01:46 -07:00
Antonio Abbatangelo 2218cdea67 nv2a/mcpx: fix freezing on loadvm failure 2022-02-22 14:40:26 -07:00
RageXbox 8919bae311
nv2a: Remove assertion in append_skinning_code 2022-02-10 22:31:22 -07:00
Erik Abair f3c7a3afd1 nv2a: Add --enable-renderdoc build config 2022-02-10 14:41:43 -07:00
Erik Abair 8689e640bd nv2a: Add missing vertex attribute setters 2022-02-10 14:35:53 -07:00
Erik Abair 517e4b3414 nv2a: Implement SET_MATERIAL_ALPHA and diffuse color src
This adds support for the material alpha command and updates the fixed function
shader to respect the diffuse source parameter (which was already piped through
but not utilized).
2022-02-05 15:22:03 -07:00
Matt Borgerson be23a674f3 nv2a: Start using tracing infrastructure for logging 2022-02-01 23:34:53 -07:00
Erik Abair a13f3f48a2 nv2a: Improve RenderDoc triggering 2022-01-31 20:46:41 -07:00
Erik Abair ef0a262efe nv2a: Fix swizzle_box for volumetric textures 2022-01-31 17:48:17 -07:00
Erik Abair 2d34f5108d nv2a: Support depth in volumetric palettized textures 2022-01-31 17:27:20 -07:00
Erik Abair caf84884c4 nv2a: Fix slots for vertex attribute setters 2022-01-24 18:22:16 -07:00
Erik Abair d17e019684 nv2a: Implement vertex attribute setters 2022-01-24 16:22:52 -07:00
Erik Abair 6b821d2062 nv2a: Implement pvideo color keying 2022-01-22 13:54:40 -07:00
Erik Abair b3f56db428 nv2a: Match HW behavior when dealing with infinite fog coord 2022-01-18 18:13:54 -07:00
Matt Borgerson 3fd15218c7 nv2a: Init puserdac palette on startup 2022-01-12 19:51:14 -07:00
Matt Borgerson 42c44dc241 nv2a: Fix register print debug macro 2022-01-12 19:51:14 -07:00
Matt Borgerson 7bd68b4bfc nv2a: Specify method ranges in words 2022-01-12 19:51:14 -07:00
Matt Borgerson 0b838a6e4c nv2a: Bring back non-inc/inc loops to avoid dead code 2022-01-12 19:51:14 -07:00
Matt Borgerson 27afd42164 nv2a: Add puserdac.palette to vmstate 2022-01-12 01:53:12 -07:00
Matt Borgerson 1b5b14f8ba nv2a: Support local method loops for more methods 2022-01-12 01:13:02 -07:00
Matt Borgerson 909affdefe nv2a: Merge inc and non-inc method defs 2022-01-12 01:13:02 -07:00
Matt Borgerson a8fadd5a66 nv2a: Un-macroify loop wrappers 2022-01-11 22:03:08 -07:00
Matt Borgerson a3f077779f nv2a: Fold unnecessary macros 2022-01-11 22:03:08 -07:00
Matt Borgerson fb019d7c1f nv2a: Fold redundant loop macros 2022-01-11 15:07:48 -07:00
Matt Borgerson 7d101d5193 nv2a: Log exact method addr and name+offset if available 2022-01-11 14:20:00 -07:00
Matt Borgerson 13be29690a nv2a: Fix logging for looped methods 2022-01-11 14:20:00 -07:00
Erik Abair 01c2f0fa74 nv2a: Fix handling of NV097_SET_VERTEX_DATA4S_M 2022-01-09 16:42:38 -07:00
Matt Borgerson 057e7fcfa1 nv2a: Add kelvin method names to LUT 2022-01-09 03:19:56 -07:00
Matt Borgerson e2fc067073 nv2a: Fix debug printf warnings 2022-01-09 03:19:56 -07:00
Matt Borgerson 80fda910b1 nv2a: Batch process report queries 2022-01-09 02:47:58 -07:00
Matt Borgerson d54ce00f02 nv2a: Simplify swizzled<>linear logic 2022-01-08 19:50:20 -07:00
Matt Borgerson 62d04a3636 nv2a: Permit limited swizzled<>linear surface migration 2022-01-08 19:20:37 -07:00
Matt Borgerson 1871699c2e nv2a: Mark surface buffers dirty on DMA update 2022-01-08 19:20:37 -07:00
Matt Borgerson eb87feae2c nv2a: Only sync blit source surface if dirty 2022-01-08 02:45:48 -07:00
Matt Borgerson 76b26b13fc nv2a: Make beta value be strictly uint32_t 2022-01-08 02:45:48 -07:00
Matt Borgerson d91e6d304f nv2a: Refactor blit operation logic 2022-01-08 02:45:48 -07:00
Erik Abair 6e2446e91b nv2a: Support XRGB_ZRGB blit surface format 2022-01-08 02:45:48 -07:00
Erik Abair a546f07df7 nv2a: Implement BLEND_AND image blit operation 2022-01-08 02:45:48 -07:00
Erik Abair 0d4e3d29b5 nv2a: Download destination surface for partial SRCCOPY blits 2022-01-08 02:45:48 -07:00
haxar 25b8fa8433 nv2a: Refactor VGA init 2022-01-07 16:19:30 -07:00
wutno 8f529d0d9c nv2a: Set frequency to 233MHz 2021-12-28 17:40:50 -07:00
Erik Abair 41ef1ca5e5
nv2a: Add option to suppress irq and dma_map debug messages 2021-12-28 17:39:36 -07:00
antangelo 57795d81cb
nv2a: Don't mark surface dirty on unchanged offset, pitch 2021-12-28 15:53:47 -07:00
Matt Borgerson 69ceec4446 nv2a: Support gamma correction 2021-11-23 17:49:44 -07:00
Erik Abair dcad9d62b3
nv2a: Discard unknown front face 2021-11-19 16:40:54 -07:00
Matt Borgerson 50a5368f47 Revert "nv2a/vsh: Use double precision in clip range remap"
This reverts commit 1a15d83c44.
2021-11-19 13:48:04 -07:00
Erik Abair 1a15d83c44
nv2a/vsh: Use double precision in clip range remap 2021-11-18 17:17:59 -07:00
Erik Abair 1c6e75885c
nv2a: Enable 16-bit floating point z-buffer mode 2021-11-18 16:46:50 -07:00
Erik Abair a3e507860e
nv2a: Respect pitch in YUV texture conversion, upload 2021-11-13 17:18:23 -07:00
Matt Borgerson 8602863f36 util: Add fast-hash.h to simplify xxHash usage 2021-10-25 16:30:38 -07:00
Matt Borgerson a4115cf8b3 util: Move xxHash submodule to util/ 2021-10-25 16:30:38 -07:00
Matt Borgerson 5622af4981 nv2a: Discard unknown blend equation 2021-10-13 16:51:30 -07:00
Matt Borgerson 21718399f2 nv2a: Discard unknown blend factors 2021-10-12 01:52:42 -07:00
Matt Borgerson 47b1487a71 nv2a: Move bump mat into pgraph register file 2021-10-12 01:32:08 -07:00
Matt Borgerson 1a49f6066f nv2a: Discard bump env params for tex 0 2021-10-12 01:32:08 -07:00
Erik Abair db2a6aaf6d nv2a: Skip input decode if MAC and ILU are both NOP. 2021-10-12 00:17:50 -07:00
Matt Borgerson fe4929c146 nv2a: Sync on surface type change 2021-09-05 15:24:31 -07:00
Matt Borgerson c31cbf9f4e nv2a: Writeback dirty surfaces on scale change, VM load 2021-07-26 15:03:52 -07:00
Matt Borgerson 59d3bfe268 nv2a: Add swizzle to surface compat check 2021-07-20 10:37:07 -07:00
Matt Borgerson 5ec33df112 nv2a: Minor refactor 2021-07-20 10:37:07 -07:00
Matt Borgerson 5778854dbd nv2a: Scale point sprites by surface scaling factor 2021-07-20 10:37:07 -07:00
Matt Borgerson 52c670141a nv2a: Skip sync when moving from color<->zeta 2021-07-20 10:37:07 -07:00
Matt Borgerson 4a8cc6f623 nv2a: Use scaling factor helper function 2021-07-20 10:37:07 -07:00
Matt Borgerson 5562a484e1 nv2a: Support integer scaling of surface dimensions 2021-07-20 10:37:07 -07:00
Matt Borgerson 814d7e0a9a nv2a: Add flip option in glo_readpixels 2021-07-20 10:37:07 -07:00
Mike Davis 0b9a2e1a8f nv2a: Support NV062_SET_COLOR_FORMAT_LE_Y32 blitting 2021-07-18 22:58:16 -07:00
Mike Davis 0f9b862e37
nv2a: Support texture format SZ_DEPTH_Y16_FIXED 2021-07-12 12:15:49 -07:00