Age | Commit message (Collapse) | Author |
|
meson prefers packages dependencies over passing arount static
libraries, because those also include linker flags, include dirs and
everything else.
While at it pull the special cases out from the common build stanzas
like we do with other special cases.
Just a bit of ocd to keep everything polished.
v2: Don't forget to add perf_pmu to the test list (Petri).
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
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 <arkadiusz.hiler@intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
This breaks make distcheck otherwise.
Cc: Eric Anholt <eric@anholt.net>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Tested-by: Petri Latvala <petri.latvala@intel.com>
|
|
Add busy and busy-avg balancers which make balancing decisions by looking
at engine busyness via the i915 PMU.
And thus are able to make decisions on the actual instantaneous load of
the system, and not use metrics that lag behind by a batch or two. In
doing so, each client should be able to greedily maximise their own
usage of the system, leading to improved load balancing even in the face
of other uncooperative clients. On the other hand, we are only using the
instantaneous load without coupling in the predictive factor for dispatch
and execution length.
v2:
* Commit text. (Chris Wilson)
* Rename get_stats to get_pmu_stats. (Chris Wilson)
* Fix PMU readout in VCS remap mode.
v3:
* Integrated Petri's meson build recipe.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala@intel.com>
|
|
Code on loop() function shadowed function parameter which led
to inability to try out different engines in the test: we always
loaded RCS0.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103804
Signed-off-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The MMAP_V2 is replaced by just using MMAP, since the official header
has the updated struct. The gem_create_v2 and gem_get_aperture are
left as is, because they seem to not be reflected in the UABI header!
Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
v2: Hook the syncobj array to the execbuf!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Adding LIBDRM_INTEL_BENCHMARKS into benchmarks_PROGRAMS had a tab
before the assignment, making the line be inserted into the Makefile
as is instead of being evaluated by automake.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
Why?
Because it's fast.
Like really, really fast.
Some data (from a snb laptop, so rather lower-powered):
- Incremental build after $ touch lib/igt_core.c with meson: 0.6s
It notices that the symbol list of the libigt.so hasn't changed and
doesn't bother re-linking the almost 300 binaries we have. make -j 6
for the same scenario takes 44s.
- Incremental build with nothing changed: make: 0.7s, meson: 0.2s This
means stuff like --disable-git-hash is entirely pointless with
meson, it's faster than a make ever can be (with 0.6s).
- Reconfigure stage: ninja reconfigure 0.8s vs. ./configure 8.6s)
- Running tests, after a full build: ninja test 6s vs. make check 24s
- Full build (i.e. including ./autogen.sh respectively meson build),
including tests, from a pristine git checkout. automake 2m49s vs.
meson 44s.
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Daniel Stone <daniel@fooishbar.org>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
We are, the build system takes care of that.
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
In meson I want to just set this everywhere (no reason not to), and
doing so will allow us to clean up a few things.
But that means autofoo needs to follow suit.
v2: Rebase.
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Jani Nikula <jani.nikula@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Each Linux distro takes a different spin on providing kernel's uapi
headers (especialy the *drm*.h).
You can get them with linux-headers, you can get them with libdrm.
Sometime you can even get them twice, from both sources.
Sometimes the headers match your kernel version, sometimes you end up
stuck with headers matching the kernel that the given release of the
distro came out with.
This makes things harder for code that does not depend on libdrm, as we
cannot have sane ./configure-time checks.
So let's define LOCAL_ version for FENCE and EXECBUFFER2_WB defines
until all the stable distros catch up (+/- some epsilon).
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
|
|
Keep userspace light and don't spend time testing the result if we don't
use it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
These ones demonstrate fence usage and also mixing them with
data dependencies.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
It was the only one with no randomness.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Simulates a single decoder feeding multiple processing and
encoding pipelines.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
VCS2 needs to be redirected to BCS in the remapping mode
otherwise the update will get missed.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Maximum has to be larger than minimum and all values positive.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
An approximation of in kernel balancing where balancing
decision is postponed to just before submitting the batch
for execution.
This is implemented by waiting on data dependencies in
userspace before submitting each batch.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
This one assigns VCS engines for each created context in a round-
robin fashion. By default each client starts the assignment from
the first engine.
In global mode the engines are assigned in the round-robin fashion
between all the clients - which is identical to the i915 behaviour.
Important difference is that doing it from gem_wsim means the
assignment always start from a known point so the run-to-run
behaviour is identical and repeatable, contrary to when i915 round-
robin assignment is used.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Also check that the usage makes sense.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Same as in other benchmarks using them, as not every system is updated
with libdrm having those defines.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Use drm stubs that sit under lib/stubs.
Also drop strange, nonexistent additions to LOCAL_C_INCLUDES.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
On Android libkmod.h is nested under libkmod directory, so we should
include appropriately.
Also we need to link with it.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
gem_execbuf_wr was duplicated in multiple places.
Moving everything to lib/
Signed-off-by: Lukasz Fiedorowicz <lukasz.fiedorowicz@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
In this mode ('-G' on the command line) all balancing operations
are routed via the first client so the complete balancing state
is shared. In other words the overall balancing behaviours is
like there is only one client submitting the aggregate workload.
This can help with the observed metrics and lead to better
balancing decisions in a lot of cases.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Refactoring for upcoming changes.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Will make the userspace balancing daemon simulation easier.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Document priority support in the help text.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Slaves just keep on running, far beyond the repeat target of their
master.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Need to close more pipe ends to support master with more than
one background workloads.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Just a micro-optimisation to avoid copying back the struct to userspace
if we aren't looking for an output.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Two new workload commands are added, 'f' and 'q.<idx>' which
enable creation and signalling of non i915 fences.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Introduce an anonymous union so each step type can use its own
name for the metadata.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Add sync fence dependency support to workload steps.
Only one sync fence dependency per step is supported at the
moment.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Just compact it a bit by avoiding the min != max check
duplication and change get_duration to change w_step.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Used with the '-a' command line switch which follows the same
usage as '-w' and '-W', it enables to add append workload steps
to the end of all normal workloads.
This for example allows running any workload in the real-time
mode:
gem_wsim -w <some-workload> -a p.16667
Makes a workload to be run with the 60 Hz period.
At the same time fix the periodic mode execution with dropped
frames, or almost dropped frames.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Tidy last in the array presumed offset setting even though this
code path is not used at the moment.
Also use READ_ONCE on all fields we are trying to read from the
status page.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Do the GPU quiesce as close as possible in time to the start of
the workload in order to minimize the gap in engine utilization
tracking.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
We need to track queue depth not just when we are asked to load balance
but for specific engine requests so that we include those in our
balancing.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Simple code tidy to reduce some duplication.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|