Upstream Graphics: Too Little, Too Late Upstream Graphics: Too - - PowerPoint PPT Presentation

upstream graphics too little too late upstream graphics
SMART_READER_LITE
LIVE PREVIEW

Upstream Graphics: Too Little, Too Late Upstream Graphics: Too - - PowerPoint PPT Presentation

Upstream Graphics: Too Little, Too Late Upstream Graphics: Too Little, Too Late Daniel Vetter, Intel OTC @danvet LPC 2019, Lisbon Everything Great About Upstream Graphics: Too Little, Too Late Upstream Graphics: Too Little, Too Late Daniel


slide-1
SLIDE 1

Upstream Graphics: Too Little, Too Late

Daniel Vetter, Intel OTC @danvet LPC 2019, Lisbon

Upstream Graphics: Too Little, Too Late

slide-2
SLIDE 2

Upstream Graphics: Too Little, Too Late

Daniel Vetter, Intel OTC @danvet LPC 2019, Lisbon

Upstream Graphics: Too Little, Too Late

Everything Great About

slide-3
SLIDE 3

10 or so years ago ...

  • graphics execution manager
  • kernel modesetting
  • drm/i915, drm/radeon
  • proudly celebrating OpenGL 2
  • … and a wasteland
slide-4
SLIDE 4

today

  • 10% of the kernel + userspace
  • 50 atomic modeset drivers (and more others)
  • latest OpenGl, GLES, Vulkan
  • smallest kernel driver 246 lines
  • largest kernel driver 2.2M lines
slide-5
SLIDE 5

Awesome uapi: Atomic Modeset

  • lots of planes for SoC
  • lots of outputs for desktop
  • blending, writeback, color space conversions, …
  • gracefully handling link failures
  • content protection
  • everything else
slide-6
SLIDE 6

Awesome APIs for Rendering

  • dma_buf, dma_resv, dma_fence for buffer sharing
  • ww_mutex for graph locking problems
  • drm_syncobj, better uAPi for fences
slide-7
SLIDE 7

Helpers, Everywhere you look!

  • modular atomic modeset helpers
  • simple display pipe
  • DisplayPort, MIPI, HDMI, EDID
  • self refresh display/damage tracking
  • fbdev emulation
slide-8
SLIDE 8

Helpers, Everywhere you render!

  • gpu scheduler
  • TTM refactoring and helperification
  • VRAM helpers, SHMEM helpers, ...
  • batteries included by default
slide-9
SLIDE 9

More Awesome Stuff

  • bridge and panel drivers, components
  • hot(un)plug fixing
  • in-kernel selftests (we need KUnit asap)
  • IGT gpu tests: cross driver userspace testsuite
slide-10
SLIDE 10

Awesome Stuff, in Userspace!

  • gallium: GL stack to rule them all
  • gpu compiler troubles settling on NIR
  • r/e tools, better than the real docs
  • Khronos is opening up
slide-11
SLIDE 11

Userspace drivers

  • panfrost, lima, freedreno, etnaviv
  • even Intel now on board with Iris
  • radv+ACO, one handful hackers vs. AMD
slide-12
SLIDE 12

Great Community

  • gitlab everywhere, Mesa3D leading
  • (kernel stuck on infrastructure work)
  • XDC running on LPC
  • XDC haz sponsors now!
slide-13
SLIDE 13

NVIDIA

slide-14
SLIDE 14

Upstream Graphics: Too Little, Too Late

Daniel Vetter, Intel OTC @danvet LPC 2019, Lisbon

Upstream Graphics: Too Little, Too Late

Everything Great About

NOT

slide-15
SLIDE 15

Celebrating Vendor Lock-in

  • ~20 years of desktop GL
  • ~15 years of CUDA
  • high margins need a moat
slide-16
SLIDE 16

NVIDIA and Linux

  • libglvnd
  • EGL_display_device
  • EGL_streams
  • buffer format modifiers
  • non-redistributable signed firmware
  • … not trying would be stupid (for NVIDIA)
slide-17
SLIDE 17

Open GPU Driver Business Case

  • more reverse-engineered drivers than not
  • only 3 hw vendors do open source GPU drivers
  • fairly big teams
  • need to pay the bills
slide-18
SLIDE 18

Upstream Graphics: Too Little, Too Late

Daniel Vetter, Intel OTC @danvet LPC 2019, Lisbon

Upstream Graphics: Too Little, Too Late

Everything Great About

NOT

Too Little, Too Late

slide-19
SLIDE 19

e.g. Android, by Google

  • ~half year from linux-next to release, worst case
  • one year to the next LTS, worst case
  • one year for Google to rebase
  • add more for non-Google Android
  • same story for servers, ...
slide-20
SLIDE 20

There is no LTS

  • sometimes different baseline
  • often different drivers/gpu
  • often tons of patches
  • everyone is different
slide-21
SLIDE 21

Shipping Upstream First

  • cp -R a/drivers/gpu/* b/drivers/gpu
  • cherry-pick specific patches (hundreds)
  • forklift entire upstream history (thousands patches)
  • DKMS + a few hundred fixups
slide-22
SLIDE 22

Stable Driver ABI

  • it works in userspace, all helpers linked into drivers
  • ship random upstream driver snapshot
  • also: Android project treble
  • defeats code sharing
  • stable subsystem ABI?
slide-23
SLIDE 23

Shipping Upstream First

  • refactor for upstream
  • add the crap back in
  • ship it
  • [there is no profit]
  • sounded good 10 years ago
slide-24
SLIDE 24

Linux Kernel: Upstream First

  • some customers require upstream
  • … and then proceed to ignore it
  • too big, too fast for stable ABI
  • too little, too late for upstream first
➔ kernel's upstream first business case is broken
slide-25
SLIDE 25

Linux Kernel: Upstream First

  • some customers require upstream
  • … and then proceed to ignore it
  • too big, too fast for stable ABI
  • too little, too late for upstream first
➔ kernel's upstream first business case is broken

it's a sham