⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 halsurf.cpp

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        {
            // If the hardware can't handle something then do the following.
            lpUOData->ddRVal = DDERR_NOOVERLAYHW;
            return DDHAL_DRIVER_HANDLED;
        }
        // 5520 can't handle bigger than 384 source images.
        //if((SrcWidth > 384) && (pDriverData->SysInfo1.CoreLogic == SYSINFO1_CORE_5520))
        //{
        //    // If the hardware can't handle something then do the following.
        //    lpUOData->ddRVal = DDERR_NOOVERLAYHW;
        //    return DDHAL_DRIVER_HANDLED;
        //}
        
#ifdef HWTEST
//      Go wack a pattern into the overlay surface for Hardware Turnon
        LoadTestPattern(&VidCfg, SrcHeight, (DWORD)lpUOData->lpDDSrcSurface->lpGbl->lPitch, 
                        lpUOData->lpDDSrcSurface->lpGbl->fpVidMem);
#endif
    }
//jp if emma dvd playing, disable 420 format, and change vid_fmt to Y0CbY1Cr
    if(OverlayData.VidFormat == EMMA) {
		VidCfg &= ~VC_VCFG_420_MODE;
		VidCfg &= 0xfffffff3;
		VidCfg |= 0x00000008;
    }   
    // End hardware state change (Latch data on next VSYNC)
  	RETAILMSG(0,(TEXT("End load  = %08x\r\n"),VidCfg));
    EndLoad(VidCfg);

    /*
     * color key?
     */
    if(lpUOData->dwFlags & DDOVER_KEYSRCOVERRIDE)
	{
        ColorKey = lpUOData->overlayFX.dckSrcColorkey.dwColorSpaceLowValue;
        SetChromaKey(ColorKey, pDriverData->dwBpp);
	}
    else if(lpUOData->dwFlags & DDOVER_KEYDESTOVERRIDE)
    {
        if(lpUOData->dwFlags & DDOVER_DDFX) 
        {
            ColorKey = lpUOData->overlayFX.dckDestColorkey.dwColorSpaceLowValue;
        }
        else
        {
            ColorKey = lpUOData->lpDDDestSurface->ddckCKDestOverlay.dwColorSpaceLowValue;
        }
        //DPF( "Dest ColorKey = %08lx", ColorKey);
        SetChromaKey(ColorKey, pDriverData->dwBpp);
    }
//    else if(lpUOData->dwFlags & DDOVER_DDFX) 
    else
    {
        SetChromaKey(0, 0);
    }

	testvalue = MEM_READ_32(pDriverData->RegLinear, VC_VID_CFG); 
	MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, 0);
	MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, testvalue);
