full 2D acc works on NM2097 and NM2160 (still with softcursor)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7062 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
This file may be used under the terms of the Be Sample Code License.
|
This file may be used under the terms of the Be Sample Code License.
|
||||||
|
|
||||||
Other authors:
|
Other authors:
|
||||||
Rudolf Cornelissen 4/2003-
|
Rudolf Cornelissen 4/2003-3/2004
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MODULE_BIT 0x40000000
|
#define MODULE_BIT 0x40000000
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
void SCREEN_TO_SCREEN_BLIT(engine_token *et, blit_params *list, uint32 count) {
|
void SCREEN_TO_SCREEN_BLIT(engine_token *et, blit_params *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*do each blit*/
|
/* do each blit */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -33,7 +33,7 @@ void SCREEN_TO_SCREEN_BLIT(engine_token *et, blit_params *list, uint32 count) {
|
|||||||
void SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT(engine_token *et, scaled_blit_params *list, uint32 count) {
|
void SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT(engine_token *et, scaled_blit_params *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*do each blit*/
|
/* do each blit */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -55,7 +55,7 @@ void SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT(engine_token *et, scaled_blit_params
|
|||||||
void SCREEN_TO_SCREEN_TRANSPARENT_BLIT(engine_token *et, uint32 transparent_colour, blit_params *list, uint32 count) {
|
void SCREEN_TO_SCREEN_TRANSPARENT_BLIT(engine_token *et, uint32 transparent_colour, blit_params *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*do each blit*/
|
/* do each blit */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -76,7 +76,10 @@ void SCREEN_TO_SCREEN_TRANSPARENT_BLIT(engine_token *et, uint32 transparent_colo
|
|||||||
void FILL_RECTANGLE(engine_token *et, uint32 colorIndex, fill_rect_params *list, uint32 count) {
|
void FILL_RECTANGLE(engine_token *et, uint32 colorIndex, fill_rect_params *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*draw each rectangle*/
|
/* init acc engine for fill function */
|
||||||
|
nm_acc_setup_rectangle(colorIndex);
|
||||||
|
|
||||||
|
/* draw each rectangle */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -85,8 +88,7 @@ void FILL_RECTANGLE(engine_token *et, uint32 colorIndex, fill_rect_params *list,
|
|||||||
list[i].left,
|
list[i].left,
|
||||||
(list[i].right)+1,
|
(list[i].right)+1,
|
||||||
list[i].top,
|
list[i].top,
|
||||||
(list[i].bottom-list[i].top)+1,
|
(list[i].bottom-list[i].top)+1
|
||||||
colorIndex
|
|
||||||
);
|
);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -95,7 +97,10 @@ void FILL_RECTANGLE(engine_token *et, uint32 colorIndex, fill_rect_params *list,
|
|||||||
void INVERT_RECTANGLE(engine_token *et, fill_rect_params *list, uint32 count) {
|
void INVERT_RECTANGLE(engine_token *et, fill_rect_params *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*draw each rectangle*/
|
/* init acc engine for invert function */
|
||||||
|
nm_acc_setup_rect_invert();
|
||||||
|
|
||||||
|
/* invert each rectangle */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -104,8 +109,7 @@ void INVERT_RECTANGLE(engine_token *et, fill_rect_params *list, uint32 count) {
|
|||||||
list[i].left,
|
list[i].left,
|
||||||
(list[i].right)+1,
|
(list[i].right)+1,
|
||||||
list[i].top,
|
list[i].top,
|
||||||
(list[i].bottom-list[i].top)+1,
|
(list[i].bottom-list[i].top)+1
|
||||||
0
|
|
||||||
);
|
);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -114,7 +118,10 @@ void INVERT_RECTANGLE(engine_token *et, fill_rect_params *list, uint32 count) {
|
|||||||
void FILL_SPAN(engine_token *et, uint32 colorIndex, uint16 *list, uint32 count) {
|
void FILL_SPAN(engine_token *et, uint32 colorIndex, uint16 *list, uint32 count) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*draw each span*/
|
/* init acc engine for fill function */
|
||||||
|
nm_acc_setup_rectangle(colorIndex);
|
||||||
|
|
||||||
|
/* draw each span */
|
||||||
i=0;
|
i=0;
|
||||||
while (count--)
|
while (count--)
|
||||||
{
|
{
|
||||||
@@ -123,8 +130,7 @@ void FILL_SPAN(engine_token *et, uint32 colorIndex, uint16 *list, uint32 count)
|
|||||||
list[i+1],
|
list[i+1],
|
||||||
list[i+2]+1,
|
list[i+2]+1,
|
||||||
list[i],
|
list[i],
|
||||||
1,
|
1
|
||||||
colorIndex
|
|
||||||
);
|
);
|
||||||
i+=3;
|
i+=3;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,12 +112,12 @@ void * get_accelerant_hook(uint32 feature, void *data)
|
|||||||
/* only export 2D acceleration functions in modes that are capable of it */
|
/* only export 2D acceleration functions in modes that are capable of it */
|
||||||
/* used by the app_server and applications (BWindowScreen) */
|
/* used by the app_server and applications (BWindowScreen) */
|
||||||
CHKA(SCREEN_TO_SCREEN_BLIT);
|
CHKA(SCREEN_TO_SCREEN_BLIT);
|
||||||
// CHKA(FILL_RECTANGLE);
|
CHKA(FILL_RECTANGLE);
|
||||||
// CHKA(INVERT_RECTANGLE);
|
CHKA(INVERT_RECTANGLE);
|
||||||
// CHKA(FILL_SPAN);
|
CHKA(FILL_SPAN);
|
||||||
/* not (yet) used by the app_server:
|
/* not (yet) used by the app_server:
|
||||||
* so just for application use (BWindowScreen) */
|
* so just for application use (BWindowScreen) */
|
||||||
// CHKA(SCREEN_TO_SCREEN_TRANSPARENT_BLIT);
|
//CHKA(SCREEN_TO_SCREEN_TRANSPARENT_BLIT);
|
||||||
//CHKA(SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT;
|
//CHKA(SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#include "nm_std.h"
|
#include "nm_std.h"
|
||||||
|
|
||||||
static status_t nm_acc_wait_fifo(uint32 n);
|
//static status_t nm_acc_wait_fifo(uint32 n);
|
||||||
|
|
||||||
/*acceleration notes*/
|
/*acceleration notes*/
|
||||||
|
|
||||||
@@ -33,35 +33,31 @@ status_t nm_acc_wait_idle()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* wait for enough room in fifo */
|
/* wait for enough room in fifo */
|
||||||
static status_t nm_acc_wait_fifo(uint32 n)
|
//static status_t nm_acc_wait_fifo(uint32 n)
|
||||||
{
|
//{
|
||||||
while (((ACCR(STATUS) & 0x0000ff00) >> 8) < n)
|
// while (((ACCR(STATUS) & 0x0000ff00) >> 8) < n)
|
||||||
{
|
// {
|
||||||
/* snooze a bit so I do not hammer the bus */
|
/* snooze a bit so I do not hammer the bus */
|
||||||
snooze (10);
|
// snooze (10);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
/* AFAIK this must be done for every new screenmode.
|
/* AFAIK this must be done for every new screenmode.
|
||||||
* Engine required init. */
|
* Engine required init. */
|
||||||
status_t nm_acc_init()
|
status_t nm_acc_init()
|
||||||
{
|
{
|
||||||
uint32 depth;
|
|
||||||
|
|
||||||
/* Set pixel width */
|
/* Set pixel width */
|
||||||
switch(si->dm.space)
|
switch(si->dm.space)
|
||||||
{
|
{
|
||||||
case B_CMAP8:
|
case B_CMAP8:
|
||||||
/* b8-9 determine engine colordepth */
|
/* b8-9 determine engine colordepth */
|
||||||
si->engine.control = (1 << 8);
|
si->engine.control = (1 << 8);
|
||||||
// nAcl->ColorShiftAmt = 8;
|
si->engine.depth = 1;
|
||||||
depth = 1;
|
|
||||||
break;
|
break;
|
||||||
case B_RGB15_LITTLE:case B_RGB16_LITTLE:
|
case B_RGB15_LITTLE:case B_RGB16_LITTLE:
|
||||||
/* b8-9 determine engine colordepth */
|
/* b8-9 determine engine colordepth */
|
||||||
si->engine.control = (2 << 8);
|
si->engine.control = (2 << 8);
|
||||||
// nAcl->ColorShiftAmt = 0;
|
si->engine.depth = 2;
|
||||||
depth = 2;
|
|
||||||
break;
|
break;
|
||||||
case B_RGB24_LITTLE:
|
case B_RGB24_LITTLE:
|
||||||
/* no acceleration supported on NM2097 and NM2160 */
|
/* no acceleration supported on NM2097 and NM2160 */
|
||||||
@@ -72,7 +68,7 @@ status_t nm_acc_init()
|
|||||||
|
|
||||||
/* setup memory pitch (b10-12):
|
/* setup memory pitch (b10-12):
|
||||||
* this works with a table, there are very few fixed settings.. */
|
* this works with a table, there are very few fixed settings.. */
|
||||||
switch(si->fbc.bytes_per_row / depth)
|
switch(si->fbc.bytes_per_row / si->engine.depth)
|
||||||
{
|
{
|
||||||
case 640:
|
case 640:
|
||||||
si->engine.control |= (2 << 10);
|
si->engine.control |= (2 << 10);
|
||||||
@@ -98,13 +94,18 @@ status_t nm_acc_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* enable engine FIFO */
|
/* enable engine FIFO */
|
||||||
//fixme: does not work yet..
|
/* fixme when/if possible:
|
||||||
si->engine.control |= (1 << 27);
|
* does not work on most cards.. (tried NM2160)
|
||||||
|
* workaround: always wait until engine completely idle before programming. */
|
||||||
|
// si->engine.control |= (1 << 27);
|
||||||
|
|
||||||
/* setup buffer startadress */
|
/* setup buffer startadress */
|
||||||
//fixme! setup..
|
/* fixme when/if possible:
|
||||||
|
* not possible on all cards or not enough specs known :-/ (tried NM2160)
|
||||||
|
* workaround: place cursor bitmap _after_ screenbuffer instead of vice versa. */
|
||||||
|
|
||||||
/* fixme?: setup clipping */
|
/* setup clipping */
|
||||||
|
/* apparantly not needed. */
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -113,9 +114,10 @@ status_t nm_acc_init()
|
|||||||
status_t nm_acc_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h)
|
status_t nm_acc_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h)
|
||||||
{
|
{
|
||||||
/* make sure the previous command (if any) is completed */
|
/* make sure the previous command (if any) is completed */
|
||||||
nm_acc_wait_idle();
|
// does not work yet:
|
||||||
//does not work yet:
|
|
||||||
// nm_acc_wait_fifo(4);
|
// nm_acc_wait_fifo(4);
|
||||||
|
// so:
|
||||||
|
nm_acc_wait_idle();
|
||||||
|
|
||||||
if ((yd < ys) || ((yd == ys) && (xd < xs)))
|
if ((yd < ys) || ((yd == ys) && (xd < xs)))
|
||||||
{
|
{
|
||||||
@@ -141,129 +143,79 @@ status_t nm_acc_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* screen to screen tranparent blit - not sure what uses this.
|
/* rectangle fill - i.e. workspace and window background color */
|
||||||
* Engine function bitblit, paragraph 4.5.7.2 */
|
/* span fill - i.e. (selected) menuitem background color (Dano) */
|
||||||
|
status_t nm_acc_setup_rectangle(uint32 color)
|
||||||
|
{
|
||||||
|
// does not work yet:
|
||||||
|
// nm_acc_wait_fifo(2);
|
||||||
|
// so:
|
||||||
|
nm_acc_wait_idle();
|
||||||
|
|
||||||
|
/* use ROP GXcopy (b16-19), use XY coord. system (b24-25), do foreground color (b3) */
|
||||||
|
ACCW(BLTCNTL, (si->engine.control | 0x830c0008));
|
||||||
|
/* setup color */
|
||||||
|
ACCW(FGCOLOR, color);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
status_t nm_acc_rectangle(uint32 xs,uint32 xe,uint32 ys,uint32 yl)
|
||||||
|
{
|
||||||
|
/* make sure the previous command (if any) is completed */
|
||||||
|
// does not work yet:
|
||||||
|
// nm_acc_wait_fifo(2);
|
||||||
|
// so:
|
||||||
|
nm_acc_wait_idle();
|
||||||
|
|
||||||
|
/* send command and exexute */
|
||||||
|
ACCW(DSTSTARTOFF, ((ys << 16) | (xs & 0x0000ffff)));
|
||||||
|
ACCW(XYEXT, ((yl << 16) | ((xe - xs) & 0x0000ffff)));
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* rectangle invert - i.e. text cursor and text selection */
|
||||||
|
status_t nm_acc_setup_rect_invert()
|
||||||
|
{
|
||||||
|
/* make sure the previous command (if any) is completed */
|
||||||
|
// does not work yet:
|
||||||
|
// nm_acc_wait_fifo(4);
|
||||||
|
// so:
|
||||||
|
nm_acc_wait_idle();
|
||||||
|
|
||||||
|
/* use ROP GXinvert (b16-19), use XY coord. system (b24-25), do foreground color (b3) */
|
||||||
|
ACCW(BLTCNTL, (si->engine.control | 0x83050008));
|
||||||
|
/* reset color */
|
||||||
|
ACCW(FGCOLOR, 0);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
status_t nm_acc_rectangle_invert(uint32 xs,uint32 xe,uint32 ys,uint32 yl)
|
||||||
|
{
|
||||||
|
/* make sure the previous command (if any) is completed */
|
||||||
|
// does not work yet:
|
||||||
|
// nm_acc_wait_fifo(4);
|
||||||
|
// so:
|
||||||
|
nm_acc_wait_idle();
|
||||||
|
|
||||||
|
/* send command and exexute */
|
||||||
|
ACCW(DSTSTARTOFF, ((ys << 16) | (xs & 0x0000ffff)));
|
||||||
|
ACCW(XYEXT, ((yl << 16) | ((xe - xs) & 0x0000ffff)));
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* screen to screen tranparent blit */
|
||||||
status_t nm_acc_transparent_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h,uint32 colour)
|
status_t nm_acc_transparent_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h,uint32 colour)
|
||||||
{
|
{
|
||||||
|
//fixme: implement.
|
||||||
|
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
/*find where the top,bottom and offset are*/
|
|
||||||
// offset = (si->fbc.bytes_per_row / (depth >> 3));
|
|
||||||
|
|
||||||
// t_end = t_start = xs + (offset*ys) + src_dst;
|
|
||||||
// t_end += w;
|
|
||||||
|
|
||||||
// b_end = b_start = xs + (offset*(ys+h)) + src_dst;
|
|
||||||
// b_end +=w;
|
|
||||||
|
|
||||||
/* sgnzero bit _must_ be '0' before accessing SGN! */
|
|
||||||
// ACCW(DWGCTL,0x00000000);
|
|
||||||
|
|
||||||
/*find which quadrant */
|
|
||||||
switch((yd>ys)|((xd>xs)<<1))
|
|
||||||
{
|
|
||||||
case 0: /*L->R,down*/
|
|
||||||
// ACCW(SGN,0);
|
|
||||||
|
|
||||||
// ACCW(AR3,t_start);
|
|
||||||
// ACCW(AR0,t_end);
|
|
||||||
// ACCW(AR5,offset);
|
|
||||||
|
|
||||||
// ACCW_YDSTLEN(yd,h+1);
|
|
||||||
break;
|
|
||||||
case 1: /*L->R,up*/
|
|
||||||
// ACCW(SGN,4);
|
|
||||||
|
|
||||||
// ACCW(AR3,b_start);
|
|
||||||
// ACCW(AR0,b_end);
|
|
||||||
// ACCW(AR5,-offset);
|
|
||||||
|
|
||||||
// ACCW_YDSTLEN(yd+h,h+1);
|
|
||||||
break;
|
|
||||||
case 2: /*R->L,down*/
|
|
||||||
// ACCW(SGN,1);
|
|
||||||
|
|
||||||
// ACCW(AR3,t_end);
|
|
||||||
// ACCW(AR0,t_start);
|
|
||||||
// ACCW(AR5,offset);
|
|
||||||
|
|
||||||
// ACCW_YDSTLEN(yd,h+1);
|
|
||||||
break;
|
|
||||||
case 3: /*R->L,up*/
|
|
||||||
// ACCW(SGN,5);
|
|
||||||
|
|
||||||
// ACCW(AR3,b_end);
|
|
||||||
// ACCW(AR0,b_start);
|
|
||||||
// ACCW(AR5,-offset);
|
|
||||||
|
|
||||||
// ACCW_YDSTLEN(yd+h,h+1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// ACCW(FXBNDRY,((xd+w)<<16)|xd);
|
|
||||||
|
|
||||||
/*do the blit*/
|
|
||||||
// ACCW(FCOL,colour);
|
|
||||||
// ACCW(BCOL,0xffffffff);
|
|
||||||
// ACCGO(DWGCTL,0x440C4018); // atype RSTR
|
|
||||||
return B_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rectangle fill.
|
/* screen to screen scaled filtered blit - i.e. scale video in memory */
|
||||||
* Engine function rectangle_fill: paragraph 4.5.5.2 */
|
|
||||||
/*colorIndex,fill_rect_params,count*/
|
|
||||||
status_t nm_acc_rectangle(uint32 xs,uint32 xe,uint32 ys,uint32 yl,uint32 col)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
FXBNDRY - left and right coordinates a
|
|
||||||
YDSTLEN - y start and no of lines a
|
|
||||||
(or YDST and LEN)
|
|
||||||
DWGCTL - atype must be RSTR or BLK a
|
|
||||||
FCOL - foreground colour a
|
|
||||||
*/
|
|
||||||
|
|
||||||
// ACCW(FXBNDRY,(xe<<16)|xs); /*set x start and end*/
|
|
||||||
// ACCW_YDSTLEN(ys,yl); /*set y start and length*/
|
|
||||||
// ACCW(FCOL,col); /*set colour*/
|
|
||||||
|
|
||||||
//acc fixme: checkout blockmode constraints for G100+ (mil: nc?): also add blockmode
|
|
||||||
// for other functions, and use fastblt on MIL1/2 if possible...
|
|
||||||
//or is CMAP8 contraint a non-blockmode contraint? (linearisation problem maybe?)
|
|
||||||
if (si->dm.space==B_CMAP8)
|
|
||||||
{
|
|
||||||
// ACCGO(DWGCTL,0x400C7814); // atype RSTR
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// ACCGO(DWGCTL,0x400C7844); // atype BLK
|
|
||||||
}
|
|
||||||
return B_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rectangle invert.
|
|
||||||
* Engine function rectangle_fill: paragraph 4.5.5.2 */
|
|
||||||
/*colorIndex,fill_rect_params,count*/
|
|
||||||
status_t nm_acc_rectangle_invert(uint32 xs,uint32 xe,uint32 ys,uint32 yl,uint32 col)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
FXBNDRY - left and right coordinates a
|
|
||||||
YDSTLEN - y start and no of lines a
|
|
||||||
(or YDST and LEN)
|
|
||||||
DWGCTL - atype must be RSTR or BLK a
|
|
||||||
FCOL - foreground colour a
|
|
||||||
*/
|
|
||||||
|
|
||||||
// ACCW(FXBNDRY,(xe<<16)|xs); /*set x start and end*/
|
|
||||||
// ACCW_YDSTLEN(ys,yl); /*set y start and length*/
|
|
||||||
// ACCW(FCOL,col); /*set colour*/
|
|
||||||
|
|
||||||
/*draw it! top nibble is c is clipping enabled*/
|
|
||||||
// ACCGO(DWGCTL,0x40057814); // atype RSTR
|
|
||||||
|
|
||||||
return B_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* screen to screen scaled filtered blit - i.e. scale video in memory.
|
|
||||||
* Engine function texture mapping for video, paragraphs 4.5.5.5 - 4.5.5.9 */
|
|
||||||
status_t nm_acc_video_blit(uint16 xs,uint16 ys,uint16 ws, uint16 hs,
|
status_t nm_acc_video_blit(uint16 xs,uint16 ys,uint16 ws, uint16 hs,
|
||||||
uint16 xd,uint16 yd,uint16 wd,uint16 hd)
|
uint16 xd,uint16 yd,uint16 wd,uint16 hd)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ status_t nm_general_powerup()
|
|||||||
{
|
{
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.06-2 running.\n"));
|
LOG(1,("POWERUP: Neomagic (open)BeOS Accelerant 0.06-3 running.\n"));
|
||||||
|
|
||||||
/* detect card type and power it up */
|
/* detect card type and power it up */
|
||||||
switch(CFGR(DEVID))
|
switch(CFGR(DEVID))
|
||||||
|
|||||||
@@ -55,9 +55,11 @@ status_t nm_crtc_cursor_hide(void);
|
|||||||
/*acceleration functions*/
|
/*acceleration functions*/
|
||||||
status_t check_acc_capability(uint32 feature);
|
status_t check_acc_capability(uint32 feature);
|
||||||
status_t nm_acc_init(void);
|
status_t nm_acc_init(void);
|
||||||
status_t nm_acc_rectangle(uint32 xs,uint32 xe,uint32 ys,uint32 yl,uint32 col);
|
|
||||||
status_t nm_acc_rectangle_invert(uint32 xs,uint32 xe,uint32 ys,uint32 yl,uint32 col);
|
|
||||||
status_t nm_acc_blit(uint16,uint16,uint16, uint16,uint16,uint16 );
|
status_t nm_acc_blit(uint16,uint16,uint16, uint16,uint16,uint16 );
|
||||||
|
status_t nm_acc_setup_rectangle(uint32 color);
|
||||||
|
status_t nm_acc_rectangle(uint32 xs,uint32 xe,uint32 ys,uint32 yl);
|
||||||
|
status_t nm_acc_setup_rect_invert(void);
|
||||||
|
status_t nm_acc_rectangle_invert(uint32 xs,uint32 xe,uint32 ys,uint32 yl);
|
||||||
status_t nm_acc_transparent_blit(uint16,uint16,uint16, uint16,uint16,uint16, uint32);
|
status_t nm_acc_transparent_blit(uint16,uint16,uint16, uint16,uint16,uint16, uint32);
|
||||||
status_t nm_acc_video_blit(uint16 xs,uint16 ys,uint16 ws, uint16 hs,
|
status_t nm_acc_video_blit(uint16 xs,uint16 ys,uint16 ws, uint16 hs,
|
||||||
uint16 xd,uint16 yd,uint16 wd,uint16 hd);
|
uint16 xd,uint16 yd,uint16 wd,uint16 hd);
|
||||||
|
|||||||
@@ -4,14 +4,14 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p><h2>Changes done for each driverversion:</h2></p>
|
<p><h2>Changes done for each driverversion:</h2></p>
|
||||||
<p><h1>head (0.06-2, Rudolf)</h1></p>
|
<p><h1>head (0.06-3, Rudolf)</h1></p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Updated modelist to include one more suggested mode for 800x600 resolution: Done by Andrew Bachmann;
|
<li>Updated modelist to include one more suggested mode for 800x600 resolution: Done by Andrew Bachmann;
|
||||||
<li>CRTC timing restriction checking updated: Modelists exported adhere to every cards max. CRTC capability now: the oldest cards support upto and including 1024x1000, while the newest cards support upto and including 1280x1024 resolution;
|
<li>CRTC timing restriction checking updated: Modelists exported adhere to every cards max. CRTC capability now: the oldest cards support upto and including 1024x1000, while the newest cards support upto and including 1280x1024 resolution;
|
||||||
<li>Kernel driver now signals abort on not being able to setup the INT routine instead of letting the machine freeze during accelerant initialisation;
|
<li>Kernel driver now signals abort on not being able to setup the INT routine instead of letting the machine freeze during accelerant initialisation;
|
||||||
<li>BWindowScreen R3-style function update for acceleration (once setup) and page flipping/virtualscreens in apps ('Allegro' update): fixed cloning accelerants;
|
<li>BWindowScreen R3-style function update for acceleration (once setup) and page flipping/virtualscreens in apps ('Allegro' update): fixed cloning accelerants;
|
||||||
<li>Updated acceleration engine management code;
|
<li>Updated acceleration engine management code;
|
||||||
<li>Added partial acceleration for NM2097 and NM2160 (screen_to_screen blit).
|
<li>Added full 2D acceleration for NM2097 and NM2160 cards (the others will be added later): use <strong>softcursor</strong> for now!!
|
||||||
</ul>
|
</ul>
|
||||||
<p><h1>nm_driver 0.05 (Rudolf)</h1></p>
|
<p><h1>nm_driver 0.05 (Rudolf)</h1></p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
Reference in New Issue
Block a user