On 06/23/2017 10:34 PM, Sergei Shtylyov wrote:
Index: media_tree/Documentation/media/v4l-drivers/rcar_imr.rst
===================================================================
--- /dev/null
+++ media_tree/Documentation/media/v4l-drivers/rcar_imr.rst
@@ -0,0 +1,86 @@
+Renesas R-Car Image Rendeder (IMR) Driver

Rendeder -> Renderer

+=========================================
+
+This file documents some driver-specific aspects of the IMR driver, such as
+driver-specific ioctls.
+
+The ioctl reference
+~~~~~~~~~~~~~~~~~~~
+
+VIDIOC_IMR_MESH - Set mapping data
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Argument: struct imr_map_desc
+
+**Description**:
+
+       This ioctl sets up the mesh using which the input frames will be

s/using/through/

+       transformed into the output frames. The mesh can be strictly rectangular
+       (when IMR_MAP_MESH bit is set in imr_map_desc::type) or arbitrary (when
+       that bit is not set).
+
+       A rectangular mesh consists of the imr_mesh structure followed by M*N
+       vertex objects (where M is imr_mesh::rows and N is imr_mesh::columns).
+       In case either IMR_MAP_AUTOSG or IMR_MAP_AUTODG bits were set in
+       imr_map_desc::type, imr_mesh::{x|y}0 specify the coordinates of the top
+       left corner of the auto-generated mesh and imr_mesh::d{x|y} specify the
+       mesh's X/Y steps.

What if any of the other types are used like IMR_MAP_LUCE?

Is this documented in a Renesas datasheet? If so, add a reference to that in 
this
documentation.

+
+       An arbitrary mesh consists of the imr_vbo structure followed by N
+       triangle objects (where N is imr_vbo::num), consisting of 3 vertex
+       objects each.
+
+       A vertex object has a complex structure:
+
+.. code-block:: none
+
+       __u16   v               vertical   \ source coordinates (only present
+       __u16   u               horizontal / if IMR_MAP_AUTOSG isn't set)
+       __u16   Y               vertical   \ destination coordinates (only here
+       __u16   X               horizontal / if IMR_MAP_AUTODG isn't set)
+       __s8    lofst           offset \  luminance correction parameters
+       __u8    lscal           scale   > (only present if IMR_MAP_LUCE
+       __u16   reserved               /  is set)
+       __s8    vrofs           V value offset \  hue correction parameters
+       __u8    vrscl           V value scale   \ (only present if IMR_MAP_CLCE
+       __s8    ubofs           U value offset  / is set)
+       __u8    ubscl           U value scale  /

Is this the internal structure? Or something that userspace has to fill in?
It's not clear at all.

I recommend giving a few code examples of how this should be used.

+
+**Return value**:
+
+       On success 0 is returned. On error -1 is returned and errno is set
+       appropriately.
+
+**Data types**:
+
+.. code-block:: none
+
+       * struct imr_map_desc
+
+       __u32   type            mapping types

This is a bitmask? If so, what combination of bits are allowed?

+       __u32   size            total size of the mesh structure
+       __u64   data            map-specific user-pointer
+
+       IMR_MAP_MESH            regular mesh specification
+       IMR_MAP_AUTOSG          auto-generated source coordinates
+       IMR_MAP_AUTODG          auto-generated destination coordinates
+       IMR_MAP_LUCE            luminance correction flag
+       IMR_MAP_CLCE            chromacity correction flag

You probably mean 'chroma'. 'chromacity' isn't a word.

+       IMR_MAP_TCM             vertex clockwise-mode order
+       IMR_MAP_UVDPOR(n)       source coordinate decimal point position
+       IMR_MAP_DDP             destination coordinate sub-pixel mode
+       IMR_MAP_YLDPO(n)        luminance correction offset decimal point
+                               position
+       IMR_MAP_UBDPO(n)        chromacity (U) correction offset decimal point
+                               position
+       IMR_MAP_VRDPO(n)        chromacity (V) correction offset decimal point
+                               position

There is no documentation what how these types relate to IMR_MAP_MESH and
IMR_MAP_AUTOS/DG.

+
+       * struct imr_mesh       regular mesh specification
+
+       __u16   rows, columns   rectangular mesh sizes
+       __u16   x0, y0, dx, dy  auto-generated mesh parameters
+
+       * struct imr_vbo        vertex-buffer-object (VBO) descriptor
+
+       __u16   num             number of triangles

Sorry, this needs more work.

Regards,

        Hans

Reply via email to