psx_gpu: standalone test build + tweaks
authornotaz <notasas@gmail.com>
Sat, 6 Oct 2012 20:36:06 +0000 (23:36 +0300)
committernotaz <notasas@gmail.com>
Sat, 6 Oct 2012 20:59:31 +0000 (23:59 +0300)
plugins/gpu_neon/psx_gpu/psx_gpu_main.c
plugins/gpu_neon/psx_gpu/tests/Makefile [new file with mode: 0644]
plugins/gpu_neon/psx_gpu/tests/psx_dump_check.sh [new file with mode: 0755]

index 8ca3ad0..c7ce0ee 100644 (file)
@@ -127,7 +127,7 @@ void update_screen(psx_gpu_struct *psx_gpu, SDL_Surface *screen)
 int main(int argc, char *argv[])
 {
   psx_gpu_struct *psx_gpu = &_psx_gpu;
-  SDL_Surface *screen;
+  SDL_Surface *screen = NULL;
   SDL_Event event;
 
   u32 *list;
@@ -164,14 +164,35 @@ int main(int argc, char *argv[])
   {
     SDL_Init(SDL_INIT_EVERYTHING);
     screen = SDL_SetVideoMode(1024, 512, 32, 0);
+    if (screen == 0)
+    {
+      printf("can't set video mode: %s\n", SDL_GetError());
+      return 1;
+    }
   }
 
 #ifdef NEON_BUILD
+  u16 *vram_ptr;
+#if 0
   system("ofbset -fb /dev/fb1 -mem 6291456 -en 0");
   u32 fbdev_handle = open("/dev/fb1", O_RDWR);
-  u16 *vram_ptr =
   vram_ptr = (mmap((void *)0x50000000, 1024 * 1024 * 2, PROT_READ | PROT_WRITE,
    MAP_SHARED | 0xA0000000, fbdev_handle, 0));
+#elif 1
+  #ifndef MAP_HUGETLB
+  #define MAP_HUGETLB 0x40000 /* arch specific */
+  #endif
+  vram_ptr = (mmap((void *)0x50000000, 1024 * 1024 * 2, PROT_READ | PROT_WRITE,
+   MAP_ANONYMOUS | MAP_PRIVATE | MAP_HUGETLB, -1, 0));
+#else
+  vram_ptr = (mmap((void *)0x50000000, 1024 * 1024 * 2, PROT_READ | PROT_WRITE,
+   MAP_ANONYMOUS | MAP_PRIVATE, -1, 0));
+#endif
+  if (vram_ptr == MAP_FAILED)
+  {
+    perror("mmap");
+    return 1;
+  }
   vram_ptr += 64;
 
   initialize_psx_gpu(psx_gpu, vram_ptr);
diff --git a/plugins/gpu_neon/psx_gpu/tests/Makefile b/plugins/gpu_neon/psx_gpu/tests/Makefile
new file mode 100644 (file)
index 0000000..210f44d
--- /dev/null
@@ -0,0 +1,26 @@
+CC = $(CROSS_COMPILE)gcc
+CFLAGS += -DTEXTURE_CACHE_4BPP -DTEXTURE_CACHE_8BPP
+CFLAGS += -Wall -ggdb
+
+CFLAGS += `sdl-config --cflags`
+LDFLAGS += `sdl-config --libs`
+
+VPATH += ..
+
+ifdef NEON
+CFLAGS += -mcpu=cortex-a8 -mfpu=neon -DNEON_BUILD
+ASFLAGS = $(CFLAGS)
+OBJ += psx_gpu_arm_neon.o
+endif
+ifndef DEBUG
+CFLAGS += -O2 -fno-strict-aliasing
+endif
+
+OBJ += psx_gpu.o psx_gpu_parse.o psx_gpu_main.o
+
+all: psx_gpu
+
+psx_gpu: $(OBJ)
+
+clean:
+       $(RM) psx_gpu $(OBJ)
diff --git a/plugins/gpu_neon/psx_gpu/tests/psx_dump_check.sh b/plugins/gpu_neon/psx_gpu/tests/psx_dump_check.sh
new file mode 100755 (executable)
index 0000000..25d0725
--- /dev/null
@@ -0,0 +1,8 @@
+truncate --size 0 $1
+for dump in gpu_dumps_all/*
+do
+  if [ -e $dump/dump3.dump -a -e $dump/list.dump ]; then
+    ./psx_gpu $dump/dump3.dump $dump/list.dump -n >> $1
+    echo "Mismatches in $dump: $?"
+  fi
+done