summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/voodoo_render.cpp
Commit message (Collapse)AuthorAgeFilesLines
* konami/viper.cpp: implement Epic PCTPR, housekeeping angelosa2023-12-071-0/+4
|
* voodoo_render.cpp: Use util::sext and rotate inline AJR2023-08-311-4/+4
|
* voodoo_render.cpp: Restore unnecessarily deleted comment AJR2022-09-251-0/+4
|
* eminline.h: Additions AJR2022-09-251-10/+6
| | | | | | - Add mul_16x16 inline function to perform a signed 16x16-bit multiplication with 32-bit result. This was moved from cpu/e132xs to unite it with the analogous 32x32 operations. - Add rotl_32, rotr_32, rotl_64 and rotr_64 inline functions to perform 32-bit and 64-bit circular shifts in either direction by the specified number of places, modulo 32 or 64. It is anticipated that these will eventually be replaced by standard functions in C++20's <bit> header, and so they have been given similar signatures and semantics (which are also validity-checked). - Remove LSL, LSR, ROL and ROR macros from cpu/arm and cpu/arm7 to ameliorate unnecessary obfuscation.
* poly.h: Remove unused flags, expose object data array directly, add ability ↵ Aaron Giles2021-09-031-14/+5
| | | | to register other poly_arrays.
* srcclean for 0.234 branch Vas Crabb2021-07-251-186/+186
|
* voodoo: Improve fidelity of synchronization points. Add synchronization back ↵ Aaron Giles2021-07-121-1/+1
| | | | to NOP to fix flicker in gtfore06.
* voodoo: Improve pixel pipeline throughput for LFB writes. Helps gtfore and ↵ Aaron Giles2021-07-111-27/+23
| | | | related games.
* voodoo: Fix LOD calculations. Improve LOD calculation accuracy. Remove ↵ Aaron Giles2021-07-101-169/+116
| | | | stw_helper as any benefit it provides is within the noise.
* voodoo: Increase vretrace cycles to 2 so mace will boot again. Add missing ↵ Aaron Giles2021-07-101-0/+6
| | | | rasterizers for later gtfore games. Remove outdated comments.
* voodoo: fix compile error hap2021-07-091-1/+1
|
* video/voodoo.cpp: Major rewrite: (#8267) Aaron Giles2021-07-091-0/+2953
* Changed to use modern poly.h instead of polylgcy.h. * Moved helper classes into separate voodoo namespace. * Derived device classes from video_device_interface. * Split classes so that later versions derive from earlier versions. * Created device maps to be directly included. * Redesigned register mapping to use helper classes and delegates. * Rewrote rasterizers to use C++ templates instead of macros. * Added logic to compute equations for color/texture combine units. * Added special generic identity-texel rasterizer cases. * Removed pipeline stalls on texture and palette changes. * Removed pipeline stalls on most all parameter changes. * Generally re-thought and cleaned up logic throughout. * Parameterized cycle stealing on status reads; updated all existing voodoo consumers to configure it as it was before. -vidoe/poly.h: Various improvements: * Exposed poly_array class for broader use. * Changed poly_array to intelligently determine maximum size. * Added logic to track multiple "last" instances in poly_array. * Extended logic to support up to 16m work items. * Removed MaxPolys parameter from poly_manager template. * Added Flags parameter to poly_manager template. * Added POLY_FLAG_NO_CLIPPING flag to remove clipping code when not needed. * poly_manager now supports a MaxParams value of 0. * Made paramcount a template parameter for render_* functions. * Added reset_after_wait() method to be overridden by derived classes. * Switched to using std:: helpers instead of internal methods. * Removed useless dependency on screen_device. * TRACK_POLY_WAITS now produces more complete statistics. -video/polylgcy.cpp: Removed legacy implementation of polygon renderer. -machine/gt64xxx.cpp: Prevent lockups by disallowing 0-duration timers. -machine/pci.cpp: Added support for adding subdevice maps directly. -emu/video/rgbsse.h: Improved min/max for SSE4.1+ and scale+clamp operations for all. -emu/vidoe/rgbutil.h: Made palette expansion constexpr and added argbexpand function. -osd/osdcore.cpp: Changed osd_ticks to use QueryPerformanceCounter on Windows since the mingw std::chrono::high_resolution_clock is anything but.