src/video/ataricommon/SDL_atarigl.c
author Patrice Mandin <patmandin@gmail.com>
Sun, 08 Jan 2006 17:29:19 +0000
changeset 1239 cbdb2c156aca
parent 1238 1901fea5edac
child 1336 3692456e7b0f
permissions -rw-r--r--
Rollback
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     1
/*
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     3
    Copyright (C) 1997-2004 Sam Lantinga
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     4
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     6
    modify it under the terms of the GNU Library General Public
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     8
    version 2 of the License, or (at your option) any later version.
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
     9
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    13
    Library General Public License for more details.
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    14
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    15
    You should have received a copy of the GNU Library General Public
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    16
    License along with this library; if not, write to the Free
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    18
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    19
    Sam Lantinga
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    20
    slouken@libsdl.org
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    21
*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    22
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    23
/* Atari OSMesa.ldg implementation of SDL OpenGL support */
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    24
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    25
/*--- Includes ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    26
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    27
#include <stdio.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    28
#include <stdlib.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    29
#include <string.h>
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    30
#ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    31
#include <GL/osmesa.h>
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    32
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    33
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    34
#include <mint/osbind.h>
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    35
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    36
#include "SDL_video.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    37
#include "SDL_error.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    38
#include "SDL_endian.h"
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    39
#include "SDL_atarigl_c.h"
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    40
#ifdef ENABLE_OSMESA_SHARED
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    41
#include "SDL_loadso.h"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    42
#endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    43
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    44
/*--- Defines ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    45
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    46
#define PATH_OSMESA_LDG	"osmesa.ldg"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    47
#define PATH_MESAGL_LDG	"mesa_gl.ldg"
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    48
#define PATH_TINYGL_LDG	"tiny_gl.ldg"
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    49
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    50
#define VDI_RGB	0xf
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    51
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    52
/*--- Functions prototypes ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    53
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    54
static void SDL_AtariGL_UnloadLibrary(_THIS);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    55
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    56
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    57
static void CopyShadowNull(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    58
static void CopyShadowDirect(_THIS, SDL_Surface *surface);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    59
static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    60
static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    61
static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    62
static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    63
static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    64
static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    65
static void CopyShadowRGBToRGBA(_THIS, SDL_Surface *surface);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    66
static void CopyShadow8888To555(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    67
static void CopyShadow8888To565(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    68
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    69
static void ConvertNull(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    70
static void Convert565To555be(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    71
static void Convert565To555le(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    72
static void Convert565le(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    73
static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    74
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    75
static int InitNew(_THIS, SDL_Surface *current);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    76
static int InitOld(_THIS, SDL_Surface *current);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
    77
#endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    78
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    79
/*--- Public functions ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    80
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    81
int SDL_AtariGL_Init(_THIS, SDL_Surface *current)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    82
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    83
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    84
	if (gl_oldmesa) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    85
		gl_active = InitOld(this, current);		
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    86
	} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    87
		gl_active = InitNew(this, current);		
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    88
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    89
#endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    90
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    91
	return (gl_active);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    92
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    93
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
    94
void SDL_AtariGL_Quit(_THIS, SDL_bool unload)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    95
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
    96
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    97
	if (gl_oldmesa) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    98
		/* Old mesa implementations */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
    99
		if (this->gl_data->OSMesaDestroyLDG) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   100
			this->gl_data->OSMesaDestroyLDG();
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   101
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   102
		if (gl_shadow) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   103
			Mfree(gl_shadow);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   104
			gl_shadow = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   105
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   106
	} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   107
		/* New mesa implementation */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   108
		if (gl_ctx) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   109
			if (this->gl_data->OSMesaDestroyContext) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   110
				this->gl_data->OSMesaDestroyContext(gl_ctx);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   111
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   112
			gl_ctx = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   113
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   114
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   115
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   116
	if (unload) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   117
		SDL_AtariGL_UnloadLibrary(this);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   118
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   119
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   120
#endif /* HAVE_OPENGL */
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   121
	gl_active = 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   122
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   123
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   124
int SDL_AtariGL_LoadLibrary(_THIS, const char *path)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   125
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   126
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   127
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   128
#ifdef ENABLE_OSMESA_SHARED
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   129
	void *handle;
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   130
	SDL_bool cancel_load;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   131
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   132
	if (gl_active) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   133
		SDL_SetError("OpenGL context already created");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   134
		return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   135
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   136
1239
cbdb2c156aca Rollback
Patrice Mandin <patmandin@gmail.com>
parents: 1238
diff changeset
   137
	/* Unload previous driver */
