ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Unix/video_vosf.h
Revision 1.64 - (view) (annotate) - [select for diffs]
2008-01-20T11:52:13Z (16 years, 9 months ago) by gbeauche
Branch: MAIN
CVS Tags: HEAD
Changes since 1.63: +1 -1 lines
Diff to previous 1.63
Err, restore a reasonnable value for the emulators. ;-)

Revision 1.63 - (view) (annotate) - [select for diffs]
2008-01-20T11:51:08Z (16 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.62: +14 -5 lines
Diff to previous 1.62
Arrangements for the SIGSEGV perf tester.

Revision 1.62 - (view) (annotate) - [select for diffs]
2008-01-01T09:40:33Z (16 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.61: +1 -1 lines
Diff to previous 1.61
Happy New Year!

Revision 1.61 - (view) (annotate) - [select for diffs]
2007-12-30T08:47:34Z (16 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.60: +2 -2 lines
Diff to previous 1.60
Sync with the new SIGSEGV API.

Revision 1.60 - (view) (annotate) - [select for diffs]
2007-06-16T07:24:39Z (17 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.59: +7 -9 lines
Diff to previous 1.59
Improve heuristic for VOSF profitability: we should not spend more than
the half of a video interrupt quantum for updating the screen. Also improve
the wording of the result.

Revision 1.59 - (view) (annotate) - [select for diffs]
2006-05-14T08:32:05Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-19
Changes since 1.58: +6 -2 lines
Diff to previous 1.58
Fix NQD bounds checking -- don't overwrite the CLEAR Page Guard.

Revision 1.58 - (view) (annotate) - [select for diffs]
2006-05-14T07:11:23Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.57: +1 -1 lines
Diff to previous 1.57
Fix page alignment

Revision 1.57 - (view) (annotate) - [select for diffs]
2006-05-13T16:48:47Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.56: +81 -3 lines
Diff to previous 1.56
Use NQD dirty boxes, VOSF backend
+ make video_vosf_profitable() NQD accel aware
+ call vm_protect() only if PFLAG_CLEAR(page)

Revision 1.56 - (view) (annotate) - [select for diffs]
2006-01-21T16:00:17Z (18 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.55: +8 -0 lines
Diff to previous 1.55
streamline for standalone VOSF performance testing

Revision 1.55 - (view) (annotate) - [select for diffs]
2005-11-21T23:38:46Z (18 years, 11 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-17
Changes since 1.54: +2 -2 lines
Diff to previous 1.54
Remove obsolete Cygwin/X11 addressing hack. Fix DirectX fullscreen mode
with hardware surface. On the other hand, DIB (SDL_VIDEODRIVER=windib)
always seems the fastest on my system for both windowed and fullscreen
modes.

Revision 1.54 - (view) (annotate) - [select for diffs]
2005-06-25T11:40:29Z (19 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.53: +8 -8 lines
Diff to previous 1.53
Use fast spinlocks only for small enough atomic operations. Otherwise, you
run into some performance problems in e.g. video graphics experience because
of busywaits in the current spin_lock() implementation.

Revision 1.53 - (view) (annotate) - [select for diffs]
2005-05-12T16:55:16Z (19 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.52: +43 -1 lines
Diff to previous 1.52
Improve SDL/fullscreen mode when not used in DGA mode, i.e. cases when
screen needs to be updated too. This needs better boxes characterisation.

Revision 1.52 - (view) (annotate) - [select for diffs]
2005-05-12T14:39:56Z (19 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.51: +14 -8 lines
Diff to previous 1.51
Fix SDL/DGA build. Drop useless "inline" for updates. Overlapping scanlines
optimization.

Revision 1.51 - (view) (annotate) - [select for diffs]
2005-05-12T11:09:31Z (19 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.50: +46 -87 lines
Diff to previous 1.50
Fix DGA when visible screen is smaller than virtual display, aka fix
fullscreen mode when VidMode extension is enabled. Also fix SDL fullscreen
to really update the screen as this is necessary by default on Linux since
simple windowed is used (and not DGA for fullscreen).

Always prefer the 64 pixel chunks update code.

Rearrange B2 video_x.cpp to match video_vosf.h updates

Revision 1.50 - (view) (annotate) - [select for diffs]
2005-04-02T09:50:17Z (19 years, 7 months ago) by gbeauche
Branch: MAIN
Changes since 1.49: +55 -10 lines
Diff to previous 1.49
Rewrite update_display_dga_vosf() for much improved performance and cope
with palette changes. Also slightly improve the generic code when we need
to further update the screen (e.g. SDL without hardware surface)

Revision 1.49 - (view) (annotate) - [select for diffs]
2005-03-28T16:14:25Z (19 years, 7 months ago) by gbeauche
Branch: MAIN
Changes since 1.48: +62 -53 lines
Diff to previous 1.48
Enable multiple depths in fullscreen DGA modes, i.e. add 1-bit to 16/32-bit
blitters, rewrite update_display_dga_vosf() to actually work with sub byte
pixels. Factor out update_display_window_vosf() since it's long time that
it is no longer checking for first column and last column that have changed.

Revision 1.48 - (view) (annotate) - [select for diffs]
2005-01-30T21:42:14Z (19 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.47: +1 -1 lines
Diff to previous 1.47
Happy New Year!

Revision 1.47 - (view) (annotate) - [select for diffs]
2004-12-18T22:20:27Z (19 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.46: +2 -2 lines
Diff to previous 1.46
s/vm_page_size/vm_get_page_size/ to avoid name clash on MacOS X

Revision 1.46 - (view) (annotate) - [select for diffs]
2004-12-11T10:20:32Z (19 years, 11 months ago) by gbeauche
Branch: MAIN
Changes since 1.45: +9 -4 lines
Diff to previous 1.45
remove obsolete headers inclusion, implement vosf lock with native windows
mutexes, use new vm_page_size() accessor

Revision 1.45 - (view) (annotate) - [select for diffs]
2004-11-15T23:40:23Z (20 years ago) by gbeauche
Branch: MAIN
Changes since 1.44: +0 -3 lines
Diff to previous 1.44
lock X11 display better around update_display_window_vosf()

Revision 1.44 - (view) (annotate) - [select for diffs]
2004-11-15T23:27:43Z (20 years ago) by gbeauche
Branch: MAIN
Changes since 1.43: +3 -0 lines
Diff to previous 1.43
Backport copy-paste of 'TEXT' from SheepShaver

Revision 1.43 - (view) (annotate) - [select for diffs]
2004-06-29T21:50:23Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.42: +1 -1 lines
Diff to previous 1.42
Don't try to make a cast value an lvalue (Brian Johnson). Add some explicit
casts to (int) in order to avaoid this warning:
warning: comparison between `const enum video_depth' and `enum <anonymous>'

Revision 1.42 - (view) (annotate) - [select for diffs]
2004-06-26T17:20:35Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.41: +1 -1 lines
Diff to previous 1.41
Fix video_vosf_init() for BasiliskII/SDL

Revision 1.41 - (view) (annotate) - [select for diffs]
2004-06-26T16:26:07Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.40: +21 -18 lines
Diff to previous 1.40
Try a better VOSF run-time performance check heuristic.

Revision 1.40 - (view) (annotate) - [select for diffs]
2004-06-26T15:22:02Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.39: +31 -0 lines
Diff to previous 1.39
Add heuristic to deitermine run-time effect of VOSF acceleration, and
disable it if it turns out to not be profitable

Revision 1.39 - (view) (annotate) - [select for diffs]
2004-06-24T15:19:56Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.38: +2 -36 lines
Diff to previous 1.38
Move VideoMode wrappers to video_blit.h.

Revision 1.38 - (view) (annotate) - [select for diffs]
2004-06-23T14:30:48Z (20 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.37: +52 -28 lines
Diff to previous 1.37
Initial SDL/video support. Fix VOSF code could lead to a crash on run-time
resolution/depth switching. Rearrange blitter lookup code, aka make it cleaner.

Revision 1.37 - (view) (annotate) - [select for diffs]
2004-01-12T15:29:25Z (20 years, 10 months ago) by cebix
Branch: MAIN
CVS Tags: nigel-build-15, nigel-build-16
Changes since 1.36: +1 -1 lines
Diff to previous 1.36
Happy New Year! :)

Revision 1.36 - (view) (annotate) - [select for diffs]
2004-01-04T06:11:49Z (20 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.35: +5 -5 lines
Diff to previous 1.35
Always prefer our (inlined) spinlocks.

Revision 1.35 - (view) (annotate) - [select for diffs]
2003-09-29T08:27:24Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.34: +4 -0 lines
Diff to previous 1.34
use spinlocks on SheepShaver/Linux/PPC, and possibly others where spinlocks
are available. TODO: check the fastest & safest means to lock VOSF stuff.

Revision 1.34 - (view) (annotate) - [select for diffs]
2003-09-29T07:02:58Z (21 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.33: +1 -12 lines
Diff to previous 1.33
New SIGSEGV API so that skip-instruction requests are more explicit. Yes,
that's api change, but that's cooler now for SheepShaver. ;-)

Revision 1.33 - (view) (annotate) - [select for diffs]
2003-05-22T22:13:56Z (21 years, 5 months ago) by gbeauche
Branch: MAIN
Changes since 1.32: +80 -33 lines
Diff to previous 1.32
Rearrange video_vosf.h to accomodate both SheepShaver and BasiliskII video
infrastructure. Make video_blit.cpp a little more emulator independent.

Revision 1.32 - (view) (annotate) - [select for diffs]
2002-05-16T15:48:06Z (22 years, 6 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-12, nigel-build-13
Changes since 1.31: +0 -19 lines
Diff to previous 1.31
- video_vosh.h (Screen_fault_handler): Move unrecoverable fault case to...
- main_unix.cpp (sigsegv_dump_state): ... Here.
- sigsegv.h (sigsegv_fault_handler_t): Rename from sigsegv_handler_t.
- sigsegv.h (sigsegv_state_dumper_t): New.

Revision 1.31 - (view) (annotate) - [select for diffs]
2002-04-25T11:00:31Z (22 years, 6 months ago) by cebix
Branch: MAIN
Changes since 1.30: +27 -21 lines
Diff to previous 1.30
- added infrastructure for multi-monitor support; only video_x.cpp is
  converted for the new scheme; not actually tested with a mult-monitor
  setup yet but at least single-monitor display doesn't seem to be broken
  (UAE banked addressing would definitely require some extensions to handle
  multiple frame buffers)
- struct video_mode has an extra field that is free for use by platform-
  specific code

Revision 1.30 - (view) (annotate) - [select for diffs]
2002-01-15T14:58:37Z (22 years, 10 months ago) by cebix
Branch: MAIN
CVS Tags: snapshot-15012002
Changes since 1.29: +1 -1 lines
Diff to previous 1.29
- documentation updates
- 2001 -> 2002
- version 0.9 -> 1.0

Revision 1.29 - (view) (annotate) - [select for diffs]
2001-07-14T18:41:01Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.28: +10 -10 lines
Diff to previous 1.28
- video_x.cpp: the_buffer shall always be mapped through vm_alloc() so
  that it can be vm_protect()'ed at will afterwards
- video_x.cpp: let driver_base free() the_buffer_copy and the_host_buffer,
  if necessary
- video_vosf.h: reverted to use malloc() for mainBuffer.dirtyPages and
  mainBuffer.pageInfo
- vm_alloc.cpp: small cleanups
- fixed typos

Revision 1.28 - (view) (annotate) - [select for diffs]
2001-07-11T19:26:14Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.27: +5 -5 lines
Diff to previous 1.27
fixed a couple of compiler warnings

Revision 1.27 - (view) (annotate) - [select for diffs]
2001-07-07T09:14:47Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.26: +81 -70 lines
Diff to previous 1.26
- added video_vosf_init()/video_vosf_exit() for initialization and destruction
  of the internal structures used for the VOSF system
- use vm_acquire()/vm_release() for VOSF buffers and hope the_buffer is
  allocated above RAM address space (temporary workaround for 64-bit
  addressing systems)
- don't free() screen buffers in driver_base dtor
- don't free() memory mapped buffers in driver_base dtor

Revision 1.26 - (view) (annotate) - [select for diffs]
2001-07-06T20:49:48Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.25: +1 -1 lines
Diff to previous 1.25
- an appropriate visual is selected for the requested Mac color depth
- the list of supported Mac color depths is constructed from the list of
  depth and visuals supported by the X server

Revision 1.25 - (view) (annotate) - [select for diffs]
2001-07-03T15:59:47Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.24: +1 -0 lines
Diff to previous 1.24
- added support for platform-independant mutexes, currently only properly
  implemented under Unix
- adb.cpp uses mutexes for thread-safe mouse handling
- video_x.cpp: pressing Ctrl-F5 in windowed mode switches to a "grabbed"
  relative mouse mode, useful for some games
- video_x.cpp: fixed some bugs relating to the hotkeys (key releases are no
  longer treated as hotkeys)

Revision 1.24 - (view) (annotate) - [select for diffs]
2001-07-01T21:09:29Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.23: +8 -5 lines
Diff to previous 1.23
- video_set_palette() gets passed the number of used palette entries
- video_x.cpp supports 2- and 4-bit modes on truecolor screens

Revision 1.23 - (view) (annotate) - [select for diffs]
2001-07-01T19:57:55Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.22: +10 -6 lines
Diff to previous 1.22
added support for 8-bit windowed modes on 16 and 32-bit screens (for the
games, man, the games! :-)

Revision 1.22 - (view) (annotate) - [select for diffs]
2001-07-01T14:38:03Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.21: +1 -1 lines
Diff to previous 1.21
- sony.cpp/disk.cpp/cdrom.cpp use vector<> of drive_info objects instead of
  linked list
- color depth switching updates slot ROM
- video_x.cpp always supports 1-bit window modes
- timer_create()/clock_gettime() are pulled from librt if present

Revision 1.21 - (view) (annotate) - [select for diffs]
2001-06-30T17:21:54Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.20: +5 -5 lines
Diff to previous 1.20
- experimental gamma table support
- restructured video_x.cpp: uses classes for display types

Revision 1.20 - (view) (annotate) - [select for diffs]
2001-06-28T22:06:18Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.19: +16 -19 lines
Diff to previous 1.19
zero_fd is not longer used since vm_alloc.cpp should handle that correctly.
However, vm_init() and vm_exit() are called in main_unix.cpp to ensure proper
initialization of the internal zero_fd descriptor, if needed. i.e. no
anonymous mapping for mmap()-based memory allocation.

Revision 1.19 - (view) (annotate) - [select for diffs]
2001-06-28T21:20:00Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.18: +212 -1 lines
Diff to previous 1.18
video_x.cpp supports resolution switching in windowed mode: the available
resolutions are 512x384, 640x480, 800x600, 1024x768 and 1280x1024 (the prefs
editor has to be updated to reflect this). The resolution selected in the
prefs editor is used as the default, but it can be changed in the Monitors
control panel. So far only tested with direct addressing.

Revision 1.18 - (view) (annotate) - [select for diffs]
2001-06-27T19:03:37Z (23 years, 4 months ago) by cebix
Branch: MAIN
Changes since 1.17: +10 -10 lines
Diff to previous 1.17
added infrastructure for resolution/depth switching (currently, all video
drivers only support one mode, the one selected by the user)

Revision 1.17 - (view) (annotate) - [select for diffs]
2001-06-26T22:35:41Z (23 years, 4 months ago) by gbeauche
Branch: MAIN
Changes since 1.16: +6 -13 lines
Diff to previous 1.16
- added SIGSEGV support for Linux/Alpha (to be checked), Darwin/PPC
- added uniform virtual memory allocation
  (supports mmap(), vm_allocate(), or fallbacks to malloc()/free())
- cleaned up memory allocation in main_unix.cpp

Revision 1.16 - (view) (annotate) - [select for diffs]
2001-05-20T20:31:50Z (23 years, 5 months ago) by gbeauche
Branch: MAIN
CVS Tags: release-0_9-1, snapshot-29052001
Changes since 1.15: +9 -100 lines
Diff to previous 1.15
- new and updated SIGSEGV support functions:
  + configure script cleanups
  + possible support for Direct Addressing / VOSF on other platforms

Revision 1.15 - (view) (annotate) - [select for diffs]
2001-03-06T18:41:12Z (23 years, 8 months ago) by cebix
Branch: MAIN
Changes since 1.14: +7 -65 lines
Diff to previous 1.14
added patches from Brian J. Johnson (better VOSF performance and responsiveness)

Revision 1.14 - (view) (annotate) - [select for diffs]
2001-02-10T15:29:01Z (23 years, 9 months ago) by cebix
Branch: MAIN
CVS Tags: snapshot-17022001
Changes since 1.13: +8 -0 lines
Diff to previous 1.13
implemented VOSF on Linux/ppc

Revision 1.13 - (view) (annotate) - [select for diffs]
2001-01-28T14:05:19Z (23 years, 9 months ago) by gbeauche
Branch: MAIN
Changes since 1.12: +13 -198 lines
Diff to previous 1.12
Mainly changes to the VOSF code:
- improved blitters selection
- improved blitters performance if UNALIGNED_PROFITABLE is set
- cleaned up 8 bpp blitters

Revision 1.12 - (view) (annotate) - [select for diffs]
2001-01-11T18:00:40Z (23 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.11: +33 -0 lines
Diff to previous 1.11
- Cleaned up some comments again
- The dirtyPages[] array overrun conditions should be really safe now

Revision 1.11 - (view) (annotate) - [select for diffs]
2001-01-11T16:39:08Z (23 years, 10 months ago) by gbeauche
Branch: MAIN
Changes since 1.10: +34 -38 lines
Diff to previous 1.10
Changes made to the update routines
- Cleaned up the process for determining the ranges of pages touched
  that have to be blitted onto the screen (find_next_page_set() and
  find_next_page_clear() functions)
Changes made to do_handle_screen_fault()
- An unhandled address is now dealt by the default SIGSEGV handler
- Print out the address of the instruction that caused the exception

Revision 1.10 - (view) (annotate) - [select for diffs]
2000-11-30T16:20:52Z (23 years, 11 months ago) by cebix
Branch: MAIN
Changes since 1.9: +5 -5 lines
Diff to previous 1.9
- removed USE_MAPPED_MEMORY (unused)
- fixed Delay_usec() on Solaris

Revision 1.9 - (view) (annotate) - [select for diffs]
2000-11-30T16:09:03Z (23 years, 11 months ago) by cebix
Branch: MAIN
Changes since 1.8: +4 -4 lines
Diff to previous 1.8
fixed fbcopy_16_obo on big-endian systems

Revision 1.8 - (view) (annotate) - [select for diffs]
2000-11-03T18:21:42Z (24 years ago) by cebix
Branch: MAIN
Changes since 1.7: +2 -6 lines
Diff to previous 1.7
- clicking on the "close" widget of the MacOS display window rings the bell
  but doesn't actually close the window to prevent Basilisk II from being
  accidentally killed without a proper shutdown of MacOS
- replaced many #ifdef HAVE_PTHREADS constructs with LOCK/UNLOCK macros
- minor cleanups

Revision 1.7 - (view) (annotate) - [select for diffs]
2000-10-13T16:47:52Z (24 years, 1 month ago) by cebix
Branch: MAIN
Changes since 1.6: +7 -2 lines
Diff to previous 1.6
- replaced floating-point page shift calculation by integer routine, fixing
  the VOSF problems under NetBSD/m68k
- fixed off-by-7 error in 1-bit window update routines

Revision 1.6 - (view) (annotate) - [select for diffs]
2000-10-11T17:55:06Z (24 years, 1 month ago) by cebix
Branch: MAIN
Changes since 1.5: +95 -29 lines
Diff to previous 1.5
- added a few more emulated privileged instructions to NetBSD/m68k
- tried to make VOSF run under NetBSD/m68k, little success (shows stripes and
  sometimes crashes)

Revision 1.5 - (view) (annotate) - [select for diffs]
2000-10-08T18:41:35Z (24 years, 1 month ago) by cebix
Branch: MAIN
Changes since 1.4: +1 -1 lines
Diff to previous 1.4
added SA_SIGINFO to sa_flags when sa_sigaction is used

Revision 1.4 - (view) (annotate) - [select for diffs]
2000-10-02T17:52:42Z (24 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.3: +11 -9 lines
Diff to previous 1.3
- fixed a bug in 24 bpp mode, at least when there are four bytes per pixel
- a little loop optimization when clearing the dirty pages
- changed unsigned longs with the uintptr type
- also used uintpr for the page alignment function

Revision 1.3 - (view) (annotate) - [select for diffs]
2000-09-23T08:39:38Z (24 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.2: +0 -1 lines
Diff to previous 1.2
- fbcopy_raw now works if memcpy() is not used
  (but it seems better to use memcpy since GCC has inline equivalent)

Revision 1.2 - (view) (annotate) - [select for diffs]
2000-09-23T06:51:30Z (24 years, 1 month ago) by gbeauche
Branch: MAIN
Changes since 1.1: +70 -15 lines
Diff to previous 1.1
- fixed blitters for big endian systems, will probably work now

Revision 1.1 - (view) (annotate) - [select for diffs]
2000-09-22T17:16:05Z (24 years, 1 month ago) by gbeauche
Branch: MAIN
- video on SEGV signals

Convenience Links

Links to HEAD: (view) (annotate) Links to MAIN: (view) (annotate)

Compare Revisions

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a