diff mbox

[libdrm,v2,1/2] etnaviv: sync uapi header

Message ID 20170407120644.405-1-p.zabel@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Philipp Zabel April 7, 2017, 12:06 p.m. UTC
Import the etnaviv header changes from kernel commits 9ad59fea162c
("drm/etnaviv: submit support for in-fences") and 78ec187f64fa
("drm/etnaviv: submit support for out-fences") for fence fd support.

The drm_etnaviv_gem_submit structure was extended to include a flags
field, new flags for in-fence and out-fence fds and an input/output
fence fd field.

This is one-way backwards compatible because old userspace code passing
a short structure not including the flags field to new kernels will
cause the remaining fields to be zero-filled. New userspace code must
make sure to only pass the short structure to old kernels, though.

Not generated using make headers_install, since the drm/etnaviv_drm.h
uapi header is not installed yet by the kernel.
Copied from the airlied/drm-next commit 78ec187f64fa.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
---
v2: improved commit message
---
 etnaviv/etnaviv_drm.h | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Emil Velikov April 8, 2017, 7:55 p.m. UTC | #1
On 7 April 2017 at 13:06, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> Import the etnaviv header changes from kernel commits 9ad59fea162c
> ("drm/etnaviv: submit support for in-fences") and 78ec187f64fa
> ("drm/etnaviv: submit support for out-fences") for fence fd support.
>
> The drm_etnaviv_gem_submit structure was extended to include a flags
> field, new flags for in-fence and out-fence fds and an input/output
> fence fd field.
>
> This is one-way backwards compatible because old userspace code passing
> a short structure not including the flags field to new kernels will
> cause the remaining fields to be zero-filled. New userspace code must
> make sure to only pass the short structure to old kernels, though.
>
> Not generated using make headers_install, since the drm/etnaviv_drm.h
> uapi header is not installed yet by the kernel.
IIRC all the other drivers should already install the header, so we
want to fix this, right?
If we're too late for this kernel cycle, we will land the patch as-is.

Thanks
Emil
Philipp Zabel April 10, 2017, 8:48 a.m. UTC | #2
On Sat, 2017-04-08 at 20:55 +0100, Emil Velikov wrote:
> On 7 April 2017 at 13:06, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> > Import the etnaviv header changes from kernel commits 9ad59fea162c
> > ("drm/etnaviv: submit support for in-fences") and 78ec187f64fa
> > ("drm/etnaviv: submit support for out-fences") for fence fd support.
> >
> > The drm_etnaviv_gem_submit structure was extended to include a flags
> > field, new flags for in-fence and out-fence fds and an input/output
> > fence fd field.
> >
> > This is one-way backwards compatible because old userspace code passing
> > a short structure not including the flags field to new kernels will
> > cause the remaining fields to be zero-filled. New userspace code must
> > make sure to only pass the short structure to old kernels, though.
> >
> > Not generated using make headers_install, since the drm/etnaviv_drm.h
> > uapi header is not installed yet by the kernel.
> IIRC all the other drivers should already install the header, so we
> want to fix this, right?
> If we're too late for this kernel cycle, we will land the patch as-is.

Yes, I'll send a kernel patch for the next cycle. For now I'll just
resend the patch as-is but with the new symbol added to symbol-check.

regards
Philipp
diff mbox

Patch

diff --git a/etnaviv/etnaviv_drm.h b/etnaviv/etnaviv_drm.h
index 2584c1cc..76f6f78a 100644
--- a/etnaviv/etnaviv_drm.h
+++ b/etnaviv/etnaviv_drm.h
@@ -154,6 +154,12 @@  struct drm_etnaviv_gem_submit_bo {
  * one or more cmdstream buffers.  This allows for conditional execution
  * (context-restore), and IB buffers needed for per tile/bin draw cmds.
  */
+#define ETNA_SUBMIT_NO_IMPLICIT         0x0001
+#define ETNA_SUBMIT_FENCE_FD_IN         0x0002
+#define ETNA_SUBMIT_FENCE_FD_OUT        0x0004
+#define ETNA_SUBMIT_FLAGS		(ETNA_SUBMIT_NO_IMPLICIT | \
+					 ETNA_SUBMIT_FENCE_FD_IN | \
+					 ETNA_SUBMIT_FENCE_FD_OUT)
 #define ETNA_PIPE_3D      0x00
 #define ETNA_PIPE_2D      0x01
 #define ETNA_PIPE_VG      0x02
@@ -167,6 +173,8 @@  struct drm_etnaviv_gem_submit {
 	__u64 bos;            /* in, ptr to array of submit_bo's */
 	__u64 relocs;         /* in, ptr to array of submit_reloc's */
 	__u64 stream;         /* in, ptr to cmdstream */
+	__u32 flags;          /* in, mask of ETNA_SUBMIT_x */
+	__s32 fence_fd;       /* in/out, fence fd (see ETNA_SUBMIT_FENCE_FD_x) */
 };
 
 /* The normal way to synchronize with the GPU is just to CPU_PREP on