summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/voodoo.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove void *ptr parameter from emu_timer, timer_device and all related ↵ AJR2022-01-261-5/+5
| | | | callbacks
* voodoo: Address minor coverity complaints Aaron Giles2021-07-311-1/+4
|
* srcclean for 0.234 branch Vas Crabb2021-07-251-5/+5
|
* voodoo: Return 0 on invalid reads, seems to fix funkball. Improve logging of ↵ Aaron Giles2021-07-151-3/+6
| | | | unexpected accesses to include register name.
* voodoo: Improve fidelity of synchronization points. Add synchronization back ↵ Aaron Giles2021-07-121-12/+27
| | | | to NOP to fix flicker in gtfore06.
* voodoo: Improve pixel pipeline throughput for LFB writes. Helps gtfore and ↵ Aaron Giles2021-07-111-17/+2
| | | | related games.
* voodoo: Increase vretrace cycles to 2 so mace will boot again. Add missing ↵ Aaron Giles2021-07-101-1/+2
| | | | rasterizers for later gtfore games. Remove outdated comments.
* voodoo: Restore some cycle stealing on vretrace to allow sfrush to boot. Aaron Giles2021-07-091-0/+3
|
* video/voodoo.cpp: Major rewrite: (#8267) Aaron Giles2021-07-091-5798/+2572
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* srcclean in preparation for release Vas Crabb2021-06-271-1/+1
|
* Eliminate remaining uses of auto_alloc and friends (#8210) Aaron Giles2021-06-221-2/+1
| | | | | | | * Split off auto_alloc changes from deprecated branch. * Make the keymap reader non-static so it can access the unique_ptr. * Fix SDL input for real.
* voodoo: fix Hornet games POST crash Ville Linde2021-06-131-2/+2
|
* Eliminate ARRAY_LENGTH template in favor of C++17's std::size AJR2021-02-141-21/+19
| | | | | | | | | | * osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h * sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration * gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset * emucore.h: Remove obsolete typedef
* Fairly significant overhaul of Lua engine and some cleanup. Vas Crabb2020-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The things that were previously called device iterators are not iterators in the C++ sense of the word. This is confusing for newcomers. These have been renamed to be device enumerators. Several Lua methods and properties that previously returned tables now return lightweight wrappers for the underlying objects. This means creating them is a lot faster, but you can't modify them, and the performance characteristics of different operations varies. The render manager's target list uses 1-based indexing to be more like idiomatic Lua. It's now possible to create a device enumerator on any device, and then get subdevices (or sibling devices) using a relative tag. Much more render/layout functionality has been exposed to Lua. Layout scripts now have access to the layout file and can directly set the state of an item with no bindings, or register callbacks to obtain state. Some things that were previously methods are now read-only properties. Layout files are no longer required to supply a "name". This was problematic because the same layout file could be loaded for multiple instances of the same device, and each instance of the layout file should use the correct inputs (and in the future outputs) for the device instance it's associated with. This should also fix video output with MSVC builds by avoiding delegates that return things that don't fit in a register.
* Fix most implicit fallthrough warnings from clang Vas Crabb2020-11-171-2/+2
|
* Enable GCC implicit fallthrough warning. Vas Crabb2020-11-151-1/+2
| | | | | | I've guessed whether break or [[fallthrough]] is appropriate. In cases where it looked particularly suspicious, I added a FIXME comment. All of these changes should be reviewed by someone familiar with the code.
* -Switch to building MAME as C++17. Vas Crabb2020-11-151-2/+22
| | | | | | | * Updated sol2 to 3.2.2 * Updated pugixml to 1.10 * Increased minimum clang version to 6 * Cleaned up some stuff that can use new features
* Cleaned up bitmap API. Vas Crabb2020-09-271-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Made const-qualified pixel accessors (pix, pixt, raw_pixptr) return const-qualified references/pointers to pixesl, and added non-const versions. This makes bitmap more like standard library containers where const protects the content as well as the dimensions. Made the templated pixt accessor protected - having it public makes it too easy to inadvertently get a pointer to the wrong location. Removed the pix(8|16|32|64) accessors from the specific bitmaps. You could only use the "correct" one anyway, and having the "incorrect" ones available prevented explicit instantiations of the class template because the static assertions would fail. You can still see the pixel type in the bitmap class names, and you can't assign the result of &pix(y, x) to the wrong kind of pointer without a cast. Added fill member functions to the specific bitmap template, and added a explicit instantiations. This allows the bitmap size check to be skipped on most bitmap fills, although the clipping check is still there. Also fixed a couple of places that were trying to fill an indexed 16-bit bitmap with rgb_t::black() exposed by this (replaced with zero to get the same net effect). The explicit template instantiations in the .cpp file mean the compiler can inline the function if necessary, but don't need to generate a local out-of-line body if it chooses not to. Extended the size of the fill value parameter in the base bitmap class to 64 bits so it works correctly for 64-bit bitmaps. Fixed places where IE15 and VGM visualiser weren't accounting for row bytes potentially being larger than width. Fixed an off-by-one in an HP-DIO card where it was treating the Topcat cursor right edge as exclusive. Updated everything to work with the API changes, reduced the scope of many variables, added more const, and replaced a few fill/copy loops with stuff from <algorithm>.
* voodoo.cpp: Disabled debug statistics popup Ted Green2020-07-301-16/+22
|
* voodoo.cpp: Only flag texture controls as changed if they are actually changed. Ted Green2020-07-021-6/+11
|
* voodoo: Disable backbuf debug key (L), it interferes with player 3 default ↵ Ted Green2020-06-291-2/+2
| | | | controls
* voodoo: Eliminate auto_alloc (nw) AJR2019-12-291-5/+5
|
* voodoo: hopefully enough to stop it from crashing when device memory isn't ↵ Vas Crabb2019-12-141-93/+654
| | | | pre-cleared; also some cleanup (nw)
* clean up some .hxx abuse (nw) Vas Crabb2019-10-051-3/+3
|
* (nw) misc cleanup: Vas Crabb2019-09-201-1/+2
| | | | | * get rid of most assert_always * get rid of a few MCFG_*_OVERRIDE
* devices/video/voodoo.cpp : Simplify handlers cam9002019-04-271-25/+25
|
* voodoo: Mark frame buffer as changed after direct lfb write. Fixes missing ↵ Ted Green2018-11-141-0/+2
| | | | text during nbagold power on tests. (nw)
* Renamed flipendian -> swapendian, as I spent minutes trying to find the ↵ mooglyguy2018-11-051-8/+8
| | | | functions to tell to another person who spent minutes trying to find the functions, and we refer to such functions as swapping just about everywhere else in the codebase, nw
* voodoo: deal with needing to be able to configure screen/CPU or set them at ↵ Vas Crabb2018-05-231-32/+54
| | | | | | | | start in a safer way devfind: revert previous change - if finders aren't set in stone after device_resolve_objects it's going to lead to all kinds of hard-to-diagnose bugs (I'll add more checks for this some time after release) (nw) also clean up rotting tabulation
* voodoo: Use device finders instead of machine().device (nw) Ryan Holtz2018-05-211-28/+22
|
* remove safe_pc() and safe_pcbase() (nw) smf-2018-04-131-8/+8
|
* voodoo: Correct vsync timing and remove anonymous timer. Ted Green2018-03-281-18/+32
|
* xtal.h is dead, long live to xtal.cpp [O. Galibert] Olivier Galibert2018-01-231-1/+1
|
* voodoo: Use CRTC registers for vblank start. Fixes viper regression caused ↵ Ted Green2018-01-061-5/+7
| | | | by last voodoo commit. (nw)
* Calculate screen size and timing using voodoo CRTC and PLL registers. (nw) Ted Green2018-01-061-7/+29
|
* Revert "Revert "Merge branch 'master' of https://github.com/mamedev/mame"" Firehawke2017-12-131-1/+4
| | | | This reverts commit 54155441e9ba9941e85d80c4834a66376a11e791.
* Revert "Merge branch 'master' of https://github.com/mamedev/mame" Firehawke2017-12-131-4/+1
| | | | | This reverts commit f537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4, reversing changes made to 0d70d798107d4e4e8fb9f230410aeb1e888d65c5.
* voodoo: Set number of SGRAM chips to 2 for 16M cards. (nw) Ted Green2017-12-041-1/+4
|
* suppress function-like macro expansion for MSVC (nw) Vas Crabb2017-11-091-3/+3
|
* voodoo: Use SSE routines for texture perspective correction. (nw) Ted Green2017-11-041-2/+2
|
* voodoo: Incorporate some more sse optimizations. (nw) Ted Green2017-10-121-1/+1
|
* voodoo: Reorganize a few function calls to make profiling easier. (nw) Ted Green2017-10-111-4/+10
|
* voodoo: Add some code optimizations. (nw) Ted Green2017-10-081-13/+17
|
* voodoo: Use table lookup for RGB565 conversion. (nw) Ted Green2017-10-011-9/+34
|
* voodoo: Revert to using lower 16 bits of zaColor only. Fixes depth ↵ Ted Green2017-09-111-4/+4
| | | | buffering from last commit for Voodoo 2 cards and greater. (nw)
* voodoo: Fixed subtle casting bug. The uncasted depth in the expanded ↵ Ted Green2017-09-111-4/+4
| | | | variable calculation was causing a possible sign extension into the top 32 bits of expanded. Allows obsidian manufacturing test in calspeed to pass. (nw)
* voodoo: Remove wrapping after y origin conversion so that proper y-clipping ↵ Ted Green2017-08-301-4/+5
| | | | is performed. Fixes pool cue wrapping out of top the screen in virtpool. (nw)
* voodoo: Fixup logging and implement actual vRetrace and hvRetrace functions. ↵ Ted Green2017-06-291-24/+44
| | | | (nw)
* viper: revert to using internally generated vblank. voodoo: Write register ↵ Ted Green2017-06-141-0/+1
| | | | data to intrCtrl. (nw)
* voodoo: Extend PCI interrupt support to Voodoo 2 and above. (nw) Ted Green2017-06-141-20/+10
|