Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 318313d1 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-next-2016-11-16' of git://anongit.freedesktop.org/git/drm-misc into drm-next

Another pile of misc:
- Explicit fencing for atomic! Big thanks to Gustavo, Sean, Rob 3x, Brian
  and anyone else I've forgotten to make this happen.
- roll out fbdev helper ops to drivers (Stefan Christ)
- last bits of drm_crtc split-up&kerneldoc
- some drm_irq.c crtc functions cleanup
- prepare_fb helper for cma, works correctly with explicit fencing (Marek
  Vasut)
- misc small patches all over

* tag 'drm-misc-next-2016-11-16' of git://anongit.freedesktop.org/git/drm-misc: (51 commits)
  drm/fence: add out-fences support
  drm/fence: add fence timeline to drm_crtc
  drm/fence: add in-fences support
  drm/bridge: analogix_dp: return error if transfer none byte
  drm: drm_irq.h header cleanup
  drm/irq: Unexport drm_vblank_on/off
  drm/irq: Unexport drm_vblank_count
  drm/irq: Make drm_vblank_pre/post_modeset internal
  drm/nouveau: Use drm_crtc_vblank_off/on
  drm/amdgpu: Use drm_crtc_vblank_on/off for dce6
  drm/color: document NULL values and default settings better
  drm: Drop externs from drm_crtc.h
  drm: Move tile group code into drm_connector.c
  drm: Extract drm_mode_config.[hc]
  Revert "drm: Add aspect ratio parsing in DRM layer"
  Revert "drm: Add and handle new aspect ratios in DRM layer"
  drm/print: Move kerneldoc next to definition
  drm: Consolidate dumb buffer docs
  drm: Clean up kerneldoc for struct drm_driver
  drm: Extract drm_drv.h
  ...
parents 4473904c beaf5af4
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -86,10 +86,10 @@ reservation
fence
~~~~~

.. kernel-doc:: drivers/dma-buf/fence.c
.. kernel-doc:: drivers/dma-buf/dma-fence.c
   :export:

.. kernel-doc:: include/linux/fence.h
.. kernel-doc:: include/linux/dma-fence.h
   :internal:

.. kernel-doc:: drivers/dma-buf/seqno-fence.c
@@ -98,10 +98,10 @@ fence
.. kernel-doc:: include/linux/seqno-fence.h
   :internal:

.. kernel-doc:: drivers/dma-buf/fence-array.c
.. kernel-doc:: drivers/dma-buf/dma-fence-array.c
   :export:

.. kernel-doc:: include/linux/fence-array.h
.. kernel-doc:: include/linux/dma-fence-array.h
   :internal:

.. kernel-doc:: drivers/dma-buf/reservation.c
+4 −1
Original line number Diff line number Diff line
@@ -143,6 +143,9 @@ Device Instance and Driver Handling
.. kernel-doc:: drivers/gpu/drm/drm_drv.c
   :export:

.. kernel-doc:: include/drm/drm_drv.h
   :internal:

Driver Load
-----------

@@ -363,7 +366,7 @@ Printer
.. kernel-doc:: include/drm/drm_print.h
   :internal:

.. kernel-doc:: include/drm/drm_print.h
.. kernel-doc:: drivers/gpu/drm/drm_print.c
   :export:


+0 −8
Original line number Diff line number Diff line
@@ -261,14 +261,6 @@ Plane Helper Reference
.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
   :export:

Tile group
==========

# FIXME: This should probably be moved into a property documentation section

.. kernel-doc:: drivers/gpu/drm/drm_crtc.c
   :doc: Tile group

Auxiliary Modeset Helpers
=========================

+28 −52
Original line number Diff line number Diff line
@@ -15,25 +15,24 @@ be setup by initializing the following fields.
-  struct drm_mode_config_funcs \*funcs;
   Mode setting functions.

Modeset Base Object Abstraction
===============================
Mode Configuration

.. kernel-doc:: include/drm/drm_mode_object.h
   :internal:
KMS Core Structures and Functions
=================================

