[Intel-gfx] [PATCH] Android port of intel-gpu-tools

Kenneth Graunke kenneth at whitecape.org
Wed Jan 11 08:54:29 CET 2012


On 01/09/2012 08:45 PM, Sateesh Kavuri wrote:
> Added support for Android. Changes include fixes for compilation issues
>   related to Android using an older version of GCC compiler (ver 4.3.3)
>   while the latest version of intel-gpu-tools confirms to GCC ver 4.5.2
>   (C99 standard functions), using functions like getline(). Fixed such
>   functions, header dependencies for android and added an Android.mk file.
>
> signed-off-by: Sateesh Kavuri<sateesh.kavuri at intel.com>
> ---
>   Android.mk                 |  528 ++++++++++++++++++++++++++++++++++++++++++++
>   lib/intel_drm.c            |    6 +-
>   lib/intel_mmio.c           |    4 +
>   lib/intel_pci.c            |    4 +
>   tools/intel_decode.c       |   10 +
>   tools/intel_dump_decode.c  |   14 +-
>   tools/intel_error_decode.c |   14 ++
>   tools/intel_gpu_top.c      |    6 +-
>   tools/intel_reg_write.c    |    2 +
>   9 files changed, 584 insertions(+), 4 deletions(-)
>   create mode 100644 Android.mk
>
> diff --git a/Android.mk b/Android.mk
> new file mode 100644
> index 0000000..0fc04cd
> --- /dev/null
> +++ b/Android.mk
> @@ -0,0 +1,528 @@
> +LOCAL_PATH := $(call my-dir)
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_reg_write.c         	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +	lib/intel_reg_map.c 		\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            	       			\
> +       $(LOCAL_PATH)/lib				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +LOCAL_MODULE := intel_reg_write
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_reg_read.c          	\
> +       lib/intel_pci.c			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +	lib/intel_reg_map.c 		\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=					\
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_reg_read
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=				\
> +       tools/intel_disable_clock_gating.c	\
> +       lib/intel_pci.c 				\
> +       lib/intel_gpu_tools.h         		\
> +       tools/intel_reg.h               		\
> +       lib/intel_batchbuffer.h       		\
> +       lib/intel_batchbuffer.c       		\
> +       lib/intel_mmio.c       			\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_disable_clock_gating
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=			\
> +       tools/intel_audio_dump.c         \
> +       lib/intel_pci.c			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h		\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=                    				\
> +       $(LOCAL_PATH)/lib 					\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 		\
> +       $(TOPDIR)hardware/intel/libdrm/intel 			\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_audio_dump
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_backlight.c          \
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=                    			\
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_backlight
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_bios_dumper.c       	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=                    			\
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_bios_dumper
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_bios_reader.c        \
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_bios_reader
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_error_decode.c      	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h 		\
> +       lib/instdone.h  			\
> +       lib/instdone.c  			\
> +       tools/intel_decode.h  		\
> +       tools/intel_decode.c 		\
> +	lib/intel_drm.c
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_error_decode
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_gpu_top.c          	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h 		\
> +       lib/instdone.h  			\
> +       lib/instdone.c  			\
> +	lib/intel_reg_map.c
> +
> +
> +LOCAL_C_INCLUDES +=    			                \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_gpu_top
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_gpu_time.c          	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_gpu_time
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_gtt.c          	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +
> +LOCAL_MODULE := intel_gtt
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_stepping.c          	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h         	\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_stepping
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=			\
> +       tools/intel_reg_dumper.c         \
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h 	        \
> +       tools/intel_reg.h       	        \
> +       lib/intel_batchbuffer.h		\
> +       lib/intel_batchbuffer.c		\
> +       lib/intel_mmio.c      		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=                    			\
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_reg_dumper
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/intel_reg_snapshot.c       \
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h 	        \
> +       tools/intel_reg.h       	        \
> +       lib/intel_batchbuffer.h		\
> +       lib/intel_batchbuffer.c		\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +
> +LOCAL_MODULE := intel_reg_snapshot
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       tools/forcewaked.c          	\
> +       lib/intel_pci.c 			\
> +       lib/intel_gpu_tools.h		\
> +       tools/intel_reg.h               	\
> +       lib/intel_batchbuffer.h       	\
> +       lib/intel_batchbuffer.c       	\
> +       lib/intel_mmio.c       		\
> +       tools/intel_chipset.h 		\
> +       lib/intel_reg_map.c
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := forcewaked
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	\
> +                          libdrm 	\
> +                          libdrm_intel
> +
> +include $(BUILD_EXECUTABLE)
> +
> +#================
> +include $(CLEAR_VARS)
> +
> +LOCAL_SRC_FILES :=                     	\
> +       lib/intel_gpu_tools.h		\
> +       tools/intel_reg_checker.c	\
> +	lib/intel_pci.c			\
> +	lib/intel_mmio.c
> +
> +
> +LOCAL_C_INCLUDES +=            			        \
> +       $(LOCAL_PATH)/lib 				\
> +       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
> +       $(TOPDIR)hardware/intel/libdrm/intel 		\
> +       $(LOCAL_PATH)/../libpciaccess/include/
> +
> +LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
> +LOCAL_CFLAGS += -DANDROID
> +
> +
> +LOCAL_MODULE := intel_reg_checker
> +LOCAL_MODULE_TAGS := optional
> +
> +LOCAL_SHARED_LIBRARIES := libpciaccess 	
> +
> +include $(BUILD_EXECUTABLE)
> +

