completed move_overlay() implementation. Updated docs.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9998 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -11,8 +11,6 @@
|
||||
You use this software at your own risk! Although I don't expect it to damage your PC, videocard or Monitor, I cannot guarantee this!</h3>
|
||||
<hr>
|
||||
<br>
|
||||
Note please:<br>
|
||||
This driver is still alpha quality: Overlay does not work correctly yet on MagicMedia cards and there may be additional trouble. While you are encouraged to test and use the driver (if it works at all for you then it will probably be stable as well), don't delete the old one(s) just yet!<br>
|
||||
<h2>Supported cards:</h2>
|
||||
<ul>
|
||||
<li>MagicGraph 128 (NM2070)
|
||||
@@ -45,7 +43,6 @@ This driver is still alpha quality: Overlay does not work correctly yet on Magic
|
||||
<li>If your laptop doesn't work with the driver (distorted/black screen), make sure you disabled LCD stretching/zooming or whatever it's called in the system BIOS;
|
||||
<li>Apparantly it's not possible to boot into modes with a resolution above 800x600 pixels on some cards. If you encounter this please report it, and only use higher resolution modes on other workspaces for now.
|
||||
<li>The keyboard 'shortcut key' for changing output devices bypasses the graphics driver and directly uses the cardBIOS. Sometimes using this key will have undesired results. Please use with care! Or better yet: just preset the output device(s) you want in the system BIOS (if possible). If you are going to use that shortcut key anyway: then make sure you switch workspaces between spaces with different settings after using it, so the driver updates the card programming again (so it gets in sync with the card again);
|
||||
<li>Overlay is not yet working correctly on NM2200 and later cards: if you have such a card and want to help by testing stuff, let me know!
|
||||
<li>On NM2070 panel centering only works vertically: horizontal centering-related info is missing.
|
||||
</ul>
|
||||
<br>
|
||||
@@ -124,6 +121,6 @@ Dumprom is another 'tool' for bug-tracking purposes.
|
||||
<hr>
|
||||
<br>
|
||||
<a href="mailto:[email protected]">Rudolf Cornelissen.</a>
|
||||
<p>(Page last updated on July 29, 2004)</p>
|
||||
<p>(Page last updated on November 18, 2004)</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<p><h2>Changes done for each driverversion:</h2></p>
|
||||
<p><h1>head 0.10 (Rudolf)</h1></p>
|
||||
<p><h1>nm_driver 0.11 (Rudolf)</h1></p>
|
||||
<ul>
|
||||
<li>Added full 2D acceleration for all remaining cards that did not have that yet with this driver (still largely untested);
|
||||
<li>Fixed a long standing problem with MagicMedia (all NM2200 and later) cards with overlay: buffer width is programmed correctly now. Can't believe I didn't see that before!
|
||||
@@ -12,7 +12,8 @@
|
||||
<li>Updated overlay scaling restrictions: officially the cards support upto and including 8x upscaling;
|
||||
<li>Fixed error regarding calculating overlay engine register value for right-clipping video output: on NM2200 and later this was (probably) responsible for the big-time output distortions even without clipping!
|
||||
<li>Fixed BIOS ROM dump (to file) option;
|
||||
<li>Fixed GET_TIMING_CONSTRAINTS and GET_ACCELERANT_DEVICE_INFO accelerant hooks to return valid data; updated modeline checking and modification code (used by ProposeDisplayMode) to adhere to one more timing constraint.
|
||||
<li>Fixed GET_TIMING_CONSTRAINTS and GET_ACCELERANT_DEVICE_INFO accelerant hooks to return valid data; updated modeline checking and modification code (used by ProposeDisplayMode) to adhere to one more timing constraint;
|
||||
<li>Added move_overlay() so overlay (finally) works correctly in virtualscreens.
|
||||
</ul>
|
||||
<p><h1>nm_driver 0.06 (Rudolf)</h1></p>
|
||||
<ul>
|
||||
@@ -63,7 +64,8 @@ Acceleration engine benchmarked and tested for errors with BeRoMeter V1.2.6.
|
||||
<p><h1>Still todo:</h1></p>
|
||||
<ul>
|
||||
<li>fix for trouble with booting into modes above 800x600 resolution on some cards (please report this behaviour!);
|
||||
<li>setup workarounds for MagicMedia series overlay engine and 2D acceleration engine hardware faults.
|
||||
<li>setup workarounds for MagicMedia series overlay engine and 2D acceleration engine hardware faults;
|
||||
<li>add sync_to_retrace capability if possible (missing specs).
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
|
||||
@@ -965,22 +965,25 @@ void drv_program_bes_ISA(nm_bes_data *bes)
|
||||
snooze(10);
|
||||
KISAGRPHW(GENLOCK, temp);
|
||||
/* destination rectangle #1 (output window position and size) */
|
||||
KISAGRPHW(HD1COORD1L, ((bes->hcoordv >> 16) & 0xff));
|
||||
KISAGRPHW(HD1COORD2L, (bes->hcoordv & 0xff));
|
||||
KISAGRPHW(HD1COORD21H, (((bes->hcoordv >> 4) & 0xf0) | ((bes->hcoordv >> 24) & 0x0f)));
|
||||
KISAGRPHW(VD1COORD1L, ((bes->vcoordv >> 16) & 0xff));
|
||||
KISAGRPHW(VD1COORD2L, (bes->vcoordv & 0xff));
|
||||
KISAGRPHW(VD1COORD21H, (((bes->vcoordv >> 4) & 0xf0) | ((bes->vcoordv >> 24) & 0x0f)));
|
||||
/* scaling */
|
||||
KISAGRPHW(XSCALEL, (bes->hiscalv & 0xff));
|
||||
KISAGRPHW(XSCALEH, ((bes->hiscalv >> 8) & 0xff));
|
||||
KISAGRPHW(YSCALEL, (bes->viscalv & 0xff));
|
||||
KISAGRPHW(YSCALEH, ((bes->viscalv >> 8) & 0xff));
|
||||
KISAGRPHW(HD1COORD1L, ((bes->moi.hcoordv >> 16) & 0xff));
|
||||
KISAGRPHW(HD1COORD2L, (bes->moi.hcoordv & 0xff));
|
||||
KISAGRPHW(HD1COORD21H, (((bes->moi.hcoordv >> 4) & 0xf0) | ((bes->moi.hcoordv >> 24) & 0x0f)));
|
||||
KISAGRPHW(VD1COORD1L, ((bes->moi.vcoordv >> 16) & 0xff));
|
||||
KISAGRPHW(VD1COORD2L, (bes->moi.vcoordv & 0xff));
|
||||
KISAGRPHW(VD1COORD21H, (((bes->moi.vcoordv >> 4) & 0xf0) | ((bes->moi.vcoordv >> 24) & 0x0f)));
|
||||
if (!bes->move_only)
|
||||
{
|
||||
/* scaling */
|
||||
KISAGRPHW(XSCALEL, (bes->hiscalv & 0xff));
|
||||
KISAGRPHW(XSCALEH, ((bes->hiscalv >> 8) & 0xff));
|
||||
KISAGRPHW(YSCALEL, (bes->viscalv & 0xff));
|
||||
KISAGRPHW(YSCALEH, ((bes->viscalv >> 8) & 0xff));
|
||||
}
|
||||
/* inputbuffer #1 origin */
|
||||
/* (we don't program buffer #2 as it's unused.) */
|
||||
if (bes->card_type < NM2200)
|
||||
{
|
||||
bes->a1orgv >>= 1;
|
||||
bes->moi.a1orgv >>= 1;
|
||||
/* horizontal source end does not use subpixelprecision: granularity is 8 pixels */
|
||||
/* notes:
|
||||
* - correctly programming horizontal source end minimizes used bandwidth;
|
||||
@@ -990,7 +993,7 @@ void drv_program_bes_ISA(nm_bes_data *bes)
|
||||
- adding 1 to convert 'last used position' to 'number of used pixels';
|
||||
- adding 7 to round-up to the nearest higher (or equal) valid register
|
||||
value (needed because of it's 8-pixel granularity). */
|
||||
KISAGRPHW(0xbc, ((((bes->hsrcendv >> 16) + 9) >> 3) - 1));
|
||||
KISAGRPHW(0xbc, ((((bes->moi.hsrcendv >> 16) + 9) >> 3) - 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1005,34 +1008,17 @@ void drv_program_bes_ISA(nm_bes_data *bes)
|
||||
* - make absolutely sure the engine can fetch the last pixel needed from
|
||||
* the sourcebitmap even if only to generate a tiny subpixel from it!
|
||||
* (see remarks for < NM2200 cards regarding programming this register) */
|
||||
KISAGRPHW(0xbc, ((((bes->hsrcendv >> 16) + 17) >> 4) - 1));
|
||||
KISAGRPHW(0xbc, ((((bes->moi.hsrcendv >> 16) + 17) >> 4) - 1));
|
||||
}
|
||||
KISAGRPHW(BUF1ORGL, (bes->a1orgv & 0xff));
|
||||
KISAGRPHW(BUF1ORGM, ((bes->a1orgv >> 8) & 0xff));
|
||||
KISAGRPHW(BUF1ORGH, ((bes->a1orgv >> 16) & 0xff));
|
||||
KISAGRPHW(BUF1ORGL, (bes->moi.a1orgv & 0xff));
|
||||
KISAGRPHW(BUF1ORGM, ((bes->moi.a1orgv >> 8) & 0xff));
|
||||
KISAGRPHW(BUF1ORGH, ((bes->moi.a1orgv >> 16) & 0xff));
|
||||
/* ??? */
|
||||
KISAGRPHW(0xbd, 0x02);
|
||||
KISAGRPHW(0xbe, 0x00);
|
||||
/* b2 = 0: don't use horizontal mirroring (NM2160) */
|
||||
/* other bits do ??? */
|
||||
KISAGRPHW(0xbf, 0x02);
|
||||
|
||||
/* destination rectangle #2 (output window position and size) */
|
||||
/*
|
||||
{
|
||||
uint16 left = 0;
|
||||
uint16 right = 128;
|
||||
uint16 top = 0;
|
||||
uint16 bottom = 128;
|
||||
|
||||
KISASEQW(HD2COORD1L, (left & 0xff));
|
||||
KISASEQW(HD2COORD2L, (right & 0xff));
|
||||
KISASEQW(HD2COORD21H, (((right >> 4) & 0xf0) | ((left >> 8) & 0x0f)));
|
||||
KISASEQW(VD2COORD1L, (top & 0xff));
|
||||
KISASEQW(VD2COORD2L, (bottom & 0xff));
|
||||
KISASEQW(VD2COORD21H, (((bottom >> 4) & 0xf0) | ((top >> 8) & 0x0f)));
|
||||
}
|
||||
*/
|
||||
/* ??? */
|
||||
KISASEQW(0x1c, 0xfb);
|
||||
KISASEQW(0x1d, 0x00);
|
||||
@@ -1045,29 +1031,32 @@ void drv_program_bes_ISA(nm_bes_data *bes)
|
||||
/* (b6-4 = Y downscale = 100%, b2-0 = X downscale = 100%;
|
||||
* downscaling selectable in 12.5% steps on increasing setting by 1) */
|
||||
KISASEQW(ZVCAP_DSCAL, 0x00);
|
||||
/* global BES control */
|
||||
KISAGRPHW(BESCTRL1, (bes->globctlv & 0xff));
|
||||
KISASEQW(BESCTRL2, ((bes->globctlv >> 8) & 0xff));
|
||||
if (!bes->move_only)
|
||||
{
|
||||
/* global BES control */
|
||||
KISAGRPHW(BESCTRL1, (bes->globctlv & 0xff));
|
||||
KISASEQW(BESCTRL2, ((bes->globctlv >> 8) & 0xff));
|
||||
|
||||
|
||||
/**************************
|
||||
*** setup color keying ***
|
||||
**************************/
|
||||
/**************************
|
||||
*** setup color keying ***
|
||||
**************************/
|
||||
|
||||
KISAGRPHW(COLKEY_R, bes->colkey_r);
|
||||
KISAGRPHW(COLKEY_G, bes->colkey_g);
|
||||
KISAGRPHW(COLKEY_B, bes->colkey_b);
|
||||
KISAGRPHW(COLKEY_R, bes->colkey_r);
|
||||
KISAGRPHW(COLKEY_G, bes->colkey_g);
|
||||
KISAGRPHW(COLKEY_B, bes->colkey_b);
|
||||
|
||||
|
||||
/*************************
|
||||
*** setup misc. stuff ***
|
||||
*************************/
|
||||
/*************************
|
||||
*** setup misc. stuff ***
|
||||
*************************/
|
||||
|
||||
/* setup brightness to be 'neutral' (two's complement number) */
|
||||
KISAGRPHW(BRIGHTNESS, 0x00);
|
||||
/* setup brightness to be 'neutral' (two's complement number) */
|
||||
KISAGRPHW(BRIGHTNESS, 0x00);
|
||||
|
||||
/* setup inputbuffer #1 pitch including slopspace */
|
||||
/* (we don't program the pitch for inputbuffer #2 as it's unused.) */
|
||||
KISAGRPHW(BUF1PITCHL, (buf_pitch & 0xff));
|
||||
KISAGRPHW(BUF1PITCHH, ((buf_pitch >> 8) & 0xff));
|
||||
/* setup inputbuffer #1 pitch including slopspace */
|
||||
/* (we don't program the pitch for inputbuffer #2 as it's unused.) */
|
||||
KISAGRPHW(BUF1PITCHL, (buf_pitch & 0xff));
|
||||
KISAGRPHW(BUF1PITCHH, ((buf_pitch >> 8) & 0xff));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# accelerant "nm.accelerant"
|
||||
|
||||
# nm.accelerant parameters
|
||||
usebios true # if true rely on bios to coldstart the card instead of driver
|
||||
usebios true # if true rely on bios to coldstart the card instead of driver (not functional)
|
||||
#memory 2048 # in Kb, override builtin memory size detection
|
||||
hardcursor true # if true use on-chip cursor capabilities
|
||||
#logmask 0x00000000 # nothing logged, except errors, is default
|
||||
@@ -18,4 +18,32 @@ hardcursor true # if true use on-chip cursor capabilities
|
||||
#logmask 0xffffffff # log everything
|
||||
dumprom false # dump bios rom in ~/nm.rom
|
||||
|
||||
#--------- that's all.
|
||||
#--------- that's all.
|
||||
|
||||
|
||||
#logmask setup info:
|
||||
#log level select:
|
||||
#logmask 0x0000000x # lowest digit: bitmask to select logging level.
|
||||
|
||||
#log modules select:
|
||||
#logmask 0xxxxxxxx0 # highest 7 digits: bitmask to select individual modules to log.
|
||||
|
||||
#log modules:
|
||||
#logmask 0x00000200 # engine: bes
|
||||
#logmask 0x00000400 # overlay
|
||||
#logmask 0x00000800 # engine: support
|
||||
#logmask 0x00002000 # engine: info
|
||||
#logmask 0x00008000 # engine: general
|
||||
#logmask 0x00010000 # engine: dac
|
||||
#logmask 0x00040000 # engine: crtc
|
||||
#logmask 0x00080000 # engine: acc
|
||||
#logmask 0x00200000 # set displaymode
|
||||
#logmask 0x00400000 # propose displaymode
|
||||
#logmask 0x00800000 # init accelerant
|
||||
#logmask 0x01000000 # get timing constraints
|
||||
#logmask 0x02000000 # get mode info
|
||||
#logmask 0x04000000 # get device info
|
||||
#logmask 0x08000000 # get accelerant hook
|
||||
#logmask 0x10000000 # engine management
|
||||
#logmask 0x20000000 # cursor
|
||||
#logmask 0x40000000 # acceleration
|
||||
|
||||
Reference in New Issue
Block a user