Problem with AlphaBlend() on x86 device with Win Ce 6.0R2 and VS20
- From: Vijay Vaidya <VijayVaidya@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 14 Sep 2009 07:34:02 -0700
- We are working with AMD Geode LX800 Board. The development platform we
are using is VS2005 and Win CE 6.0 R2 with VS2005 with SP1.
- The development machine is XP Professional with SP2
- We have successfully made the OS image with the BSP that came with
the board.
- The component 'Alphablend API(GDI Version)' is selected in the OS Image.
- When I wrote a simple .net app with P/Invoke to AlphaBlend() it gave a
'NotSupportedException'
- To probe further I wrote a small native app that called AlphaBlend() in it's
WM_PAINT message.
- It reurned FALSE (meaning failure) with GetLastError() giving
6: means Invalid Handle
- It indicated that the OS is not able to do reqd. operation (viz.
AlphaBlending)
with the hDC it has or the hDC does not have requisite capabilities.
- The display driver that I am using is 'lxvideo.dll' that AMD provided along
with it's source code.
The statement
'- GDI and DDraw alpha-blending support.'
in the driver's 'readme.txt' indicated that the driver supports
alpha-blending.
- I changed the DebugZones of the driver to include all the zones to check
where exactly the call is failing.
- Surprisingly, the code was not reaching the Driver at all as there were no
debug messages emitted at this point.
This made me conclude that the call is returning at the OS level itself.
- Then i probed further. The driver lxvideo.dll is based on GPE classes
provided with the OS. In the list of functions that the display driver
is supposed to export, i found following structure in 'ddi_if.cpp '
under \WINCE600\PUBLIC\COMMON\OAK\DRIVERS\DISPLAY\GPE\ddi_if.cpp
const DRVENABLEDATA pDrvFn = {
{ DrvEnablePDEV },
{ DrvDisablePDEV },
:
:
{ NULL /* DrvEndDoc */ },
{ NULL /* DrvStartDoc */ },
{ NULL /* DrvStartPage */ },
{ DrvEscape },
{ NULL /* DrvGradientFill */ },
{ NULL /* DrvAlphaBlend */ },
{ NULL /* DrvExclusiveMode */ },
{ DrvDisableDriver }
};
Thre is 'NULL' against DrvAlphaBlend
- i could not find any pointers on the net regarding this point.
My probing stopped at this point.
- My doubts are,
- does this mean GPE class as implemented here does not have support
for AlphaBlending on x86 devices.
- this also explained whay the code was not reaching driver at all
- if it is so, is there any workaround like a better GPE implementation
that includes AlphaBlending
- Any help will be higly appreciated.
Vijay Vaidya
.
- Prev by Date: Re: Build issues after applying updates to CE 6.0
- Next by Date: Install of SDK after creation fails with ToolsMsmCA(Error)
- Previous by thread: PCMCIA CF card does not work properly
- Next by thread: Install of SDK after creation fails with ToolsMsmCA(Error)
- Index(es):
Relevant Pages
|