It's unfortunate that we need another build system, but I understand 
that it's necessary---we ended up adding one in Mesa.

> diff --git a/lib/intel_drm.c b/lib/intel_drm.c
> index f8eca7d..1f51856 100644
> --- a/lib/intel_drm.c
> +++ b/lib/intel_drm.c
> @@ -25,7 +25,7 @@
>    *
>    */
>
> -#include "config.h"
> +#include "../config.h"
>
>   #include<unistd.h>
>   #include<stdlib.h>
> @@ -35,7 +35,11 @@
>   #include<err.h>
>   #include<assert.h>
>   #include<sys/ioctl.h>
> +#ifdef ANDROID
> +#include<fcntl.h>
> +#else
>   #include<sys/fcntl.h>
> +#endif

At least on my system, /usr/include/sys/fcntl.h is simply:
#include <fcntl.h>

So I think you could unconditionally change all of these to #include 
<fcntl.h> without #ifdef ANDROID.  Perhaps others can confirm that. 
That would certainly be a lot nicer.

>   #include<sys/stat.h>
>   #include<sys/mman.h>
>   #ifdef HAVE_STRUCT_SYSINFO_TOTALRAM
> diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c
> index da68bdf..2020833 100644
> --- a/lib/intel_mmio.c
> +++ b/lib/intel_mmio.c
> @@ -38,7 +38,11 @@
>   #include<err.h>
>   #include<assert.h>
>   #include<sys/ioctl.h>
> +#ifdef ANDROID
> +#include<fcntl.h>
> +#else
>   #include<sys/fcntl.h>
> +#endif
>   #include<sys/stat.h>
>   #include<sys/mman.h>
>
> diff --git a/lib/intel_pci.c b/lib/intel_pci.c
> index 7bc7466..98889ca 100644
> --- a/lib/intel_pci.c
> +++ b/lib/intel_pci.c
> @@ -33,7 +33,11 @@
>   #include<err.h>
>   #include<assert.h>
>   #include<sys/ioctl.h>
> +#ifdef ANDROID
> +#include<fcntl.h>
> +#else
>   #include<sys/fcntl.h>
> +#endif
>   #include<sys/stat.h>
>   #include<sys/mman.h>
>
> diff --git a/tools/intel_decode.c b/tools/intel_decode.c
> index 344578b..5ed508f 100644
> --- a/tools/intel_decode.c
> +++ b/tools/intel_decode.c
> @@ -198,7 +198,12 @@ decode_mi(uint32_t *data, int count, uint32_t hw_offset, int *failures)
>   	if ((data[0]&  0x1f800000)>>  23 == opcodes_mi[opcode].opcode) {
>
>   	    instr_out(data, hw_offset, 0, "%s\n", opcodes_mi[opcode].name);
> +            #ifdef ANDROID
> +	    int i;
> +	    for (i = 1; i<  len; i++) {
> +            #else
>   	    for (int i = 1; i<  len; i++) {
> +            #endif

Like Adam said...just use gcc -std=c99 if possible.  We really want C99.

>   		if (i>= count)
>   		    BUFFER_FAIL(count, len, opcodes_mi[opcode].name);
>   		instr_out(data, hw_offset, i, "dword %d\n", i);
> @@ -1164,7 +1169,12 @@ decode_3d_1d(uint32_t *data, int count,
>   				break;
>   			case 2:
>   				instr_out(data, hw_offset, i, "S2: texcoord formats: ");
> +                                #ifdef ANDROID
> +				int tex_num;
> +				for (tex_num = 0; tex_num<  8; tex_num++) {
> +                                #else
>   				for (int tex_num = 0; tex_num<  8; tex_num++) {
> +                                #endif
>   					switch((data[i]>>tex_num*4)&0xf) {
>   					case 0: fprintf(out, "%i=2D ", tex_num); break;
>   					case 1: fprintf(out, "%i=3D ", tex_num); break;
> diff --git a/tools/intel_dump_decode.c b/tools/intel_dump_decode.c
> index 26d57f5..57c1261 100644
> --- a/tools/intel_dump_decode.c
> +++ b/tools/intel_dump_decode.c
> @@ -67,6 +67,10 @@ read_data_file(uint32_t devid, const char * filename)
>       FILE *file;
>       uint32_t *data = NULL;
>       int data_size = 0, count = 0, line_number = 0, matched;
> +    #ifdef ANDROID
> +    char line[1024];
> +    size_t line_size = 1024;
> +    #else
>       char *line = NULL;
>       size_t line_size;
>       uint32_t offset, value;
> @@ -82,9 +86,15 @@ read_data_file(uint32_t devid, const char * filename)
>   		 filename, strerror (errno));
>   	exit (1);
>       }
> -
> +#ifdef ANDROID
> +    while (fgets (line, line_size, file) != 0) {
> +        line[strcspn(line, "\n")] = '\0';
> +        if (line[0] == '\0') continue;
> +#else
>       while (getline (&line,&line_size, file)>  0) {
> -	line_number++;
> +#endif

Rather than rewriting every use of getline(), could we just include our 
own implementation of getline() in an #ifdef ANDROID block?  That way, 
we work around the Bionic issues in one place.

> +
> +    	line_number++;
>
>   	matched = sscanf (line, "%08x : %08x",&offset,&value);
>   	if (matched != 2) {
> diff --git a/tools/intel_error_decode.c b/tools/intel_error_decode.c
> index 6ffaefe..c9c74ba 100644
> --- a/tools/intel_error_decode.c
> +++ b/tools/intel_error_decode.c
> @@ -280,15 +280,27 @@ read_data_file (FILE *file)
>       uint32_t *data = NULL;
>       long long unsigned fence;
>       int data_size = 0, count = 0, line_number = 0, matched;
> +#ifdef ANDROID
> +    char line[1024];
> +    size_t line_size = 1024;
> +#else
>       char *line = NULL;
>       size_t line_size;
> +#endif
>       uint32_t offset, value;
>       uint32_t gtt_offset = 0, new_gtt_offset;
>       char *buffer_type[2] = {  "ringbuffer", "batchbuffer" };
>       char *ring_name = NULL;
>       int is_batch = 1;
>
> +#ifdef ANDROID
> +    while (fgets (line, line_size, file) != 0) {
> +        line[strcspn(line, "\n")] = '\0';
> +        if (line[0] == '\0') continue;
> +#else
>       while (getline (&line,&line_size, file)>  0) {
> +#endif
> +
>   	char *dashes;
>   	line_number++;
>
> @@ -404,7 +416,9 @@ read_data_file (FILE *file)
>       }
>
>       free (data);
> +#ifndef ANDROID
>       free (line);
> +#endif
>       free (ring_name);
>   }
>
> diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
> index 033ba53..b9d1ce9 100644
> --- a/tools/intel_gpu_top.c
> +++ b/tools/intel_gpu_top.c
> @@ -27,7 +27,7 @@
>    *
>    */
>
> -#include "config.h"
> +#include "../config.h"
>
>   #include<unistd.h>
>   #include<stdlib.h>
> @@ -602,10 +602,14 @@ int main(int argc, char **argv)
>   		/* Limit the number of lines printed to the terminal height so the
>   		 * most important info (at the top) will stay on screen. */
>   		unsigned short int max_lines = -1;
> +#ifndef ANDROID
>   		struct winsize ws;
>   		if (ioctl(0, TIOCGWINSZ,&ws) != -1)
>   			max_lines = ws.ws_row - 6; /* exclude header lines */
>   		if (max_lines>= num_instdone_bits)
> +	//	FIXME: ioctl-types.h still does not exist in Android. Hard code
> +	//	the max_lines value for now (winsize is part of ioctl-types.h
> +#endif
>   			max_lines = num_instdone_bits;

I'm okay with an #ifndef ANDROID workaround here, but would it be better 
to use MAX_INSTDONE_BITS?  Also, please use
         /* FIXME: ..... */
rather than the C++ style comments.

Thanks for your work on this, it'll be nice to see intel-gpu-tools on 
Android!

>   		t2 = gettime();
> diff --git a/tools/intel_reg_write.c b/tools/intel_reg_write.c
> index c8af9bb..81bceef 100644
> --- a/tools/intel_reg_write.c
> +++ b/tools/intel_reg_write.c
> @@ -25,6 +25,8 @@
>    *
>    */
>
> +#include "../config.h"
> +
>   #include<unistd.h>
>   #include<stdlib.h>
>   #include<stdio.h>



More information about the Intel-gfx mailing list