Commit Graph

63 Commits

Author SHA1 Message Date
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