I had a bit of trouble trying to find the correct forum to post this in, I hope this is fine.
I am currently investigating hardware accelerated rendering options for our company's products on an Atom N270 with 945GSE chipset. We are running on Windows CE 6.0 and are using the Intel drivers found on the IEGD download page herehttps://www-ssl.intel.com/p/s/en_US/embedded/hwsw/software/iegd?iid=1194#download
Hardware acceleration works but not very well. I have identified it as a problem with the driver after the test applications I have used work with the reference renderer.
Basically nothing is rendered when multiple calls to DrawPrimitive() are made. DrawPrimitive() and DrawIndexedPrimitive() have the same results. No errors are being returned by D3DM calls.
The variable g_bTryAndRenderTwo in the attached project turns drawing of multiple cylinders on and off. The g_bUseRef variable toggles the reference renderer. The attached screen shots show when one draw call is made (cylinder is rendered) and when two are made (cylinder is not rendered) unless using the reference renderer. The reference render is included in the zip file for convenience.
Interestingly if you comment out the second call to SetupMatrices() right before the second call to DrawPrimitive(), the cylinder is rendered but the second call seems to be ignored. This might sound like it is a problem with SetupMatrices() but if you use the following code in Render() and switch the two DrawPrimitive() calls you can see one half of the cylinder rendered. Enabling both calls results in only the first DrawPrimitive() working.
//g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLESTRIP, 0, (2*50-2) /2 );
//if( g_bTryAndRenderTwo )
g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLESTRIP, 50, 48 );
I have tried this on multiple machines (same specifications) with the same results.
This has been bothering me for over a week now and it seems I keep going around in circles.
Are there any known issues with the Intel drivers on Windows CE 6.0 that might explain the results I am getting? If there are, is there a work-around I may be able to use?
I appreciate the time you've taken to look over this already.