setup move_overlay() functionality (part 2), not yet ready..
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10224 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -317,12 +317,47 @@ static void gx00_bes_calc_move_overlay(move_overlay_info *moi)
|
|||||||
moi->a1orgv &= 0x01fffff0;
|
moi->a1orgv &= 0x01fffff0;
|
||||||
|
|
||||||
/* field 1 weight: AND below required by hardware, also make sure 'sign' is always 'positive' */
|
/* field 1 weight: AND below required by hardware, also make sure 'sign' is always 'positive' */
|
||||||
moi->v1srcstv &= 0x0000fffc;//fixme: was v1wghtv
|
moi->v1srcstv &= 0x0000fffc;
|
||||||
}
|
}
|
||||||
|
|
||||||
//fixme: impl:
|
|
||||||
static void gx00_bes_program_move_overlay(move_overlay_info moi)
|
static void gx00_bes_program_move_overlay(move_overlay_info moi)
|
||||||
{
|
{
|
||||||
|
/*************************************
|
||||||
|
*** sync to BES (Back End Scaler) ***
|
||||||
|
*************************************/
|
||||||
|
|
||||||
|
/* Make sure reprogramming the BES completes before the next retrace occurs,
|
||||||
|
* to prevent register-update glitches (double buffer feature). */
|
||||||
|
|
||||||
|
LOG(3,("Overlay: starting register programming beyond Vcount %d\n", CR1R(VCOUNT)));
|
||||||
|
/* Even at 1600x1200x90Hz, a single line still takes about 9uS to complete:
|
||||||
|
* this resolution will generate about 180Mhz pixelclock while we can do
|
||||||
|
* upto 360Mhz. So snooze about 4uS to prevent bus-congestion...
|
||||||
|
* Appr. 200 lines time will provide enough room even on a 100Mhz CPU if it's
|
||||||
|
* screen is set to the highest refreshrate/resolution possible. */
|
||||||
|
while ((uint16)CR1R(VCOUNT) > (si->dm.timing.v_total - 200)) snooze(4);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************
|
||||||
|
*** actually program the registers ***
|
||||||
|
**************************************/
|
||||||
|
|
||||||
|
BESW(HCOORD, moi.hcoordv);
|
||||||
|
BESW(VCOORD, moi.vcoordv);
|
||||||
|
// BESW(HISCAL, hiscalv);
|
||||||
|
BESW(HSRCST, moi.hsrcstv);
|
||||||
|
BESW(HSRCEND, moi.hsrcendv);
|
||||||
|
// BESW(HSRCLST, hsrclstv);
|
||||||
|
// BESW(VISCAL, viscalv);
|
||||||
|
BESW(A1ORG, moi.a1orgv);
|
||||||
|
BESW(V1WGHT, moi.v1srcstv);
|
||||||
|
// BESW(V1SRCLST, v1srclstv);
|
||||||
|
// BESW(GLOBCTL, globctlv);
|
||||||
|
// BESW(CTL, ctlv);
|
||||||
|
|
||||||
|
/* on a 500Mhz P3 CPU just logging a line costs 400uS (18-19 vcounts at 1024x768x60Hz)!
|
||||||
|
* programming the registers above actually costs 180uS here */
|
||||||
|
LOG(3,("Overlay: completed at Vcount %d\n", CR1R(VCOUNT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t gx00_configure_bes
|
status_t gx00_configure_bes
|
||||||
|
|||||||
Reference in New Issue
Block a user