platform: graphics: Make tool Harvest use generic devices.

Harvest started as a tool for running traces on connected crouton and
crostini devices. Yet, for the most part Harvest can run traces on any
connected device, as long as that device is reachable through SSH. This
capability is becoming more important as we move beyond crostini.

The crouton/crostini specificity is largely contained in the
configuration code. This CL removes that so that Harvest can run traces
and collect information from any two connected devices.

The changes are as follows:
1. Json configuration for the Profiler adds a DeviceInfo property. For
   now, DeviceInfo consists of the machine name and exec env (e.g.
  "crostini").
2. Harvest config has two new properties called TargetDevice1 and
   TargetDevice2. What type of devices they are is determined by the
   DeviceInfo property (above). Properties CrostiniProfilerConfig and
   CroutonProfilerConfig are maintained as legacy properties but will
   eventually be deprecated.
3. The ability to compare FPS data when two devices run traces in
   parallel is maintained. If one of the devices is a crouton device, it
   is automatically picked as the reference device. Otherwise, the
   comparison order is arbitrary.
4. The Harvest cmd-line options no-crostini and no-crouton are gone.
   A device can easily be disabled in the config file, for instance by
   renaming its property "TargetDevice1" to "__TargetDevice1".
5. The config options for collecting machine protobufs from connected
   devices have changed a bit. The device name and exec env now come
   from the DeviceInfo property introduced in (1). To avoid confusion,
   the config name is renamed "DeviceInfoTool" and look as follows:

   "DeviceInfoTool": {
     "getDeviceInfoBinPath": "/home/gwink/Gaming/profiles/bin/get_device_info",
     "protoBufsOutputDir": "/home/gwink/Gaming/profiles/protobufs",
     "owner": "user/gwink", // optional owner
     "machine": {
       "enabled": true,
       "outputFileTemplate": "machine-info-[[exec-env]]-[[hwid]].json"
     }
   }

BUG=None
TEST=Build with emerge and make + manual testing.

Change-Id: I459ef32912c62248cc1059a8a0756622f8fe9ae9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/graphics/+/2327171
Tested-by: Georges Winkenbach <gwink@chromium.org>
Commit-Queue: Georges Winkenbach <gwink@chromium.org>
Reviewed-by: John Bates <jbates@chromium.org>
7 files changed
tree: bb8adeb14d5752b21c613203bb828645ca57e1f5
  1. src/
  2. .gitignore
  3. OWNERS
  4. PRESUBMIT.cfg
  5. PRESUBMIT.py
  6. pylintrc