~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/fb/cmap_xfbdev.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/fb/cmap_xfbdev.rst (Version linux-6.12-rc7) and /Documentation/fb/cmap_xfbdev.rst (Version linux-5.7.19)


  1 ==========================                          1 ==========================
  2 Understanding fbdev's cmap                          2 Understanding fbdev's cmap
  3 ==========================                          3 ==========================
  4                                                     4 
  5 These notes explain how X's dix layer uses fbd      5 These notes explain how X's dix layer uses fbdev's cmap structures.
  6                                                     6 
  7 -  example of relevant structures in fbdev as       7 -  example of relevant structures in fbdev as used for a 3-bit grayscale cmap::
  8                                                     8 
  9     struct fb_var_screeninfo {                      9     struct fb_var_screeninfo {
 10             .bits_per_pixel = 8,                   10             .bits_per_pixel = 8,
 11             .grayscale      = 1,                   11             .grayscale      = 1,
 12             .red =          { 4, 3, 0 },           12             .red =          { 4, 3, 0 },
 13             .green =        { 0, 0, 0 },           13             .green =        { 0, 0, 0 },
 14             .blue =         { 0, 0, 0 },           14             .blue =         { 0, 0, 0 },
 15     }                                              15     }
 16     struct fb_fix_screeninfo {                     16     struct fb_fix_screeninfo {
 17             .visual =       FB_VISUAL_STATIC_P     17             .visual =       FB_VISUAL_STATIC_PSEUDOCOLOR,
 18     }                                              18     }
 19     for (i = 0; i < 8; i++)                        19     for (i = 0; i < 8; i++)
 20         info->cmap.red[i] = (((2*i)+1)*(0xFFFF     20         info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16;
 21     memcpy(info->cmap.green, info->cmap.red, s     21     memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8);
 22     memcpy(info->cmap.blue, info->cmap.red, si     22     memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8);
 23                                                    23 
 24 -  X11 apps do something like the following wh     24 -  X11 apps do something like the following when trying to use grayscale::
 25                                                    25 
 26     for (i=0; i < 8; i++) {                        26     for (i=0; i < 8; i++) {
 27         char colorspec[64];                        27         char colorspec[64];
 28         memset(colorspec,0,64);                    28         memset(colorspec,0,64);
 29         sprintf(colorspec, "rgb:%x/%x/%x", i*3     29         sprintf(colorspec, "rgb:%x/%x/%x", i*36,i*36,i*36);
 30         if (!XParseColor(outputDisplay, testCo     30         if (!XParseColor(outputDisplay, testColormap, colorspec, &wantedColor))
 31                 printf("Can't get color %s\n",     31                 printf("Can't get color %s\n",colorspec);
 32         XAllocColor(outputDisplay, testColorma     32         XAllocColor(outputDisplay, testColormap, &wantedColor);
 33         grays[i] = wantedColor;                    33         grays[i] = wantedColor;
 34     }                                              34     }
 35                                                    35 
 36 There's also named equivalents like gray1..x p     36 There's also named equivalents like gray1..x provided you have an rgb.txt.
 37                                                    37 
 38 Somewhere in X's callchain, this results in a      38 Somewhere in X's callchain, this results in a call to X code that handles the
 39 colormap. For example, Xfbdev hits the followi     39 colormap. For example, Xfbdev hits the following:
 40                                                    40 
 41 xc-011010/programs/Xserver/dix/colormap.c::        41 xc-011010/programs/Xserver/dix/colormap.c::
 42                                                    42 
 43   FindBestPixel(pentFirst, size, prgb, channel     43   FindBestPixel(pentFirst, size, prgb, channel)
 44                                                    44 
 45   dr = (long) pent->co.local.red - prgb->red;      45   dr = (long) pent->co.local.red - prgb->red;
 46   dg = (long) pent->co.local.green - prgb->gre     46   dg = (long) pent->co.local.green - prgb->green;
 47   db = (long) pent->co.local.blue - prgb->blue     47   db = (long) pent->co.local.blue - prgb->blue;
 48   sq = dr * dr;                                    48   sq = dr * dr;
 49   UnsignedToBigNum (sq, &sum);                     49   UnsignedToBigNum (sq, &sum);
 50   BigNumAdd (&sum, &temp, &sum);                   50   BigNumAdd (&sum, &temp, &sum);
 51                                                    51 
 52 co.local.red are entries that were brought in      52 co.local.red are entries that were brought in through FBIOGETCMAP which come
 53 directly from the info->cmap.red that was list     53 directly from the info->cmap.red that was listed above. The prgb is the rgb
 54 that the app wants to match to. The above code     54 that the app wants to match to. The above code is doing what looks like a least
 55 squares matching function. That's why the cmap     55 squares matching function. That's why the cmap entries can't be set to the left
 56 hand side boundaries of a color range.             56 hand side boundaries of a color range.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php