Problem with AlphaBlend() on x86 device with Win Ce 6.0R2 and VS20

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



- 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


.



Relevant Pages

  • Re: how to put together an AMD Geode LX based thin client
    ... I want to develop a thin client solution using the AMD Geode LX 800 ... The target market for this CPU is embedded systems, ... signal quality on the VGA port; it does have a DVI port, ... graphics of this port should be supported by the Unichrome X driver ...
    (comp.os.linux.hardware)
  • no 64bit geodes (yet?)
    ... tristate "AMD Geode HW Random Number Generator support" ... This driver provides kernel-side support for the Random Number ...
    (Linux-Kernel)