cbdb2c156aca Rollback
Patrice Mandin <patmandin@gmail.com>
parents: 1238
diff changeset
   138
	SDL_AtariGL_UnloadLibrary(this);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   139
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   140
	/* Load library given by path */
1239
cbdb2c156aca Rollback
Patrice Mandin <patmandin@gmail.com>
parents: 1238
diff changeset
   141
	handle = SDL_LoadObject(path);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   142
	if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   143
		/* Try to load another one */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   144
		path = getenv("SDL_VIDEO_GL_DRIVER");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   145
		if ( path != NULL ) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   146
			handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   147
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   148
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   149
		/* If it does not work, try some other */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   150
		if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   151
			path = PATH_OSMESA_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   152
			handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   153
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   154
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   155
		if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   156
			path = PATH_MESAGL_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   157
			handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   158
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   159
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   160
		if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   161
			path = PATH_TINYGL_LDG;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   162
			handle = SDL_LoadObject(path);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   163
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   164
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   165
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   166
	if (handle == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   167
		SDL_SetError("Could not load OpenGL library");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   168
		return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   169
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   170
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   171
	this->gl_data->glGetIntegerv = SDL_LoadFunction(handle, "glGetIntegerv");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   172
	this->gl_data->glFinish = SDL_LoadFunction(handle, "glFinish");
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   173
	this->gl_data->glFlush = SDL_LoadFunction(handle, "glFlush");
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   174
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   175
	cancel_load = SDL_FALSE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   176
	if (this->gl_data->glGetIntegerv == NULL) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   177
		cancel_load = SDL_TRUE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   178
	} else {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   179
		/* We need either glFinish (OSMesa) or glFlush (TinyGL) */
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   180
		if ((this->gl_data->glFinish == NULL) &&
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   181
			(this->gl_data->glFlush == NULL)) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   182
				cancel_load = SDL_TRUE;
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   183
		}
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   184
	}
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   185
	if (cancel_load) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   186
		SDL_SetError("Could not retrieve OpenGL functions");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   187
		SDL_UnloadObject(handle);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   188
		/* Restore pointers to static library */
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   189
		SDL_AtariGL_InitPointers(this);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   190
		return -1;
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   191
	}
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   192
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   193
	/* Load functions pointers (osmesa.ldg) */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   194
	this->gl_data->OSMesaCreateContextExt = SDL_LoadFunction(handle, "OSMesaCreateContextExt");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   195
	this->gl_data->OSMesaDestroyContext = SDL_LoadFunction(handle, "OSMesaDestroyContext");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   196
	this->gl_data->OSMesaMakeCurrent = SDL_LoadFunction(handle, "OSMesaMakeCurrent");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   197
	this->gl_data->OSMesaPixelStore = SDL_LoadFunction(handle, "OSMesaPixelStore");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   198
	this->gl_data->OSMesaGetProcAddress = SDL_LoadFunction(handle, "OSMesaGetProcAddress");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   199
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   200
	/* Load old functions pointers (mesa_gl.ldg, tiny_gl.ldg) */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   201
	this->gl_data->OSMesaCreateLDG = SDL_LoadFunction(handle, "OSMesaCreateLDG");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   202
	this->gl_data->OSMesaDestroyLDG = SDL_LoadFunction(handle, "OSMesaDestroyLDG");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   203
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   204
	gl_oldmesa = 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   205
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   206
	if ( (this->gl_data->OSMesaCreateContextExt == NULL) || 
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   207
	     (this->gl_data->OSMesaDestroyContext == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   208
	     (this->gl_data->OSMesaMakeCurrent == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   209
	     (this->gl_data->OSMesaPixelStore == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   210
	     (this->gl_data->OSMesaGetProcAddress == NULL)) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   211
		/* Hum, maybe old library ? */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   212
		if ( (this->gl_data->OSMesaCreateLDG == NULL) || 
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   213
		     (this->gl_data->OSMesaDestroyLDG == NULL)) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   214
			SDL_SetError("Could not retrieve OSMesa functions");
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   215
			SDL_UnloadObject(handle);
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   216
			/* Restore pointers to static library */
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   217
			SDL_AtariGL_InitPointers(this);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   218
			return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   219
		} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   220
			gl_oldmesa = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   221
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   222
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   223
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   224
	this->gl_config.dll_handle = handle;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   225
	if ( path ) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   226
		strncpy(this->gl_config.driver_path, path,
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   227
			sizeof(this->gl_config.driver_path)-1);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   228
	} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   229
		strcpy(this->gl_config.driver_path, "");
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   230
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   231
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   232
#endif
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   233
	this->gl_config.driver_loaded = 1;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   234
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   235
	return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   236
#else
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   237
	return -1;
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   238
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   239
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   240
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   241
void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   242
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   243
	void *func = NULL;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   244
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   245
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   246
	if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   247
		func = SDL_LoadFunction(this->gl_config.dll_handle, (void *)proc);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   248
	} else if (this->gl_data->OSMesaGetProcAddress) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   249
		func = this->gl_data->OSMesaGetProcAddress(proc);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   250
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   251
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   252
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   253
	return func;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   254
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   255
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   256
int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int* value)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   257
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   258
#ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   259
	GLenum mesa_attrib;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   260
	SDL_Surface *surface;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   261
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   262
	if (!gl_active) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   263
		return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   264
	}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   265
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   266
	switch(attrib) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   267
		case SDL_GL_RED_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   268
			mesa_attrib = GL_RED_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   269
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   270
		case SDL_GL_GREEN_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   271
			mesa_attrib = GL_GREEN_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   272
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   273
		case SDL_GL_BLUE_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   274
			mesa_attrib = GL_BLUE_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   275
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   276
		case SDL_GL_ALPHA_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   277
			mesa_attrib = GL_ALPHA_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   278
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   279
		case SDL_GL_DOUBLEBUFFER:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   280
			surface = this->screen;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   281
			*value = ((surface->flags & SDL_DOUBLEBUF)==SDL_DOUBLEBUF);
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   282
			return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   283
		case SDL_GL_DEPTH_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   284
			mesa_attrib = GL_DEPTH_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   285
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   286
		case SDL_GL_STENCIL_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   287
			mesa_attrib = GL_STENCIL_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   288
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   289
		case SDL_GL_ACCUM_RED_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   290
			mesa_attrib = GL_ACCUM_RED_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   291
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   292
		case SDL_GL_ACCUM_GREEN_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   293
			mesa_attrib = GL_ACCUM_GREEN_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   294
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   295
		case SDL_GL_ACCUM_BLUE_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   296
			mesa_attrib = GL_ACCUM_BLUE_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   297
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   298
		case SDL_GL_ACCUM_ALPHA_SIZE:
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   299
			mesa_attrib = GL_ACCUM_ALPHA_BITS;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   300
			break;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   301
		default :
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   302
			return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   303
	}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   304
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   305
	this->gl_data->glGetIntegerv(mesa_attrib, value);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   306
	return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   307
