搜索
bottom↓
回复: 2

大家一起研究一下君正的WINCE5.0 BSP包对direct draw的支持

[复制链接]

出0入0汤圆

发表于 2010-10-29 10:40:18 | 显示全部楼层 |阅读模式
大家好,我是做游戏开发的。
先看看君正:
驱动列表
1          存储设备
·          NAND Flash驱动, SLC & MLC
·          NOR Flash驱动
·          SD/MMC卡驱动
2        人机界面
·          音频驱动:包括AC97和I2S
·          DirectDraw显示驱动
·          摄相头驱动
·          触摸屏驱动
·          键盘驱动

重官方网站上看,君正的BSP是支持Direct的,但事实上。
我们看到Venus\Common\Csp\Jz4755\Driver\Display\Jz4755lcd\halsurf.cpp中
DWORD WINAPI HalBlt( LPDDHAL_BLTDATA pd )
{
        DEBUGENTER( HalBlt );
        /*
        typedef struct _DDHAL_BLTDATA
        {
            LPDDRAWI_DIRECTDRAW_GBL        lpDD;                // driver struct
            LPDDRAWI_DDRAWSURFACE_LCL        lpDDDestSurface;// dest surface
            RECTL                        rDest;                // dest rect
            LPDDRAWI_DDRAWSURFACE_LCL        lpDDSrcSurface; // src surface
            RECTL                        rSrc;                // src rect
            DWORD                        dwFlags;        // blt flags
            DWORD                        dwROPFlags;        // ROP flags (valid for ROPS only)
            DDBLTFX                        bltFX;                // blt FX
            HRESULT                        ddRVal;         // return value
            LPDDHALSURFCB_BLT                Blt;                // PRIVATE: ptr to callback
        } DDHAL_BLTDATA;
        */

    //
    //  if we are still busy, do not blt and return
    //
        return DDGPEBlt(pd);
}
这个函数是DirectDraw实现硬件Blt的具体实现,在看到DDGPEBlt的实现,在文件Public\common\oak\drivers\display\ddgpe\ddhsurf.cpp中最后一段
pd->ddRVal = g_pGPE->BltExpanded(
                                        pDst,
                                        pSrc,
                                        pPattern,
                                        NULL, // pMask
                                        NULL, // pco
                                        NULL, // pxlo
                                        prclDst,
                                        prclSrc,
                                        solidColor,
                                        bltFlags,
                                        rop4
                                        );
很明显这个g_pGPE->BltExpanded就应该是支持DirectDraw应该实现的函数,其中g_pGPE的实例就是
Venus\Common\Csp\Jz4755\Driver\Display\Jz4755lcd\lcdgpe.h 中的君正实现驱动接口的JZ47LCD类,我们发现在该类中实质并没对BltExpanded
进行硬件加速相关的实现,如过这样,上面实际调用的就是WINCE自带的一个函数实现,这样的说话,跟本没有可能实现DirectDraw的硬件加速。
更甚的是,我们看到JZ47LCD类
#ifdef DDRAW_ENABLE

class JZ47LCD : public DDGPE

#else

class JZ47LCD : public GPE

#endif // DDRAW_ENABLE
{
//---------------------------------------------------------------------------------------------------------
public:
                JZ47LCD ();
    virtual                ~JZ47LCD ();

    virtual SCODE   SetMode ( int modeNo, HPALETTE *pPalette );
#ifdef DDRAW_ENABLE
    virtual SCODE   SetMode ( int modeNo, HPALETTE *pPalette, BOOL bChangeGDISurfaceMode );
    void            GetTicksPerFrame(void);
#endif
#ifdef SHOW_FRAMERATE
    void            DisplayFrameRate(void);
#endif

    virtual SCODE   GetModeInfo ( GPEMode *pMode, int modeNo );
。。。。。。。。。。。。。。。。。。。。。。。。
留意其中的#ifdef DDRAW_ENABLE,这是一个打开BSP支持Direct硬件加速的设置,好明显,我们无法在BSP中找到一个对DDRAW_ENABLE的定义。
不知道是不是我在网上找到的BSP是否是最终的BSP,希望大家一起讨论一下怎样完善这个BSP,是能够在WINCE环境下是用JZ4755的图形加速功能。

出0入0汤圆

 楼主| 发表于 2010-10-29 10:44:20 | 显示全部楼层
我现在正在查看ucos系统的代码,看看能否找到有关对硬件贴图支持相关的部分,我不懂Linux,如果大家研究Linux的时候找到相关的代码,希望能够给我一点提示,感谢大家了。

出0入0汤圆

 楼主| 发表于 2010-11-9 14:26:10 | 显示全部楼层
已经将1024×768调出来了,该了BSP好几个地方绕了不少弯路还是.至于directdraw那里打开了BSP的选项好像创建DDR的时候还是没有出现什么。有兴趣的朋友加我QQ:82309250
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 21:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表