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