Loading...
首页问答  

QT4.8.6 实现TDE加速

fishbrid
fishbrid  发布于 2017-11-01 15:57:19 6678
已实现QT4.8.6 实现TDE硬件加速,有需要的朋友可联系。
CallMeBroYang  发布于 2017-11-02 11:13:56
做到什么程度,可以说明一下吗
0
fengzheng822  发布于 2017-12-11 09:18:52
同问????????,还有如何获取
0
做个好菜鸟  发布于 2017-12-11 17:50:29
您好,请问您是怎么将tde中的像素格式更改为8888的呢??我现在像素1555的是正常的,但是由于QT支持像素格式为8888,现在想要将sample中sample_tde改为8888像素格式的,请问sample_tde里面都要改哪些部分呢?还有就是您的8888格式的.bits文件是怎么生成的呢?是自己编程提取的吗??
0
fishbrid  发布于 2017-12-12 19:02:36
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81961&ptid=38131]做个好菜鸟 发表于 2017-12-11 17:50[/url]
您好,请问您是怎么将tde中的像素格式更改为8888的呢??我现在像素1555的是正常的,但是由于QT支持像素格式为8 ...[/quote]

qt支持1555,我使用的也是1555
0
做个好菜鸟  发布于 2017-12-13 18:39:13
[quote][url=forum.php?mod=redirect&goto=findpost&pid=82020&ptid=38131]fishbrid 发表于 2017-12-12 19:02[/url]
qt支持1555,我使用的也是1555[/quote]

您好,我更改为1555之后,是没有qt界面输出的,这是我改了的部分:
var.transp = {15,1,0};
    var.red = {10,5,0};
    var.green = {5,5,0};
    var.blue = {0,5,0};
    var.bits_per_pixel = 16;
您看还有什么地方要改吗??
0
fishbrid  发布于 2017-12-23 16:49:29
[quote][url=forum.php?mod=redirect&goto=findpost&pid=82071&ptid=38131]做个好菜鸟 发表于 2017-12-13 18:39[/url]
您好,我更改为1555之后,是没有qt界面输出的,这是我改了的部分:
var.transp = {15,1,0};
    var.red  ...[/quote]

还需要设置HIFB_ALPHA_S stAlpha;
stAlpha.bAlphaEnable = HI_TRUE;
    stAlpha.bAlphaChannel = HI_FALSE;
    stAlpha.u8Alpha0 = 0xFF;
    stAlpha.u8Alpha1 = 0x00;
    stAlpha.u8GlobalAlpha = 0xFF;
设置COLORKEY
HIFB_COLORKEY_S fbck;
    memset(&fbck, 0, sizeof(HIFB_COLORKEY_S));
    fbck.bKeyEnable = HI_TRUE;
    fbck.u32Key = 0x000000;
作用是不显示黑色,QT界面设置背景QColor(0,0,0,0)后可透明
0
做个好菜鸟  发布于 2017-12-28 10:44:46
[quote][url=forum.php?mod=redirect&goto=findpost&pid=82479&ptid=38131]fishbrid 发表于 2017-12-23 16:49[/url]
还需要设置HIFB_ALPHA_S stAlpha;
stAlpha.bAlphaEnable = HI_TRUE;
    stAlpha.bAlphaChannel = HI_ ...[/quote]

谢谢,不过我用的板子是3531,3531只有鼠标层采用colorkey,我现在把海思tde 例程和.bits文件都改成8888格式的了。
0
MiSign  发布于 2018-01-04 15:48:26
加速做什么?抗闪吗?
0
yukuilong  发布于 2018-01-26 17:01:48
怎么联系你 可否留个qq
0
hysx  发布于 2018-03-06 21:54:04
想学习下,共享代码么?
0
ian688t6  发布于 2018-06-13 21:24:55
有联系方式么?我想学习学习
0
hero  发布于 2018-07-02 09:21:14
学习学习学习学习
0
fishbrid  发布于 2018-07-05 15:50:49
海思平台以插件方式使用Graphics Driver方法移植QT4.8.6
[url]http://bbs.ebaina.com/forum.php?mod=viewthread&tid=38541&fromuid=13827[/url]
可参考这里实现
0
rupert  发布于 2018-07-06 14:34:11

学习学习学习学习
0
ansonboygirl  发布于 2018-08-01 13:52:01
能分享么?有偿
0
1669877854  发布于 2018-10-03 16:16:26
66666666666666
0
ansonboygirl  发布于 2018-11-22 14:30:35


