Author: jkim
Date: Tue Feb 23 01:02:11 2010
New Revision: 204236
URL: http://svn.freebsd.org/changeset/base/204236

Log:
  Re-add accidentally removed pixel format for direct memory model.

Modified:
  head/sys/dev/fb/vesa.c

Modified: head/sys/dev/fb/vesa.c
==============================================================================
--- head/sys/dev/fb/vesa.c      Tue Feb 23 01:00:19 2010        (r204235)
+++ head/sys/dev/fb/vesa.c      Tue Feb 23 01:02:11 2010        (r204236)
@@ -919,9 +919,49 @@ vesa_bios_init(void)
                vesa_vmode[modes].vi_buffer_size = bsize;
                vesa_vmode[modes].vi_mem_model =
                    vesa_translate_mmodel(vmode.v_memmodel);
-               if (vesa_vmode[modes].vi_mem_model == V_INFO_MM_PACKED ||
-                   vesa_vmode[modes].vi_mem_model == V_INFO_MM_DIRECT)
+               switch (vesa_vmode[modes].vi_mem_model) {
+               case V_INFO_MM_DIRECT:
+                       if ((vmode.v_modeattr & V_MODELFB) != 0 &&
+                           vers >= 0x0300) {
+                               vesa_vmode[modes].vi_pixel_fields[0] =
+                                   vmode.v_linredfieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[1] =
+                                   vmode.v_lingreenfieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[2] =
+                                   vmode.v_linbluefieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[3] =
+                                   vmode.v_linresfieldpos;
+                               vesa_vmode[modes].vi_pixel_fsizes[0] =
+                                   vmode.v_linredmasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[1] =
+                                   vmode.v_lingreenmasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[2] =
+                                   vmode.v_linbluemasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[3] =
+                                   vmode.v_linresmasksize;
+                       } else {
+                               vesa_vmode[modes].vi_pixel_fields[0] =
+                                   vmode.v_redfieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[1] =
+                                   vmode.v_greenfieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[2] =
+                                   vmode.v_bluefieldpos;
+                               vesa_vmode[modes].vi_pixel_fields[3] =
+                                   vmode.v_resfieldpos;
+                               vesa_vmode[modes].vi_pixel_fsizes[0] =
+                                   vmode.v_redmasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[1] =
+                                   vmode.v_greenmasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[2] =
+                                   vmode.v_bluemasksize;
+                               vesa_vmode[modes].vi_pixel_fsizes[3] =
+                                   vmode.v_resmasksize;
+                       }
+                       /* FALLTHROUGH */
+               case V_INFO_MM_PACKED:
                        vesa_vmode[modes].vi_pixel_size = (vmode.v_bpp + 7) / 8;
+                       break;
+               }
                vesa_vmode[modes].vi_flags =
                    vesa_translate_flags(vmode.v_modeattr) | V_INFO_VESA;
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to