diff options
| -rw-r--r-- | src/glut/ggi/ggiglut.c | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/ggi/default/stubs.c | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/ggi/display/fbdev_visual.c | 8 | ||||
| -rw-r--r-- | src/mesa/drivers/ggi/ggimesa.c | 82 | ||||
| -rw-r--r-- | src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h | 7 | 
5 files changed, 32 insertions, 69 deletions
diff --git a/src/glut/ggi/ggiglut.c b/src/glut/ggi/ggiglut.c index 31658c79ff..8a37b33065 100644 --- a/src/glut/ggi/ggiglut.c +++ b/src/glut/ggi/ggiglut.c @@ -234,6 +234,7 @@ int glutCreateWindow(const char *title)  	rgb = !(__glut_mode & GLUT_INDEX);  	frames = (__glut_mode & GLUT_DOUBLE) ? 2 : 1; +	  	gt = (rgb) ? __glut_gt_rgb : __glut_gt_index;  	__glut_ctx = GGIMesaCreateContext(); @@ -263,6 +264,7 @@ int glutCreateWindow(const char *title)  	if (GGIMesaSetVisual(__glut_ctx, __glut_vis, rgb, frames > 1) < 0)   	{ +		glut_ggiDEBUG("AAA\n");  		ggiPanic("GGIMesaSetVisual failed!\n");  	} diff --git a/src/mesa/drivers/ggi/default/stubs.c b/src/mesa/drivers/ggi/default/stubs.c index 52f55d409d..aa3e6c98b8 100644 --- a/src/mesa/drivers/ggi/default/stubs.c +++ b/src/mesa/drivers/ggi/default/stubs.c @@ -340,7 +340,7 @@ void GGItriangle_flat(GLcontext *ctx,GLuint v0,GLuint v1,GLuint v2,GLuint pv)  void GGItriangle_flat_depth(GLcontext *ctx,GLuint v0,GLuint v1, -			GLuint v2,GLuint pv) +			    GLuint v2,GLuint pv)  {  #define INTERP_Z 1 diff --git a/src/mesa/drivers/ggi/display/fbdev_visual.c b/src/mesa/drivers/ggi/display/fbdev_visual.c index 13ac848e7c..3723dc6a45 100644 --- a/src/mesa/drivers/ggi/display/fbdev_visual.c +++ b/src/mesa/drivers/ggi/display/fbdev_visual.c @@ -1,4 +1,4 @@ -/* $Id: fbdev_visual.c,v 1.3 1999/08/22 08:56:50 jtaylor Exp $ +/* $Id: fbdev_visual.c,v 1.4 1999/08/24 02:03:34 jtaylor Exp $  ******************************************************************************     display-fbdev-mesa: visual handling @@ -74,7 +74,6 @@ char *conffile = confstub;  static int changed(ggi_visual_t vis, int whatchanged)  { -	gl_ggiDEBUG("Entered ggimesa_fbdev_changed\n");  	switch (whatchanged)  	{  		case GGI_CHG_APILIST: @@ -88,7 +87,6 @@ static int changed(ggi_visual_t vis, int whatchanged)  			for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++)  			{  				strcat(api, "-mesa"); -				gl_ggiDEBUG("ggimesa_fbdev_changed: api=%s, i=%d\n", api, i);  				fname = ggMatchConfig(_configHandle, api, NULL);  				if (fname == NULL)  				{ @@ -101,7 +99,6 @@ static int changed(ggi_visual_t vis, int whatchanged)  		}  		break;  	} -	gl_ggiDEBUG("Leaving ggimesa_fbdev_changed\n");  	return 0;  } @@ -112,8 +109,6 @@ int GGIdlinit(ggi_visual *vis, const char *args, void *argptr)  	int id, err;  	ggifunc_getapi *oldgetapi; -	gl_ggiDEBUG("display-fbdev-mesa: GGIdlinit start\n"); -	  	GGIMESA_PRIVATE(vis) = priv = malloc(sizeof(struct fbdev_priv_mesa));  	if (priv == NULL) {  		fprintf(stderr, "Failed to allocate fbdev private data\n"); @@ -143,7 +138,6 @@ int GGIdlinit(ggi_visual *vis, const char *args, void *argptr)  		vis->opdisplay->getapi = oldgetapi;  	} -	gl_ggiDEBUG("display-fbdev-mesa: GGIdlinit done\n");  	return 0;  } diff --git a/src/mesa/drivers/ggi/ggimesa.c b/src/mesa/drivers/ggi/ggimesa.c index c7692b4a84..5c5fd30172 100644 --- a/src/mesa/drivers/ggi/ggimesa.c +++ b/src/mesa/drivers/ggi/ggimesa.c @@ -145,24 +145,11 @@ static GLbitfield gl_ggiClear(GLcontext *ctx,GLbitfield mask, GLboolean all,  static GLboolean gl_ggiSetBuffer(GLcontext *ctx, GLenum mode)  { -	int y; -/* -	if (mode == GL_FRONT)  -		gl_ggiPrint("GL_FRONT\n");  -	else  -		gl_ggiPrint("GL_BACK\n"); -*/  	if (mode == GL_FRONT) -	{ -		 y = (GGICTX->origin.y) ? 0 : GGICTX->height; -	} -	else	 -	{ -		 y = GGICTX->origin.y; -	} - -	GGICTX->flip_y = y + GGICTX->height - 1;  - +	  GGICTX->active_buffer = 1; +	else +	  GGICTX->active_buffer = 0; +	  	return GL_TRUE;  } @@ -202,20 +189,7 @@ static int gl_ggiInitInfo(GGIMesaContext ctx, struct ggi_mesa_info *info)  	ggi_mode mode;  	ggiGetMode(ctx->ggi_vis, &mode); - -	if (info->db_flag) -	{ -		virty = mode.virt.y; -		visy = mode.visible.y; - -		if (virty < 2 * visy) -		{ -			gl_ggiPrint(" visible y %i, virtual y %i\n",visy,virty); -			gl_ggiPrint("ggiInitInfo: no doublebuffer possible!\n"); -			return -1; -		} -	} - +	  	info->depth_bits = DEPTH_BITS;  	info->stencil_bits = STENCIL_BITS;  	info->accum_bits = ACCUM_BITS; @@ -251,7 +225,6 @@ GGIMesaContext GGIMesaCreateContext(void)  	s = getenv("GGIMESA_DEBUG");  	gl_ggi_debug = (s && atoi(s)); -	gl_ggiDEBUG("GGIMesaCreateContext:\n");  	if (ggiMesaInit() < 0) 		/* register extensions*/  	{ @@ -273,7 +246,6 @@ GGIMesaContext GGIMesaCreateContext(void)  	if (!ctx->gl_ctx)   	  return NULL; -	gl_ggiDEBUG("GGIMesaCreateContext: done.\n");  	return ctx;  } @@ -285,7 +257,7 @@ void GGIMesaDestroyContext(GGIMesaContext ctx)  		gl_destroy_context(ctx->gl_ctx);  		gl_destroy_framebuffer(ctx->gl_buffer);  		if (ctx == GGIMesa)  -			GGIMesa = NULL; +		  GGIMesa = NULL;  		if (ctx->ggi_vis)   		  ggiExtensionDetach(ctx->ggi_vis, ggiMesaID);  		ggiExtensionUnregister(ggiMesaID); @@ -305,8 +277,6 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  	ggi_mode mode;  	int num_buf; -	gl_ggiDEBUG("GGIMesaSetVisual:\n"); -  	if (!ctx) return -1;  	if (!vis) return -1; @@ -325,7 +295,7 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  	  gl_destroy_visual(ctx->gl_vis);  	if (ctx->gl_buffer) -	  gl_destroy_framebuffer(ctx->gl_buffer);	 +	  gl_destroy_framebuffer(ctx->gl_buffer);  	info.rgb_flag = rgb_flag;  	info.db_flag = db_flag; @@ -338,7 +308,7 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  	func = (void *)LIBGGI_MESAEXT(ctx->ggi_vis)->setup_driver; -	if (!func)  +	if (!func)  	{  		gl_ggiPrint("setup_driver==NULL !\n");  		gl_ggiPrint("Please check your config files!\n"); @@ -369,7 +339,7 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  	if (!ctx->gl_buffer)   	{ -		gl_ggiPrint("Can't create gl_buffer!!!\n"); +		gl_ggiPrint("Can't create gl_buffer!\n");  		return -1;  	} @@ -378,31 +348,33 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  	ctx->height = mode.visible.y;  	ctx->stride = mode.virt.x;  	ctx->origin.x = 0; -	ctx->origin.y = (info.db_flag) ? ctx->height : 0;  +	ctx->origin.y = 0;  	ctx->flip_y = ctx->origin.y + ctx->height - 1;   	ctx->color = 0; -	ctx->lfb = NULL; +	ctx->lfb[0] = ctx->lfb[1] = NULL;  	num_buf = ggiDBGetNumBuffers(ctx->ggi_vis); - +	  	for (i = 0; i < num_buf; i++)  	{  		if (ggiDBGetBuffer(ctx->ggi_vis,i)->layout == blPixelLinearBuffer)  		{  			ctx->stride = ggiDBGetBuffer(ctx->ggi_vis, i)->buffer.plb.stride /  			(ggiDBGetBuffer(ctx->ggi_vis, i)->buffer.plb.pixelformat->size / 8); -			ctx->lfb = ggiDBGetBuffer(ctx->ggi_vis, i)->write; +			ctx->lfb[0] = ggiDBGetBuffer(ctx->ggi_vis, i)->write;  		} -		  	} -	if (ctx->lfb == NULL) +	if (ctx->lfb[0] == NULL)  	{  		gl_ggiPrint("No linear frame buffer!\n");  		return -1;  	} - +	 +	/* FIXME: Use separate buffers */ +	ctx->lfb[1] = ctx->lfb[0]; +	  	ctx->gl_ctx->Visual = ctx->gl_vis;  	ctx->gl_ctx->Pixel.ReadBuffer =   	ctx->gl_ctx->Color.DrawBuffer = (db_flag) ? GL_BACK : GL_FRONT; @@ -423,7 +395,6 @@ int GGIMesaSetVisual(GGIMesaContext ctx, ggi_visual_t vis,  		ggiSetPalette(ctx->ggi_vis, 0, 256, pal);	  	} -	gl_ggiDEBUG("GGIMesaSetVisual: done.\n");  	return 0;  } @@ -453,16 +424,13 @@ GGIMesaContext GGIMesaGetCurrentContext(void)   */  void GGIMesaSwapBuffers(void)  { -	if (GGIMesa->gl_vis->DBflag)  +	FLUSH_VB(GGIMesa->gl_ctx, "swap buffers"); +	if (GGIMesa->gl_vis->DBflag)  	{ -		ggiSetOrigin(VIS, GGIMesa->origin.x, GGIMesa->origin.y); - -		if (GGIMesa->origin.y)  -		  GGIMesa->origin.y = 0; -		else  -		  GGIMesa->origin.y = GGIMesa->height; -		 -		GGIMesa->flip_y = GGIMesa->origin.y + GGIMesa->height - 1;   +		void *buftemp; +		buftemp = GGIMesa->lfb[0]; +		GGIMesa->lfb[0] = GGIMesa->lfb[1]; +		GGIMesa->lfb[1] = buftemp;  	}  } @@ -483,7 +451,6 @@ static void gl_ggiUpdateState(GLcontext *ctx)  static int changed(ggi_visual_t vis, int whatchanged)  { -	gl_ggiDEBUG("Entered ggimesa_changed()\n");  	switch (whatchanged)  	{  		case GGI_CHG_APILIST: @@ -497,7 +464,6 @@ static int changed(ggi_visual_t vis, int whatchanged)  			for (i = 0; ggiGetAPI(vis, i, api, args) == 0; i++)  			{  				strcat(api, "-mesa"); -				gl_ggiDEBUG("api=%s, i=%d\n", api, i);  				fname = ggMatchConfig(_ggimesaConfigHandle, api, NULL);  				if (fname == NULL)  				{ diff --git a/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h b/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h index c4611fa01b..d4d5040b55 100644 --- a/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h +++ b/src/mesa/drivers/ggi/include/ggi/mesa/ggimesa.h @@ -50,14 +50,15 @@ struct ggi_mesa_context  	GLcontext *gl_ctx;  	GLvisual *gl_vis;  	GLframebuffer *gl_buffer; - +	  	ggi_visual_t ggi_vis;   	ggi_coord origin;  	int flip_y;  	int width, height, stride;	/* Stride is in pixels */  	ggi_pixel color;		/* Current color or index*/  	ggi_pixel clearcolor; -	void *lfb;			/* Linear frame buffer*/ +	void *lfb[2];			/* Linear frame buffers	*/ +	int active_buffer;  	int viewport_init;  }; @@ -79,7 +80,7 @@ extern GGIMesaContext GGIMesa;	/* The current context */  #define VIS (GGICTX->ggi_vis)  #define FLIP(y) (GGICTX->flip_y-(y)) -#define LFB(type,x,y) ((type *)GGICTX->lfb + (x) + (y) * GGICTX->stride) +#define LFB(type,x,y) ((type *)GGICTX->lfb[0] + (x) + (y) * GGICTX->stride)  #define CTX_OPMESA(ctx) \  ((struct mesa_ext *)LIBGGI_EXT(((GGIMesaContext)ctx->DriverCtx)->ggi_vis, \  | 
