summaryrefslogtreecommitdiff
path: root/benchmarks
AgeCommit message (Collapse)Author
2015-10-06benchmarks/gem_blt: Fix compilation after rebase and add batch-sizeChris Wilson
Add an option to do more than one copy per batch. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-06benchmarks: Measure BLT performanceChris Wilson
Execute N blits and time how long they complete to measure both GPU limited bandwidth and submission overhead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-02benchmarks: Fix build errors on Android M-DessertDerek Morton
Android M-Dessert treats implicit declaration of function warnings as errors resulting in igt failing to build. This patch fixes the errors by including missing header files as required. Mostly this involved including igt.h in the benchmarks. Signed-off-by: Derek Morton <derek.j.morton@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-09-11convert drm_open_any*() calls to drm_open_driver*(DRIVER_INTEL) calls with cocciMicah Fedke
Apply the new API to all call sites within the test suite using the following semantic patch: // Semantic patch for replacing drm_open_any* with arch-specific drm_open_driver* calls @@ identifier i =~ "\bdrm_open_any\b"; @@ - i() + drm_open_driver(DRIVER_INTEL) @@ identifier i =~ "\bdrm_open_any_master\b"; @@ - i() + drm_open_driver_master(DRIVER_INTEL) @@ identifier i =~ "\bdrm_open_any_render\b"; @@ - i() + drm_open_driver_render(DRIVER_INTEL) @@ identifier i =~ "\b__drm_open_any\b"; @@ - i() + __drm_open_driver(DRIVER_INTEL) Signed-off-by: Micah Fedke <micah.fedke@collabora.co.uk> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-09-08build: fix unused-result warningsThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-08-21benchmarks/gem_exec_reloc: Allow profiling 0 relocsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-14benchmark/gem_exec_trace: Inline everythingChris Wilson
Avoid the globals and make the dispatch one huge function and hope GCC works some magic. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-14benchmark/gem_exec_tracer: Tweak to handle SNAChris Wilson
SNA starts by feeding in deliberately bad ioctls in order to detect the kernel interface versions. A quick solution is to always feed it to the ioctl and only record the trace if it is valid. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-13benckmarks/Android.mk: Fix building benchmarks for AndroidDerek Morton
The commit "benchmarks: Do not install to system-wide bin/" changed the benchmark file list from bin_PROGRAMS to benchmarks_PROGRAMS. However Android.mk was not updated, resulting in IGT failing to build for Android. This commit adds that change. It also adds LOCAL_MODULE_PATH to specify where the built benchmarks should be put. v2: I discovered that the existing definitions of LOCAL_MODULE_PATH were creating what should have been an invalid path. Not sure how it was ever working previously, but fixed now. Signed-off-by: Derek Morton <derek.j.morton@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-08-11benchmarks: Add a microbenchmark for relocation overheadChris Wilson
Allow specification of the many different busyness modes and relocation interfaces, along with the number of buffers to use and relocations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-10benchmarks/gem_exec_trace: Unmap each trace after replayChris Wilson
Just on the off chance someone is replaying a bunch of traces, remember to cleanup up. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-10benchmarks/gem_exec_trace: Mark the mmap as sequentially readChris Wilson
Use madvise(MADV_SEQUENTIAL) to let the kernel optimise for our straightforward sequential read pattern. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-10benchmarks: Rename the gem_exec_trace tracer moduleChris Wilson
Now that we actually install the benchmarks into a sane location, slightly abuse it to put the tracer for gem_exec_trace alongside. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-10benchmarks/gem_exec_trace: Clear all new bo handlesChris Wilson
When reallocing the bo array, remember to set the new entries to 0. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-10benchmarks: Do not install to system-wide bin/Chris Wilson
These benchmarks are first-and-foremost development tools, not aimed at general users. As such they should not be installed into the system-wide bin/ directory, but installed into libexec/. v2: Now actually install beneath ${libexec} Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-09benchmarks: Record and replay calls to EXECBUFFER2Chris Wilson
This slightly idealises the behaviour of clients with the aim of measuring the kernel overhead of different workloads. This test focuses on the cost of relocating batchbuffers. A trace file is generated with an LD_PRELOAD intercept around execbuffer, which we can then replay at our leisure. The replay replaces the real buffers with a set of empty ones so the only thing that the kernel has to do is parse the relocations. but without a real workload we lose the impact of having to rewrite active buffers. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-08-06benchmarks/Android.mk, tools/Android.mk: Fix android build errorDerek Morton
Recently added tools / benckmarks have the same module name as existing tests. Android does not allow duplicate modules. This patch appends _benchmark and _tool to the module names used when building benckmarks and tools to prevent clashes with tests of the same name. Signed-off-by: Derek Morton <derek.j.morton@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-07-24benchmark: Measure allocation time for objectsChris Wilson
A basic measurement, how fast can we create and populate an object with backing storage? Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24benchmarks: Measure mmap fault latencyChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24benchmarks: Benchmarkify gem_exec_ctxChris Wilson
Measure the overhead of execution when doing nothing, switching between a pair of contexts, or creating a new context every time. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24benchmarks: Add kms_vblank to .gitignoreChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23benchmarks: Measure round-trip time for an immediate vblanksChris Wilson
By measuring both the query and the event round trip time, we can make a reasonable estimate of how long it takes for the query to send the vblank following an interrupt. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23benchmarks: gem_prw add the read/write switch to getoptChris Wilson
In my haste to merge the two gem_pread/gem_pwrite, I forgot to write up the command line switch to getopt. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23benchmarks: Add simple mmap benchmarksChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23benchmarks: Add simple pread/pwrite benchmarksChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-22benchmarks: Benchmarkify gem_exec_nopChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-02gem_userptr_benchmark: Test overlapping bo mmu notifier performance impactTvrtko Ursulin
Current userptr kernel implementation downgrades tracking VMA ranges (real userspace ones) to an inefficient linear walk for any process which has instantiated overlapping userptr objects. This adds a test which shows the performance cliff on, most visibly, generic userspace mmap(2) and munmap(2) operations between unsync, non-overlapping and overlapping userptr objects. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Thomas Daniel <thomas.daniel@intel.com>
2015-03-26lib: print a stack trace when a test assertion failsThomas Wood
Add an optional dependency on libunwind to print stack traces when a test assertion fails. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-12Android.mk: replace std=c99 with std=gnu99Tim Gore
The android makefiles were passing the -std=c99 flag to the compiler which disables the typeof keyword. This causes a build fail for a recent addition to igt_aux.h. Change this to -std=gnu99, which is the flag used in the linux build Signed-off-by: Tim Gore <tim.gore@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-08-30batch: Specify number of relocations to accommodateChris Wilson
Since relocations are variable size, depending upon generation, it is easier to handle the resizing of the batch request inside the BEGIN_BATCH macro. This still leaves us with having to resize commands in a few places - which still need adaption for gen8+. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-08-29Prepare for 64bit relocation addressesChris Wilson
This reveal that quite a few locations were writing relocation offsets but only allowing for 32 bit addresses. To reveal such places in active tests, we also now double check that we do not use more batch space than declared. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-23igt/gem_userptr_benchmark: Fix for upstream ioctl numberTvrtko Ursulin
Hardcoding has upsides and downsides. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-04-25test/gem_userptr_*: Fix compile failDaniel Vetter
Also shut up warnings. Those revealed incorrect usage of local variables in conjunction with igt_fixture/igt_subtest. Since those use longjmps we need to move the out of the stackframe those magic blocks are declared in. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-04-25tests/gem_userptr_benchmark: Benchmarking userptr surfaces and impactTvrtko Ursulin
This adds a small benchmark for the new userptr functionality. Apart from basic surface creation and destruction, also tested is the impact of having userptr surfaces in the process address space. Reason for that is the impact of MMU notifiers on common address space operations like munmap() which is per process. v2: * Moved to benchmarks. * Added pointer read/write tests. * Changed output to say iterations per second instead of operations per second. * Multiply result by batch size for multi-create* tests for a more comparable number with create-destroy test. v3: * Use ALIGN macro. * Catchup with big lib/ reorganization. * Removed unused code and one global variable. * Fixed up some warnings. v4: * Fixed feature test, does not matter here but makes it consistent with gem_userptr_blits and clearer. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Brad Volkin <bradley.d.volkin@intel.com> Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-04-24benchmarks: Build them on Android.Tvrtko Ursulin
They build fine so give them some exposure. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-03-22lib: rename intel_gpu_tools.h to intel_io.hDaniel Vetter
With the header cleanup we can now give this header a suitable name, since it now really only contains register access and other I/O functions and assorted definitions. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: unnecessary header removal for drmtest.h, part 2Daniel Vetter
I've left unistd.h in it - it's not strictly required but most users of drmtest.h want it for the open helpers, and then you kinda need to close that file descriptor again ... Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: unnecessary header removal for drmtest.h, part 1Daniel Vetter
Brought a few missing headers to light in ioctl_wrappers.h, too. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-11-06bdw: Update obvious missing blit supportBen Widawsky
This provides a macro that allows us to update all the arbitrary blit commands we have stuck throughout the code. It assumes we don't actually use 64b relocs (which is currently true). This also allows us to easily find all the areas we need to update later when we really use the upper dword. This block was done mostly with a sed job, and represents the easier in test blit implementations. v2 by Oscar: s/OUT_BATCH/BEGIN_BATCH in BLIT_COPY_BATCH_START CC: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
2012-05-22lib: extract kmstest_create_fbDaniel Vetter
We should get more kms tests soon, and not needing to copy-paste a nice test pattern should be useful. That establishes a firm depency of i-g-t on cairo over everything, but I don't care so much about that. Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-01-24Make benchmarks also link against libpciaccessAlan Coopersmith
Fixes Solaris build error on build of intel_upload_blit_large: Undefined first referenced symbol in file pci_device_probe ../lib/.libs/libintel_tools.a(intel_pci.o) (symbol belongs to implicit dependency libpciaccess.so.0) pci_system_init ../lib/.libs/libintel_tools.a(intel_pci.o) (symbol belongs to implicit dependency libpciaccess.so.0) pci_device_find_by_slot ../lib/.libs/libintel_tools.a(intel_pci.o) (symbol belongs to implicit dependency libpciaccess.so.0) ld: fatal: symbol referencing errors. No output written to intel_upload_blit_large Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-01-12Benchmark: use correct src and build locationGaetan Nadon
Headers are found under top_srcdir/... Haeders are CPP flags, not C Flags AM_CPPFLAGS, AM_CFLAGS and LDAAD apply to all targets. libintel_tools.la is located in top_builddir. Acked-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
2012-01-04config: use project wide xorg warnings variableGaetan Nadon
Use CWARNFLAGS as in all of xorg. There seems to be no reason why this module should be different. The warnings were updated recently for those who install the latest util-macros. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-01-04Use standard .gitignore file and layoutGaetan Nadon
Reusing xorg code saves maintenance in the long term. Now that m4/.gitignore is removed, the -I m4 ${ACLOCAL_FLAGS} must be removed to avoid build breakage as m4 is generated and not part of the git source. Acked-by: Cyril Brulebois <kibi@debian.org> Reviewed-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-11-01always require libdrmDaniel Vetter
... and also add the missing files to lib/Makefile.am Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2010-10-26Prepare for split BLT ring on Sandybridge.Chris Wilson
Depends on libdrm 057fab3382c02af54126ce395c43d4e6dce9439a Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31123 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-04-08Enable compilation on non-Intel, non-DRM systems.Chris Wilson
A few of the tools can be performed post-mortem from a different system, so it is useful to be able to compile those tools on those foreign systems. Obviously, any program to interact with the PCI device or talk to GEM will fail on a non-Intel system. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2009-03-31Add a couple of other intel_upload_blit_large variants for comparison.Eric Anholt
2009-03-30intel_upload_blit_*: Fix reporting and generate junk instead of using random.Eric Anholt
Turns out that random completely overwhelmed the cost of the driver stuff in _large.c. I definitely want to generate data, but still be able to see the driver's responsibility.
2009-03-26Initial import of intel-graphics-tools with some microbenchmarks.Eric Anholt