Thread: problems with framebuffer and graphics driver

  1. #1
    Registered User
    Join Date
    Oct 2016
    Posts
    7

    problems with framebuffer and graphics driver

    Hello,

    i have a problem with the linux-framebuffer and this code:
    Code:
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <sys/ioctl.h>
    #include <fcntl.h>
    #include <linux/fb.h>
    #include <unistd.h>
    #include <stdio.h>
    
    int main(int argc, char **argv) {
        int row, col, width, height, bitspp, bytespp;
        unsigned int *data;
    
           int fd = open("/dev/fb0", O_RDWR);
    
        struct fb_var_screeninfo screeninfo;
        ioctl(fd, FBIOGET_VSCREENINFO, &screeninfo);
    
        bitspp = screeninfo.bits_per_pixel;
        if(bitspp != 32) {
            printf("Farbaufloesung = %i Bits pro Pixel\n", bitspp);
            printf("Bitte aendern Sie die Farbtiefe auf 32 Bits pro Pixel\n");
            close(fd);
            return 1;
        }
    
        width  = screeninfo.xres;
        height = screeninfo.yres;
        bytespp = bitspp/8;
        if(sizeof(unsigned int) != bytespp) {
            close(fd);
            return 1;
        }
        
        
        data = (unsigned int*) mmap(0, width * height * bytespp, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
        
        int x=0;
        int i=1;
        while(1){
            for(row = 0; row < height; row++){
                for(col = 0; col < width; col++){
                    data[row * width + col] = 0xFFFFFF;
                    if(col == x){
                        data[row * width + col] = 0x0;
                    }
                }
            }
            x+=i;
            if(x==width || x == 0){
                i*=-1;
            }
        }
        // Zeiger wieder freigeben
        munmap(data, width * height * bytespp);
        
        // Gerät schließen
        close(fd);
        // Rückgabewert
        return 0;
    }
    if i am running this program with the NVIDIA binary driver version 367.57 it looks like this:
    Attachment 14928
    but if i am running the code with the xorg nouveaudriver it looks like this:
    Attachment 14929
    the "framerate" of the NVIDIA driver is really bad worse than the xorg-driver.
    i ran this program a time ago with another driver that i dont know and there it ran faster (like the xorg-driver).
    why runs the program different with different drivers and how can i solve this?
    my system looks like this:
    Code:
       System:    Host: S5520 Kernel: 4.8.0-26-generic x86_64 (64 bit) Desktop: Unity 7.5.0  Distro: Ubuntu 16.10
     Machine:   System: Intel product: TERRA Server v: ....................
                Mobo: Intel model: S5520HC v: E26045-454
                BIOS: Intel v: S5500.86B.01.00.0064.050520141428 date: 05/05/2014
     CPU(s):    2 Hexa core Intel Xeon X5650s (-HT-MCP-SMP-) cache: 24576 KB 
                clock speeds: max: 2661 MHz 1: 1596 MHz 2: 1596 MHz 3: 1596 MHz 4: 1596 MHz 5: 1596 MHz 6: 1596 MHz
                7: 1596 MHz 8: 1596 MHz 9: 1596 MHz 10: 1596 MHz 11: 1596 MHz 12: 1596 MHz 13: 1596 MHz 14: 1596 MHz
                15: 1596 MHz 16: 1596 MHz 17: 1596 MHz 18: 1596 MHz 19: 1596 MHz 20: 1596 MHz 21: 1596 MHz
                22: 1596 MHz 23: 1596 MHz 24: 1596 MHz
     Graphics:  Card: NVIDIA GK106 [GeForce GTX 650 Ti]
                Display Server: X.Org 1.18.4 drivers: nouveau (unloaded: fbdev,vesa) Resolution: [email protected]
                GLX Renderer: Gallium 0.4 on NVE6 GLX Version: 3.0 Mesa 12.0.3

  2. #2
    Registered User
    Join Date
    Oct 2016
    Posts
    7
    for the NVIDIA-driver:
    problems with framebuffer and graphics driver-img_20161026_172645243_hdr-jpg

    and for the xorg-driver:
    problems with framebuffer and graphics driver-img_20161026_174022839_hdr-jpg

  3. #3
    Registered User
    Join Date
    Oct 2016
    Posts
    7
    For anyone who is interested, the problem was, that the xorg driver arranges the pixel in a different way in the memory than the nVidia driver: in the upperleft corner is the first pixel for both drivers, but the second pixel is for the xorgdriver under the first one, while the second pixel for the nvidia driver i left fromthe first pixel.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. hi how to check my serial port is intrupt driver or poll driver?
    By nkrao123@gmail. in forum Networking/Device Communication
    Replies: 5
    Last Post: 09-19-2011, 11:20 PM
  2. making a graphics driver
    By Yarin in forum C++ Programming
    Replies: 9
    Last Post: 01-31-2008, 02:27 PM
  3. Mainboard driver problems
    By Hunter2 in forum Tech Board
    Replies: 2
    Last Post: 09-19-2003, 02:36 PM
  4. initializing the graphics driver.....
    By nold in forum A Brief History of Cprogramming.com
    Replies: 4
    Last Post: 07-28-2003, 11:17 PM

Tags for this Thread