Files
Astral/patches/tinygl/tinygl.patch
T
2022-10-12 19:28:49 -03:00

189 lines
5.5 KiB
Diff

diff -ruN tinygl/config.mk Astral/sources/tinygl/config.mk
--- tinygl/config.mk 2022-10-12 19:26:26.106556442 -0300
+++ Astral/sources/tinygl/config.mk 2022-10-12 19:19:56.666559485 -0300
@@ -3,7 +3,7 @@
#CC= clang
#CC=cc
-CC=gcc
+CC=x86_64-astral-gcc
#CC=tcc
#uncomment the following line for compiling the lib using tinyc.
#note that the demos will fail to build with tinyc, but you can
@@ -15,16 +15,11 @@
#extract the maximum possible performance from gcc.
-#CFLAGS= -Wall -O3 -std=c99 -DNDEBUG -march=native -Wno-unused-function
-CFLAGS= -Wall -O3 -std=c99 -DNDEBUG -march=native -fopenmp -Wno-unused-function
-#CFLAGS_LIB= -Wall -O3 -std=c99 -pedantic -DNDEBUG -march=native -Wno-unused-function
-CFLAGS_LIB= -Wall -O3 -std=c99 -pedantic -DNDEBUG -fopenmp -march=native -Wno-unused-function
-
#CFLAGS= -Wall -Ofast -std=gnu99 -DNDEBUG -mtune=native
#uncomment the following line for compiling the lib with tinyc
#keep these flags for compiling with gcc if you are linking with tinygl compiled with tcc.
-#CFLAGS= -Wall -O3 -std=gnu99 -DNDEBUG -g
+CFLAGS= -Wall -O3 -std=gnu99 -DNDEBUG -g
#CFLAGS= -Wall -O1 -g -std=c99 -Wno-undef -DNDEBUG
LFLAGS=
diff -ruN tinygl/Makefile Astral/sources/tinygl/Makefile
--- tinygl/Makefile 2022-10-12 19:26:26.089889775 -0300
+++ Astral/sources/tinygl/Makefile 2022-10-12 19:19:56.666559485 -0300
@@ -1,9 +1,10 @@
LIBNAME=libTinyGL.a
+PREFIX=/usr/local/
LIB=lib/$(LIBNAME)
-LIBDIR=/usr/local/lib
-INCDIR=/usr/local/include
-BINDIR=/usr/local/bin
+LIBDIR=$(DESTDIR)/$(PREFIX)/lib
+INCDIR=$(DESTDIR)/$(PREFIX)/include
+BINDIR=$(DESTDIR)/$(PREFIX)/bin
all: $(LIB) RDMOS
@echo Done!
@@ -13,8 +14,10 @@
cp src/*.a ./lib/
install: $(LIB)
+ [ -d $(INCDIR)/tinygl ] || mkdir -p $(INCDIR)/tinygl
+ [ -d $(LIBDIR)/ ] || mkdir -p $(LIBDIR)
+ [ -d $(BINDIR)/ ] || mkdir -p $(BINDIR)
cp $(LIB) $(LIBDIR)
- mkdir $(INCDIR)/tinygl || echo "You installed before?"
cp -r include/* $(INCDIR)/tinygl
uninstall:
diff -ruN tinygl/Raw_Demos/gears.c Astral/sources/tinygl/Raw_Demos/gears.c
--- tinygl/Raw_Demos/gears.c 2022-10-12 19:26:26.089889775 -0300
+++ Astral/sources/tinygl/Raw_Demos/gears.c 2022-10-12 19:20:49.683225732 -0300
@@ -15,6 +15,9 @@
#include <string.h>
#include <stdarg.h>
+#include <errno.h>
+#include <linux/fb.h>
+#include <fcntl.h>
//Doesn't drag in anything.
#include "../include/GL/gl.h"
@@ -293,10 +296,79 @@
// glEnable( GL_NORMALIZE );
}
+static int seekordie(int fd, off_t offset, int whence){
+ int ret = lseek(fd, offset, whence);
+ if(ret == -1){
+ printf("gears: lseek failed on fd %d: %s", fd, strerror(errno));
+ exit(errno);
+ }
+ return ret;
+}
+
+static int ioctlordie(int fd, unsigned long request, void* arg){
+ int ret = ioctl(fd, request, arg);
+ if(ret == -1){
+ printf("gears: ioctl failed on fd %d: %s\n", fd, strerror(errno));
+ exit(errno);
+ }
+ return ret;
+}
+
+static int openordie(char* name, int flags, int mode){
+ int fd = open(name, flags, mode);
+ if(fd == -1){
+ printf("gears: failed to open %s: %s\n", name, strerror(errno));
+ exit(errno);
+ }
+ return fd;
+}
+
+static int writeordie(int fd, void* buff, size_t count){
+ int writec = write(fd, buff, count);
+ if(writec == -1){
+ printf("gears: write failed on fd %d: %s\n", fd, strerror(errno));
+ exit(errno);
+ }
+
+ return writec;
+}
+
+static int readordie(int fd, void* buff, size_t count){
+ int readc = read(fd, buff, count);
+ if(readc == -1){
+ printf("gears: read failed on fd %d: %s\n", fd, strerror(errno));
+ exit(errno);
+ }
+ return readc;
+}
+
+void usage(){
+ printf("Usage: gears [options]\n");
+ printf("--help Display this information.\n");
+ printf("-w <width> Set width of the window\n");
+ printf("-h <height> Set height of the window\n");
+ printf("-flat\n");
+ printf("-smooth\n");
+ printf("-blend\n");
+ printf("-nospecular\n");
+ printf("-lines\n");
+ printf("-points\n");
+ printf("-notext\n");
+}
+
int main(int argc, char** argv) {
// initialize SDL video:
- int winSizeX = 640;
- int winSizeY = 480;
+
+ int fbfd = openordie("/dev/fb0", O_RDONLY, 0);
+
+ struct fb_var_screeninfo fbvs;
+ struct fb_fix_screeninfo fbfs;
+
+ ioctlordie(fbfd, FBIOGET_VSCREENINFO, &fbvs);
+ ioctlordie(fbfd, FBIOGET_FSCREENINFO, &fbfs);
+
+ int winSizeX = fbvs.xres;
+ int winSizeY = fbvs.yres;
PIXEL* imbuf = NULL;
uchar* pbuf = NULL;
unsigned int flat = 0;
@@ -324,6 +396,10 @@
override_drawmodes = 2;
if (!strcmp(argv[i],"-notext"))
dotext = 0;
+ if (!strcmp(argv[i],"--help")){
+ usage();
+ exit(0);
+ }
larg = argv[i];
}
}
@@ -413,16 +489,17 @@
if(frames > 0) break;
}
if(TGL_FEATURE_RENDER_BITS == 32){ //very little conversion.
- pbuf = malloc(3 * winSizeX * winSizeY);
+ pbuf = malloc(4 * winSizeX * winSizeY);
for(int i = 0; i < winSizeX * winSizeY; i++){
//pbuf[3*i+0] = (imbuf[i]&0xff0000)>>16;
//pbuf[3*i+1] = (imbuf[i]&0x00ff00)>>8;
//pbuf[3*i+2] = (imbuf[i]&0x0000ff);
- pbuf[3*i+0] = GET_RED(imbuf[i]);
- pbuf[3*i+1] = GET_GREEN(imbuf[i]);
- pbuf[3*i+2] = GET_BLUE(imbuf[i]);
+ pbuf[4*i+0] = GET_RED(imbuf[i]);
+ pbuf[4*i+1] = GET_GREEN(imbuf[i]);
+ pbuf[4*i+2] = GET_BLUE(imbuf[i]);
}
- stbi_write_png("render.png", winSizeX, winSizeY, 3, pbuf, 0);
+
+ writeordie(fbfd, pbuf, 4 * winSizeX * winSizeY);
free(imbuf);
free(pbuf);
} else if(TGL_FEATURE_RENDER_BITS == 16){