#else
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   308
	return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   309
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   310
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   311
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   312
int SDL_AtariGL_MakeCurrent(_THIS)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   313
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   314
#ifdef HAVE_OPENGL
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   315
	SDL_Surface *surface;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   316
	GLenum type;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   317
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   318
	if (gl_oldmesa && gl_active) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   319
		return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   320
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   321
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   322
	if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   323
		if ((this->gl_data->OSMesaMakeCurrent == NULL) ||
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   324
			(this->gl_data->OSMesaPixelStore == NULL)) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   325
			return -1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   326
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   327
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   328
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   329
	if (!gl_active) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   330
		SDL_SetError("Invalid OpenGL context");
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   331
		return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   332
	}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   333
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   334
	surface = this->screen;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   335
	
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   336
	if ((surface->format->BitsPerPixel == 15) || (surface->format->BitsPerPixel == 16)) {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   337
		type = GL_UNSIGNED_SHORT_5_6_5;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   338
	} else {
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   339
		type = GL_UNSIGNED_BYTE;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   340
	}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   341
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   342
	if (!(this->gl_data->OSMesaMakeCurrent(gl_ctx, surface->pixels, type, surface->w, surface->h))) {
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   343
		SDL_SetError("Can not make OpenGL context current");
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   344
		return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   345
	}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   346
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   347
	/* OSMesa draws upside down */
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   348
	this->gl_data->OSMesaPixelStore(OSMESA_Y_UP, 0);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   349
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   350
	return 0;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   351
