From f82c62507c67309b9c020a54f6c848853d39febe Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 6 Oct 2012 23:36:06 +0300 Subject: [PATCH] psx_gpu: standalone test build + tweaks --- plugins/gpu_neon/psx_gpu/psx_gpu_main.c | 25 ++++++++++++++++-- plugins/gpu_neon/psx_gpu/tests/Makefile | 26 +++++++++++++++++++ .../gpu_neon/psx_gpu/tests/psx_dump_check.sh | 8 ++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 plugins/gpu_neon/psx_gpu/tests/Makefile create mode 100755 plugins/gpu_neon/psx_gpu/tests/psx_dump_check.sh diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_main.c b/plugins/gpu_neon/psx_gpu/psx_gpu_main.c index 8ca3ad02..c7ce0ee4 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu_main.c +++ b/plugins/gpu_neon/psx_gpu/psx_gpu_main.c @@ -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 index 00000000..210f44d6 --- /dev/null +++ b/plugins/gpu_neon/psx_gpu/tests/Makefile @@ -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 index 00000000..25d07251 --- /dev/null +++ b/plugins/gpu_neon/psx_gpu/tests/psx_dump_check.sh @@ -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 -- 2.39.5