Login
Username:

Password:

Remember me



Lost Password?

Register now!
Sections
Who's Online
53 user(s) are online (46 user(s) are browsing Forums)

Members: 0
Guests: 53

more...
Support us!
Recent OS4 Files
OS4Depot.net
Report message:*
 

Re: SDL1 open issues

Subject: Re: SDL1 open issues
by kas1e on 2019/8/8 18:32:50

@Capehill
Found !

It wasn't compositing at all, and it wasn't even SDL_os4surface.c !

Its SDL_os4utils.c

If you check adtools repo, there was some ifdefs to disable reporting of some masking, i.e. there is how it was (see #if 0 commeting outs with comments about p96 can't usefully works with):

BOOL
os4video_PPFtoPF
(SDL_PixelFormat *vformatuint32 p96Format)
{
    
vformat->Rmask vformat->Gmask vformat->Bmask vformat->Amask 0;
    
vformat->Rshift vformat->Gshift vformat->Bshift vformat->Ashift 0;
    
vformat->Rloss vformat->Gloss vformat->Bloss vformat->Aloss 8;

    switch(
p96Format)
    {
    case 
RGBFB_CLUT:
        
vformat->BitsPerPixel 8;
        
vformat->BytesPerPixel 1;
        break;

    case 
RGBFB_R8G8B8:
        
vformat->BitsPerPixel 24;
        
vformat->BytesPerPixel 3;

        
vformat->Rmask 0x00FF0000;
        
vformat->Rshift 16;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x000000FF;
        
vformat->Bshift 0;
        
vformat->Bloss 0;

        break;

    case 
RGBFB_B8G8R8:
        
vformat->BitsPerPixel 24;
        
vformat->BytesPerPixel 3;

        
vformat->Rmask 0x000000FF;
        
vformat->Rshift 0;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x00FF0000;
        
vformat->Bshift 16;
        
vformat->Bloss 0;
        break;

    case 
RGBFB_R5G6B5PC:
    case 
RGBFB_R5G6B5:
        
// We handle these equivalent and do swapping elsewhere.
        // PC format cannot be expressed by mask/shift alone
        
vformat->BitsPerPixel 16;
        
vformat->BytesPerPixel 2;

        
vformat->Rmask 0x0000F800;
        
vformat->Rshift 11;
        
vformat->Rloss 3;

        
vformat->Gmask 0x000007E0;
        
vformat->Gshift 5;
        
vformat->Gloss 2;

        
vformat->Bmask 0x0000001F;
        
vformat->Bshift 0;
        
vformat->Bloss 3;
        break;

    case 
RGBFB_R5G5B5PC:
    case 
RGBFB_R5G5B5:
        
vformat->BitsPerPixel 15;
        
vformat->BytesPerPixel 2;

        
vformat->Rmask 0x00007C00;
        
vformat->Rshift 10;
        
vformat->Rloss 3;

        
vformat->Gmask 0x000003E0;
        
vformat->Gshift 5;
        
vformat->Gloss 3;

        
vformat->Bmask 0x0000001F;
        
vformat->Bshift 0;
        
vformat->Bloss 3;
        break;

    case 
RGBFB_B5G6R5PC:
    case 
RGBFB_B5G5R5PC:
        return 
FALSE// L8r

    
case RGBFB_A8R8G8B8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

        
vformat->Rmask 0x00FF0000;
        
vformat->Rshift 16;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x000000FF;
        
vformat->Bshift 0;
        
vformat->Bloss 0;

#if 0
/* Don't report alpha mask, since P96 can't usefully support it */

        
vformat->Amask 0xFF000000;
        
vformat->Ashift 24;
        
vformat->Aloss 0;
#endif
        
break;

    case 
RGBFB_A8B8G8R8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

        
vformat->Rmask 0x000000FF;
        
vformat->Rshift 0;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x00FF0000;
        
vformat->Bshift 16;
        
vformat->Bloss 0;
#if 0
/* Don't report alpha mask, since P96 can't usefully support it */

        
vformat->Amask 0xFF000000;
        
vformat->Ashift 24;
        
vformat->Aloss 0;
#endif
        
break;

    case 
RGBFB_R8G8B8A8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

#if 0
/* Don't report alpha mask, since P96 can't usefully support it */

        
vformat->Amask 0x000000FF;
        
vformat->Ashift 0;
        
vformat->Aloss 0;
#endif

        
vformat->Bmask 0x0000FF00;
        
vformat->Bshift 8;
        
vformat->Bloss 0;

        
vformat->Gmask 0x00FF0000;
        
vformat->Gshift 16;
        
vformat->Gloss 0;

        
vformat->Rmask 0xFF000000;
        
vformat->Rshift 24;
        
vformat->Rloss 0;
        break;

    case 
RGBFB_B8G8R8A8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

#if 0
/* Don't report alpha mask, since P96 can't usefully support it */

        
vformat->Amask 0x000000FF;
        
vformat->Ashift 0;
        
vformat->Aloss 0;
#endif

        
vformat->Rmask 0x0000FF00;
        
vformat->Rshift 8;
        
vformat->Rloss 0;

        
vformat->Gmask 0x00FF0000;
        
vformat->Gshift 16;
        
vformat->Gloss 0;

        
vformat->Bmask 0xFF000000;
        
vformat->Bshift 24;
        
vformat->Bloss 0;
        break;

    default:
        return 
FALSE;
    }

    return 
TRUE;
}


So, in commit about adding of compositing, those #if 0 was deleted (probabaly in hope that if we get rid of p96 calls, then there should't be any issues to remove those ifdefs).

Once i put them back, all start to works and bug disappear.

I even download very latest SDL1 code (that one from github, one on which we now with latest sources), and just doing it like this:

BOOL
os4video_PIXFtoPF
(SDL_PixelFormat *vformatPIX_FMT pixf)
{
    
vformat->Rmask vformat->Gmask vformat->Bmask vformat->Amask 0;
    
vformat->Rshift vformat->Gshift vformat->Bshift vformat->Ashift 0;
    
vformat->Rloss vformat->Gloss vformat->Bloss vformat->Aloss 8;

    switch(
pixf)
    {
    case 
PIXF_CLUT:
        
vformat->BitsPerPixel 8;
        
vformat->BytesPerPixel 1;
        break;

    case 
PIXF_R8G8B8:
        
vformat->BitsPerPixel 24;
        
vformat->BytesPerPixel 3;

        
vformat->Rmask 0x00FF0000;
        
vformat->Rshift 16;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x000000FF;
        
vformat->Bshift 0;
        
vformat->Bloss 0;
        break;

    case 
PIXF_B8G8R8:
        
vformat->BitsPerPixel 24;
        
vformat->BytesPerPixel 3;

        
vformat->Rmask 0x000000FF;
        
vformat->Rshift 0;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x00FF0000;
        
vformat->Bshift 16;
        
vformat->Bloss 0;
        break;

    case 
PIXF_R5G6B5PC:
    case 
PIXF_R5G6B5:
        
// We handle these equivalent and do swapping elsewhere.
        // PC format cannot be expressed by mask/shift alone
        
vformat->BitsPerPixel 16;
        
vformat->BytesPerPixel 2;

        
vformat->Rmask 0x0000F800;
        
vformat->Rshift 11;
        
vformat->Rloss 3;

        
vformat->Gmask 0x000007E0;
        
vformat->Gshift 5;
        
vformat->Gloss 2;

        
vformat->Bmask 0x0000001F;
        
vformat->Bshift 0;
        
vformat->Bloss 3;
        break;

    case 
PIXF_R5G5B5PC:
    case 
PIXF_R5G5B5:
        
vformat->BitsPerPixel 15;
        
vformat->BytesPerPixel 2;

        
vformat->Rmask 0x00007C00;
        
vformat->Rshift 10;
        
vformat->Rloss 3;

        
vformat->Gmask 0x000003E0;
        
vformat->Gshift 5;
        
vformat->Gloss 3;

        
vformat->Bmask 0x0000001F;
        
vformat->Bshift 0;
        
vformat->Bloss 3;
        break;

    case 
PIXF_A8R8G8B8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

        
vformat->Rmask 0x00FF0000;
        
vformat->Rshift 16;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x000000FF;
        
vformat->Bshift 0;
        
vformat->Bloss 0;


//        vformat->Amask = 0xFF000000;
//        vformat->Ashift = 24;
//        vformat->Aloss = 0;

        
break;

    case 
PIXF_A8B8G8R8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

        
vformat->Rmask 0x000000FF;
        
vformat->Rshift 0;
        
vformat->Rloss 0;

        
vformat->Gmask 0x0000FF00;
        
vformat->Gshift 8;
        
vformat->Gloss 0;

        
vformat->Bmask 0x00FF0000;
        
vformat->Bshift 16;
        
vformat->Bloss 0;

//        vformat->Amask = 0xFF000000;
//        vformat->Ashift = 24;
//        vformat->Aloss = 0;

        
break;

    case 
PIXF_R8G8B8A8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

//        vformat->Amask = 0x000000FF;
//        vformat->Ashift = 0;
//        vformat->Aloss = 0;

        
vformat->Bmask 0x0000FF00;
        
vformat->Bshift 8;
        
vformat->Bloss 0;

        
vformat->Gmask 0x00FF0000;
        
vformat->Gshift 16;
        
vformat->Gloss 0;

        
vformat->Rmask 0xFF000000;
        
vformat->Rshift 24;
        
vformat->Rloss 0;
        break;

    case 
PIXF_B8G8R8A8:
        
vformat->BitsPerPixel 32;
        
vformat->BytesPerPixel 4;

//        vformat->Amask = 0x000000FF;
//        vformat->Ashift = 0;
//        vformat->Aloss = 0;

        
vformat->Rmask 0x0000FF00;
        
vformat->Rshift 8;
        
vformat->Rloss 0;

        
vformat->Gmask 0x00FF0000;
        
vformat->Gshift 16;
        
vformat->Gloss 0;

        
vformat->Bmask 0xFF000000;
        
vformat->Bshift 24;
        
vformat->Bloss 0;
        break;

    default:
        
dprintf("Unknown pixel format %dn"pixf);
        return 
FALSE;
    }

    return 
TRUE;
}


I.e. comminting the same parts as it was before, and all working too with latest sdl1.

I of course can find out which one exactly cause issues in my case, but probably better will be to understand why there is issues at all, and maybe we should or put those commented outs back, or maybe somewhere inside SDL some code which check those reports made false assumptions.
Powered by XOOPS 2.0 © 2001-2016 The XOOPS Project