The MCUXpresso SDK provides a driver for the Pixel Pipeline (PXP)
The PXP is used to process graphics buffers or composite video and graphics data before sending to an LCD display or TV encoder. The PXP driver only provides functional APIs. It does not maintain software level state, so that the APIs could be involved directly to any upper layer graphics framework easily.
To use the PXP driver, call PXP_Init first to enable and initialize the peripheral. Generally, call the PXP driver APIs the configure input buffer, output buffer, and other setting such as flip, rotate, then call PXP_Start, thus the PXP starts the processing. When finished, the flag kPXP_CompleteFlag asserts. PXP also supports operation queuing, it means that a new operation could be submited to PXP while the current PXP operation is running. When current operation finished, the new operation configurations are loaded to PXP register and new processing starts.
Typical use case
PXP normal operation
This example shows how to perform vertical flip to process surface and save to output buffer. The input and output buffer pixel format are RGB888.
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/pxp
PXP operation queue
This example shows how to perform vertical flip to process surface using operation queue. The input and output buffer pixel format are RGB888.
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/pxp
|
enum | _pxp_interrupt_enable {
kPXP_CompleteInterruptEnable = PXP_CTRL_IRQ_ENABLE_MASK,
kPXP_CommandLoadInterruptEnable = PXP_CTRL_NEXT_IRQ_ENABLE_MASK,
kPXP_LutDmaLoadInterruptEnable
} |
| PXP interrupts to enable. More...
|
|
enum | _pxp_flags {
kPXP_CompleteFlag = PXP_STAT_IRQ0_MASK,
kPXP_Axi0WriteErrorFlag = PXP_STAT_AXI_WRITE_ERROR_0_MASK,
kPXP_Axi0ReadErrorFlag = PXP_STAT_AXI_READ_ERROR_0_MASK,
kPXP_CommandLoadFlag = PXP_STAT_NEXT_IRQ_MASK,
kPXP_LutDmaLoadFlag = PXP_STAT_LUT_DMA_LOAD_DONE_IRQ_MASK
} |
| PXP status flags. More...
|
|
enum | pxp_flip_mode_t {
kPXP_FlipDisable = 0U,
kPXP_FlipHorizontal = 0x01U,
kPXP_FlipVertical = 0x02U,
kPXP_FlipBoth = 0x03U
} |
| PXP output flip mode. More...
|
|
enum | pxp_rotate_position_t {
kPXP_RotateOutputBuffer = 0U,
kPXP_RotateProcessSurface
} |
| PXP rotate mode. More...
|
|
enum | pxp_rotate_degree_t {
kPXP_Rotate0 = 0U,
kPXP_Rotate90,
kPXP_Rotate180,
kPXP_Rotate270
} |
| PXP rotate degree. More...
|
|
enum | pxp_interlaced_output_mode_t {
kPXP_OutputProgressive = 0U,
kPXP_OutputField0,
kPXP_OutputField1,
kPXP_OutputInterlaced
} |
| PXP interlaced output mode. More...
|
|
enum | pxp_output_pixel_format_t {
kPXP_OutputPixelFormatARGB8888 = 0x0,
kPXP_OutputPixelFormatRGB888 = 0x4,
kPXP_OutputPixelFormatRGB888P = 0x5,
kPXP_OutputPixelFormatARGB1555 = 0x8,
kPXP_OutputPixelFormatARGB4444 = 0x9,
kPXP_OutputPixelFormatRGB555 = 0xC,
kPXP_OutputPixelFormatRGB444 = 0xD,
kPXP_OutputPixelFormatRGB565 = 0xE,
kPXP_OutputPixelFormatYUV1P444 = 0x10,
kPXP_OutputPixelFormatUYVY1P422 = 0x12,
kPXP_OutputPixelFormatVYUY1P422 = 0x13,
kPXP_OutputPixelFormatY8 = 0x14,
kPXP_OutputPixelFormatY4 = 0x15,
kPXP_OutputPixelFormatYUV2P422 = 0x18,
kPXP_OutputPixelFormatYUV2P420 = 0x19,
kPXP_OutputPixelFormatYVU2P422 = 0x1A,
kPXP_OutputPixelFormatYVU2P420 = 0x1B
} |
| PXP output buffer format. More...
|
|
enum | pxp_ps_pixel_format_t {
kPXP_PsPixelFormatARGB8888 = 0x4,
kPXP_PsPixelFormatARGB1555 = 0xC,
kPXP_PsPixelFormatARGB4444 = 0xD,
kPXP_PsPixelFormatRGB565 = 0xE,
kPXP_PsPixelFormatYUV1P444 = 0x10,
kPXP_PsPixelFormatUYVY1P422 = 0x12,
kPXP_PsPixelFormatVYUY1P422 = 0x13,
kPXP_PsPixelFormatY8 = 0x14,
kPXP_PsPixelFormatY4 = 0x15,
kPXP_PsPixelFormatYUV2P422 = 0x18,
kPXP_PsPixelFormatYUV2P420 = 0x19,
kPXP_PsPixelFormatYVU2P422 = 0x1A,
kPXP_PsPixelFormatYVU2P420 = 0x1B,
kPXP_PsPixelFormatYVU422 = 0x1E,
kPXP_PsPixelFormatYVU420 = 0x1F,
kPXP_PsPixelFormatRGBA8888 = 0x24,
kPXP_PsPixelFormatRGBA5551 = 0x2C,
kPXP_PsPixelFormatRGBA4444 = 0x2D
} |
| PXP process surface buffer pixel format. More...
|
|
enum | pxp_ps_yuv_format_t {
kPXP_PsYUVFormatYUV = 0U,
kPXP_PsYUVFormatYCbCr
} |
| PXP process surface buffer YUV format. More...
|
|
enum | pxp_as_pixel_format_t {
kPXP_AsPixelFormatARGB8888 = 0x0,
kPXP_AsPixelFormatRGB888 = 0x4,
kPXP_AsPixelFormatARGB1555 = 0x8,
kPXP_AsPixelFormatARGB4444 = 0x9,
kPXP_AsPixelFormatRGB555 = 0xC,
kPXP_AsPixelFormatRGB444 = 0xD,
kPXP_AsPixelFormatRGB565 = 0xE,
kPXP_AsPixelFormatRGBA8888 = 0x1,
kPXP_AsPixelFormatRGBA5551 = 0xA,
kPXP_AsPixelFormatRGBA4444 = 0xB
} |
| PXP alpha surface buffer pixel format. More...
|
|
enum | pxp_alpha_mode_t {
kPXP_AlphaEmbedded,
kPXP_AlphaOverride,
kPXP_AlphaMultiply,
kPXP_AlphaRop
} |
| PXP alpha mode during blending. More...
|
|
enum | pxp_rop_mode_t {
kPXP_RopMaskAs = 0x0,
kPXP_RopMaskNotAs = 0x1,
kPXP_RopMaskAsNot = 0x2,
kPXP_RopMergeAs = 0x3,
kPXP_RopMergeNotAs = 0x4,
kPXP_RopMergeAsNot = 0x5,
kPXP_RopNotCopyAs = 0x6,
kPXP_RopNot = 0x7,
kPXP_RopNotMaskAs = 0x8,
kPXP_RopNotMergeAs = 0x9,
kPXP_RopXorAs = 0xA,
kPXP_RopNotXorAs = 0xB
} |
| PXP ROP mode during blending. More...
|
|
enum | pxp_block_size_t {
kPXP_BlockSize8 = 0U,
kPXP_BlockSize16
} |
| PXP process block size. More...
|
|
enum | pxp_csc1_mode_t {
kPXP_Csc1YUV2RGB = 0U,
kPXP_Csc1YCbCr2RGB
} |
| PXP CSC1 mode. More...
|
|
enum | pxp_csc2_mode_t {
kPXP_Csc2YUV2RGB = 0U,
kPXP_Csc2YCbCr2RGB,
kPXP_Csc2RGB2YUV,
kPXP_Csc2RGB2YCbCr
} |
| PXP CSC2 mode. More...
|
|
enum | pxp_lut_lookup_mode_t {
kPXP_LutCacheRGB565 = 0U,
kPXP_LutDirectY8,
kPXP_LutDirectRGB444,
kPXP_LutDirectRGB454
} |
| PXP LUT lookup mode. More...
|
|
enum | pxp_lut_out_mode_t {
kPXP_LutOutY8 = 1U,
kPXP_LutOutRGBW4444CFA,
kPXP_LutOutRGB888
} |
| PXP LUT output mode. More...
|
|
enum | pxp_lut_8k_bank_t {
kPXP_Lut8kBank0 = 0U,
kPXP_Lut8kBank1
} |
| PXP LUT 8K bank index used when lookup mode is kPXP_LutDirectRGB444. More...
|
|
enum | pxp_ram_t {
kPXP_RamDither0Lut = 0U,
kPXP_RamDither1Lut = 3U,
kPXP_RamDither2Lut = 4U
} |
| PXP internal memory. More...
|
|
enum | _pxp_dither_mode {
kPXP_DitherPassThrough = 0U,
kPXP_DitherFloydSteinberg = 1U,
kPXP_DitherAtkinson = 2U,
kPXP_DitherOrdered = 3U,
kPXP_DitherQuantOnly = 4U,
kPXP_DitherSierra = 5U
} |
| PXP dither mode. More...
|
|
enum | _pxp_dither_lut_mode {
kPXP_DitherLutOff = 0U,
kPXP_DitherLutPreDither,
kPXP_DitherLutPostDither
} |
| PXP dither LUT mode. More...
|
|
enum | _pxp_dither_matrix_size {
kPXP_DitherMatrix4 = 0,
kPXP_DitherMatrix8,
kPXP_DitherMatrix16
} |
| PXP dither matrix size. More...
|
|
enum | {
kPXP_PorterDuffFactorOne = 0U,
kPXP_PorterDuffFactorZero,
kPXP_PorterDuffFactorStraight,
kPXP_PorterDuffFactorInversed
} |
| Porter Duff factor mode. More...
|
|
enum | {
kPXP_PorterDuffGlobalAlpha = 0U,
kPXP_PorterDuffLocalAlpha,
kPXP_PorterDuffScaledAlpha
} |
| Porter Duff global alpha mode. More...
|
|
enum | {
kPXP_PorterDuffAlphaStraight = 0U,
kPXP_PorterDuffAlphaInversed
} |
| Porter Duff alpha mode. More...
|
|
enum | {
kPXP_PorterDuffColorStraight = 0,
kPXP_PorterDuffColorInversed = 1,
kPXP_PorterDuffColorNoAlpha = 0,
kPXP_PorterDuffColorWithAlpha = 1
} |
| Porter Duff color mode. More...
|
|
enum | pxp_porter_duff_blend_mode_t {
kPXP_PorterDuffSrc = 0,
kPXP_PorterDuffAtop,
kPXP_PorterDuffOver,
kPXP_PorterDuffIn,
kPXP_PorterDuffOut,
kPXP_PorterDuffDst,
kPXP_PorterDuffDstAtop,
kPXP_PorterDuffDstOver,
kPXP_PorterDuffDstIn,
kPXP_PorterDuffDstOut,
kPXP_PorterDuffXor,
kPXP_PorterDuffClear
} |
| PXP Porter Duff blend mode. More...
|
|
|
static void | PXP_SetProcessSurfaceBackGroundColor (PXP_Type *base, uint32_t backGroundColor) |
| Set the back ground color of PS. More...
|
|
void | PXP_SetProcessSurfaceBufferConfig (PXP_Type *base, const pxp_ps_buffer_config_t *config) |
| Set the process surface input buffer configuration. More...
|
|
void | PXP_SetProcessSurfaceScaler (PXP_Type *base, uint16_t inputWidth, uint16_t inputHeight, uint16_t outputWidth, uint16_t outputHeight) |
| Set the process surface scaler configuration. More...
|
|
void | PXP_SetProcessSurfacePosition (PXP_Type *base, uint16_t upperLeftX, uint16_t upperLeftY, uint16_t lowerRightX, uint16_t lowerRightY) |
| Set the process surface position in output buffer. More...
|
|
void | PXP_SetProcessSurfaceColorKey (PXP_Type *base, uint32_t colorKeyLow, uint32_t colorKeyHigh) |
| Set the process surface color key. More...
|
|
static void | PXP_SetProcessSurfaceYUVFormat (PXP_Type *base, pxp_ps_yuv_format_t format) |
| Set the process surface input pixel format YUV or YCbCr. More...
|
|
|
void | PXP_SetOutputBufferConfig (PXP_Type *base, const pxp_output_buffer_config_t *config) |
| Set the PXP outpt buffer configuration. More...
|
|
static void | PXP_SetOverwrittenAlphaValue (PXP_Type *base, uint8_t alpha) |
| Set the global overwritten alpha value. More...
|
|
static void | PXP_EnableOverWrittenAlpha (PXP_Type *base, bool enable) |
| Enable or disable the global overwritten alpha value. More...
|
|
static void | PXP_SetRotateConfig (PXP_Type *base, pxp_rotate_position_t position, pxp_rotate_degree_t degree, pxp_flip_mode_t flipMode) |
| Set the rotation configuration. More...
|
|
void | PXP_BuildRect (PXP_Type *base, pxp_output_pixel_format_t outFormat, uint32_t value, uint16_t width, uint16_t height, uint16_t pitch, uint32_t outAddr) |
| Build a solid rectangle of given pixel value. More...
|
|
|
void | PXP_SetPorterDuffConfig (PXP_Type *base, const pxp_porter_duff_config_t *config) |
| Set the Porter Duff configuration. More...
|
|
status_t | PXP_GetPorterDuffConfigExt (pxp_porter_duff_blend_mode_t mode, pxp_porter_duff_config_t *config, uint8_t dstGlobalAlphaMode, uint8_t dstAlphaMode, uint8_t dstColorMode, uint8_t srcGlobalAlphaMode, uint8_t srcAlphaMode, uint8_t srcColorMode, uint8_t dstGlobalAlpha, uint8_t srcGlobalAlpha) |
| Get the Porter Duff configuration. More...
|
|
static status_t | PXP_GetPorterDuffConfig (pxp_porter_duff_blend_mode_t mode, pxp_porter_duff_config_t *config) |
| Get the Porter Duff configuration by blend mode. More...
|
|
struct pxp_output_buffer_config_t |
uint32_t pxp_output_buffer_config_t::buffer0Addr |
uint32_t pxp_output_buffer_config_t::buffer1Addr |
uint16_t pxp_output_buffer_config_t::pitchBytes |
uint16_t pxp_output_buffer_config_t::width |
uint16_t pxp_output_buffer_config_t::height |
struct pxp_ps_buffer_config_t |
bool pxp_ps_buffer_config_t::swapByte |
uint32_t pxp_ps_buffer_config_t::bufferAddr |
uint32_t pxp_ps_buffer_config_t::bufferAddrU |
uint32_t pxp_ps_buffer_config_t::bufferAddrV |
uint16_t pxp_ps_buffer_config_t::pitchBytes |
struct pxp_as_buffer_config_t |
uint32_t pxp_as_buffer_config_t::bufferAddr |
uint16_t pxp_as_buffer_config_t::pitchBytes |
struct pxp_as_blend_config_t |
uint8_t pxp_as_blend_config_t::alpha |
bool pxp_as_blend_config_t::invertAlpha |
Converting from YUV/YCbCr color spaces to the RGB color space uses the following equation structure:
R = A1(Y+D1) + A2(U+D2) + A3(V+D3) G = B1(Y+D1) + B2(U+D2) + B3(V+D3) B = C1(Y+D1) + C2(U+D2) + C3(V+D3)
Converting from the RGB color space to YUV/YCbCr color spaces uses the following equation structure:
Y = A1*R + A2*G + A3*B + D1 U = B1*R + B2*G + B3*B + D2 V = C1*R + C2*G + C3*B + D3
float pxp_csc2_config_t::A1 |
float pxp_csc2_config_t::A2 |
float pxp_csc2_config_t::A3 |
float pxp_csc2_config_t::B1 |
float pxp_csc2_config_t::B2 |
float pxp_csc2_config_t::B3 |
float pxp_csc2_config_t::C1 |
float pxp_csc2_config_t::C2 |
float pxp_csc2_config_t::C3 |
int16_t pxp_csc2_config_t::D1 |
int16_t pxp_csc2_config_t::D2 |
int16_t pxp_csc2_config_t::D3 |
uint32_t pxp_lut_config_t::cfaValue |
struct pxp_dither_final_lut_data_t |
uint32_t pxp_dither_final_lut_data_t::data_3_0 |
Data 0 is the least significant byte.
uint32_t pxp_dither_final_lut_data_t::data_7_4 |
Data 4 is the least significant byte.
uint32_t pxp_dither_final_lut_data_t::data_11_8 |
Data 8 is the least significant byte.
uint32_t pxp_dither_final_lut_data_t::data_15_12 |
Data 12 is the least significant byte.
struct pxp_dither_config_t |
Data Fields |
uint32_t | enableDither0: 1 |
| Enable dither engine 0 or not, set 1 to enable, 0 to disable. More...
|
|
uint32_t | enableDither1: 1 |
| Enable dither engine 1 or not, set 1 to enable, 0 to disable. More...
|
|
uint32_t | enableDither2: 1 |
| Enable dither engine 2 or not, set 1 to enable, 0 to disable. More...
|
|
uint32_t | ditherMode0: 3 |
| Dither mode for dither engine 0. More...
|
|
uint32_t | ditherMode1: 3 |
| Dither mode for dither engine 1. More...
|
|
uint32_t | ditherMode2: 3 |
| Dither mode for dither engine 2. More...
|
|
uint32_t | quantBitNum: 3 |
| Number of bits quantize down to, the valid value is 1~7. More...
|
|
uint32_t | lutMode: 2 |
| How to use the memory LUT, see _pxp_dither_lut_mode. More...
|
|
uint32_t | idxMatrixSize0: 2 |
| Size of index matrix used for dither for dither engine 0, see _pxp_dither_matrix_size. More...
|
|
uint32_t | idxMatrixSize1: 2 |
| Size of index matrix used for dither for dither engine 1, see _pxp_dither_matrix_size. More...
|
|
uint32_t | idxMatrixSize2: 2 |
| Size of index matrix used for dither for dither engine 2, see _pxp_dither_matrix_size. More...
|
|
uint32_t | enableFinalLut: 1 |
| Enable the final LUT, set 1 to enable, 0 to disable. More...
|
|
uint32_t pxp_dither_config_t::enableDither0 |
uint32_t pxp_dither_config_t::enableDither1 |
uint32_t pxp_dither_config_t::enableDither2 |
uint32_t pxp_dither_config_t::ditherMode0 |
uint32_t pxp_dither_config_t::ditherMode1 |
uint32_t pxp_dither_config_t::ditherMode2 |
uint32_t pxp_dither_config_t::quantBitNum |
uint32_t pxp_dither_config_t::lutMode |
uint32_t pxp_dither_config_t::idxMatrixSize0 |
uint32_t pxp_dither_config_t::idxMatrixSize1 |
uint32_t pxp_dither_config_t::idxMatrixSize2 |
uint32_t pxp_dither_config_t::enableFinalLut |
struct pxp_porter_duff_config_t |
Data Fields |
uint32_t | enable: 1 |
| Enable or disable Porter Duff. More...
|
|
uint32_t | srcFactorMode: 2 |
| Source layer (or AS, s1) factor mode, see pxp_porter_duff_factor_mode. More...
|
|
uint32_t | dstGlobalAlphaMode: 2 |
| Destination layer (or PS, s0) global alpha mode, see pxp_porter_duff_global_alpha_mode. More...
|
|
uint32_t | dstAlphaMode: 1 |
| Destination layer (or PS, s0) alpha mode, see pxp_porter_duff_alpha_mode. More...
|
|
uint32_t | dstColorMode: 1 |
| Destination layer (or PS, s0) color mode, see pxp_porter_duff_color_mode. More...
|
|
uint32_t | dstFactorMode: 2 |
| Destination layer (or PS, s0) factor mode, see pxp_porter_duff_factor_mode. More...
|
|
uint32_t | srcGlobalAlphaMode: 2 |
| Source layer (or AS, s1) global alpha mode, see pxp_porter_duff_global_alpha_mode. More...
|
|
uint32_t | srcAlphaMode: 1 |
| Source layer (or AS, s1) alpha mode, see pxp_porter_duff_alpha_mode. More...
|
|
uint32_t | srcColorMode: 1 |
| Source layer (or AS, s1) color mode, see pxp_porter_duff_color_mode. More...
|
|
uint32_t | dstGlobalAlpha: 8 |
| Destination layer (or PS, s0) global alpha value, 0~255. More...
|
|
uint32_t | srcGlobalAlpha: 8 |
| Source layer (or AS, s1) global alpha value, 0~255. More...
|
|
uint32_t pxp_porter_duff_config_t::enable |
uint32_t pxp_porter_duff_config_t::srcFactorMode |
uint32_t pxp_porter_duff_config_t::dstGlobalAlphaMode |
uint32_t pxp_porter_duff_config_t::dstAlphaMode |
uint32_t pxp_porter_duff_config_t::dstColorMode |
uint32_t pxp_porter_duff_config_t::dstFactorMode |
uint32_t pxp_porter_duff_config_t::srcGlobalAlphaMode |
uint32_t pxp_porter_duff_config_t::srcAlphaMode |
uint32_t pxp_porter_duff_config_t::srcColorMode |
uint32_t pxp_porter_duff_config_t::dstGlobalAlpha |
uint32_t pxp_porter_duff_config_t::srcGlobalAlpha |
struct pxp_pic_copy_config_t |
Note: don't change the enum item value
uint32_t pxp_pic_copy_config_t::srcPicBaseAddr |
uint16_t pxp_pic_copy_config_t::srcPitchBytes |
uint16_t pxp_pic_copy_config_t::srcOffsetX |
uint16_t pxp_pic_copy_config_t::srcOffsetY |
uint32_t pxp_pic_copy_config_t::destPicBaseAddr |
uint16_t pxp_pic_copy_config_t::destPitchBytes |
uint16_t pxp_pic_copy_config_t::destOffsetX |
uint16_t pxp_pic_copy_config_t::destOffsetY |
uint16_t pxp_pic_copy_config_t::width |
uint16_t pxp_pic_copy_config_t::height |
Enumerator |
---|
kPXP_CompleteInterruptEnable |
PXP process completed.
bit 1
|
kPXP_CommandLoadInterruptEnable |
Interrupt to show that the command set by PXP_SetNextCommand has been loaded.
bit 2
|
kPXP_LutDmaLoadInterruptEnable |
The LUT table has been loaded by DMA.
bit 3
|
- Note
- These enumerations are meant to be OR'd together to form a bit mask.
Enumerator |
---|
kPXP_CompleteFlag |
PXP process completed.
bit 0
|
kPXP_Axi0WriteErrorFlag |
PXP encountered an AXI write error and processing has been terminated.
bit 1
|
kPXP_Axi0ReadErrorFlag |
PXP encountered an AXI read error and processing has been terminated.
bit 2
|
kPXP_CommandLoadFlag |
The command set by PXP_SetNextCommand has been loaded, could set new command.
bit 3
|
kPXP_LutDmaLoadFlag |
The LUT table has been loaded by DMA.
bit 8
|
Enumerator |
---|
kPXP_FlipDisable |
Flip disable.
|
kPXP_FlipHorizontal |
Horizontal flip.
|
kPXP_FlipVertical |
Vertical flip.
|
kPXP_FlipBoth |
Flip both directions.
|
Enumerator |
---|
kPXP_RotateOutputBuffer |
Rotate the output buffer.
|
kPXP_RotateProcessSurface |
Rotate the process surface.
|
Enumerator |
---|
kPXP_Rotate0 |
Clock wise rotate 0 deg.
|
kPXP_Rotate90 |
Clock wise rotate 90 deg.
|
kPXP_Rotate180 |
Clock wise rotate 180 deg.
|
kPXP_Rotate270 |
Clock wise rotate 270 deg.
|
Enumerator |
---|
kPXP_OutputProgressive |
All data written in progressive format to output buffer 0.
|
kPXP_OutputField0 |
Only write field 0 data to output buffer 0.
|
kPXP_OutputField1 |
Only write field 1 data to output buffer 0.
|
kPXP_OutputInterlaced |
Field 0 write to buffer 0, field 1 write to buffer 1.
|
Enumerator |
---|
kPXP_OutputPixelFormatARGB8888 |
32-bit pixels with alpha.
|
kPXP_OutputPixelFormatRGB888 |
32-bit pixels without alpha (unpacked 24-bit format)
|
kPXP_OutputPixelFormatRGB888P |
24-bit pixels without alpha (packed 24-bit format)
|
kPXP_OutputPixelFormatARGB1555 |
16-bit pixels with alpha.
|
kPXP_OutputPixelFormatARGB4444 |
16-bit pixels with alpha.
|
kPXP_OutputPixelFormatRGB555 |
16-bit pixels without alpha.
|
kPXP_OutputPixelFormatRGB444 |
16-bit pixels without alpha.
|
kPXP_OutputPixelFormatRGB565 |
16-bit pixels without alpha.
|
kPXP_OutputPixelFormatYUV1P444 |
32-bit pixels (1-plane XYUV unpacked).
|
kPXP_OutputPixelFormatUYVY1P422 |
16-bit pixels (1-plane U0,Y0,V0,Y1 interleaved bytes)
|
kPXP_OutputPixelFormatVYUY1P422 |
16-bit pixels (1-plane V0,Y0,U0,Y1 interleaved bytes)
|
kPXP_OutputPixelFormatY8 |
8-bit monochrome pixels (1-plane Y luma output)
|
kPXP_OutputPixelFormatY4 |
4-bit monochrome pixels (1-plane Y luma, 4 bit truncation)
|
kPXP_OutputPixelFormatYUV2P422 |
16-bit pixels (2-plane UV interleaved bytes)
|
kPXP_OutputPixelFormatYUV2P420 |
16-bit pixels (2-plane UV)
|
kPXP_OutputPixelFormatYVU2P422 |
16-bit pixels (2-plane VU interleaved bytes)
|
kPXP_OutputPixelFormatYVU2P420 |
16-bit pixels (2-plane VU)
|
Enumerator |
---|
kPXP_PsPixelFormatARGB8888 |
32-bit pixels with alpha(when participates in blend with alpha surface uses pixel format that has alpha value) or without alpha (unpacked 24-bit format)
|
kPXP_PsPixelFormatARGB1555 |
16-bit pixels with alpha(when participates in blend with alpha surface uses pixel format that has alpha value) or without alpha.
|
kPXP_PsPixelFormatARGB4444 |
16-bit pixels with alpha(when participates in blend with alpha surface uses pixel format that has alpha value) or without alpha.
|
kPXP_PsPixelFormatRGB565 |
16-bit pixels without alpha.
|
kPXP_PsPixelFormatYUV1P444 |
32-bit pixels (1-plane XYUV unpacked).
|
kPXP_PsPixelFormatUYVY1P422 |
16-bit pixels (1-plane U0,Y0,V0,Y1 interleaved bytes)
|
kPXP_PsPixelFormatVYUY1P422 |
16-bit pixels (1-plane V0,Y0,U0,Y1 interleaved bytes)
|
kPXP_PsPixelFormatY8 |
8-bit monochrome pixels (1-plane Y luma output)
|
kPXP_PsPixelFormatY4 |
4-bit monochrome pixels (1-plane Y luma, 4 bit truncation)
|
kPXP_PsPixelFormatYUV2P422 |
16-bit pixels (2-plane UV interleaved bytes)
|
kPXP_PsPixelFormatYUV2P420 |
16-bit pixels (2-plane UV)
|
kPXP_PsPixelFormatYVU2P422 |
16-bit pixels (2-plane VU interleaved bytes)
|
kPXP_PsPixelFormatYVU2P420 |
16-bit pixels (2-plane VU)
|
kPXP_PsPixelFormatYVU422 |
16-bit pixels (3-plane)
|
kPXP_PsPixelFormatYVU420 |
16-bit pixels (3-plane)
|
kPXP_PsPixelFormatRGBA8888 |
32-bit pixels with alpha at low 8-bit
|
kPXP_PsPixelFormatRGBA5551 |
16-bit pixels with alpha at low 1-bit.
|
kPXP_PsPixelFormatRGBA4444 |
16-bit pixels with alpha at low 4-bit.
|
Enumerator |
---|
kPXP_PsYUVFormatYUV |
YUV format.
|
kPXP_PsYUVFormatYCbCr |
YCbCr format.
|
Enumerator |
---|
kPXP_AsPixelFormatARGB8888 |
32-bit pixels with alpha.
|
kPXP_AsPixelFormatRGB888 |
32-bit pixels without alpha (unpacked 24-bit format)
|
kPXP_AsPixelFormatARGB1555 |
16-bit pixels with alpha.
|
kPXP_AsPixelFormatARGB4444 |
16-bit pixels with alpha.
|
kPXP_AsPixelFormatRGB555 |
16-bit pixels without alpha.
|
kPXP_AsPixelFormatRGB444 |
16-bit pixels without alpha.
|
kPXP_AsPixelFormatRGB565 |
16-bit pixels without alpha.
|
kPXP_AsPixelFormatRGBA8888 |
32-bit pixels with alpha at low 8-bit.
|
kPXP_AsPixelFormatRGBA5551 |
16-bit pixels with alpha at low 1-bit.
|
kPXP_AsPixelFormatRGBA4444 |
16-bit pixels with alpha at low 4-bit.
|
Enumerator |
---|
kPXP_AlphaEmbedded |
The alpha surface pixel alpha value will be used for blend.
|
kPXP_AlphaOverride |
The user defined alpha value will be used for blend directly.
|
kPXP_AlphaMultiply |
The alpha surface pixel alpha value scaled the user defined alpha value will be used for blend, for example, pixel alpha set set to 200, user defined alpha set to 100, then the reault alpha is 200 * 100 / 255.
|
kPXP_AlphaRop |
Raster operation.
|
Explanation:
- AS: Alpha surface
- PS: Process surface
- nAS: Alpha surface NOT value
- nPS: Process surface NOT value
Enumerator |
---|
kPXP_RopMaskAs |
AS AND PS.
|
kPXP_RopMaskNotAs |
nAS AND PS.
|
kPXP_RopMaskAsNot |
AS AND nPS.
|
kPXP_RopMergeAs |
AS OR PS.
|
kPXP_RopMergeNotAs |
nAS OR PS.
|
kPXP_RopMergeAsNot |
AS OR nPS.
|
kPXP_RopNotCopyAs |
nAS.
|
kPXP_RopNot |
nPS.
|
kPXP_RopNotMaskAs |
AS NAND PS.
|
kPXP_RopNotMergeAs |
AS NOR PS.
|
kPXP_RopXorAs |
AS XOR PS.
|
kPXP_RopNotXorAs |
AS XNOR PS.
|
Enumerator |
---|
kPXP_BlockSize8 |
Process 8x8 pixel blocks.
|
kPXP_BlockSize16 |
Process 16x16 pixel blocks.
|
Enumerator |
---|
kPXP_Csc1YUV2RGB |
YUV to RGB.
|
kPXP_Csc1YCbCr2RGB |
YCbCr to RGB.
|
Enumerator |
---|
kPXP_Csc2YUV2RGB |
YUV to RGB.
|
kPXP_Csc2YCbCr2RGB |
YCbCr to RGB.
|
kPXP_Csc2RGB2YUV |
RGB to YUV.
|
kPXP_Csc2RGB2YCbCr |
RGB to YCbCr.
|
Enumerator |
---|
kPXP_LutCacheRGB565 |
LUT ADDR = R[7:3],G[7:2],B[7:3].
Use all 16KB of LUT for indirect cached 128KB lookup.
|
kPXP_LutDirectY8 |
LUT ADDR = 16'b0,Y[7:0].
Use the first 256 bytes of LUT. Only third data path byte is tranformed.
|
kPXP_LutDirectRGB444 |
LUT ADDR = R[7:4],G[7:4],B[7:4].
Use one 8KB bank of LUT selected by PXP_Select8kLutBank.
|
kPXP_LutDirectRGB454 |
LUT ADDR = R[7:4],G[7:3],B[7:4].
Use all 16KB of LUT.
|
Enumerator |
---|
kPXP_LutOutY8 |
R/Y byte lane 2 lookup, bytes 1,0 bypassed.
|
kPXP_LutOutRGBW4444CFA |
Byte lane 2 = CFA_Y8, byte lane 1,0 = RGBW4444.
|
kPXP_LutOutRGB888 |
RGB565->RGB888 conversion for Gamma correction.
|
Enumerator |
---|
kPXP_Lut8kBank0 |
The first 8K bank used.
|
kPXP_Lut8kBank1 |
The second 8K bank used.
|
Enumerator |
---|
kPXP_RamDither0Lut |
Dither 0 LUT memory.
|
kPXP_RamDither1Lut |
Dither 1 LUT memory.
|
kPXP_RamDither2Lut |
Dither 2 LUT memory.
|
Enumerator |
---|
kPXP_DitherPassThrough |
Pass through, no dither.
|
kPXP_DitherFloydSteinberg |
Floyd-Steinberg.
For dither engine 0 only.
|
kPXP_DitherAtkinson |
Atkinson.
For dither engine 0 only.
|
kPXP_DitherOrdered |
Ordered dither.
|
kPXP_DitherQuantOnly |
No dithering, only quantization.
|
kPXP_DitherSierra |
Sierra.
For dither engine 0 only.
|
Enumerator |
---|
kPXP_DitherLutOff |
The LUT memory is not used for LUT, could be used as ordered dither index matrix.
|
kPXP_DitherLutPreDither |
Use LUT at the pre-dither stage, The pre-dither LUT could only be used in Floyd mode or Atkinson mode, which are not supported by current PXP module.
|
kPXP_DitherLutPostDither |
Use LUT at the post-dither stage.
|
Enumerator |
---|
kPXP_DitherMatrix4 |
The dither index matrix is 4x4.
|
kPXP_DitherMatrix8 |
The dither index matrix is 8x8.
|
kPXP_DitherMatrix16 |
The dither index matrix is 16x16.
|
Enumerator |
---|
kPXP_PorterDuffFactorOne |
Use 1.
|
kPXP_PorterDuffFactorZero |
Use 0.
|
kPXP_PorterDuffFactorStraight |
Use straight alpha.
|
kPXP_PorterDuffFactorInversed |
Use inversed alpha.
|
Enumerator |
---|
kPXP_PorterDuffGlobalAlpha |
Use global alpha.
|
kPXP_PorterDuffLocalAlpha |
Use local alpha in each pixel.
|
kPXP_PorterDuffScaledAlpha |
Use global alpha * local alpha.
|
Enumerator |
---|
kPXP_PorterDuffAlphaStraight |
Use straight alpha, s0_alpha' = s0_alpha.
|
kPXP_PorterDuffAlphaInversed |
Use inversed alpha, s0_alpha' = 0xFF - s0_alpha.
|
Enumerator |
---|
kPXP_PorterDuffColorStraight |
- Deprecated:
- Use kPXP_PorterDuffColorNoAlpha.
|
kPXP_PorterDuffColorInversed |
- Deprecated:
- Use kPXP_PorterDuffColorWithAlpha.
|
kPXP_PorterDuffColorNoAlpha |
s0_pixel' = s0_pixel.
|
kPXP_PorterDuffColorWithAlpha |
s0_pixel' = s0_pixel * s0_alpha".
|
Note: don't change the enum item value
Enumerator |
---|
kPXP_PorterDuffSrc |
Source Only.
|
kPXP_PorterDuffAtop |
Source Atop.
|
kPXP_PorterDuffOver |
Source Over.
|
kPXP_PorterDuffIn |
Source In.
|
kPXP_PorterDuffOut |
Source Out.
|
kPXP_PorterDuffDst |
Destination Only.
|
kPXP_PorterDuffDstAtop |
Destination Atop.
|
kPXP_PorterDuffDstOver |
Destination Over.
|
kPXP_PorterDuffDstIn |
Destination In.
|
kPXP_PorterDuffDstOut |
Destination Out.
|
kPXP_PorterDuffXor |
XOR.
|
kPXP_PorterDuffClear |
Clear.
|
void PXP_Init |
( |
PXP_Type * |
base | ) |
|
This function enables the PXP peripheral clock, and resets the PXP registers to default status.
- Parameters
-
base | PXP peripheral base address. |
void PXP_Deinit |
( |
PXP_Type * |
base | ) |
|
This function disables the PXP peripheral clock.
- Parameters
-
base | PXP peripheral base address. |
void PXP_Reset |
( |
PXP_Type * |
base | ) |
|
This function resets the PXP peripheral registers to default status.
- Parameters
-
base | PXP peripheral base address. |
void PXP_ResetControl |
( |
PXP_Type * |
base | ) |
|
- Parameters
-
base | PXP peripheral base address. |
static void PXP_Start |
( |
PXP_Type * |
base | ) |
|
|
inlinestatic |
Start PXP process using current configuration.
- Parameters
-
base | PXP peripheral base address. |
static void PXP_EnableLcdHandShake |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
This function chooses the pixel block size that PXP using during process. Larger block size means better performace, but be careful that when PXP is rotating, the output must be divisible by the block size selected.
- Parameters
-
base | PXP peripheral base address. |
size | The pixel block size. |
static uint32_t PXP_GetStatusFlags |
( |
PXP_Type * |
base | ) |
|
|
inlinestatic |
This function gets all PXP status flags. The flags are returned as the logical OR value of the enumerators _pxp_flags. To check a specific status, compare the return value with enumerators in _pxp_flags. For example, to check whether the PXP has completed process, use like this:
- Parameters
-
base | PXP peripheral base address. |
- Returns
- PXP status flags which are OR'ed by the enumerators in the _pxp_flags.
static void PXP_ClearStatusFlags |
( |
PXP_Type * |
base, |
|
|
uint32_t |
statusMask |
|
) |
| |
|
inlinestatic |
This function clears PXP status flags with a provided mask.
- Parameters
-
base | PXP peripheral base address. |
statusMask | The status flags to be cleared; it is logical OR value of _pxp_flags. |
static uint8_t PXP_GetAxiErrorId |
( |
PXP_Type * |
base, |
|
|
uint8_t |
axiIndex |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
axiIndex | Whitch AXI to get
|
- Returns
- The AXI ID of the failing bus operation.
static void PXP_EnableInterrupts |
( |
PXP_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
This function enables the PXP interrupts according to the provided mask. The mask is a logical OR of enumeration members. See _pxp_interrupt_enable. For example, to enable PXP process complete interrupt and command loaded interrupt, do the following.
- Parameters
-
static void PXP_DisableInterrupts |
( |
PXP_Type * |
base, |
|
|
uint32_t |
mask |
|
) |
| |
|
inlinestatic |
This function disables the PXP interrupts according to the provided mask. The mask is a logical OR of enumeration members. See _pxp_interrupt_enable.
- Parameters
-
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration structure. |
void PXP_SetAlphaSurfaceOverlayColorKey |
( |
PXP_Type * |
base, |
|
|
uint32_t |
colorKeyLow, |
|
|
uint32_t |
colorKeyHigh |
|
) |
| |
If a pixel in the current overlay image with a color that falls in the range from the p colorKeyLow to p colorKeyHigh range, it will use the process surface pixel value for that location. If no PS image is present or if the PS image also matches its colorkey range, the PS background color is used.
- Parameters
-
base | PXP peripheral base address. |
colorKeyLow | Color key low range. |
colorKeyHigh | Color key high range. |
- Note
- Colorkey operations are higher priority than alpha or ROP operations
static void PXP_EnableAlphaSurfaceOverlayColorKey |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
void PXP_SetAlphaSurfacePosition |
( |
PXP_Type * |
base, |
|
|
uint16_t |
upperLeftX, |
|
|
uint16_t |
upperLeftY, |
|
|
uint16_t |
lowerRightX, |
|
|
uint16_t |
lowerRightY |
|
) |
| |
- Parameters
-
base | PXP peripheral base address. |
upperLeftX | X of the upper left corner. |
upperLeftY | Y of the upper left corner. |
lowerRightX | X of the lower right corner. |
lowerRightY | Y of the lower right corner. |
static void PXP_SetProcessSurfaceBackGroundColor |
( |
PXP_Type * |
base, |
|
|
uint32_t |
backGroundColor |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
backGroundColor | Pixel value of the background color. |
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
void PXP_SetProcessSurfaceScaler |
( |
PXP_Type * |
base, |
|
|
uint16_t |
inputWidth, |
|
|
uint16_t |
inputHeight, |
|
|
uint16_t |
outputWidth, |
|
|
uint16_t |
outputHeight |
|
) |
| |
The valid down scale fact is 1/(2^12) ~ 16.
- Parameters
-
base | PXP peripheral base address. |
inputWidth | Input image width. |
inputHeight | Input image height. |
outputWidth | Output image width. |
outputHeight | Output image height. |
void PXP_SetProcessSurfacePosition |
( |
PXP_Type * |
base, |
|
|
uint16_t |
upperLeftX, |
|
|
uint16_t |
upperLeftY, |
|
|
uint16_t |
lowerRightX, |
|
|
uint16_t |
lowerRightY |
|
) |
| |
- Parameters
-
base | PXP peripheral base address. |
upperLeftX | X of the upper left corner. |
upperLeftY | Y of the upper left corner. |
lowerRightX | X of the lower right corner. |
lowerRightY | Y of the lower right corner. |
void PXP_SetProcessSurfaceColorKey |
( |
PXP_Type * |
base, |
|
|
uint32_t |
colorKeyLow, |
|
|
uint32_t |
colorKeyHigh |
|
) |
| |
If the PS image matches colorkey range, the PS background color is output. Set colorKeyLow
to 0xFFFFFFFF and colorKeyHigh
to 0 will disable the colorkeying.
- Parameters
-
base | PXP peripheral base address. |
colorKeyLow | Color key low range. |
colorKeyHigh | Color key high range. |
If process surface input pixel format is YUV and CSC1 is not enabled, in other words, the process surface output pixel format is also YUV, then this function should be called to set whether input pixel format is YUV or YCbCr.
- Parameters
-
base | PXP peripheral base address. |
format | The YUV format. |
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
static void PXP_SetOverwrittenAlphaValue |
( |
PXP_Type * |
base, |
|
|
uint8_t |
alpha |
|
) |
| |
|
inlinestatic |
If global overwritten alpha is enabled, the alpha component in output buffer pixels will be overwritten, otherwise the computed alpha value is used.
- Parameters
-
base | PXP peripheral base address. |
alpha | The alpha value. |
static void PXP_EnableOverWrittenAlpha |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
If global overwritten alpha is enabled, the alpha component in output buffer pixels will be overwritten, otherwise the computed alpha value is used.
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
The PXP could rotate the process surface or the output buffer. There are two PXP versions:
- Version 1: Only has one rotate sub module, the output buffer and process surface share the same rotate sub module, which means the process surface and output buffer could not be rotate at the same time. When pass in kPXP_RotateOutputBuffer, the process surface could not use the rotate, Also when pass in kPXP_RotateProcessSurface, output buffer could not use the rotate.
- Version 2: Has two seperate rotate sub modules, the output buffer and process surface could configure the rotation independently.
Upper layer could use the macro PXP_SHARE_ROTATE to check which version is. PXP_SHARE_ROTATE=1 means version 1.
- Parameters
-
base | PXP peripheral base address. |
position | Rotate process surface or output buffer. |
degree | Rotate degree. |
flipMode | Flip mode. |
- Note
- This function is different depends on the macro PXP_SHARE_ROTATE.
void PXP_BuildRect |
( |
PXP_Type * |
base, |
|
|
pxp_output_pixel_format_t |
outFormat, |
|
|
uint32_t |
value, |
|
|
uint16_t |
width, |
|
|
uint16_t |
height, |
|
|
uint16_t |
pitch, |
|
|
uint32_t |
outAddr |
|
) |
| |
- Parameters
-
base | PXP peripheral base address. |
outFormat | output pixel format. |
value | The value of the pixel to be filled in the rectangle in ARGB8888 format. |
width | width of the rectangle. |
height | height of the rectangle. |
pitch | output pitch in byte. |
outAddr | address of the memory to store the rectangle. |
void PXP_SetNextCommand |
( |
PXP_Type * |
base, |
|
|
void * |
commandAddr |
|
) |
| |
The PXP supports a primitive ability to queue up one operation while the current operation is running. Workflow:
- Prepare the PXP register values except STAT, CSCCOEFn, NEXT in the memory in the order they appear in the register map.
- Call this function sets the new operation to PXP.
- There are two methods to check whether the PXP has loaded the new operation. The first method is using PXP_IsNextCommandPending. If there is new operation not loaded by the PXP, this function returns true. The second method is checking the flag kPXP_CommandLoadFlag, if command loaded, this flag asserts. User could enable interrupt kPXP_CommandLoadInterruptEnable to get the loaded signal in interrupt way.
- When command loaded by PXP, a new command could be set using this function.
uint32_t pxp_command1[48];
uint32_t pxp_command2[48];
pxp_command1[0] = ...;
pxp_command1[1] = ...;
...
pxp_command2[0] = ...;
pxp_command2[1] = ...;
...
{
}
{
}
- Parameters
-
base | PXP peripheral base address. |
commandAddr | Address of the new command. |
static bool PXP_IsNextCommandPending |
( |
PXP_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | UART peripheral base address. |
- Returns
- True is pending, false is not.
static void PXP_CancelNextCommand |
( |
PXP_Type * |
base | ) |
|
|
inlinestatic |
- Parameters
-
base | UART peripheral base address. |
The CSC2 module receives pixels in any color space and can convert the pixels into any of RGB, YUV, or YCbCr color spaces. The output pixels are passed onto the LUT and rotation engine for further processing
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
static void PXP_EnableCsc2 |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
The CSC1 module receives scaled YUV/YCbCr444 pixels from the scale engine and converts the pixels to the RGB888 color space. It could only be used by process surface.
- Parameters
-
base | PXP peripheral base address. |
mode | The conversion mode. |
static void PXP_EnableCsc1 |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
The lookup table (LUT) is used to modify pixels in a manner that is not linear and that cannot be achieved by the color space conversion modules. To setup the LUT, the complete workflow is:
- Use PXP_SetLutConfig to set the configuration, such as the lookup mode.
- Use PXP_LoadLutTable to load the lookup table to PXP.
- Use PXP_EnableLut to enable the function.
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
If lookup mode is DIRECT mode, this function loads bytesNum
of values from the address memAddr
into PXP LUT address lutStartAddr
. So this function allows only update part of the PXP LUT.
If lookup mode is CACHE mode, this function sets the new address to memAddr
and invalid the PXP LUT cache.
- Parameters
-
base | PXP peripheral base address. |
lookupMode | Which lookup mode is used. Note that this parameter is only used to distinguish DIRECT mode and CACHE mode, it does not change the register value PXP_LUT_CTRL[LOOKUP_MODE]. To change that value, use function PXP_SetLutConfig. |
bytesNum | How many bytes to set. This value must be divisable by 8. |
memAddr | Address of look up table to set. |
lutStartAddr | The LUT value will be loaded to LUT from index lutAddr. It should be 8 bytes aligned. |
- Return values
-
kStatus_Success | Load successfully. |
kStatus_InvalidArgument | Failed because of invalid argument. |
static void PXP_EnableLut |
( |
PXP_Type * |
base, |
|
|
bool |
enable |
|
) |
| |
|
inlinestatic |
- Parameters
-
base | PXP peripheral base address. |
enable | True to enable, false to disable. |
- Parameters
-
base | PXP peripheral base address. |
bank | The bank to select. |
- Parameters
-
base | PXP peripheral base address. |
config | Pointer to the configuration. |
status_t PXP_GetPorterDuffConfigExt |
( |
pxp_porter_duff_blend_mode_t |
mode, |
|
|
pxp_porter_duff_config_t * |
config, |
|
|
uint8_t |
dstGlobalAlphaMode, |
|
|
uint8_t |
dstAlphaMode, |
|
|
uint8_t |
dstColorMode, |
|
|
uint8_t |
srcGlobalAlphaMode, |
|
|
uint8_t |
srcAlphaMode, |
|
|
uint8_t |
srcColorMode, |
|
|
uint8_t |
dstGlobalAlpha, |
|
|
uint8_t |
srcGlobalAlpha |
|
) |
| |
The FactorMode are selected based on blend mode, the other values are set based on input parameters. These values could be modified after calling this function. This function is extened PXP_GetPorterDuffConfig.
- Parameters
-
mode | The blend mode. |
config | Pointer to the configuration. |
dstGlobalAlphaMode | Destination layer (or PS, s0) global alpha mode, see pxp_porter_duff_global_alpha_mode |
dstAlphaMode | Destination layer (or PS, s0) alpha mode, see pxp_porter_duff_alpha_mode. |
dstColorMode | Destination layer (or PS, s0) color mode, see pxp_porter_duff_color_mode. |
srcGlobalAlphaMode | Source layer (or AS, s1) global alpha mode, see pxp_porter_duff_global_alpha_mode |
srcAlphaMode | Source layer (or AS, s1) alpha mode, see pxp_porter_duff_alpha_mode. |
srcColorMode | Source layer (or AS, s1) color mode, see pxp_porter_duff_color_mode. |
dstGlobalAlpha | Destination layer (or PS, s0) global alpha value, 0~255 |
srcGlobalAlpha | Source layer (or AS, s1) global alpha value, 0~255 |
- Return values
-
kStatus_Success | Successfully get the configuratoin. |
kStatus_InvalidArgument | The blend mode not supported. |
The FactorMode are selected based on blend mode, the AlphaMode are set to kPXP_PorterDuffAlphaStraight, the ColorMode are set to kPXP_PorterDuffColorWithAlpha, the GlobalAlphaMode are set to kPXP_PorterDuffLocalAlpha. These values could be modified after calling this function.
- Parameters
-
mode | The blend mode. |
config | Pointer to the configuration. |
- Return values
-
kStatus_Success | Successfully get the configuratoin. |
kStatus_InvalidArgument | The blend mode not supported. |