// modifying registers to make toast app work.
/*    testvalue2 = MEM_READ_32(pDriverData->RegLinear, 0x8320); 
    testvalue2 &= 0x003fffff;
    testreg2 = (DWORD)(pDriverData->FbLinear);
	testreg2 += testvalue2;

	for (testreg2; testreg2 < (pDriverData->FbLinear+testvalue2+0x4800); testreg2+=16)
	{
		testvalue4 = *((DWORD *)(testreg2));
		testvalue5 = *((DWORD *)(testreg2 + 4));
		testvalue6 = *((DWORD *)(testreg2 + 8));
		testvalue7 = *((DWORD *)(testreg2 + 12));
		RETAILMSG(1,(TEXT("%08x :: %08x %08x %08x %08x\r\n"),testreg2, testvalue4, testvalue5, testvalue6, testvalue7));
//		*((DWORD *)(testreg2)) = 0x5555aaaa;
	}	
*/
/*	testvalue = MEM_READ_32(pDriverData->RegLinear, VC_VID_CFG); 
//    testvalue &= 0x0f;
	testvalue = 0x480c6883;
	MEM_WRITE_32(pDriverData->RegLinear, VC_VID_CFG, testvalue);

//	testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10004); 
//	testvalue = 0x803100ef;
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10004, testvalue);

//	testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10018); 
//	testvalue = 0x00fcfcfc;
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10018, testvalue);

//	testvalue = 0x00001008;
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10028, testvalue);

//	testvalue = 0x00e20000;
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10c04, testvalue);

//    testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10014); 
//	RETAILMSG(1,(TEXT("0x10014 = %08x\r\n"),testvalue));

//	MEM_WRITE_32(pDriverData->RegLinear, 0x10014, 0);

//    testvalue = MEM_READ_32(pDriverData->RegLinear, 0x10004); 
//	RETAILMSG(1,(TEXT("0x10014 = %08x\r\n"),testvalue));
	testvalue = 0x1008;

	MEM_WRITE_32(pDriverData->RegLinear, 0x10028, testvalue);
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10c04, 0x0e20000);
//	MEM_WRITE_32(pDriverData->RegLinear, 0x10c2c, 0x04);

	MEM_WRITE_32(pDriverData->RegLinear, 0x8300, 0x4758);
    testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8304); 
	testvalue = 0x10006543;
	MEM_WRITE_32(pDriverData->RegLinear, 0x8304, testvalue);

	testvalue = 0x0002106f;
	MEM_WRITE_32(pDriverData->RegLinear, 0x8308, testvalue);

	testvalue = 0x0023004;
	MEM_WRITE_32(pDriverData->RegLinear, 0x830c, testvalue);

    testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8328); 
	testvalue &=0x0000ffff;
	testvalue |= 0x01230000;
	MEM_WRITE_32(pDriverData->RegLinear, 0x8328, testvalue);

    testvalue = MEM_READ_32(pDriverData->RegLinear, 0x8320); 
	testvalue &= 0xfffffff0;
	MEM_WRITE_32(pDriverData->RegLinear, 0x8320, testvalue);
	MEM_WRITE_32(pDriverData->RegLinear, 0x8300, 0);

*/
/*	testreg=0x10000;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));

	testreg = 0x10800;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));

	testreg = 0x10c00;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));

	testreg = 0x8300;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
	testreg += 4;
    testvalue = MEM_READ_32(pDriverData->RegLinear, testreg); 
	RETAILMSG(1,(TEXT("%8x = %08x\r\n"),testreg, testvalue));
*/
    lpUOData->ddRVal = DD_OK;
    return DDHAL_DRIVER_HANDLED;

} /* UpdateOverlay32 */


DWORD WINAPI HalSetOverlayPosition( LPDDHAL_SETOVERLAYPOSITIONDATA lpSOPData )
{
    //DebugBreak(); 
//	DEBUGENTER( HalSetOverlayPosition );
	// RETAILMSG(1,(TEXT("HalSetOverlayPosition %X, %X\r\n"), lpSOPData->lXPos, lpSOPData->lYPos));
	/*
	typedef struct _DDHAL_SETOVERLAYPOSITIONDATA
	{
	    LPDDRAWI_DIRECTDRAW_GBL     lpDD;           // driver struct
	    LPDDRAWI_DDRAWSURFACE_LCL   lpDDSrcSurface; // src surface
	    LPDDRAWI_DDRAWSURFACE_LCL   lpDDDestSurface;// dest surface
	    LONG                        lXPos;          // x position
	    LONG                        lYPos;          // y position
	    HRESULT                     ddRVal;         // return value
	    LPDDHALSURFCB_SETOVERLAYPOSITION SetOverlayPosition;
	    											// PRIVATE: ptr to callback
	} DDHAL_SETOVERLAYPOSITIONDATA;
	*/

	// Implementation	
    DWORD   VidCfg;

    /*
     * NOTES:
     *
     * This callback is invoked to set an overlay position
     */
    //DPF( "SET OVERLAY POSITION" );
    //DPF( "Overlay surface = %08lx", lpSOPData->lpDDSrcSurface );
    //DPF( "(%ld,%ld)", lpSOPData->lXPos, lpSOPData->lYPos );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -