Welcome, Guest. Please login or register.

Author Topic: Warp3d synchro/double-triply bufferging  (Read 18650 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline kas1eTopic starter

Re: Warp3d synchro/double-triply bufferging
« Reply #14 from previous page: September 17, 2007, 06:11:59 AM »
Karlos, latest public version with latest patchs. I tryed it on 3 different setup. (ppc/040-33/bvision , ppc/040-25/bvision and my ppc/060/bvision). In all case result with 24bits are the same.
 

Offline kas1eTopic starter

Re: Warp3d synchro/double-triply bufferging
« Reply #15 on: September 17, 2007, 06:38:41 AM »
Karlos, it's fullscreen mode, i just open 640x480 screen and open 640x480 window on it. For W3D_RequestModeTags: aslsm_minDepth:15, aslsm_maxdepth:32. For openscreen:
SA_Depth: 32. Why is here 32: becouse if i will setup 16, double-buffering just do not works for voodoo3. (but on voodoo3 only 16bit modes can be choiced, stange a bit).
 

Offline kas1eTopic starter

Re: Warp3d synchro/double-triply bufferging
« Reply #16 on: September 17, 2007, 11:17:41 AM »
I was test on one machine a 'wipeout' game. And in window, with 24bit of depth, with W3D_Permedia2_PPC.library 4.2, the same corruptions, look at this:

With 16bit depth of screen:


With 24bit depth of screen:


If change W3D_Permedia2_PPC.ibrary back to the 4.0, all os ok. With 4.2 this kind of corruption. And the same with W3D_Permedia.library.

I think if the same problem can be happened on A1, maybe it's problem with some kind of setup settings ?

ps. also i checked on 2 bvision configs, some ppc demos (from encore) and, if you use 24bit screen, and run these demos in window mode, you can see this kind of corruption while text rendering is happenen! looks like as Karlos pointed, bvision 4.2 driver have buggy handler of textures which depth is lower, then mode which was choice. (expectally problem with 16<->24bit)
 

Offline kas1eTopic starter

Re: Warp3d synchro/double-triply bufferging
« Reply #17 on: October 12, 2007, 09:31:55 PM »
have someone any idea, how works with warp3d in windowed mode ? i mean for example, how do smooth scrolling or fade effect, if there no double-buffering possible ?
 

Offline kas1eTopic starter

Re: Warp3d synchro/double-triply bufferging
« Reply #18 on: January 29, 2009, 10:25:33 PM »
Let's up this pretty old thread about warp3d.
Right now i tryed to write somethink warp3d based for AROS, and there is an interesting point: Aros not have ScrollVPort() or ChangeScreenBuffer() (ie. aros not have system friendly double-buffering, at moment only on at all - dunno). But i still in interest to avoid flikiring here and so on.

So, main idea which i talk about was by Alan (wazp3d author), it's make a 'window double-buffer' (about someone asked in this thread before). Ie, you create a window on screen (public, on your own), and after make a new buffer with copy of bitmap. Like this:

Code: [Select]

    InitRastPort( &bufferrastport );        
    ScreenBits  = GetBitMapAttr( window->WScreen->RastPort.BitMap, BMA_DEPTH );        
    flags = BMF_DISPLAYABLE|BMF_MINPLANES;        
    bufferrastport.BitMap = AllocBitMap(large,high,ScreenBits, flags, window->RPort->BitMap);        
    if(bufferrastport.BitMap==NULL)        
        {printf(&quot;No Bitmap\n&quot;);goto panic;    }        


After create a context, which pointed to copy of our bitmap (i.e. our buffer to which we will draw for first).

Code: [Select]

    context = W3D_CreateContextTags(&Error,        
        W3D_CC_BITMAP,(ULONG)bufferrastport.BitMap,        
        W3D_CC_YOFFSET,0,        
        W3D_CC_DRIVERTYPE,W3D_DRIVER_BEST,        
        W3D_CC_INDIRECT,TRUE,        
        W3D_CC_DOUBLEHEIGHT,FALSE, //DoubleHeightON,        
        W3D_CC_FAST,TRUE,        
    TAG_DONE);        



And next just draw somethink by warp3d, and after it's done, you just copy this bitmap-buffer content to the your window, like by this way:
Code: [Select]

BltBitMapRastPort(bufferrastport.BitMap,0,0,window->RPort,0,0,large,high,0xC0);            

So.. it works, but it's not so fast of course if compire it with screen double-buffering.

Maybe someone have any other idea of how can be done double-buffering by fast way ?