#else
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   352
	return -1;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   353
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   354
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   355
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   356
void SDL_AtariGL_SwapBuffers(_THIS)
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   357
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   358
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   359
	if (gl_active) {
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   360
		if (this->gl_config.dll_handle) {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   361
			if (this->gl_data->glFinish) {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   362
				this->gl_data->glFinish();
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   363
			} else if (this->gl_data->glFlush) {
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   364
				this->gl_data->glFlush();
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   365
			}
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   366
		} else {
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   367
			this->gl_data->glFinish();
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   368
		}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   369
		gl_copyshadow(this, this->screen);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   370
		gl_convert(this, this->screen);
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   371
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   372
#endif
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   373
}
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   374
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   375
void SDL_AtariGL_InitPointers(_THIS)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   376
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   377
#if defined(HAVE_OPENGL)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   378
	this->gl_data->OSMesaCreateContextExt = OSMesaCreateContextExt;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   379
	this->gl_data->OSMesaDestroyContext = OSMesaDestroyContext;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   380
	this->gl_data->OSMesaMakeCurrent = OSMesaMakeCurrent;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   381
	this->gl_data->OSMesaPixelStore = OSMesaPixelStore;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   382
	this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   383
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   384
	this->gl_data->glGetIntegerv = glGetIntegerv;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   385
	this->gl_data->glFinish = glFinish;
995
22fc5f45bbb7 TinyGL does not have glFinish, only glFlush
Patrice Mandin <patmandin@gmail.com>
parents: 993
diff changeset
   386
	this->gl_data->glFlush = glFlush;
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   387
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   388
	this->gl_data->OSMesaCreateLDG = NULL;
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   389
	this->gl_data->OSMesaDestroyLDG = NULL;
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   390
#endif
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   391
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   392
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   393
/*--- Private functions ---*/
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   394
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   395
static void SDL_AtariGL_UnloadLibrary(_THIS)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   396
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   397
#if defined(HAVE_OPENGL)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   398
	if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   399
		SDL_UnloadObject(this->gl_config.dll_handle);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   400
		this->gl_config.dll_handle = NULL;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   401
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   402
		/* Restore pointers to static library */
