summaryrefslogtreecommitdiff
path: root/FAQ
blob: 142d00da605b69cef9d6754db15fa9cdff6ee904 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
FAQ for xf86-video-armada
=========================

Q1. Why does xf86-video-armada Etnadrm backend require etna_viv's
    (aka libetnaviv) include files?

A1. xf86-video-armada's etnaviv backend is shared between the libetnaviv
    and etnadrm drivers.  The structure of these drivers is:

    Xorg -> etnaviv front end -> gpu command stream -> kernel interface

    The front end is common between etnadrm and etnaviv GPU drivers,
    and shares datastructures and function names with libetnaviv.  This
    means that both GPU drivers generate indentical GPU command streams
    for the same Xorg operations.

    The only parts that differ between the two backends is the kernel
    interface, which is responsible for submitting the command stream to
    the kernel, waiting for completion of these streams, and providing
    GPU buffer memory management.

    For etnaviv, we use the libetnaviv library, which requires certain
    structures to be used not only at the kernel interface level, but
    throughout the driver.

    For etnadrm, we use our own kernel interface which is binary
    compatible with libetnaviv.  Hence, libetnaviv headers are required
    when building etnadrm to maintain binary compatibility with
    libetnaviv.

    The alternative would be to maintain and build three entirely
    separate GPU backends - which is not desirable.  Having common code
    which generates exactly the same command stream means that when a
    bug is found, we can compare the behaviour of the DRM kernel
    support with Vivante's kernel support.

Q2. Do I need to build etna_viv (aka, libetnaviv) to build the etnadrm
    backend?

A2. No, it should not be necessary to build etna_viv or configure it
    when building only the etnadrm GPU backend.  xf86-video-armada only
    requires the libetnaviv include files in this case.  At the time of
    writing, these are:

      etnaviv/cmdstream.xml.h
      etnaviv/common.xml.h
      etnaviv/etna.h
      etnaviv/etna_bo.h
      etnaviv/etna_util.h
      etnaviv/state.xml.h
      etnaviv/state_2d.xml.h
      etnaviv/viv.h