void QHiSiliconV100nptlScreen::blit(const QImage &img, const QPoint &topLeft,
                         const QRegion ®)
{
        int w                                         = ALIGN_BACK(img.width(), 2);
        int h                                         = ALIGN_BACK(img.height(), 2);
        unsigned long phyaddr         = 0;
        HI_U32 phyaddr1                 = 0;
       
        if(!img.text("phyaddr").isEmpty())
        {
                phyaddr1 = img.text("phyaddr").toUInt();
        }
        else
        {
                qDebug()<<"blit phyaddr isEmpty";
                //QScreen::blit(img, topLeft, reg);
                return;
        }
       
        if (base()&&u8VirAddr&&(w >= 1)&&(h >= 1))
        {
                printf("blit: img.w = %d, img.h = %d, strip = %d, w = %d, h = %d\n", img.width(),img.height(),img.bytesPerLine(), w, h);
            HI_U32 i;
                TDE_HANDLE s32Handle;
            TDE2_OPT_S stOpt;
            TDE2_RECT_S stSrcRect;
            TDE2_RECT_S stDstRect;
                HI_S32 s32Ret = HI_SUCCESS;

            s32Handle = HI_TDE2_BeginJob();
            if(HI_ERR_TDE_INVALID_HANDLE == s32Handle)
            {
                qDebug()<<"start job failed!\n";
                return;
            }

                memset(&srcscreen, 0, sizeof(srcscreen));
                memset(&dstscreen, 0, sizeof(dstscreen));
                memset(&stSrcRect, 0, sizeof(stSrcRect));
                memset(&stDstRect, 0, sizeof(stDstRect));
                memset(&stOpt, 0, sizeof(stOpt));
               
                const QVector rects = (reg & region()).rects();
                   for (int i = 0; i < rects.size(); ++i)
                {
                        const QRect r                                = rects.at(i);
                        stSrcRect.s32Xpos                           = r.x() - topLeft.x();
                        stSrcRect.s32Ypos                           = r.y() - topLeft.y();
                        stSrcRect.u32Width                           = r.width() > w ? w : r.width();
                        stSrcRect.u32Height                           = r.height() > h ? h : r.height();

                        srcscreen.enColorFmt                 = TDE2_COLOR_FMT_ARGB8888;
                        srcscreen.u32Width                         = w;
                        srcscreen.u32Height                 = h;
                        srcscreen.u32Stride                 = img.bytesPerLine();
                        srcscreen.u32PhyAddr                = phyaddr1;
                        srcscreen.bAlphaMax255                 = HI_TRUE;
                       
                    stDstRect.s32Xpos                         = r.x();
                    stDstRect.s32Ypos                         = r.y();
                    stDstRect.u32Width                         = r.width();
                    stDstRect.u32Height                 = r.height();
                       
                        dstscreen.enColorFmt                  = TDE2_COLOR_FMT_ARGB8888;
                        dstscreen.u32PhyAddr                  = finfo.smem_start;
                        dstscreen.u32Width                          = 1920;
                        dstscreen.u32Height                          = 1080;
                        dstscreen.u32Stride                          = finfo.line_length;
                        dstscreen.bAlphaMax255          = HI_TRUE;
                        /*
                        printf("srcscreen[%d, %d, %d, %d][%d, %d], dstscreen[%d, %d, %d, %d][%d, %d], top[%d, %d] \n",
                                stSrcRect.s32Xpos,
                                stSrcRect.s32Ypos,
                                stSrcRect.u32Width,
                                stSrcRect.u32Height,
                                srcscreen.u32Width,
                                srcscreen.u32Height,
                                stDstRect.s32Xpos,
                                stDstRect.s32Ypos,
                                stDstRect.u32Width,
                                stDstRect.u32Height,
                                dstscreen.u32Width,
                                dstscreen.u32Height,
                                topLeft.x(),
                                topLeft.y()
                                );
                        */
                        //memcpy(u8VirAddr, img.bits(), img.height()*img.bytesPerLine());
                       
                    /* 4. bitblt image to screen */
                    s32Ret = HI_TDE2_Bitblit
                                            (
                                                    s32Handle,
                                                    &dstscreen,
                                                    &stDstRect,
                                                &srcscreen,
                                                &stSrcRect,
                                                &dstscreen,
                                                &stDstRect,
                                                &stOpt
                                        );
                        if(s32Ret < 0)
                        {
                                  qDebug("HI_TDE2_Bitblit failed,ret = %x\n",s32Ret);
                                HI_TDE2_CancelJob(s32Handle);
                                return ;
                        }
                       
                }

            /* 5. submit job */
            s32Ret = HI_TDE2_EndJob(s32Handle, HI_FALSE, HI_TRUE, 30);
                if(s32Ret < 0)
                {
                        qDebug()<<"HI_TDE2_EndJob failed,ret = \n"<                         HI_TDE2_CancelJob(s32Handle);
                        return;
                }
        }
        else
        {
                //QScreen::blit(img, topLeft, reg);
        }
       
}
0
raymondxl  发布于 2019-02-17 19:40:51
你好,你的TDE是在QT程序中实现的吗
0
qn1532483710  发布于 2019-04-09 11:02:40
你好请问可否提供下相关代码呢,有偿
0
guduxue0624  发布于 2019-11-29 09:12:45
楼主有联系方式吗?求分享。
0
hero  发布于 2017-12-28 13:44:43
:lol:lol:lol:lol:lol
0
hero  发布于 2018-01-17 08:59:13
:victory::victory::victory::victory::victory:
0
hero  发布于 2018-06-14 08:28:24
:o:o:o:o:o:o:o
0
hero  发布于 2018-07-16 17:44:05
:lol:lol:lol:lol:lol
0
qn1554945042  发布于 2019-07-05 09:16:27
支持QT5?
0
qn1572161376  发布于 2021-03-22 12:10:49
本帖最后由 qn1572161376 于 2021-3-22 12:14 编辑

本人在Hi3531D平台下成功实现QT5.9.7,TDE加速,HIFB,4K支持,延迟由之前的600-700ms一幅画面优化至10-30ms,有需要的联系本人qq1515716885
0
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz,gz
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区