993
2662da16d668 Forgot to flush OpenGL buffer using glFinish
Patrice Mandin <patmandin@gmail.com>
parents: 992
diff changeset
   403
		SDL_AtariGL_InitPointers(this);
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   404
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   405
#endif
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   406
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   407
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   408
/*--- Creation of an OpenGL context using new/old functions ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   409
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   410
#ifdef HAVE_OPENGL
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   411
static int InitNew(_THIS, SDL_Surface *current)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   412
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   413
	GLenum osmesa_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   414
	SDL_PixelFormat *pixel_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   415
	Uint32	redmask;
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   416
	int recreatecontext;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   417
	GLint newaccumsize;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   418
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   419
	if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   420
		if (this->gl_data->OSMesaCreateContextExt == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   421
			return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   422
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   423
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   424
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   425
	/* Init OpenGL context using OSMesa */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   426
	gl_convert = ConvertNull;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   427
	gl_copyshadow = CopyShadowNull;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   428
	gl_upsidedown = SDL_FALSE;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   429
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   430
	pixel_format = current->format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   431
	redmask = pixel_format->Rmask;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   432
	switch (pixel_format->BitsPerPixel) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   433
		case 15:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   434
			/* 1555, big and little endian, unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   435
			gl_pixelsize = 2;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   436
			osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   437
			if (redmask == 31<<10) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   438
				gl_convert = Convert565To555be;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   439
			} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   440
				gl_convert = Convert565To555le;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   441
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   442
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   443
		case 16:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   444
			gl_pixelsize = 2;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   445
			if (redmask == 31<<11) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   446
				osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   447
			} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   448
				/* 565, little endian, unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   449
				osmesa_format = OSMESA_RGB_565;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   450
				gl_convert = Convert565le;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   451
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   452
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   453
		case 24:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   454
			gl_pixelsize = 3;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   455
			if (redmask == 255<<16) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   456
				osmesa_format = OSMESA_RGB;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   457
			} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   458
				osmesa_format = OSMESA_BGR;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   459
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   460
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   461
		case 32:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   462
			gl_pixelsize = 4;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   463
			if (redmask == 255<<16) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   464
				osmesa_format = OSMESA_ARGB;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   465
			} else if (redmask == 255<<8) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   466
				osmesa_format = OSMESA_BGRA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   467
			} else if (redmask == 255<<24) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   468
				osmesa_format = OSMESA_RGBA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   469
			} else {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   470
				/* ABGR format unsupported */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   471
				osmesa_format = OSMESA_BGRA;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   472
				gl_convert = ConvertBGRAToABGR;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   473
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   474
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   475
		default:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   476
			gl_pixelsize = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   477
			osmesa_format = OSMESA_COLOR_INDEX;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   478
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   479
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   480
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   481
	/* Try to keep current context if possible */
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   482
	newaccumsize =
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   483
		this->gl_config.accum_red_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   484
		this->gl_config.accum_green_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   485
		this->gl_config.accum_blue_size +
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   486
		this->gl_config.accum_alpha_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   487
	recreatecontext=1;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   488
	if (gl_ctx &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   489
		(gl_curformat == osmesa_format) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   490
		(gl_curdepth == this->gl_config.depth_size) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   491
		(gl_curstencil == this->gl_config.stencil_size) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   492
		(gl_curaccum == newaccumsize)) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   493
		recreatecontext = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   494
	}
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   495
	if (recreatecontext) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   496
		SDL_AtariGL_Quit(this, SDL_FALSE);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   497
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   498
		gl_ctx = this->gl_data->OSMesaCreateContextExt(
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   499
			osmesa_format, this->gl_config.depth_size,
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   500
			this->gl_config.stencil_size, newaccumsize, NULL );
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   501
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   502
		if (gl_ctx) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   503
			gl_curformat = osmesa_format;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   504
			gl_curdepth = this->gl_config.depth_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   505
			gl_curstencil = this->gl_config.stencil_size;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   506
			gl_curaccum = newaccumsize;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   507
		} else {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   508
			gl_curformat = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   509
			gl_curdepth = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   510
			gl_curstencil = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   511
			gl_curaccum = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   512
		}
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   513
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   514
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   515
	return (gl_ctx != NULL);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   516
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   517
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   518
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   519
static int InitOld(_THIS, SDL_Surface *current)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   520
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   521
	GLenum osmesa_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   522
	SDL_PixelFormat *pixel_format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   523
	Uint32	redmask;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   524
	int recreatecontext, tinygl_present;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   525
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   526
	if (this->gl_config.dll_handle) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   527
		if (this->gl_data->OSMesaCreateLDG == NULL) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   528
			return 0;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   529
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   530
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   531
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   532
	/* TinyGL only supports VDI_RGB (OSMESA_RGB) */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   533
	tinygl_present=0;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   534
	if (this->gl_config.dll_handle) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   535
		if (this->gl_data->glFinish == NULL) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   536
			tinygl_present=1;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   537
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   538
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   539
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   540
	/* Init OpenGL context using OSMesa */
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   541
	gl_convert = ConvertNull;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   542
	gl_copyshadow = CopyShadowNull;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   543
	gl_upsidedown = SDL_FALSE;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   544
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   545
	pixel_format = current->format;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   546
	redmask = pixel_format->Rmask;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   547
	switch (pixel_format->BitsPerPixel) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   548
		case 15:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   549
			/* 15 bits unsupported */
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   550
			if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   551
				gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   552
				osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   553
				if (redmask == 31<<10) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   554
					gl_copyshadow = CopyShadowRGBTo555;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   555
				} else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   556
					gl_copyshadow = CopyShadowRGBTo565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   557
					gl_convert = Convert565To555le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   558
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   559
			} else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   560
				gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   561
				gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   562
				osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   563
				if (redmask == 31<<10) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   564
					gl_copyshadow = CopyShadow8888To555;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   565
				} else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   566
					gl_copyshadow = CopyShadow8888To565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   567
					gl_convert = Convert565To555le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   568
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   569
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   570
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   571
		case 16:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   572
			/* 16 bits unsupported */
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   573
			if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   574
				gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   575
				osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   576
				gl_copyshadow = CopyShadowRGBTo565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   577
				if (redmask != 31<<11) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   578
					/* 565, little endian, unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   579
					gl_convert = Convert565le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   580
				}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   581
			} else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   582
				gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   583
				gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   584
				osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   585
				gl_copyshadow = CopyShadow8888To565;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   586
				if (redmask != 31<<11) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   587
					/* 565, little endian, unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   588
					gl_convert = Convert565le;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   589
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   590
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   591
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   592
		case 24:
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   593
			gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   594
			if (tinygl_present) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   595
				osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   596
				gl_copyshadow = CopyShadowDirect;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   597
				if (redmask != 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   598
					gl_copyshadow = CopyShadowRGBSwap;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   599
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   600
			} else {
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   601
				gl_copyshadow = CopyShadowDirect;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   602
				gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   603
				if (redmask == 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   604
					osmesa_format = OSMESA_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   605
				} else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   606
					osmesa_format = OSMESA_BGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   607
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   608
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   609
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   610
		case 32:
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   611
			if (tinygl_present) {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   612
				gl_pixelsize = 3;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   613
				osmesa_format = VDI_RGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   614
				gl_copyshadow = CopyShadowRGBToARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   615
				if (redmask == 255) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   616
					gl_convert = CopyShadowRGBToABGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   617
				} else if (redmask == 255<<8) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   618
					gl_convert = CopyShadowRGBToBGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   619
				} else if (redmask == 255<<24) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   620
					gl_convert = CopyShadowRGBToRGBA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   621
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   622
			} else {
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   623
				gl_pixelsize = 4;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   624
				gl_upsidedown = SDL_TRUE;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   625
				gl_copyshadow = CopyShadowDirect;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   626
				if (redmask == 255<<16) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   627
					osmesa_format = OSMESA_ARGB;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   628
				} else if (redmask == 255<<8) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   629
					osmesa_format = OSMESA_BGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   630
				} else if (redmask == 255<<24) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   631
					osmesa_format = OSMESA_RGBA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   632
				} else {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   633
					/* ABGR format unsupported */
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   634
					osmesa_format = OSMESA_BGRA;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   635
					gl_convert = ConvertBGRAToABGR;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   636
				}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   637
			}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   638
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   639
		default:
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   640
			if (tinygl_present) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   641
				SDL_AtariGL_Quit(this, SDL_FALSE);
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   642
				return 0;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   643
			}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   644
			gl_pixelsize = 1;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   645
			gl_copyshadow = CopyShadowDirect;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   646
			osmesa_format = OSMESA_COLOR_INDEX;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   647
			break;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   648
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   649
992
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   650
	/* Try to keep current context if possible */
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   651
	recreatecontext=1;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   652
	if (gl_shadow &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   653
		(gl_curformat == osmesa_format) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   654
		(gl_curwidth == current->w) &&
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   655
		(gl_curheight == current->h)) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   656
		recreatecontext = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   657
	}
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   658
	if (recreatecontext) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   659
		SDL_AtariGL_Quit(this, SDL_FALSE);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   660
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   661
		gl_shadow = this->gl_data->OSMesaCreateLDG(
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   662
			osmesa_format, GL_UNSIGNED_BYTE, current->w, current->h
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   663
		);
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   664
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   665
		if (gl_shadow) {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   666
			gl_curformat = osmesa_format;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   667
			gl_curwidth = current->w;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   668
			gl_curheight = current->h;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   669
		} else {
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   670
			gl_curformat = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   671
			gl_curwidth = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   672
			gl_curheight = 0;
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   673
		}
