mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 04:10:09 +01:00
Remove the redundant width, height fields in xmesa_buffer struct. Just use
the values in the contained GLframebuffer. Removed some other unneeded code.
This commit is contained in:
parent
b371e50d6d
commit
29926a11b1
4 changed files with 65 additions and 93 deletions
|
|
@ -2079,16 +2079,16 @@ Fake_glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
|
|||
|
||||
switch (attribute) {
|
||||
case GLX_WIDTH:
|
||||
*value = xmbuf->width;
|
||||
*value = xmbuf->mesa_buffer.Width;
|
||||
break;
|
||||
case GLX_HEIGHT:
|
||||
*value = xmbuf->height;
|
||||
*value = xmbuf->mesa_buffer.Height;
|
||||
break;
|
||||
case GLX_PRESERVED_CONTENTS:
|
||||
*value = True;
|
||||
break;
|
||||
case GLX_LARGEST_PBUFFER:
|
||||
*value = xmbuf->width * xmbuf->height;
|
||||
*value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
|
||||
break;
|
||||
case GLX_FBCONFIG_ID:
|
||||
*value = xmbuf->xm_visual->visinfo->visualid;
|
||||
|
|
@ -2439,13 +2439,13 @@ Fake_glXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, un
|
|||
*value = True;
|
||||
break;
|
||||
case GLX_LARGEST_PBUFFER_SGIX:
|
||||
*value = xmbuf->width * xmbuf->height;
|
||||
*value = xmbuf->mesa_buffer.Width * xmbuf->mesa_buffer.Height;
|
||||
break;
|
||||
case GLX_WIDTH_SGIX:
|
||||
*value = xmbuf->width;
|
||||
*value = xmbuf->mesa_buffer.Width;
|
||||
break;
|
||||
case GLX_HEIGHT_SGIX:
|
||||
*value = xmbuf->height;
|
||||
*value = xmbuf->mesa_buffer.Height;
|
||||
break;
|
||||
case GLX_EVENT_MASK_SGIX:
|
||||
*value = 0; /* XXX might be wrong */
|
||||
|
|
|
|||
|
|
@ -220,28 +220,6 @@ static int check_for_xshm( XMesaDisplay *display )
|
|||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Return the width and height of the given drawable.
|
||||
*/
|
||||
static void get_drawable_size( XMesaDisplay *dpy, XMesaDrawable d,
|
||||
unsigned int *width, unsigned int *height)
|
||||
{
|
||||
#ifdef XFree86Server
|
||||
(void) dpy;
|
||||
*width = d->width;
|
||||
*height = d->height;
|
||||
#else
|
||||
Window root;
|
||||
int x, y;
|
||||
unsigned int bw, depth;
|
||||
|
||||
_glthread_LOCK_MUTEX(_xmesa_lock);
|
||||
XGetGeometry( dpy, d, &root, &x, &y, width, height, &bw, &depth );
|
||||
_glthread_UNLOCK_MUTEX(_xmesa_lock);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Apply gamma correction to an intensity value in [0..max]. Return the
|
||||
* new intensity value.
|
||||
|
|
@ -476,11 +454,16 @@ static GLboolean alloc_shm_back_buffer( XMesaBuffer b )
|
|||
GC gc;
|
||||
int (*old_handler)( XMesaDisplay *, XErrorEvent * );
|
||||
|
||||
b->backimage = XShmCreateImage( b->xm_visual->display,
|
||||
b->xm_visual->visinfo->visual,
|
||||
b->xm_visual->visinfo->depth,
|
||||
ZPixmap, NULL, &b->shminfo,
|
||||
b->width, b->height );
|
||||
if (b->mesa_buffer.Width == 0 || b->mesa_buffer.Height == 0) {
|
||||
/* this will be true the first time we're called on 'b' */
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
b->backimage = XShmCreateImage(b->xm_visual->display,
|
||||
b->xm_visual->visinfo->visual,
|
||||
b->xm_visual->visinfo->depth,
|
||||
ZPixmap, NULL, &b->shminfo,
|
||||
b->mesa_buffer.Width, b->mesa_buffer.Height);
|
||||
if (b->backimage == NULL) {
|
||||
_mesa_warning(NULL, "alloc_back_buffer: Shared memory error (XShmCreateImage), disabling.");
|
||||
b->shm = 0;
|
||||
|
|
@ -614,7 +597,9 @@ void xmesa_alloc_back_buffer( XMesaBuffer b )
|
|||
b->xm_visual->visinfo->visual,
|
||||
GET_VISUAL_DEPTH(b->xm_visual),
|
||||
ZPixmap, 0, /* format, offset */
|
||||
NULL, b->width, b->height,
|
||||
NULL,
|
||||
b->mesa_buffer.Width,
|
||||
b->mesa_buffer.Height,
|
||||
8, 0 ); /* pad, bytes_per_line */
|
||||
#endif
|
||||
if (!b->backimage) {
|
||||
|
|
@ -638,7 +623,8 @@ void xmesa_alloc_back_buffer( XMesaBuffer b )
|
|||
}
|
||||
/* Allocate new back pixmap */
|
||||
b->backpixmap = XMesaCreatePixmap( b->xm_visual->display, b->frontbuffer,
|
||||
b->width, b->height,
|
||||
b->mesa_buffer.Width,
|
||||
b->mesa_buffer.Height,
|
||||
GET_VISUAL_DEPTH(b->xm_visual) );
|
||||
b->backimage = NULL;
|
||||
/* update other references to backpixmap */
|
||||
|
|
@ -1248,12 +1234,6 @@ static GLboolean initialize_visual_and_buffer( int client,
|
|||
if (b && window) {
|
||||
/* Do window-specific initializations */
|
||||
|
||||
/* Window dimensions */
|
||||
unsigned int w, h;
|
||||
get_drawable_size( v->display, window, &w, &h );
|
||||
b->width = w;
|
||||
b->height = h;
|
||||
|
||||
b->frontbuffer = window;
|
||||
|
||||
/* Setup for single/double buffering */
|
||||
|
|
@ -1847,8 +1827,14 @@ XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w,
|
|||
|
||||
/* [dBorca] we should take an envvar for `fxMesaSelectCurrentBoard'!!! */
|
||||
hw = fxMesaSelectCurrentBoard(0);
|
||||
|
||||
/* if these fail, there's a new bug somewhere */
|
||||
ASSERT(b->mesa_buffer.Width > 0);
|
||||
ASSERT(b->mesa_buffer.Height > 0);
|
||||
|
||||
if ((hw == GR_SSTTYPE_VOODOO) || (hw == GR_SSTTYPE_Voodoo2)) {
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width,
|
||||
b->mesa_buffer.Height, attribs);
|
||||
if ((v->undithered_pf!=PF_Index) && (b->backimage)) {
|
||||
b->FXisHackUsable = b->FXctx ? GL_TRUE : GL_FALSE;
|
||||
if (b->FXctx && (fxEnvVar[0]=='w' || fxEnvVar[0]=='W')) {
|
||||
|
|
@ -1865,7 +1851,8 @@ XMesaBuffer XMesaCreateWindowBuffer2( XMesaVisual v, XMesaWindow w,
|
|||
b->FXctx = fxMesaCreateContext(w, GR_RESOLUTION_NONE,
|
||||
GR_REFRESH_75Hz, attribs);
|
||||
else
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->width, b->height, attribs);
|
||||
b->FXctx = fxMesaCreateBestContext(0, b->mesa_buffer.Width,
|
||||
b->mesa_buffer.Height, attribs);
|
||||
b->FXisHackUsable = GL_FALSE;
|
||||
b->FXwindowHack = GL_FALSE;
|
||||
}
|
||||
|
|
@ -2106,13 +2093,6 @@ GLboolean XMesaMakeCurrent2( XMesaContext c, XMesaBuffer drawBuffer,
|
|||
&drawBuffer->mesa_buffer,
|
||||
&readBuffer->mesa_buffer);
|
||||
|
||||
if (c->mesa.Viewport.Width == 0) {
|
||||
/* initialize viewport to window size */
|
||||
_mesa_Viewport( 0, 0, drawBuffer->width, drawBuffer->height );
|
||||
c->mesa.Scissor.Width = drawBuffer->width;
|
||||
c->mesa.Scissor.Height = drawBuffer->height;
|
||||
}
|
||||
|
||||
if (c->xm_visual->mesa_visual.rgbMode) {
|
||||
/*
|
||||
* Must recompute and set these pixel values because colormap
|
||||
|
|
@ -2386,7 +2366,8 @@ void XMesaSwapBuffers( XMesaBuffer b )
|
|||
XShmPutImage( b->xm_visual->display, b->frontbuffer,
|
||||
b->swapgc,
|
||||
b->backimage, 0, 0,
|
||||
0, 0, b->width, b->height, False );
|
||||
0, 0, b->mesa_buffer.Width, b->mesa_buffer.Height,
|
||||
False );
|
||||
/*_glthread_UNLOCK_MUTEX(_xmesa_lock);*/
|
||||
}
|
||||
else
|
||||
|
|
@ -2396,7 +2377,7 @@ void XMesaSwapBuffers( XMesaBuffer b )
|
|||
XMesaPutImage( b->xm_visual->display, b->frontbuffer,
|
||||
b->swapgc,
|
||||
b->backimage, 0, 0,
|
||||
0, 0, b->width, b->height );
|
||||
0, 0, b->mesa_buffer.Width, b->mesa_buffer.Height );
|
||||
/*_glthread_UNLOCK_MUTEX(_xmesa_lock);*/
|
||||
}
|
||||
}
|
||||
|
|
@ -2407,7 +2388,7 @@ void XMesaSwapBuffers( XMesaBuffer b )
|
|||
b->backpixmap, /* source drawable */
|
||||
b->frontbuffer, /* dest. drawable */
|
||||
b->swapgc,
|
||||
0, 0, b->width, b->height, /* source region */
|
||||
0, 0, b->mesa_buffer.Width, b->mesa_buffer.Height,
|
||||
0, 0 /* dest region */
|
||||
);
|
||||
/*_glthread_UNLOCK_MUTEX(_xmesa_lock);*/
|
||||
|
|
@ -2434,7 +2415,7 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height )
|
|||
_mesa_notifySwapBuffers(ctx);
|
||||
|
||||
if (b->db_state) {
|
||||
int yTop = b->height - y - height;
|
||||
int yTop = b->mesa_buffer.Height - y - height;
|
||||
#ifdef FX
|
||||
if (b->FXctx) {
|
||||
fxMesaSwapBuffers();
|
||||
|
|
|
|||
|
|
@ -285,13 +285,13 @@ clear_front_pixmap( GLcontext *ctx, GLboolean all,
|
|||
XMesaFillRectangle( xmesa->display, xmesa->xm_draw_buffer->frontbuffer,
|
||||
xmesa->xm_draw_buffer->cleargc,
|
||||
0, 0,
|
||||
xmesa->xm_draw_buffer->width+1,
|
||||
xmesa->xm_draw_buffer->height+1 );
|
||||
xmesa->xm_draw_buffer->mesa_buffer.Width + 1,
|
||||
xmesa->xm_draw_buffer->mesa_buffer.Height + 1 );
|
||||
}
|
||||
else {
|
||||
XMesaFillRectangle( xmesa->display, xmesa->xm_draw_buffer->frontbuffer,
|
||||
xmesa->xm_draw_buffer->cleargc,
|
||||
x, xmesa->xm_draw_buffer->height - y - height,
|
||||
x, xmesa->xm_draw_buffer->mesa_buffer.Height - y - height,
|
||||
width, height );
|
||||
}
|
||||
}
|
||||
|
|
@ -306,13 +306,13 @@ clear_back_pixmap( GLcontext *ctx, GLboolean all,
|
|||
XMesaFillRectangle( xmesa->display, xmesa->xm_draw_buffer->backpixmap,
|
||||
xmesa->xm_draw_buffer->cleargc,
|
||||
0, 0,
|
||||
xmesa->xm_draw_buffer->width+1,
|
||||
xmesa->xm_draw_buffer->height+1 );
|
||||
xmesa->xm_draw_buffer->mesa_buffer.Width + 1,
|
||||
xmesa->xm_draw_buffer->mesa_buffer.Height + 1 );
|
||||
}
|
||||
else {
|
||||
XMesaFillRectangle( xmesa->display, xmesa->xm_draw_buffer->backpixmap,
|
||||
xmesa->xm_draw_buffer->cleargc,
|
||||
x, xmesa->xm_draw_buffer->height - y - height,
|
||||
x, xmesa->xm_draw_buffer->mesa_buffer.Height - y - height,
|
||||
width, height );
|
||||
}
|
||||
}
|
||||
|
|
@ -410,20 +410,20 @@ clear_16bit_ximage( GLcontext *ctx, GLboolean all,
|
|||
if ((pixel & 0xff) == ((pixel >> 8) & 0xff)) {
|
||||
/* low and high bytes are equal so use memset() */
|
||||
n = xmesa->xm_draw_buffer->backimage->bytes_per_line
|
||||
* xmesa->xm_draw_buffer->height;
|
||||
* xmesa->xm_draw_buffer->mesa_buffer.Height;
|
||||
MEMSET( ptr4, pixel & 0xff, n );
|
||||
}
|
||||
else {
|
||||
pixel = pixel | (pixel<<16);
|
||||
n = xmesa->xm_draw_buffer->backimage->bytes_per_line
|
||||
* xmesa->xm_draw_buffer->height / 4;
|
||||
* xmesa->xm_draw_buffer->mesa_buffer.Height / 4;
|
||||
do {
|
||||
*ptr4++ = pixel;
|
||||
n--;
|
||||
} while (n!=0);
|
||||
|
||||
if ((xmesa->xm_draw_buffer->backimage->bytes_per_line *
|
||||
xmesa->xm_draw_buffer->height) & 0x2)
|
||||
xmesa->xm_draw_buffer->mesa_buffer.Height) & 0x2)
|
||||
*(GLushort *)ptr4 = pixel & 0xffff;
|
||||
}
|
||||
}
|
||||
|
|
@ -461,8 +461,8 @@ clear_24bit_ximage( GLcontext *ctx, GLboolean all,
|
|||
if (all) {
|
||||
if (r==g && g==b) {
|
||||
/* same value for all three components (gray) */
|
||||
const GLint w3 = xmesa->xm_draw_buffer->width * 3;
|
||||
const GLint h = xmesa->xm_draw_buffer->height;
|
||||
const GLint w3 = xmesa->xm_draw_buffer->mesa_buffer.Width * 3;
|
||||
const GLint h = xmesa->xm_draw_buffer->mesa_buffer.Height;
|
||||
GLint i;
|
||||
for (i = 0; i < h; i++) {
|
||||
bgr_t *ptr3 = PIXELADDR3(xmesa->xm_draw_buffer, 0, i);
|
||||
|
|
@ -471,8 +471,8 @@ clear_24bit_ximage( GLcontext *ctx, GLboolean all,
|
|||
}
|
||||
else {
|
||||
/* the usual case */
|
||||
const GLint w = xmesa->xm_draw_buffer->width;
|
||||
const GLint h = xmesa->xm_draw_buffer->height;
|
||||
const GLint w = xmesa->xm_draw_buffer->mesa_buffer.Width;
|
||||
const GLint h = xmesa->xm_draw_buffer->mesa_buffer.Height;
|
||||
GLint i, j;
|
||||
for (i = 0; i < h; i++) {
|
||||
bgr_t *ptr3 = PIXELADDR3(xmesa->xm_draw_buffer, 0, i);
|
||||
|
|
@ -665,7 +665,8 @@ clear_32bit_ximage( GLcontext *ctx, GLboolean all,
|
|||
| ((pixel << 24) & 0xff000000);
|
||||
}
|
||||
if (all) {
|
||||
register GLint n = xmesa->xm_draw_buffer->width * xmesa->xm_draw_buffer->height;
|
||||
register GLint n = xmesa->xm_draw_buffer->mesa_buffer.Width
|
||||
* xmesa->xm_draw_buffer->mesa_buffer.Height;
|
||||
register GLuint *ptr4 = (GLuint *) xmesa->xm_draw_buffer->backimage->data;
|
||||
if (pixel==0) {
|
||||
MEMSET( ptr4, pixel, 4*n );
|
||||
|
|
@ -695,24 +696,16 @@ clear_nbit_ximage( GLcontext *ctx, GLboolean all,
|
|||
{
|
||||
const XMesaContext xmesa = XMESA_CONTEXT(ctx);
|
||||
XMesaImage *img = xmesa->xm_draw_buffer->backimage;
|
||||
if (all) {
|
||||
register int i, j;
|
||||
width = xmesa->xm_draw_buffer->width;
|
||||
height = xmesa->xm_draw_buffer->height;
|
||||
for (j=0;j<height;j++) {
|
||||
for (i=0;i<width;i++) {
|
||||
XMesaPutPixel( img, i, j, xmesa->clearpixel );
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* TODO: optimize this */
|
||||
register int i, j;
|
||||
y = FLIP(xmesa->xm_draw_buffer, y);
|
||||
for (j=0;j<height;j++) {
|
||||
for (i=0;i<width;i++) {
|
||||
XMesaPutPixel( img, x+i, y-j, xmesa->clearpixel );
|
||||
}
|
||||
register int i, j;
|
||||
|
||||
/* We can ignore 'all' here - x, y, width, height are always right */
|
||||
(void) all;
|
||||
|
||||
/* TODO: optimize this */
|
||||
y = FLIP(xmesa->xm_draw_buffer, y);
|
||||
for (j = 0; j < height; j++) {
|
||||
for (i = 0; i < width; i++) {
|
||||
XMesaPutPixel(img, x+i, y-j, xmesa->clearpixel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -755,6 +748,7 @@ clear_buffers( GLcontext *ctx, GLbitfield mask,
|
|||
* When we detect that the user has resized the window this function will
|
||||
* get called. Here we'll reallocate the back buffer, depth buffer,
|
||||
* stencil buffer etc. to match the new window size.
|
||||
* The buffer->Width and buffer->Height values will indicate the new size.
|
||||
*/
|
||||
void
|
||||
xmesa_resize_buffers( GLframebuffer *buffer )
|
||||
|
|
@ -766,8 +760,6 @@ xmesa_resize_buffers( GLframebuffer *buffer )
|
|||
*/
|
||||
XMesaBuffer xmBuffer = (XMesaBuffer) buffer;
|
||||
|
||||
xmBuffer->width = buffer->Width;
|
||||
xmBuffer->height = buffer->Height;
|
||||
xmesa_alloc_back_buffer( xmBuffer );
|
||||
|
||||
/* Needed by FLIP macro */
|
||||
|
|
@ -1214,8 +1206,9 @@ choose_tex_format( GLcontext *ctx, GLint internalFormat,
|
|||
* Initialize the device driver function table with the functions
|
||||
* we implement in this driver.
|
||||
*/
|
||||
void xmesa_init_driver_functions( XMesaVisual xmvisual,
|
||||
struct dd_function_table *driver )
|
||||
void
|
||||
xmesa_init_driver_functions( XMesaVisual xmvisual,
|
||||
struct dd_function_table *driver )
|
||||
{
|
||||
driver->GetString = get_string;
|
||||
driver->UpdateState = xmesa_update_state;
|
||||
|
|
@ -1230,7 +1223,7 @@ void xmesa_init_driver_functions( XMesaVisual xmvisual,
|
|||
driver->Clear = clear_buffers;
|
||||
driver->ResizeBuffers = xmesa_resize_buffers;
|
||||
#ifndef XFree86Server
|
||||
driver->CopyPixels = /*_swrast_CopyPixels;*/xmesa_CopyPixels;
|
||||
driver->CopyPixels = xmesa_CopyPixels;
|
||||
if (xmvisual->undithered_pf == PF_8R8G8B &&
|
||||
xmvisual->dithered_pf == PF_8R8G8B) {
|
||||
driver->DrawPixels = xmesa_DrawPixels_8R8G8B;
|
||||
|
|
|
|||
|
|
@ -192,8 +192,6 @@ struct xmesa_buffer {
|
|||
|
||||
XMesaImage *rowimage; /* Used for optimized span writing */
|
||||
|
||||
GLuint width, height; /* size of buffer */
|
||||
|
||||
GLint bottom; /* used for FLIP macro below */
|
||||
GLubyte *ximage_origin1; /* used for PIXELADDR1 macro */
|
||||
GLint ximage_width1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue