[libcamera-devel,v5,0/9] utils: ipc: Add support for enums and Flags
mbox series

Message ID 20221011105859.457567-1-paul.elder@ideasonboard.com
Headers show
Series
  • utils: ipc: Add support for enums and Flags
Related show

Message

Paul Elder Oct. 11, 2022, 10:58 a.m. UTC
v5 fixes a mistake in the scopedEnum implementation in v4, and adds
support for skipHeader to enums defined in core.mojom, so that they can
be defined in a C++ header and not redefined in mojom.


This patch series adds support for enums in function parameters, and
Flags all-around.

"all-around" does happen to exclude direct function return values,
though.

Patches 1~2 touch enums, where the first patch adds a test for current
enum support that hasn't been tested before, and the second actually
adds support for enums in function parameters.

Patches 3~4 add support for Flags, and 5 adds a test for it.

Patches 6 and 7 extend vimc to have dummy function parameters that are
enums and Flags to test enums and Flags as function parameters.

Patch 8 (new in v5) adds support for skipHeader. This was originally
going to posted on top after the rest of the series was merged, but I
found an issue with serialization of scoped enums directly, so this
series is getting a new version :/

Patch 9 adds a test for scoped enums and flags that are designated as
skipHeader. It touches core components (it has to, because that's the
only place that skipHeader enums can be defined), so it's set as RFC.


Paul Elder (9):
  test: generated_serializer: Test enum that is struct member
  utils: ipc: Add support for enums in function parameters
  libcamera: ipa_data_serializer: Add serializer for Flags
  utils: ipc: Add support for Flags
  test: generated_serializer: Test Flags that is struct member
  ipa: vimc: Add IPAOperationCode to init() parameter list
  ipa: vimc: Add Flags to parameters
  utils: ipc: Allow the skipHeader attribute on enums
  [RFC] test: generated_serializer: Test skipHeader enums and flags

 .../libcamera/internal/ipa_data_serializer.h  | 46 +++++++++++++++++++
 include/libcamera/ipa/core.mojom              | 15 +++++-
 include/libcamera/ipa/ipa_interface.h         | 12 ++++-
 include/libcamera/ipa/vimc.mojom              | 14 +++++-
 src/ipa/vimc/vimc.cpp                         | 22 +++++++--
 src/libcamera/pipeline/vimc/vimc.cpp          | 15 ++++--
 test/ipa/ipa_interface_test.cpp               |  6 ++-
 .../generated_serializer_test.cpp             | 36 +++++++++++++++
 .../include/libcamera/ipa/test.mojom          | 14 ++++++
 .../core_ipa_interface.h.tmpl                 |  2 +-
 .../definition_functions.tmpl                 |  2 +-
 .../module_ipa_interface.h.tmpl               |  2 +-
 .../module_ipa_proxy.h.tmpl                   |  2 +-
 .../libcamera_templates/proxy_functions.tmpl  | 20 +++++++-
 .../libcamera_templates/serializer.tmpl       |  6 +++
 .../generators/mojom_libcamera_generator.py   | 39 ++++++++++++++--
 16 files changed, 231 insertions(+), 22 deletions(-)

Comments

Laurent Pinchart Oct. 11, 2022, 2:03 p.m. UTC | #1
Hi Paul,

On Tue, Oct 11, 2022 at 07:58:50PM +0900, Paul Elder via libcamera-devel wrote:
> v5 fixes a mistake in the scopedEnum implementation in v4, and adds
> support for skipHeader to enums defined in core.mojom, so that they can
> be defined in a C++ header and not redefined in mojom.
> 
> 
> This patch series adds support for enums in function parameters, and
> Flags all-around.
> 
> "all-around" does happen to exclude direct function return values,
> though.
> 
> Patches 1~2 touch enums, where the first patch adds a test for current
> enum support that hasn't been tested before, and the second actually
> adds support for enums in function parameters.
> 
> Patches 3~4 add support for Flags, and 5 adds a test for it.
> 
> Patches 6 and 7 extend vimc to have dummy function parameters that are
> enums and Flags to test enums and Flags as function parameters.
> 
> Patch 8 (new in v5) adds support for skipHeader. This was originally
> going to posted on top after the rest of the series was merged, but I
> found an issue with serialization of scoped enums directly, so this
> series is getting a new version :/
> 
> Patch 9 adds a test for scoped enums and flags that are designated as
> skipHeader. It touches core components (it has to, because that's the
> only place that skipHeader enums can be defined), so it's set as RFC.

What prevents using skipHeader enums in other .mojom files ?

> Paul Elder (9):
>   test: generated_serializer: Test enum that is struct member
>   utils: ipc: Add support for enums in function parameters
>   libcamera: ipa_data_serializer: Add serializer for Flags
>   utils: ipc: Add support for Flags
>   test: generated_serializer: Test Flags that is struct member
>   ipa: vimc: Add IPAOperationCode to init() parameter list
>   ipa: vimc: Add Flags to parameters
>   utils: ipc: Allow the skipHeader attribute on enums
>   [RFC] test: generated_serializer: Test skipHeader enums and flags
> 
>  .../libcamera/internal/ipa_data_serializer.h  | 46 +++++++++++++++++++
>  include/libcamera/ipa/core.mojom              | 15 +++++-
>  include/libcamera/ipa/ipa_interface.h         | 12 ++++-
>  include/libcamera/ipa/vimc.mojom              | 14 +++++-
>  src/ipa/vimc/vimc.cpp                         | 22 +++++++--
>  src/libcamera/pipeline/vimc/vimc.cpp          | 15 ++++--
>  test/ipa/ipa_interface_test.cpp               |  6 ++-
>  .../generated_serializer_test.cpp             | 36 +++++++++++++++
>  .../include/libcamera/ipa/test.mojom          | 14 ++++++
>  .../core_ipa_interface.h.tmpl                 |  2 +-
>  .../definition_functions.tmpl                 |  2 +-
>  .../module_ipa_interface.h.tmpl               |  2 +-
>  .../module_ipa_proxy.h.tmpl                   |  2 +-
>  .../libcamera_templates/proxy_functions.tmpl  | 20 +++++++-
>  .../libcamera_templates/serializer.tmpl       |  6 +++
>  .../generators/mojom_libcamera_generator.py   | 39 ++++++++++++++--
>  16 files changed, 231 insertions(+), 22 deletions(-)