[Libva] [PATCH 0/7 v2] Add RGBX<-->NV12 conversion in post-processing

Xiang, Haihao haihao.xiang at intel.com
Fri Aug 10 00:57:43 PDT 2012


Applied

Thanks
Haihao


> Thanks to Haihao and Gwenole's feedback.
> 
> V2 update:
>     - both BGRX and RGBX to/from NV12 is supported, a flag is added 
>       in statci parameter on C programing side
>     - split RGBX/RGBA/BGRX/BGRA format support to a separate patch
>     - define more alias in asm code to make it readable
>     - fix an issue of loop counter control of surface processing
>       it should be calculated by first plane width in pixel, not in byte
>     - drop AYUV which is not related to this patch
>     - remove y/cb/cr info which is not necessary for RGB format
>     - use more switch than if
>     - define NUM_PP_MODULES in the enum
> 
> History:
> V1:
> add RGB to NV12 and NV12 to RGB conversion
>     - either is implemented in 2 ways: 8.8 fix point or float point
>       however, it doesn't show performance difference in my test
>     - RGB to NV12 conversion can be used to load video frames for futhure processing
>     - NV12 to RGB conversion can be used for fine control of video rendering:
>       for example: RGB565 support, color correction
>     - for RGBX layout, we follows BMP image, that is: |B|G|R|X| in memory layout
> 
> 
> Zhao Halley (7):
>   add RGB format surface support
>   distinguish first plane width in pixel or in byte
>   define RGB layout in static parameter
>   add GPU shader for RGB->NV12 conversion
>   add rgbx to nv12 conversion in post-processing
>   add GPU shader for NV12->RGBX conversion
>   add nv12 to rgb conversion in post processing
> 
>  src/i965_defines.h                                 |    1 +
>  src/i965_drv_video.c                               |  100 ++-
>  src/i965_post_processing.c                         |  211 +++++-
>  src/i965_post_processing.h                         |    9 +-
>  .../gen5_6/Common/NV12_Load_8x4.asm                |   32 +-
>  .../post_processing/gen5_6/Common/PL2_Load.inc     |    3 +
>  .../gen5_6/Common/RGBX_Load_16x8.asm               |   57 ++
>  .../gen5_6/Common/RGBX_Load_16x8.inc               |   48 ++
>  .../gen5_6/Common/RGBX_Save_YUV_Fix.asm            |  115 +++
>  .../gen5_6/Common/RGBX_Save_YUV_Float.asm          |  152 ++++
>  .../gen5_6/Common/RGBX_to_YUV_Coef.asm             |   64 ++
>  .../gen5_6/Common/YUVX_Save_RGBX_Fix.asm           |  170 +++++
>  .../gen5_6/Common/YUVX_Save_RGBX_Float.asm         |  287 +++++++
>  .../gen5_6/Common/YUV_to_RGBX_Coef.asm             |   99 +++
>  src/shaders/post_processing/gen5_6/Makefile.am     |   14 +
>  .../post_processing/gen5_6/nv12_load_save_rgbx.asm |   25 +
>  .../gen5_6/nv12_load_save_rgbx.g4b.gen5            |  717 ++++++++++++++++++
>  .../post_processing/gen5_6/nv12_load_save_rgbx.g6b |  790 ++++++++++++++++++++
>  .../post_processing/gen5_6/rgbx_load_save_nv12.asm |   26 +
>  .../gen5_6/rgbx_load_save_nv12.g4b.gen5            |  566 ++++++++++++++
>  .../post_processing/gen5_6/rgbx_load_save_nv12.g6b |  639 ++++++++++++++++
>  21 files changed, 4081 insertions(+), 44 deletions(-)
>  mode change 100644 => 100755 src/i965_defines.h
>  mode change 100644 => 100755 src/shaders/post_processing/gen5_6/Common/NV12_Load_8x4.asm
>  mode change 100644 => 100755 src/shaders/post_processing/gen5_6/Common/PL2_Load.inc
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/RGBX_Load_16x8.inc
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Fix.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/RGBX_Save_YUV_Float.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/RGBX_to_YUV_Coef.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Fix.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/YUVX_Save_RGBX_Float.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/Common/YUV_to_RGBX_Coef.asm
>  create mode 100755 src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.asm
>  create mode 100644 src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g4b.gen5
>  create mode 100644 src/shaders/post_processing/gen5_6/nv12_load_save_rgbx.g6b
>  create mode 100755 src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.asm
>  create mode 100644 src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g4b.gen5
>  create mode 100644 src/shaders/post_processing/gen5_6/rgbx_load_save_nv12.g6b
> 




More information about the Libva mailing list