Matt Borgerson
0d9ff0872a
nv2a: Swap glDrawRangeElements for glDrawElements
2021-02-27 15:17:17 -07:00
Matt Borgerson
f89dc5c446
nv2a: Add surface download complete event
2021-02-18 21:17:30 -07:00
Matt Borgerson
7b84142c4e
nv2a: Add fb sync complete event
2021-02-18 02:48:25 -07:00
Matt Borgerson
8326870f77
nv2a: Eliminate re-malloc of inline buffer
2021-02-12 18:55:06 -07:00
Matt Borgerson
b536ac07d6
nv2a: Fix surface debug print field
2021-02-11 16:45:36 -07:00
Matt Borgerson
7926347c8b
nv2a: Fix buffer size in surface flip
2021-02-11 16:33:47 -07:00
Matt Borgerson
afed1a4835
nv2a: Clear entire PSH struct before hashing
2021-02-11 16:10:34 -07:00
Matt Borgerson
a88b4cf9f5
nv2a: Minor cleanup
2021-02-11 16:10:34 -07:00
Matt Borgerson
3248c8ebbf
nv2a: Fast path PGRAPH method processing
2021-02-11 15:23:47 -07:00
Matt Borgerson
8e29469ddb
nv2a: Cache converted vertex data
2021-02-11 14:54:39 -07:00
Matt Borgerson
9b42f4aaa3
nv2a: Add binning to LRU
2021-02-11 14:30:52 -07:00
Matt Borgerson
d2990d0e47
nv2a: Use XXH3_64bits as fast hash
2021-02-11 14:09:52 -07:00
Matt Borgerson
fec0ad6f4c
nv2a: Add xxHash submodule
2021-02-11 14:09:52 -07:00
Matt Borgerson
30fe6cb3c4
nv2a: Drop xxHash inline sources
2021-02-11 14:09:52 -07:00
Matt Borgerson
7a08e93085
nv2a: Add simple frame metrics
2021-02-11 13:50:18 -07:00
wutno
9ca79f75d8
nv2a: Change stepping to match retail 1.0 Xbox
2021-01-23 16:52:57 -07:00
Matt Borgerson
996f3d4dc3
nv2a: Grab lock before marking pending download
2020-12-30 03:52:46 -07:00
Matt Borgerson
e431cbff82
nv2a: Fix compiler nits
2020-12-30 03:51:47 -07:00
Matt Borgerson
af35a8b728
nv2a: Approximate CLAMP_OGL with CLAMP_TO_EDGE
2020-12-07 19:25:48 -07:00
Matt Borgerson
2933d8d171
nv2a: Set VGA color mode after reset
2020-12-02 23:03:51 -07:00
Matt Borgerson
0bec22318a
nv2a: Add Gaussian convolution filter for AA
2020-12-02 16:49:58 -07:00
Matt Borgerson
a34cab69dd
nv2a: Support line and poly anti-aliasing
2020-12-01 22:36:09 -07:00
Matt Borgerson
59980ba1c7
nv2a: Refactor BUMPENVMAP[_LUM]
2020-11-14 16:30:59 -07:00
Matt Borgerson
183ed86aa6
nv2a: Fix color swizzle for SZ_G8B8 and SZ_R8B8
2020-11-14 16:30:59 -07:00
Wilhelm Kovatch
ff3deacae6
nv2a: Fix BUMPENVMAP[_LUM] texture modes
2020-11-14 16:27:12 -07:00
Wilhelm Kovatch
5aa0cec31b
nv2a: Support 3D texture decompression in software
2020-11-01 17:55:14 -07:00
Matt Borgerson
5cc4568dfe
nv2a: Force surface flush for mipmapped textures
2020-10-28 22:03:56 -07:00
Matt Borgerson
0c2368f37d
nv2a: Fix broken dot texture modes
2020-10-28 22:03:56 -07:00
Matt Borgerson
3c6596975d
nv2a: Implement dot texture modes and dotmapping
2020-10-28 15:59:20 -07:00
Matt Borgerson
9060302670
nv2a: Add GL error guard for glCompressedTexImage3D
...
This only works with DXT1/S3TC if the implementation has the
NV_texture_compression_vtc extension, otherwise GL_INVALID_ENUM will be
raised. Bail out in this case, until a software fallback is implemented.
2020-10-28 04:40:11 -07:00
Wilhelm Kovatch
b9df397493
nv2a: Fix compressed 3D textures
2020-10-26 21:43:12 -07:00
Wilhelm Kovatch
518c9f38cd
nv2a: Add support for compressed 3D textures
2020-10-26 19:49:47 -07:00
Matt Borgerson
6f777e73e6
nv2a: Add B8, G8B8 surface format placeholders
2020-10-26 00:20:48 -07:00
Matt Borgerson
0433c5e6bc
nv2a: Simulate PCRTC_RASTER register
2020-10-25 19:52:57 -07:00
Matt Borgerson
23096561a3
nv2a: Check for same zeta/color surface offset
2020-10-25 03:39:58 -07:00
Matt Borgerson
4cd7c98025
nv2a: Unbind surfaces when flushing
2020-10-23 14:33:45 -07:00
Dalai
6936945afa
nv2a: Support texture format COLOR_LU_IMAGE_DEPTH_Y16_FLOAT
2020-10-23 13:38:57 -07:00
Matt Borgerson
d6e52a02c4
nv2a: Lazily synchronize surface data to/from RAM
2020-10-22 21:29:53 -07:00
Matt Borgerson
6a2f6b3637
nv2a: Download surface before blit
2020-10-18 01:37:19 -07:00
Matt Borgerson
79989a0e3f
nv2a: Always use texture cache
2020-10-18 01:16:32 -07:00
Matt Borgerson
a3fc742bbe
nv2a: Remove nv2a_ prefix on files in nv2a dir
2020-10-18 00:55:08 -07:00
Matt Borgerson
c69e58ee0f
nv2a: Make files individually compilable
2020-10-18 00:55:08 -07:00
Matt Borgerson
fcd3764cce
nv2a: Handle color material ambient/emissive
2020-09-06 20:42:21 -07:00
Matt Borgerson
bb0fdef251
nv2a: Handle alignment padding between cubemap faces
2020-09-05 16:21:21 -07:00
Voxel9
c90335801c
nv2a: Fix FFP texgen assertions
...
Should compare against channel index instead of texture stage index
2020-06-29 07:49:51 -07:00
Voxel9
3bbea5269e
nv2a: Remove TEXGEN_SPHERE_MAP assertion
2020-06-29 07:49:51 -07:00
Matt Borgerson
60d3dc8ae1
nv2a: Add VMStateDescription
2020-06-19 05:43:14 -07:00
Matt Borgerson
c9cf9a9972
nv2a: Add state flushing to PGRAPH
2020-06-19 05:43:14 -07:00
Matt Borgerson
f898b5e875
nv2a: Rename PCIDevice dev to parent_obj per QEMU convention
2020-06-19 05:43:14 -07:00
Matt Borgerson
f2869790d9
nv2a: Check for PGRAPH FIFO access before context switch
2020-06-17 01:14:43 -07:00
Matt Borgerson
ec4e798426
nv2a: Merge pfifo pusher/puller threads
2020-06-12 00:06:06 -07:00
Matt Borgerson
c9df1d1047
nv2a: Replace some non-critical assertions with debug macros
...
In the event these features are utilized, execution may still continue,
albeit with the likely possibility graphical problems of varying degree.
This patch replaces hard assertions with debug print statements when
configured to do so.
2020-06-10 19:04:22 -07:00
Matt Borgerson
f93c7b4ea3
nv2a: Fix device reset
2020-05-31 14:26:15 -07:00
Matt Borgerson
7e67f18595
ui: Cleanup debug messages
2020-05-22 14:57:58 -07:00
Matt Borgerson
c2b74a08d3
ui: Move QEMU main loop to a thread
2020-05-04 07:22:56 -07:00
Matt Borgerson
0245d3bee9
nv2a: Update Makefile offscreen GL sources
2020-05-04 07:15:29 -07:00
Matt Borgerson
2d364b5bd1
nv2a: Add SDL-based offscreen GL context interface
2020-05-04 07:13:16 -07:00
Matt Borgerson
2199dbc4e9
nv2a: Remove platform-specific GL context management
2020-05-04 07:10:26 -07:00
Stanislav Motylkov
c230d77bc2
nv2a: Add some missing RAMDAC registers
...
Cromwell sets these registers on video initialization and
guest OS should be able to read them in order to obtain
current screen resolution set up by firmware.
2019-10-18 21:30:16 +01:00
Jannik Vogel
2dc570561e
nv2a: Fix VGA get_bpp for X1R5G5B5
2019-10-01 12:48:45 -07:00
Jannik Vogel
f9b9a9bad8
nv2a: Add support for PGRAPH RDI select 0xCC
2019-09-16 12:15:25 -07:00
Jannik Vogel
e42fb24752
nv2a: Add support for PGRAPH RDI select 0x17
2019-09-16 12:15:25 -07:00
Jannik Vogel
973f8db16a
nv2a: Support PGRAPH RDI
2019-09-16 12:15:25 -07:00
Jannik Vogel
5ccd95ec4b
nv2a: Use `pg` shortname in PGRAPH MMIO handler
2019-09-16 12:15:25 -07:00
Stas'M
dd1248a563
nv2a: Set PCI class id and subsystem id to match hardware
...
This patch sets the class id, subsystem id, and subsystem vendor id
in the PCI device header to match what the NV2A hardware advertises.
This resolves an issue with PCI device enumeration failing to detect and load
the driver for the NV2A device in some operating systems, namely ReactOS
version 0.2.5-xbox (custom build), which depend on these fields being
programmed correctly.
2019-08-28 13:55:21 -07:00
Jannik Vogel
1026f0e42f
vsh: Minor improvements to individually weighted skinning
2019-02-24 17:05:50 -07:00
Jannik Vogel
c331854c55
vsh: Support generated weights in skinning
2019-02-24 17:05:50 -07:00
Jannik Vogel
f3b7fefde4
vsh: Fix skinning mode order
2019-02-24 17:05:50 -07:00
Jannik Vogel
0f39a2cc76
nv2a: Slot 0 of SET_VERTEX_DATA specifies a vertex
2019-02-22 17:02:44 -07:00
Jannik Vogel
851e478319
psh: Separate input component usage selection for RGB and ALPHA portion
2019-02-18 11:43:20 -07:00
Jannik Vogel
f9ba5b9c8c
psh: Final combiner G input is a scalar
2019-02-18 11:43:20 -07:00
Jannik Vogel
52f897aa17
psh: Use vec4 for all registers
2019-02-18 11:43:20 -07:00
Jannik Vogel
d225ff7a98
psh: Use float for alpha, vec3 for rgb
2019-02-18 11:43:20 -07:00
Jannik Vogel
f21c2d7ddb
psh: Use output clamping from NV_register_combiners GL extension
2019-02-16 12:43:08 -07:00
Jannik Vogel
c1494de8d3
psh: Use input mapping from NV_register_combiners GL extension
2019-02-16 12:42:49 -07:00
Stefan Schmidt
960698a24e
nv2a: Set content of disabled register combiner stages to zero
2019-02-06 23:32:22 -07:00
Jannik Vogel
f3d7e72a5c
nv2a: Fix A8Y8 texture formats
2019-02-06 23:28:43 -07:00
Matt Borgerson
7a59bf14d3
nv2a: Use linear addressing for LU_IMAGE_A4R4G4B4
2019-02-06 20:05:12 +01:00
Matt Borgerson
47452495c0
nv2a: Fix NV097_SET_VERTEX_DATA2S scaling
...
Vertex attribute values provided via NV097_SET_VERTEX_DATA2S are
apparently two 16-bit signed integers, packed into 32 bits, which are
then to be directly mapped to floating point values in the range
[-32768.0, 32767.0].
Halo:CE uses this format to provide texture (u,v) coordinates for
render-to-texture techniques, including weapon scope, dynamic shadows,
and radar beacon--all of which are now working as expected with this
patch.
2019-01-22 16:12:11 -07:00
Matt Borgerson
02f3b701d0
nv2a: Replace texture cache with a simpler implementation
2018-12-13 11:42:14 -07:00
Jannik Vogel
910dadc5ab
nv2a: Fix window-clip region off-by-one error
2018-11-08 12:00:12 -07:00
Jannik Vogel
e3d0803843
nv2a: Force GL surface transfer on surface address or pitch changes
2018-11-06 12:05:15 -07:00
Jannik Vogel
781a73e118
nv2a: Debug log GL surface transfers in GL
2018-11-06 12:05:15 -07:00
Jannik Vogel
b42d49498c
psh: Cleanup and dead code removal
2018-11-06 11:56:01 -07:00
Jannik Vogel
5db1694f88
psh: Rename c0 and c1 uniforms
2018-11-06 11:56:01 -07:00
Matt Borgerson
d7dbfce2bc
nv2a: re-enable texture caching
...
Texture caching (enabled via `USE_TEXTURE_CACHE` macro) got turned off
in a cleanup commit. Turn it back on for performance.
2018-11-03 15:53:02 -07:00
espes
e12aa122cf
relicense xbox components as LGPL
...
(with permission)
2018-10-10 13:38:16 +10:00
Stefan Schmidt
1c6bb37bec
Replace ffs() calls with ctz32()
2018-10-08 11:34:23 -07:00
espes
3d33d8101b
cleanup nv2a
2018-09-26 17:42:41 +08:00
Matt
316967c441
nv2a FIFO Refactoring ( #76 )
...
* Port espes's fifo work to the split up nv2a code
This patch ports over the following commits from the XQEMU 1.x tree
(available via tag archive-xqemu-1.x) to the refactored nv2a code:
- 4d9107e8
(HEAD -> xbox, upstream/xbox) Merge branch 'fix-fifo' into xbox
- c33f4ab2
cleanups
- d3f83d93
cleanups
- faca5dd0
fix
- 7c62d7c1
fixes
- 8ad239b0
wip
- 45ed3c31
wip
- c006d5e8
wip
However, in its current form, this patch causes some regressions and
needs further investigation.
* nv2a: basic pattern object
2018-09-26 16:10:07 +08:00
Lucas
7960ffe466
nv2a: Ptimer fixes ( #113 )
...
Set NV2A_CRYSTAL_FREQ to Retail speed
Fix ptimer_get_clock() behaviour
2018-09-26 16:01:28 +08:00
Matt Borgerson
6b21948bcc
Merge branch 'master' into merge_3_0_0_sync
2018-09-05 20:07:50 -07:00
Lucas Eriksson
c01c27d968
nv2a: Fix EXP and LOG
...
According to the NV_vertex_program specification, our implementations of
these functions were wrong.
spec:
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_vertex_program.txt
2018-09-04 01:14:55 +02:00
Matt Borgerson
a0dad83029
nv2a: Replace QINC/DECREF macros with new inlines
2018-09-02 13:49:53 -07:00
Matt Borgerson
12401cd500
nv2a: remove global_vmstate arg in vga_common_init
2018-09-02 13:49:24 -07:00
Matt Borgerson
f169ce4c26
nv2a: Move some defs to nv2a.h and fix minor nits
2018-07-25 02:03:30 +02:00
Matt Borgerson
10b3b06320
nv2a: Fix minor prototype style issues
2018-07-25 02:03:30 +02:00
Matt Borgerson
f0ea80b4bd
nv2a: Use a macro to define the nv2a stub handlers
2018-07-25 02:03:30 +02:00
Matt Borgerson
7e7f837bad
nv2a: Remove STUB stuff from nv2a.c
2018-07-25 02:03:30 +02:00
Matt Borgerson
d53f884ec1
nv2a: Remove HACK HACK HACK code
2018-07-25 02:03:30 +02:00
Jannik Vogel
4ffe83b696
nv2a: Add ARL-bias to work around OpenGL float behaviour
2018-07-12 15:10:59 -07:00
Matt Borgerson
2497e2d7c4
nv2a: Add support for window clipping
...
Fixes several games which utilize clipping, such as Halo:CE which
uses clipping in multiplayer to render multiple player screens.
Research and original PoC work done by Jannik Vogel:
- JayFoxRox/xqemu-espes@c05d91b
- JayFoxRox/xqemu-espes@a254830
2018-07-10 01:11:05 +02:00
Jannik Vogel
a9db473231
Check for GL debug extensions before use
2018-07-01 14:50:50 -07:00
Jannik Vogel
0f190369d3
Switch from GLEW to epoxy
2018-07-01 14:21:53 -07:00
Matt Borgerson
0523deaa93
nv2a: Recycle FIFO command queue memory
...
This patch adds an additional "retired" queue in which FIFO command
entry objects are placed after execution. This queue of objects is then
returned to the pusher's new "available" queue for re-use.
This improves the performance of the system by avoiding the costly
overhead associated with the general-purpose use of `malloc` and `free`
for previous allocation of FIFO command queue objects.
2018-06-28 10:17:57 -07:00
Matt Borgerson
dc57d0e3c0
Add offscreen GL code
2018-06-26 17:07:41 -07:00
Matt Borgerson
584dbda1d6
Fix and refactor NV2A code
...
This patch does the following:
- Fixes up things for Qemu 2.x compat
- Factors out the high-level NV2A blocks into separate files
- Updates g-lru-cache for latest glib compat (github.com/chergert/glrucache@c10af24)
- Changes texture hashing algorithm from FNV to xxH v0.6.5
2018-06-26 17:07:41 -07:00