.. kernel-doc:: drivers/gpu/drm/drm_mode_object.c
.. kernel-doc:: drivers/gpu/drm/drm_mode_config.c
   :export:

KMS Data Structures
===================

.. kernel-doc:: include/drm/drm_crtc.h
.. kernel-doc:: include/drm/drm_mode_config.h
   :internal:

KMS API Functions
=================
Modeset Base Object Abstraction
===============================

.. kernel-doc:: drivers/gpu/drm/drm_crtc.c
.. kernel-doc:: include/drm/drm_mode_object.h
   :internal:

.. kernel-doc:: drivers/gpu/drm/drm_mode_object.c
   :export:

Atomic Mode Setting Function Reference
@@ -45,6 +44,15 @@ Atomic Mode Setting Function Reference
.. kernel-doc:: include/drm/drm_atomic.h
   :internal:

CRTC Abstraction
================

.. kernel-doc:: drivers/gpu/drm/drm_crtc.c
   :export:

.. kernel-doc:: include/drm/drm_crtc.h
   :internal:

Frame Buffer Abstraction
========================

@@ -72,46 +80,8 @@ DRM Format Handling
Dumb Buffer Objects
===================

The KMS API doesn't standardize backing storage object creation and
leaves it to driver-specific ioctls. Furthermore actually creating a
buffer object even for GEM-based drivers is done through a
driver-specific ioctl - GEM only has a common userspace interface for
sharing and destroying objects. While not an issue for full-fledged
graphics stacks that include device-specific userspace components (in
libdrm for instance), this limit makes DRM-based early boot graphics
unnecessarily complex.

Dumb objects partly alleviate the problem by providing a standard API to
create dumb buffers suitable for scanout, which can then be used to
create KMS frame buffers.

To support dumb objects drivers must implement the dumb_create,
dumb_destroy and dumb_map_offset operations.

-  int (\*dumb_create)(struct drm_file \*file_priv, struct
   drm_device \*dev, struct drm_mode_create_dumb \*args);
   The dumb_create operation creates a driver object (GEM or TTM
   handle) suitable for scanout based on the width, height and depth
   from the struct :c:type:`struct drm_mode_create_dumb
   <drm_mode_create_dumb>` argument. It fills the argument's
   handle, pitch and size fields with a handle for the newly created
   object and its line pitch and size in bytes.

-  int (\*dumb_destroy)(struct drm_file \*file_priv, struct
   drm_device \*dev, uint32_t handle);
   The dumb_destroy operation destroys a dumb object created by
   dumb_create.

-  int (\*dumb_map_offset)(struct drm_file \*file_priv, struct
   drm_device \*dev, uint32_t handle, uint64_t \*offset);
   The dumb_map_offset operation associates an mmap fake offset with
   the object given by the handle and returns it. Drivers must use the
   :c:func:`drm_gem_create_mmap_offset()` function to associate
   the fake offset as described in ?.

Note that dumb objects may not be used for gpu acceleration, as has been
attempted on some ARM embedded platforms. Such drivers really must have
a hardware-specific ioctl to allocate suitable buffer objects.
.. kernel-doc:: drivers/gpu/drm/drm_dumb_buffers.c
   :doc: overview

Plane Abstraction
=================
@@ -311,6 +281,12 @@ Color Management Properties
.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
   :export:

Tile Group Property
-------------------

.. kernel-doc:: drivers/gpu/drm/drm_connector.c
   :doc: Tile group

Existing KMS Properties
-----------------------

+3 −3
Original line number Diff line number Diff line
@@ -258,19 +258,19 @@ Global GTT views
GTT Fences and Swizzling
------------------------

.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence.c
.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence_reg.c
   :internal:

Global GTT Fence Handling
~~~~~~~~~~~~~~~~~~~~~~~~~

.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence.c
.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence_reg.c
   :doc: fence register handling

Hardware Tiling and Swizzling Details
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence.c
.. kernel-doc:: drivers/gpu/drm/i915/i915_gem_fence_reg.c
   :doc: tiling swizzling details

Object Tiling IOCTLs
Loading