Page 1 of 3
intel q965/963 directx bluescreen
Posted: Thu May 15, 2008 9:10 pm
by djes
I have some problems on intel chipset regarding directx applications. It occurs directly on initsprite(), on several computers.
Is there a workaround?
Posted: Thu May 15, 2008 10:48 pm
by Fred
Driver issue ?
Posted: Thu May 15, 2008 11:21 pm
by djes
Well, certainly (intel rulez!). It's a bit annoying, as Intel is the 1st graphic chipset seller ( :roll: ). No hope to found why? If you want, I can launch a step by step code and give you the result. I have three computers at work with the problem and another one at a friend's home.
Posted: Thu May 15, 2008 11:24 pm
by Tranquil
Here at work we also use Intel Graphic and I can not reproduce a bluescreen.
Could you give a source to test?
Posted: Thu May 15, 2008 11:34 pm
by djes
Just initsprite(). I did all I can do. Updating drivers, checking speedstep, modifying ram settings, and others things I forgot.
What is your chipset?
I'll try again tomorrow.
Posted: Fri May 16, 2008 1:35 am
by Mistrel
Which on-board Intel graphics accelerator are you using?
Posted: Fri May 16, 2008 3:14 am
by Tranquil
We use the Intel 82845G Graphic controller which works fine.
Posted: Fri May 16, 2008 1:15 pm
by djes
Confirmed. After several tests, latest graphic drivers installed, there's a blue screen not on initsprite() as i said before, but on loadsprite().
The test has been done with the sprite3d.pb example in the pb source's directory. Hang on :
Code: Select all
LoadSprite(0, "Data\Geebee2.bmp", #PB_Sprite_Texture)
I've tried to load a png instead, changing the bmp size, using directx9 subsystem, with no result. Bluescreen indicates a defect in one of the drivers dll, but the majority of games tested are working perfectly, even in 3d
Strangely, there's no problem on regular sprites examples...
Posted: Wed Aug 27, 2008 10:44 pm
by rotacak
I have same problem here. If you remove "#PB_Sprite_Texture", then it work ok. Otherwise blue screen

GFX card: intel 965
This will work:
Code: Select all
InitSprite()
OpenScreen(800, 600, 32, "x")
LoadSprite(1, "x.png",#PB_Sprite_Texture)
This no:
Code: Select all
InitSprite3D()
OpenScreen(800, 600, 32, "x")
LoadSprite(1, "x.png",#PB_Sprite_Texture)
This also no:
Code: Select all
OpenScreen(800, 600, 32, "x")
LoadSprite(1, "x.png",#PB_Sprite_Texture)
It will cause blue screen or when you have installed visual studio, then this appear (but not always, when is biggest code, then blue screen):
Can be texture loaded in any other way than this for Sprite3D usage?
Posted: Thu Oct 09, 2008 1:25 am
by rotacak
I know, I should not ask if this bug will be fixed, but I see many [done] around with not fatal bugs. And this is fatal bug, because some users cant use programs from purebasic.
In better case this can be checked and program can show something like "You have modern but unsupported graphic card". In worst case will just crash whole OS to bluescreen.
Both cases are bad. User will buy software written in purebasic and that software may not work.
So, I want to ask if this will be fixed sometime soon, or if someone working on it, or if this bug can be bypassed trough another commands. Because otherwise I must rewrite my program to other basic.

Posted: Thu Oct 09, 2008 9:44 am
by djes
I have found that on some of theses chipsets, the bsod occurs when one's trying to force hardware support for vertex shader. You have to test if the hw is able to do it, and not let directx do it for you... Maybe it could work. I have found this piece of code :
Code: Select all
DWORD SetVertexProcessingMode( LPDIRECT3D9 pD3D )
{
DWORD vertexprocessingmode; // vertex processing mode
D3DCAPS9 caps; &nbs p; // Device CAPs structure
D3DADAPTER_IDENTIFIER9 adapterID; // Used to store device info
// Retrieve device capabilities
if( g_pD3D->GetDeviceCaps( 0, D3DDEVTYPE_HAL, &caps ) != D3D_OK )
{
return E_FAIL; // exit if reading caps fails...
}
// Check if hardware T&L is supported...
// - The D3DDEVCAPS_HWTRANSFORMANDLIGHT capability should
// be enabled for GMA X3000
if ( ( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) != 0 )
{
vertexprocessingmode = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
// Check vendor and device ID and enable software vertex
// processing for Intel(R) Graphics...
// Gather the primary adapter's information...
if( g_pD3D->GetAdapterIdentifier(0,0,&adapterID ) != D3D_OK )
{
return E_FAIL;
}
if ( ( adapterID.VendorId == 0x8086 ) && // Intel Architecture
( adapterID.DeviceId == 0x2A02 ) || // GM965 Device 0
( adapterID.DeviceId == 0x2A03 ) || // GM965 Device 1
( adapterID.DeviceId == 0x29A2 ) || // G965 Device 0
( adapterID.DeviceId == 0x29A3 ) || // G965 Device 1
( adapterID.DeviceId == 0x27A2 ) || // 945GM Device 0
( adapterID.DeviceId == 0x27A6 ) || // 945GM Device 1
( adapterID.DeviceId == 0x2772 ) || // 945G Device 0
( adapterID.DeviceId == 0x2776 ) || // 945G Device 1
( adapterID.DeviceId == 0x2592 ) || // 915GM Device 0
( adapterID.DeviceId == 0x2792 ) || // 915GM Device 1
( adapterID.DeviceId == 0x2582 ) || // 915G Device 0
( adapterID.DeviceId == 0x2782 ) || // 915G Device 1
{
vertexprocessingmode = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
else
{
// Chipset does not meet minimum requirements...
return E_MINSPEC;
}
}
return vertexprocessingmode;
}
here :
http://software.intel.com/en-us/article ... pers-guide
Posted: Sat Oct 11, 2008 2:54 pm
by Fred
For now, we don't force hardware vertex processing, the default is software (if the capability D3DDEVCAPS_HWTRANSFORMANDLIGHT isn't found).
Posted: Sat Oct 11, 2008 3:29 pm
by djes
Ok... Damn Intel!

Posted: Sat Oct 11, 2008 3:36 pm
by Fred
From what i understand, it test it only if the capability isn't present, and as the software mode is the mimum one.. May be we can add this check, but the screen will not open then, if it returns E_MINSPEC
Posted: Sat Oct 11, 2008 4:30 pm
by djes
Yes, it will need more searches...