0324ce32b2d9 Keep current OpenGL context when possible
Patrice Mandin <patmandin@gmail.com>
parents: 991
diff changeset
   674
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   675
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   676
	return (gl_shadow != NULL);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   677
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   678
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   679
/*--- Conversions routines from shadow buffer to the screen ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   680
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   681
static void CopyShadowNull(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   682
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   683
}
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
   684
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   685
static void CopyShadowDirect(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   686
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   687
	int y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   688
	Uint8 *srcline, *dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   689
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   690
	srcline = gl_shadow;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   691
	srcpitch = surface->w * gl_pixelsize;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   692
	dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   693
	dstpitch = surface->pitch;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   694
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   695
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   696
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   697
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   698
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   699
	for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   700
		memcpy(dstline, srcline, srcpitch);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   701
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   702
		srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   703
		dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   704
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   705
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   706
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   707
static void CopyShadowRGBTo555(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   708
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   709
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   710
	Uint16 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   711
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   712
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   713
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   714
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   715
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   716
	dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   717
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   718
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   719
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   720
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   721
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   722
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   723
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   724
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   725
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   726
			Uint16 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   727
			
1003
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
   728
			dstcolor = ((*srccol++)<<7) & (31<<10);
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
   729
			dstcolor |= ((*srccol++)<<2) & (31<<5);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   730
			dstcolor |= ((*srccol++)>>3) & 31;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   731
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   732
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   733
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   734
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   735
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   736
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   737
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   738
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   739
static void CopyShadowRGBTo565(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   740
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   741
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   742
	Uint16 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   743
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   744
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   745
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   746
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   747
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   748
	dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   749
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   750
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   751
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   752
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   753
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   754
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   755
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   756
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   757
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   758
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   759
			Uint16 dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   760
			
1003
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
   761
			dstcolor = ((*srccol++)<<8) & (31<<11);
ece5ab8acd1c Wrong RGB24 to RGB16 conversion
Patrice Mandin <patmandin@gmail.com>
parents: 1002
diff changeset
   762
			dstcolor |= ((*srccol++)<<3) & (63<<5);
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   763
			dstcolor |= ((*srccol++)>>3) & 31;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   764
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   765
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   766
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   767
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   768
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   769
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   770
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   771
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   772
static void CopyShadowRGBSwap(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   773
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   774
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   775
	Uint8 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   776
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   777
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   778
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   779
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   780
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   781
	dstpitch = surface->pitch;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   782
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   783
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   784
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   785
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   786
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   787
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   788
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   789
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   790
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   791
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   792
			*dstcol++ = srccol[2];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   793
			*dstcol++ = srccol[1];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   794
			*dstcol++ = srccol[0];
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   795
			srccol += 3;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   796
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   797
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   798
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   799
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   800
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   801
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   802
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   803
static void CopyShadowRGBToARGB(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   804
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   805
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   806
	Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   807
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   808
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   809
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   810
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   811
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   812
	dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   813
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   814
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   815
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   816
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   817
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   818
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   819
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   820
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   821
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   822
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   823
			Uint32	dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   824
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   825
			dstcolor = (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   826
			dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   827
			dstcolor |= *srccol++;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   828
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   829
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   830
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   831
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   832
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   833
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   834
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   835
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   836
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   837
static void CopyShadowRGBToABGR(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   838
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   839
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   840
	Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   841
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   842
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   843
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   844
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   845
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   846
	dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   847
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   848
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   849
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   850
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   851
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   852
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   853
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   854
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   855
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   856
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   857
			Uint32	dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   858
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   859
			dstcolor = *srccol++;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   860
			dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   861
			dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   862
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   863
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   864
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   865
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   866
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   867
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   868
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   869
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   870
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   871
static void CopyShadowRGBToBGRA(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   872
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   873
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   874
	Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   875
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   876
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   877
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   878
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   879
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   880
	dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   881
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   882
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   883
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   884
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   885
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   886
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   887
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   888
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   889
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   890
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   891
			Uint32	dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   892
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   893
			dstcolor = (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   894
			dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   895
			dstcolor |= (*srccol++)<<24;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   896
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   897
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   898
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   899
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   900
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   901
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   902
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   903
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   904
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   905
static void CopyShadowRGBToRGBA(_THIS, SDL_Surface *surface)
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   906
{
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   907
	int x,y, srcpitch, dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   908
	Uint32 *dstline, *dstcol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   909
	Uint8 *srcline, *srccol;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   910
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   911
	srcline = (Uint8 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   912
	srcpitch = surface->w * gl_pixelsize;
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   913
	dstline = surface->pixels;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   914
	dstpitch = surface->pitch >>2;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   915
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   916
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   917
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   918
	}
1000
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   919
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   920
	for (y=0; y<surface->h; y++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   921
		srccol = srcline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   922
		dstcol = dstline;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   923
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   924
		for (x=0; x<surface->w; x++) {
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   925
			Uint32	dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   926
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   927
			dstcolor = (*srccol++)<<24;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   928
			dstcolor |= (*srccol++)<<16;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   929
			dstcolor |= (*srccol++)<<8;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   930
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   931
			*dstcol++ = dstcolor;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   932
		}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   933
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   934
		srcline += srcpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   935
		dstline += dstpitch;
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   936
	}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   937
}
fbeac9312843 TinyGL only support RGB24 color buffer
Patrice Mandin <patmandin@gmail.com>
parents: 995
diff changeset
   938
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   939
static void CopyShadow8888To555(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   940
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   941
	int x,y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   942
	Uint16 *dstline, *dstcol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   943
	Uint32 *srcline, *srccol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   944
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   945
	srcline = (Uint32 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   946
	srcpitch = (surface->w * gl_pixelsize) >>2;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   947
	dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   948
	dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   949
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   950
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   951
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   952
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   953
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   954
	for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   955
		srccol = srcline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   956
		dstcol = dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   957
		for (x=0; x<surface->w; x++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   958
			Uint32 srccolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   959
			Uint16 dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   960
			
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   961
			srccolor = *srccol++;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   962
			dstcolor = (srccolor>>9) & (31<<10);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   963
			dstcolor |= (srccolor>>6) & (31<<5);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   964
			dstcolor |= (srccolor>>3) & 31;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   965
			*dstcol++ = dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   966
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   967
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   968
		srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   969
		dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   970
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   971
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   972
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   973
static void CopyShadow8888To565(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   974
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   975
	int x,y, srcpitch, dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   976
	Uint16 *dstline, *dstcol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   977
	Uint32 *srcline, *srccol;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   978
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   979
	srcline = (Uint32 *)gl_shadow;
1002
13aa96c76e86 Wrong pixel size for source buffer for old drivers
Patrice Mandin <patmandin@gmail.com>
parents: 1000
diff changeset
   980
	srcpitch = (surface->w * gl_pixelsize) >> 2;
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   981
	dstline = surface->pixels;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   982
	dstpitch = surface->pitch >>1;
1005
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   983
	if (gl_upsidedown) {
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   984
		srcline += (surface->h-1)*srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   985
		srcpitch = -srcpitch;
2ab1cb02a44e Some Atari OpenGL implementations draw upside down
Patrice Mandin <patmandin@gmail.com>
parents: 1003
diff changeset
   986
	}
991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   987
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   988
	for (y=0; y<surface->h; y++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   989
		srccol = srcline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   990
		dstcol = dstline;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   991
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   992
		for (x=0; x<surface->w; x++) {
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   993
			Uint32 srccolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   994
			Uint16 dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   995
			
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   996
			srccolor = *srccol++;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   997
			dstcolor = (srccolor>>8) & (31<<11);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   998
			dstcolor |= (srccolor>>5) & (63<<5);
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
   999
			dstcolor |= (srccolor>>3) & 31;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1000
			*dstcol++ = dstcolor;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1001
		}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1002
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1003
		srcline += srcpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1004
		dstline += dstpitch;
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1005
	}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1006
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1007
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1008
/*--- Conversions routines in the screen ---*/
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1009
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1010
static void ConvertNull(_THIS, SDL_Surface *surface)
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1011
{
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1012
}
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1013
12b13601a544 Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
Patrice Mandin <patmandin@gmail.com>
parents: 989
diff changeset
  1014
static void Convert565To555be(_THIS, SDL_Surface *surface)
989
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1015
{
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1016
	int x,y, pitch;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1017
	unsigned short *line, *pixel;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1018
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1019
	line = surface->pixels;
475166d13b44 Factorize OSMesa OpenGL code for Atari drivers
Patrice Mandin <patmandin@gmail.com>
parents:
diff changeset
  1020
	pitch = surface->pitch >> 1;