Commit 430946d0 authored by Arkadiusz Hiler's avatar Arkadiusz Hiler

igt: Remove Android support

This patch gets rid of the Android support, deleting all the hacks and
moving code around to the places it belongs.

Android build is not really maintained properly and rots rather fast.
With recent push for Meson here and Android going for Soong it will only
accelerate.

It's a good time to drop the illusion of providing any support.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Kalyan Kondapally <kalyan.kondapally@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Arkadiusz Hiler's avatarArkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Juha-Pekka Heikkilä's avatarJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Acked-by: Petri Latvala's avatarPetri Latvala <petri.latvala@intel.com>
parent 380cc811
HAVE_LIBDRM_INTEL := true
include $(call all-named-subdir-makefiles, lib tests tools benchmarks)
......@@ -28,11 +28,6 @@
#include <string.h>
#include <stdint.h>
/* Android defines SIZE_MAX in limits.h, instead of the standard stdint.h */
#ifdef ANDROID
#include <limits.h>
#endif
/* Some versions of MinGW are missing _vscprintf's declaration, although they
* still provide the symbol in the import library. */
#ifdef __MINGW32__
......
LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/Makefile.sources
IGT_LOCAL_C_INCLUDES = $(LOCAL_PATH)/../lib
#================#
define add_benchmark
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $1.c
LOCAL_C_INCLUDES = ${IGT_LOCAL_C_INCLUDES} \
$(LOCAL_PATH)/../lib/stubs/drm/
LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM
LOCAL_CFLAGS += -DANDROID -UNDEBUG -include "check-ndebug.h"
LOCAL_CFLAGS += -std=gnu99
# FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
LOCAL_CFLAGS += -Wno-error=return-type
# Excessive complaining for established cases. Rely on the Linux version warnings.
LOCAL_CFLAGS += -Wno-sign-compare
LOCAL_LDFLAGS += -lkmod
LOCAL_MODULE := $1_benchmark
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/intel/validation/core/igt/benchmarks
LOCAL_STATIC_LIBRARIES := libintel_gpu_tools
LOCAL_SHARED_LIBRARIES := libpciaccess \
libkmod \
libdrm \
libdrm_intel
include $(BUILD_EXECUTABLE)
endef
#================#
benchmark_list := $(benchmarks_prog_list)
ifeq ($(HAVE_LIBDRM_INTEL),true)
benchmark_list += $(LIBDRM_INTEL_BENCHMARKS)
endif
$(foreach item,$(benchmark_list),$(eval $(call add_benchmark,$(item))))
......@@ -219,7 +219,6 @@ static void *sys_thp_alloc(void *arg)
static void bind_cpu(pthread_attr_t *attr, int cpu)
{
#ifdef __USE_GNU
#ifndef ANDROID
cpu_set_t mask;
if (cpu == -1)
......@@ -230,7 +229,6 @@ static void bind_cpu(pthread_attr_t *attr, int cpu)
pthread_attr_setaffinity_np(attr, sizeof(mask), &mask);
#endif
#endif
}
static void rtprio(pthread_attr_t *attr, int prio)
......
LOCAL_PATH := $(call my-dir)
GPU_TOOLS_PATH := $(LOCAL_PATH)/..
IGT_LIB_PATH := $(LOCAL_PATH)
# FIXME: autogenerate this info #
$(GPU_TOOLS_PATH)/config.h:
@echo "updating config.h"
@echo '#define PACKAGE_VERSION "1.5"' >> $@ ; \
echo '#define TARGET_CPU_PLATFORM "android-ia"' >> $@ ;
include $(LOCAL_PATH)/Makefile.sources
include $(CLEAR_VARS)
LOCAL_GENERATED_SOURCES := \
$(IGT_LIB_PATH)/version.h \
$(GPU_TOOLS_PATH)/config.h
LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. \
$(LOCAL_PATH)/stubs/drm/
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES
LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM
LOCAL_CFLAGS += -DANDROID -DHAVE_LINUX_KD_H
LOCAL_CFLAGS += -std=gnu99 -UNDEBUG
LOCAL_MODULE:= libintel_gpu_tools
LOCAL_SHARED_LIBRARIES := libpciaccess \
libkmod \
libdrm \
libdrm_intel
ifeq ("${ANDROID_HAS_CAIRO}", "1")
skip_lib_list :=
LOCAL_C_INCLUDES += $(ANDROID_BUILD_TOP)/external/cairo-1.12.16/src
LOCAL_CFLAGS += -DANDROID_HAS_CAIRO=1 -DIGT_DATADIR=\".\" -DIGT_SRCDIR=\".\"
else
skip_lib_list := \
igt_kms.c \
igt_kms.h \
igt_fb.c
-DANDROID_HAS_CAIRO=0
endif
LOCAL_SRC_FILES := $(filter-out %.h $(skip_lib_list),$(lib_source_list))
include $(BUILD_STATIC_LIBRARY)
include $(call first-makefiles-under, $(LOCAL_PATH))
......@@ -51,22 +51,6 @@
*/
#define DRIVER_ANY ~(DRIVER_VGEM)
#ifdef ANDROID
#if (!(defined HAVE_MMAP64)) && (!(defined __x86_64__))
extern void* __mmap2(void *, size_t, int, int, int, off_t);
/* mmap64 is a recent addition to bionic and not available in all android builds. */
/* I can find no reliable way to know if it is defined or not - so just avoid it */
#define mmap64 igt_mmap64
static inline void *igt_mmap64(void *addr, size_t length, int prot, int flags,
int fd, off64_t offset)
{
return __mmap2(addr, length, prot, flags, fd, offset >> 12);
}
#endif
#endif
/**
* ARRAY_SIZE:
* @arr: static array
......
......@@ -1085,101 +1085,6 @@ void igt_debug_manual_check(const char *var, const char *expected)
igt_assert(key != 'n' && key != 'N');
}
/* Functions with prefix kmstest_ independent of cairo library are pulled out
* from file igt_kms.c since this file is skipped in lib/Android.mk when flag
* ANDROID_HAS_CAIRO is 0. This ensures the usability of these functions even
* when cairo library is not present on Android.
*/
struct type_name {
int type;
const char *name;
};
static const char *find_type_name(const struct type_name *names, int type)
{
for (; names->name; names++) {
if (names->type == type)
return names->name;
}
return "(invalid)";
}
static const struct type_name encoder_type_names[] = {
{ DRM_MODE_ENCODER_NONE, "none" },
{ DRM_MODE_ENCODER_DAC, "DAC" },
{ DRM_MODE_ENCODER_TMDS, "TMDS" },
{ DRM_MODE_ENCODER_LVDS, "LVDS" },
{ DRM_MODE_ENCODER_TVDAC, "TVDAC" },
{ DRM_MODE_ENCODER_VIRTUAL, "Virtual" },
{ DRM_MODE_ENCODER_DSI, "DSI" },
{ DRM_MODE_ENCODER_DPMST, "DP MST" },
{}
};
/**
* kmstest_encoder_type_str:
* @type: DRM_MODE_ENCODER_* enumeration value
*
* Returns: A string representing the drm encoder @type.
*/
const char *kmstest_encoder_type_str(int type)
{
return find_type_name(encoder_type_names, type);
}
static const struct type_name connector_status_names[] = {
{ DRM_MODE_CONNECTED, "connected" },
{ DRM_MODE_DISCONNECTED, "disconnected" },
{ DRM_MODE_UNKNOWNCONNECTION, "unknown" },
{}
};
/**
* kmstest_connector_status_str:
* @status: DRM_MODE_* connector status value
*
* Returns: A string representing the drm connector status @status.
*/
const char *kmstest_connector_status_str(int status)
{
return find_type_name(connector_status_names, status);
}
static const struct type_name connector_type_names[] = {
{ DRM_MODE_CONNECTOR_Unknown, "Unknown" },
{ DRM_MODE_CONNECTOR_VGA, "VGA" },
{ DRM_MODE_CONNECTOR_DVII, "DVI-I" },
{ DRM_MODE_CONNECTOR_DVID, "DVI-D" },
{ DRM_MODE_CONNECTOR_DVIA, "DVI-A" },
{ DRM_MODE_CONNECTOR_Composite, "Composite" },
{ DRM_MODE_CONNECTOR_SVIDEO, "SVIDEO" },
{ DRM_MODE_CONNECTOR_LVDS, "LVDS" },
{ DRM_MODE_CONNECTOR_Component, "Component" },
{ DRM_MODE_CONNECTOR_9PinDIN, "DIN" },
{ DRM_MODE_CONNECTOR_DisplayPort, "DP" },
{ DRM_MODE_CONNECTOR_HDMIA, "HDMI-A" },
{ DRM_MODE_CONNECTOR_HDMIB, "HDMI-B" },
{ DRM_MODE_CONNECTOR_TV, "TV" },
{ DRM_MODE_CONNECTOR_eDP, "eDP" },
{ DRM_MODE_CONNECTOR_VIRTUAL, "Virtual" },
{ DRM_MODE_CONNECTOR_DSI, "DSI" },
{ DRM_MODE_CONNECTOR_DPI, "DPI" },
{}
};
/**
* kmstest_connector_type_str:
* @type: DRM_MODE_CONNECTOR_* enumeration value
*
* Returns: A string representing the drm connector @type.
*/
const char *kmstest_connector_type_str(int type)
{
return find_type_name(connector_type_names, type);
}
/**
* igt_lock_mem:
* @size: the amount of memory to lock into RAM, in MB
......
......@@ -45,12 +45,7 @@ extern int num_trash_bos;
#define NSEC_PER_SEC (1000*USEC_PER_SEC)
/* signal interrupt helpers */
#ifdef ANDROID
#include <unistd.h> /* on Android bionic has this implemented */
#else
#define gettid() syscall(__NR_gettid)
#endif
#define sigev_notify_thread_id _sigev_un._tid
/* auxialiary igt helpers from igt_aux.c */
......
......@@ -495,72 +495,6 @@ void __igt_fixture_end(void)
siglongjmp(igt_subtest_jmpbuf, 1);
}
/*
* Some of the IGT tests put quite a lot of pressure on memory and when
* running on Android they are sometimes killed by the Android low memory killer.
* This seems to be due to some incompatibility between the kswapd free memory
* targets and the way the lowmemorykiller assesses free memory.
* The low memory killer really isn't usefull in this context and has no
* interaction with the gpu driver that we are testing, so the following
* function is used to disable it by modifying one of its module parameters.
* We still have the normal linux oom killer to protect the kernel.
* Apparently it is also possible for the lowmemorykiller to get included
* in some linux distributions; so rather than check for Android we directly
* check for the existence of the module parameter we want to adjust.
*
* In future, if we can get the lowmemorykiller to play nicely then we can
* remove this hack.
*/
static void low_mem_killer_disable(bool disable)
{
static const char* adj_fname="/sys/module/lowmemorykiller/parameters/adj";
static const char no_lowmem_killer[] = "9999";
int fd;
struct stat buf;
/* The following must persist across invocations */
static char prev_adj_scores[256];
static int adj_scores_len = 0;
static bool is_disabled = false;
/* capture the permissions bits for the lowmemkiller adj pseudo-file.
* Bail out if the stat fails; it probably means that there is no
* lowmemorykiller, but in any case we're doomed. */
if (stat(adj_fname, &buf)) {
igt_assert(errno == ENOENT);
return;
}
/* make sure the file can be read/written - by default it is write-only */
chmod(adj_fname, S_IRUSR | S_IWUSR);
if (disable && !is_disabled) {
/* read the current oom adj parameters for lowmemorykiller */
fd = open(adj_fname, O_RDWR);
igt_assert(fd != -1);
adj_scores_len = read(fd, (void*)prev_adj_scores, 255);
igt_assert(adj_scores_len > 0);
/* writing 9999 to this module parameter effectively diables the
* low memory killer. This is not a real file, so we dont need to
* seek to the start or truncate it */
igt_assert_eq(write(fd, no_lowmem_killer, sizeof(no_lowmem_killer)),
sizeof(no_lowmem_killer));
close(fd);
is_disabled = true;
} else if (is_disabled) {
/* just re-enstate the original settings */
fd = open(adj_fname, O_WRONLY);
igt_assert(fd != -1);
igt_assert_eq(write(fd, prev_adj_scores, adj_scores_len),
adj_scores_len);
close(fd);
is_disabled = false;
}
/* re-enstate the file permissions */
chmod(adj_fname, buf.st_mode);
}
/*
* If the test takes out the machine, in addition to the usual dmesg
* spam, the kernel may also emit a "death rattle" -- extra debug
......@@ -587,7 +521,6 @@ bool igt_exit_called;
static void common_exit_handler(int sig)
{
if (!igt_only_list_subtests()) {
low_mem_killer_disable(false);
kick_fbcon(true);
}
......@@ -879,7 +812,6 @@ out:
sync();
oom_adjust_for_doom();
low_mem_killer_disable(true);
ftrace_dump_on_oops(true);
}
......
......@@ -990,30 +990,7 @@ int igt_get_stable_obj_count(int driver)
obj_count = get_object_count(driver);
/* The test relies on the system being in the same state before and
* after the test so any difference in the object count is a result of
* leaks during the test. gem_quiescent_gpu() mostly achieves this but
* on android occasionally obj_count can still change briefly.
* The loop ensures obj_count has remained stable over several checks
*/
#ifdef ANDROID
{
int loop_count = 0;
int prev_obj_count = obj_count;
while (loop_count < 4) {
usleep(200000);
gem_quiescent_gpu(driver);
obj_count = get_object_count(driver);
if (obj_count == prev_obj_count) {
loop_count++;
} else {
igt_debug("loop_count=%d, obj_count=%d, prev_obj_count=%d\n",
loop_count, obj_count, prev_obj_count);
loop_count = 0;
prev_obj_count = obj_count;
}
}
}
#endif
* leaks during the test. */
return obj_count;
}
......
......@@ -28,14 +28,7 @@
#ifndef __IGT_FB_H__
#define __IGT_FB_H__
/* cairo is assumed available on linux. On Android we check for ANDROID_HAS_CAIRO */
#if (!defined(ANDROID)) || (defined(ANDROID) && ANDROID_HAS_CAIRO)
#include <cairo.h>
#else
typedef struct _cairo_surface cairo_surface_t;
typedef struct _cairo cairo_t;
#endif
#include <stddef.h>
#include <stdbool.h>
#include <drm_fourcc.h>
......
......@@ -24,11 +24,7 @@
#ifndef IGT_KMOD_H
#define IGT_KMOD_H
#ifdef ANDROID
#include <libkmod/libkmod.h>
#else
#include <libkmod.h>
#endif
#include "igt_aux.h"
......
......@@ -377,6 +377,95 @@ const char *kmstest_plane_type_name(int plane_type)
return names[plane_type];
}
struct type_name {
int type;
const char *name;
};
static const char *find_type_name(const struct type_name *names, int type)
{
for (; names->name; names++) {
if (names->type == type)
return names->name;
}
return "(invalid)";
}
static const struct type_name encoder_type_names[] = {
{ DRM_MODE_ENCODER_NONE, "none" },
{ DRM_MODE_ENCODER_DAC, "DAC" },
{ DRM_MODE_ENCODER_TMDS, "TMDS" },
{ DRM_MODE_ENCODER_LVDS, "LVDS" },
{ DRM_MODE_ENCODER_TVDAC, "TVDAC" },
{ DRM_MODE_ENCODER_VIRTUAL, "Virtual" },
{ DRM_MODE_ENCODER_DSI, "DSI" },
{ DRM_MODE_ENCODER_DPMST, "DP MST" },
{}
};
/**
* kmstest_encoder_type_str:
* @type: DRM_MODE_ENCODER_* enumeration value
*
* Returns: A string representing the drm encoder @type.
*/
const char *kmstest_encoder_type_str(int type)
{
return find_type_name(encoder_type_names, type);
}
static const struct type_name connector_status_names[] = {
{ DRM_MODE_CONNECTED, "connected" },
{ DRM_MODE_DISCONNECTED, "disconnected" },
{ DRM_MODE_UNKNOWNCONNECTION, "unknown" },
{}
};
/**
* kmstest_connector_status_str:
* @status: DRM_MODE_* connector status value
*
* Returns: A string representing the drm connector status @status.
*/
const char *kmstest_connector_status_str(int status)
{
return find_type_name(connector_status_names, status);
}
static const struct type_name connector_type_names[] = {
{ DRM_MODE_CONNECTOR_Unknown, "Unknown" },
{ DRM_MODE_CONNECTOR_VGA, "VGA" },
{ DRM_MODE_CONNECTOR_DVII, "DVI-I" },
{ DRM_MODE_CONNECTOR_DVID, "DVI-D" },
{ DRM_MODE_CONNECTOR_DVIA, "DVI-A" },
{ DRM_MODE_CONNECTOR_Composite, "Composite" },
{ DRM_MODE_CONNECTOR_SVIDEO, "SVIDEO" },
{ DRM_MODE_CONNECTOR_LVDS, "LVDS" },
{ DRM_MODE_CONNECTOR_Component, "Component" },
{ DRM_MODE_CONNECTOR_9PinDIN, "DIN" },
{ DRM_MODE_CONNECTOR_DisplayPort, "DP" },
{ DRM_MODE_CONNECTOR_HDMIA, "HDMI-A" },
{ DRM_MODE_CONNECTOR_HDMIB, "HDMI-B" },
{ DRM_MODE_CONNECTOR_TV, "TV" },
{ DRM_MODE_CONNECTOR_eDP, "eDP" },
{ DRM_MODE_CONNECTOR_VIRTUAL, "Virtual" },
{ DRM_MODE_CONNECTOR_DSI, "DSI" },
{ DRM_MODE_CONNECTOR_DPI, "DPI" },
{}
};
/**
* kmstest_connector_type_str:
* @type: DRM_MODE_CONNECTOR_* enumeration value
*
* Returns: A string representing the drm connector @type.
*/
const char *kmstest_connector_type_str(int type)
{
return find_type_name(connector_type_names, type);
}
static const char *mode_stereo_name(const drmModeModeInfo *mode)
{
switch (mode->flags & DRM_MODE_FLAG_3D_MASK) {
......
LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/Makefile.sources
#================#
# each igt test is a separate executable. define a function to build one of these tests
define add_test
include $(CLEAR_VARS)
# specific to this test
LOCAL_SRC_FILES := $1.c
LOCAL_MODULE := $1
# common to all tests
LOCAL_CFLAGS += ${IGT_LOCAL_CFLAGS}
LOCAL_C_INCLUDES = ${IGT_LOCAL_C_INCLUDES}
LOCAL_STATIC_LIBRARIES := ${IGT_LOCAL_STATIC_LIBRARIES}
LOCAL_SHARED_LIBRARIES := ${IGT_LOCAL_SHARED_LIBRARIES}
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/intel/validation/core/igt
include $(BUILD_EXECUTABLE)
endef
# set local compilation flags for IGT tests
IGT_LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM -DANDROID -UNDEBUG
IGT_LOCAL_CFLAGS += -std=gnu99
# FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
IGT_LOCAL_CFLAGS += -Wno-error=return-type
# set local includes
IGT_LOCAL_C_INCLUDES = $(LOCAL_PATH)/../lib \
$(LOCAL_PATH)/../lib/stubs/drm/
# set local libraries
IGT_LOCAL_STATIC_LIBRARIES := libintel_gpu_tools
IGT_LOCAL_SHARED_LIBRARIES := libpciaccess libdrm libdrm_intel
$(foreach item,$($(check_prog_list)),$(eval $(call add_test,$(item))))
LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/Makefile.sources
#================#
# each igt test is a separate executable. define a function to build one of these tests
define add_test
include $(CLEAR_VARS)
# specific to this test
LOCAL_SRC_FILES := $1.c
LOCAL_MODULE := $1
# common to all tests
LOCAL_CFLAGS += ${IGT_LOCAL_CFLAGS}
LOCAL_C_INCLUDES = ${IGT_LOCAL_C_INCLUDES}
LOCAL_STATIC_LIBRARIES := ${IGT_LOCAL_STATIC_LIBRARIES}
LOCAL_SHARED_LIBRARIES := ${IGT_LOCAL_SHARED_LIBRARIES}
LOCAL_MODULE_TAGS := optional
# ask linker to define a specific symbol; we use this to identify IGT tests
LOCAL_LDFLAGS := -Wl,--defsym=$2=0 -lkmod
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/intel/validation/core/igt
include $(BUILD_EXECUTABLE)
endef
# some tests still do not build under android
skip_tests_list :=
skip_tests_list += testdisplay # needs glib.h
skip_tests_list += pm_rpm
# set local compilation flags for IGT tests
IGT_LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM -DANDROID -UNDEBUG
IGT_LOCAL_CFLAGS += -include "check-ndebug.h" -std=gnu99
# FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
IGT_LOCAL_CFLAGS += -Wno-error=return-type
# Excessive complaining for established cases. Rely on the Linux version warnings.
IGT_LOCAL_CFLAGS += -Wno-sign-compare
# set local includes
IGT_LOCAL_C_INCLUDES = $(LOCAL_PATH)/../lib \
$(LOCAL_PATH)/../lib/stubs/drm/
# set local libraries
IGT_LOCAL_STATIC_LIBRARIES := libintel_gpu_tools
IGT_LOCAL_SHARED_LIBRARIES := libpciaccess libkmod libdrm libdrm_intel
# handle cairo requirements if it is enabled
ifeq ("${ANDROID_HAS_CAIRO}", "1")
IGT_LOCAL_C_INCLUDES += ${ANDROID_BUILD_TOP}/external/cairo-1.12.16/src
IGT_LOCAL_SHARED_LIBRARIES += libcairo
IGT_LOCAL_CFLAGS += -DANDROID_HAS_CAIRO=1
else
# the following tests depend on cairo, so skip them
skip_tests_list += \
gem_render_copy \
pm_lpsp \
drm_read \
gem_exec_blt \
perf \
prime_mmap_kms
# All kms tests depend on cairo
tmp_list := $(foreach test_name, $(TESTS_progs),\
$(if $(findstring kms_,$(test_name)),$(test_name)))
skip_tests_list += $(tmp_list)
tmp_list := $(foreach test_name, $(TESTS_progs_M),\
$(if $(findstring kms_,$(test_name)),$(test_name)))
skip_tests_list += $(tmp_list)
IGT_LOCAL_CFLAGS += -DANDROID_HAS_CAIRO=0
endif
# create two test lists, one for simple single tests, one for tests that have subtests
tests_list := $(filter-out $(skip_tests_list),$(TESTS_progs) $(HANG) $(TESTS_testsuite))
tests_list_M := $(filter-out $(skip_tests_list),$(TESTS_progs_M))
$(foreach item,$(tests_list),$(eval $(call add_test,$(item),"IGT_SINGLE_TEST")))
$(foreach item,$(tests_list_M),$(eval $(call add_test,$(item),"IGT_MULTI_TEST")))
......@@ -51,12 +51,10 @@ is_local_tid(pid_t tid)
{
#ifndef __linux__
return pthread_self() == tid;
#elif !defined(ANDROID)
#else
/* On Linux systems, drmGetClient() would return the thread ID
instead of the actual process ID */
return syscall(SYS_gettid) == tid;
#else
return gettid() == tid;
#endif
}
......
......@@ -142,7 +142,6 @@ stable_nop_on_ring(int fd, uint32_t handle, unsigned int engine,
return n;
}
#if !defined(ANDROID) || ANDROID_HAS_CAIRO
#define assert_within_epsilon(x, ref, tolerance) \
igt_assert_f((x) <= (1.0 + tolerance) * ref && \
(x) >= (1.0 - tolerance) * ref, \
......@@ -187,7 +186,6 @@ static void headless(int fd, uint32_t handle)
/* check that the two execution speeds are roughly the same */
assert_within_epsilon(n_headless, n_display, 0.1f);
}
#endif
static bool ignore_engine(int fd, unsigned engine)
{
......@@ -710,13 +708,11 @@ igt_main
}
}
#if !defined(ANDROID) || ANDROID_HAS_CAIRO
igt_subtest("headless") {
/* Requires master for changing display modes */
igt_require(drmSetMaster(device) == 0);
headless(device, handle);
}
#endif
igt_fixture {
igt_stop_hang_detector();
......
LOCAL_PATH := $(call my-dir)
include $(LOCAL_PATH)/Makefile.sources
LOCAL_TOOLS_DIR := intel/validation/core/igt/tools
#================#
define add_tool
include $(CLEAR_VARS)
ifeq ($($(1)_SOURCES),)
LOCAL_SRC_FILES := $1.c
else
LOCAL_SRC_FILES := $(filter-out %.h,$($(1)_SOURCES))
endif
LOCAL_CFLAGS += -DHAVE_TERMIOS_H
LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM
LOCAL_CFLAGS += -DANDROID -UNDEBUG
LOCAL_CFLAGS += -std=gnu99
# FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
LOCAL_CFLAGS += -Wno-error=return-type
# Excessive complaining for established cases. Rely on the Linux version warnings.
LOCAL_CFLAGS += -Wno-sign-compare
LOCAL_LDFLAGS += -lkmod
ifeq ($($(1)_LDFLAGS),)
else
LOCAL_LDFLAGS += $($(1)_LDFLAGS)
endif
LOCAL_C_INCLUDES = $(LOCAL_PATH)/../lib \
$(LOCAL_PATH)/../lib/stubs/drm/
LOCAL_MODULE := $1_tool
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_LIBRARIES := libintel_gpu_tools
LOCAL_SHARED_LIBRARIES := libpciaccess \
libkmod \
libdrm \
libdrm_intel \
libz
# Tools dir on host
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/$(LOCAL_TOOLS_DIR)
# Tools dir on target.
LOCAL_CFLAGS += -DPKGDATADIR=\"/system/vendor/$(LOCAL_TOOLS_DIR)\"
include $(BUILD_EXECUTABLE)
endef
#================#
# Copy the register files
$(shell mkdir -p $(TARGET_OUT_VENDOR)/$(LOCAL_TOOLS_DIR)/registers)
$(shell cp $(LOCAL_PATH)/registers/* $(TARGET_OUT_VENDOR)/$(LOCAL_TOOLS_DIR)/registers)
bin_PROGRAMS := $(tools_prog_lists)
skip_tools_list := \
intel_framebuffer_dump \
intel_guc_logger \
intel_l3_parity \
intel_reg_dumper \
intel_vga_read \