From fdd98ece8582ead2ab544b782bac0271c45cd0fe Mon Sep 17 00:00:00 2001 From: lzw7991 Date: Tue, 24 Dec 2024 18:51:41 +0800 Subject: [PATCH 1/2] support hardware cursor 2.0 Signed-off-by: lzw7991 --- .../common/include/display_vdi_adapter_interface.h | 4 ++-- display/composer/v1_2/IDisplayComposer.idl | 5 +++-- .../composer/v1_2/hdi_impl/display_composer_hdi_impl.h | 8 ++++++-- .../composer/v1_2/include/idisplay_composer_interface.h | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/display/composer/common/include/display_vdi_adapter_interface.h b/display/composer/common/include/display_vdi_adapter_interface.h index 2665da49..4dbe6373 100644 --- a/display/composer/common/include/display_vdi_adapter_interface.h +++ b/display/composer/common/include/display_vdi_adapter_interface.h @@ -86,7 +86,7 @@ struct DisplayComposerVdiAdapter { int32_t (*GetHDRCapabilityInfos)(uint32_t devId, HDRCapability& info); int32_t (*RegDisplayVBlankIdleCallback)(VBlankIdleCallback cb, void* data); int32_t (*SetDisplayConstraint)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type); - int32_t (*SetHardwareCursorPosition)(uint32_t devId, int32_t x, int32_t y); + int32_t (*UpdateHardwareCursor)(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer); int32_t (*EnableHardwareCursorStats)(uint32_t devId, bool enable); int32_t (*GetHardwareCursorStats)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount); int32_t (*SetDisplayActiveRegion)(uint32_t devId, const IRect& rect); @@ -151,7 +151,7 @@ using GetDisplaySupportedColorGamutsFunc = int32_t (*)(uint32_t devId, std::vect using GetHDRCapabilityInfosFunc = int32_t (*)(uint32_t devId, HDRCapability& info); using RegDisplayVBlankIdleCallbackFunc = int32_t (*)(VBlankIdleCallback cb, void* data); using SetDisplayConstraintFunc = int32_t (*)(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type); -using SetHardwareCursorPositionFunc = int32_t (*)(uint32_t devId, int32_t x, int32_t y); +using UpdateHardwareCursorFunc = int32_t (*)(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer); using EnableHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, bool enable); using GetHardwareCursorStatsFunc = int32_t (*)(uint32_t devId, uint32_t& frameCount, uint32_t& vsyncCount); using SetDisplayActiveRegionFunc = int32_t (*)(uint32_t devId, const IRect& rect); diff --git a/display/composer/v1_2/IDisplayComposer.idl b/display/composer/v1_2/IDisplayComposer.idl index e74291a4..23df9a95 100644 --- a/display/composer/v1_2/IDisplayComposer.idl +++ b/display/composer/v1_2/IDisplayComposer.idl @@ -60,16 +60,17 @@ interface IDisplayComposer extends ohos.hdi.display.composer.v1_1.IDisplayCompos ClearLayerBuffer([in] unsigned int devId, [in] unsigned int layerId); /** - * @brief Set Hardware Cursor Position. + * @brief Update Hardware Cursor Position and Style. * * @param devId Indicates which device, x and y Indicates the position of hardware cursor. + * buffer Indicates input buffer handle. * * @return Returns 0 if the operation is successful; returns an error code defined * in {@link DispErrCode} otherwise. * @since 5.0 * @version 1.0 */ - SetHardwareCursorPosition([in] unsigned int devId, [in] int x, [in] int y); + UpdateHardwareCursor([in] unsigned int devId, [in] int x, [in] int y, [in] NativeBuffer buffer); /** * @brief Enable Hardware Cursor. diff --git a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h index 6ab47def..12d866f4 100644 --- a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h @@ -126,10 +126,14 @@ public: return ToDispErrCode(hdi_v1_2_->ClearLayerBuffer(devId, layerId)); } - virtual int32_t SetHardwareCursorPosition(uint32_t devId, int32_t x, int32_t y) override + virtual int32_t UpdateHardwareCursor(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer) override { COMPOSER_CHECK_NULLPTR_RETURN(hdi_v1_2_); - int32_t ret = ToDispErrCode(hdi_v1_2_->SetHardwareCursorPosition(devId, x, y)); + COMPOSER_CHECK_NULLPTR_RETURN(buffer); + stpr hdiBuffer = new NativeBuffer(buffer); + COMPOSER_CHECK_NULLPTR_RETURN(hdiBuffer); + + int32_t ret = ToDispErrCode(hdi_v1_2_->UpdateHardwareCursor(devId, x, y, hdiBuffer)); return ret; } diff --git a/display/composer/v1_2/include/idisplay_composer_interface.h b/display/composer/v1_2/include/idisplay_composer_interface.h index 8a5a280c..23aae31e 100644 --- a/display/composer/v1_2/include/idisplay_composer_interface.h +++ b/display/composer/v1_2/include/idisplay_composer_interface.h @@ -66,7 +66,7 @@ public: virtual int32_t ClearLayerBuffer(uint32_t devId, uint32_t layerId) = 0; - virtual int32_t SetHardwareCursorPosition(uint32_t devId, int32_t x, int32_t y) = 0; + virtual int32_t UpdateHardwareCursor(uint32_t devId, int32_t x, int32_t y, BufferHandle* buffer) = 0; virtual int32_t EnableHardwareCursorStats(uint32_t devId, bool enable) = 0; -- Gitee From 5449acd882c4d09f4137e4895921349c8bfd6dd5 Mon Sep 17 00:00:00 2001 From: lzw7991 Date: Tue, 24 Dec 2024 19:41:39 +0800 Subject: [PATCH 2/2] support hardware cursor 2.0 Signed-off-by: lzw7991 --- display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h index 12d866f4..cd1fa427 100644 --- a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h @@ -130,7 +130,7 @@ public: { COMPOSER_CHECK_NULLPTR_RETURN(hdi_v1_2_); COMPOSER_CHECK_NULLPTR_RETURN(buffer); - stpr hdiBuffer = new NativeBuffer(buffer); + sptr hdiBuffer = new NativeBuffer(buffer); COMPOSER_CHECK_NULLPTR_RETURN(hdiBuffer); int32_t ret = ToDispErrCode(hdi_v1_2_->UpdateHardwareCursor(devId, x, y, hdiBuffer)); -- Gitee