~ubuntu-branches/ubuntu/quantal/mesa/quantal

« back to all changes in this revision

Viewing changes to src/mesa/drivers/fbdev/glfbdev.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2007-02-21 12:44:07 UTC
  • mfrom: (1.2.1 upstream)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: james.westby@ubuntu.com-20070221124407-rgcacs32mycrtadl
ImportĀ upstreamĀ versionĀ 6.5.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
152
152
get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
153
153
{
154
154
   const GLFBDevBufferPtr fbdevbuffer = GLFBDEV_BUFFER(buffer);
155
 
   *width = fbdevbuffer->var.xres_virtual;
156
 
   *height = fbdevbuffer->var.yres_virtual;
 
155
   *width = fbdevbuffer->var.xres;
 
156
   *height = fbdevbuffer->var.yres;
157
157
}
158
158
 
159
159
 
 
160
/**
 
161
 * We only implement this function as a mechanism to check if the
 
162
 * framebuffer size has changed (and update corresponding state).
 
163
 */
160
164
static void
161
165
viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
162
166
{
163
 
   /* poll for window size change and realloc software Z/stencil/etc if needed */
164
 
   _mesa_ResizeBuffersMESA();
 
167
   GLuint newWidth, newHeight;
 
168
   GLframebuffer *buffer;
 
169
 
 
170
   buffer = ctx->WinSysDrawBuffer;
 
171
   get_buffer_size( buffer, &newWidth, &newHeight );
 
172
   if (buffer->Width != newWidth || buffer->Height != newHeight) {
 
173
      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
 
174
   }
 
175
 
 
176
   buffer = ctx->WinSysReadBuffer;
 
177
   get_buffer_size( buffer, &newWidth, &newHeight );
 
178
   if (buffer->Width != newWidth || buffer->Height != newHeight) {
 
179
      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
 
180
   }
165
181
}
166
182
 
167
183
 
389
405
      blueBits  = varInfo->blue.length;
390
406
      alphaBits = varInfo->transp.length;
391
407
 
392
 
      if ((fixInfo->visual == FB_VISUAL_TRUECOLOR ||
393
 
           fixInfo->visual == FB_VISUAL_DIRECTCOLOR)
394
 
          && varInfo->bits_per_pixel == 24
395
 
          && varInfo->red.offset == 16
396
 
          && varInfo->green.offset == 8
397
 
          && varInfo->blue.offset == 0) {
398
 
         vis->pixelFormat = PF_B8G8R8;
399
 
      }
400
 
      else if ((fixInfo->visual == FB_VISUAL_TRUECOLOR ||
401
 
                fixInfo->visual == FB_VISUAL_DIRECTCOLOR)
402
 
               && varInfo->bits_per_pixel == 32
403
 
               && varInfo->red.offset == 16
404
 
               && varInfo->green.offset == 8
405
 
               && varInfo->blue.offset == 0
406
 
               && varInfo->transp.offset == 24) {
407
 
         vis->pixelFormat = PF_B8G8R8A8;
408
 
      }
409
 
      else if ((fixInfo->visual == FB_VISUAL_TRUECOLOR ||
410
 
                fixInfo->visual == FB_VISUAL_DIRECTCOLOR)
411
 
               && varInfo->bits_per_pixel == 16
412
 
               && varInfo->red.offset == 11
413
 
               && varInfo->green.offset == 5
414
 
               && varInfo->blue.offset == 0) {
415
 
         vis->pixelFormat = PF_B5G6R5;
416
 
      }
417
 
      else if ((fixInfo->visual == FB_VISUAL_TRUECOLOR ||
418
 
                fixInfo->visual == FB_VISUAL_DIRECTCOLOR)
419
 
               && varInfo->bits_per_pixel == 16
420
 
               && varInfo->red.offset == 10
421
 
               && varInfo->green.offset == 5
422
 
               && varInfo->blue.offset == 0) {
423
 
         vis->pixelFormat = PF_B5G5R5;
424
 
      }
425
 
      else {
426
 
         _mesa_problem(NULL, "Unsupported fbdev RGB visual/bitdepth!\n");
427
 
         _mesa_free(vis);
428
 
         return NULL;
 
408
      if (fixInfo->visual == FB_VISUAL_TRUECOLOR ||
 
409
          fixInfo->visual == FB_VISUAL_DIRECTCOLOR) {
 
410
         if(varInfo->bits_per_pixel == 24
 
411
            && varInfo->red.offset == 16
 
412
            && varInfo->green.offset == 8
 
413
            && varInfo->blue.offset == 0)
 
414
            vis->pixelFormat = PF_B8G8R8;
 
415
 
 
416
         else if(varInfo->bits_per_pixel == 32
 
417
                 && varInfo->red.offset == 16
 
418
                 && varInfo->green.offset == 8
 
419
                 && varInfo->blue.offset == 0)
 
420
            vis->pixelFormat = PF_B8G8R8A8;
 
421
 
 
422
         else if(varInfo->bits_per_pixel == 16
 
423
                 && varInfo->red.offset == 11
 
424
                 && varInfo->green.offset == 5
 
425
                 && varInfo->blue.offset == 0)
 
426
            vis->pixelFormat = PF_B5G6R5;
 
427
 
 
428
         else if(varInfo->bits_per_pixel == 16
 
429
                 && varInfo->red.offset == 10
 
430
                 && varInfo->green.offset == 5
 
431
                 && varInfo->blue.offset == 0)
 
432
            vis->pixelFormat = PF_B5G5R5;
 
433
 
 
434
         else {
 
435
            _mesa_problem(NULL, "Unsupported fbdev RGB visual/bitdepth!\n");
 
436
            _mesa_free(vis);
 
437
            return NULL;
 
438
         }
429
439
      }
430
440
   }
431
441
   else {
568
578
 
569
579
      rb->rowStride = visual->var.xres_virtual * visual->var.bits_per_pixel / 8;
570
580
      rb->bottom = (GLubyte *) bufferStart
571
 
          + (visual->var.yres_virtual - 1) * rb->rowStride;
 
581
          + (visual->var.yres - 1) * rb->rowStride;
572
582
 
573
583
      rb->Base.Width = visual->var.xres;
574
584
      rb->Base.Height = visual->var.yres;