mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-03 19:47:15 +00:00 
			
		
		
		
	lib/drmtest: api documentation
Also rename the arguments of do_ioctl a bit for better clarity. I haven't figured out a way to reference other section headers, hence the links to igt_core and intel_batchbuffer are a bit fragile unfortunately. It gets the job done though. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
		
							parent
							
								
									7bb40944e2
								
							
						
					
					
						commit
						187b66da09
					
				@ -58,8 +58,20 @@
 | 
			
		||||
#include "intel_reg.h"
 | 
			
		||||
#include "ioctl_wrappers.h"
 | 
			
		||||
 | 
			
		||||
/* This file contains a bunch of wrapper functions to directly use gem ioctls.
 | 
			
		||||
 * Mostly useful to write kernel tests. */
 | 
			
		||||
/**
 | 
			
		||||
 * SECTION:drmtest
 | 
			
		||||
 * @short_description: Base library for drm tests and tools
 | 
			
		||||
 * @title: drmtest
 | 
			
		||||
 * @include: drmtest.h
 | 
			
		||||
 *
 | 
			
		||||
 * This library contains the basic support for writing tests, with the most
 | 
			
		||||
 * important part being the helper function to open drm device nodes.
 | 
			
		||||
 *
 | 
			
		||||
 * But there's also a bit of other assorted stuff here.
 | 
			
		||||
 *
 | 
			
		||||
 * Note that this library's header pulls in the [i-g-t core](intel-gpu-tools-i-g-t-core.html)
 | 
			
		||||
 * and [batchbuffer](intel-gpu-tools-intel-batchbuffer.html) libraries as depencies.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
is_intel(int fd)
 | 
			
		||||
@ -77,7 +89,18 @@ is_intel(int fd)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define LOCAL_I915_EXEC_VEBOX	(4 << 0)
 | 
			
		||||
/* Ensure the gpu is idle by launching a nop execbuf and stalling for it. */
 | 
			
		||||
/**
 | 
			
		||||
 * gem_quiescent_gpu:
 | 
			
		||||
 * @fd: open i915 drm file descriptor
 | 
			
		||||
 *
 | 
			
		||||
 * Ensure the gpu is idle by launching a nop execbuf and stalling for it. This
 | 
			
		||||
 * is automatically run when opening a drm device node and is also installed as
 | 
			
		||||
 * an exit handler to have the best assurance that the test is run in a pristine
 | 
			
		||||
 * and controlled environment.
 | 
			
		||||
 *
 | 
			
		||||
 * This function simply allows tests to make additional calls in-between, if so
 | 
			
		||||
 * desired.
 | 
			
		||||
 */
 | 
			
		||||
void gem_quiescent_gpu(int fd)
 | 
			
		||||
{
 | 
			
		||||
	uint32_t batch[2] = {MI_BATCH_BUFFER_END, 0};
 | 
			
		||||
@ -134,9 +157,11 @@ void gem_quiescent_gpu(int fd)
 | 
			
		||||
/**
 | 
			
		||||
 * drm_get_card:
 | 
			
		||||
 *
 | 
			
		||||
 * Get an intel card number for use in /dev or /sys
 | 
			
		||||
 * Get an i915 drm card index number for use in /dev or /sys. The minor index of
 | 
			
		||||
 * the legacy node is returned, not of the control or render node.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: -1 on error
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * The i915 drm index or -1 on error
 | 
			
		||||
 */
 | 
			
		||||
int drm_get_card(void)
 | 
			
		||||
{
 | 
			
		||||
@ -242,6 +267,14 @@ static void quiescent_gpu_at_exit_render(int sig)
 | 
			
		||||
	at_exit_drm_render_fd = -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * drm_open_any:
 | 
			
		||||
 *
 | 
			
		||||
 * Open an i915 drm legacy device node.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * The i915 drm file descriptor or -1 on error
 | 
			
		||||
 */
 | 
			
		||||
int drm_open_any(void)
 | 
			
		||||
{
 | 
			
		||||
	static int open_count;
 | 
			
		||||
@ -259,6 +292,14 @@ int drm_open_any(void)
 | 
			
		||||
	return fd;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * drm_open_any:
 | 
			
		||||
 *
 | 
			
		||||
 * Open an i915 drm render device node.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * The i915 drm file descriptor or -1 on error
 | 
			
		||||
 */
 | 
			
		||||
int drm_open_any_render(void)
 | 
			
		||||
{
 | 
			
		||||
	static int open_count;
 | 
			
		||||
 | 
			
		||||
@ -48,6 +48,12 @@ static inline void *mmap64(void *addr, size_t length, int prot, int flags,
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ARRAY_SIZE:
 | 
			
		||||
 * @arr: static array
 | 
			
		||||
 *
 | 
			
		||||
 * Macro to compute the size of the static array @arr.
 | 
			
		||||
 */
 | 
			
		||||
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
 | 
			
		||||
 | 
			
		||||
int drm_get_card(void);
 | 
			
		||||
@ -56,7 +62,25 @@ int drm_open_any_render(void);
 | 
			
		||||
 | 
			
		||||
void gem_quiescent_gpu(int fd);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * do_or_die:
 | 
			
		||||
 * @x: command
 | 
			
		||||
 *
 | 
			
		||||
 * Simple macro to execute x and check that it's return value is 0. Presumes
 | 
			
		||||
 * that in any failure case the return value is non-zero and a precise error is
 | 
			
		||||
 * logged into errno. Uses igt_assert() internally.
 | 
			
		||||
 */
 | 
			
		||||
#define do_or_die(x) igt_assert((x) == 0)
 | 
			
		||||
#define do_ioctl(fd, ptr, sz) igt_assert(drmIoctl((fd), (ptr), (sz)) == 0)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * do_ioctl:
 | 
			
		||||
 * @fd: open i915 drm file descriptor
 | 
			
		||||
 * @ioc: ioctl op definition from drm headers
 | 
			
		||||
 * @ioc_data: data pointer for the ioctl operation
 | 
			
		||||
 *
 | 
			
		||||
 * This macro wraps drmIoctl() and uses igt_assert to check that it has been
 | 
			
		||||
 * successfully executed.
 | 
			
		||||
 */
 | 
			
		||||
#define do_ioctl(fd, ioc, ioc_data) igt_assert(drmIoctl((fd), (ioc), (ioc_data)) == 0)
 | 
			
		||||
 | 
			
		||||
#endif /* DRMTEST_H */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user