Directx issues with intel GPU's

Started by
7 comments, last by Evil Steve 15 years, 5 months ago
My Configuration is Delphi 2006 Directx 8.1 (Facilitated by XORDX) Windows XP Intel 965G I Created a simple project which renders a few objects, it works Perfectly except some intel GPU's (965G amongst them) on the fore mentioned cards I get weired side effects, my application suddenly crashes with no exception and my pc is hard resetting i noticed that it happens most but not only when i use the entire video memory, (meaning prior to D3DERR_OUTOFVIDEOMEMORY error return result) when i try to create new textures or create new D3D device which requires video memory for creating the back buffer Anyone has got idea what is it with the intel video cards ?
Advertisement
Intel IGP's don't have a particularly good reputation as gaming friendly unfortunately. Some of their latest ones haven't faired so badly and there is a lot of hype about their next generation, but ultimately they have the biggest market share and also the worst performance...

That said, hard crashes are a little worse than poor performance!

Using non-buffered IO can you log what happens immediately before your crash? Are you checking all return codes? Are you enumerating all features you rely on? It could well be that the driver is telling you that something won't work, you then try to use it and it explodes...

If you're definitely sure its a memory issue then that is fair enough - maybe you simply can't run your code on the given hardware!

Also, try running with the reference rasterizer to ensure you're not relying on any non-standard behaviour.


hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

im having a semi similar problem on a sony vaio with a gm965 which is supposed to be dx10 compatible with the gma x3100, the dxdiag says dx10 is installed fine but i cant get any dx10 apps to run on it. they keep crashing when i create the device.
Quote:Original post by ucfchuck
im having a semi similar problem on a sony vaio with a gm965 which is supposed to be dx10 compatible with the gma x3100, the dxdiag says dx10 is installed fine but i cant get any dx10 apps to run on it. they keep crashing when i create the device.
Define "crashing", Access violation? Blue Screen Of Death? Hard reboot? Computer bursts into flames?

As for the original problem; anything causing the PC to reboot is almost certainly a driver bug - no user mode app should be able to bring down the OS in a reasonable OS (I.e. post Win9x).
If your PC is rebooting, it's probably a Blue Screen Of Death - you can disable the auto reboot so you can read the message by going to Control Panel -> System -> Advanced -> (Startup and Recovery) Settings, and unchecking the "Automatically Restart" option. That'll let you write down the error and post it here or Google it for some help.

In any case, make sure you have the latest graphics chipset drivers.
thanks for the replies , I yet to try jollyjeffers suggestions,
however here is some debug information from the BSOD crash dump
it seems that igxpdv32.DLL is a bit problematic.

Debugging Details:
------------------

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s".

FAULTING_IP:
igxpdv32+c63b
bf06463b 8b8280000000 mov eax,dword ptr [edx+80h]

TRAP_FRAME: a9250b20 -- (.trap 0xffffffffa9250b20)
.trap 0xffffffffa9250b20
ErrCode = 00000000
eax=00000000 ebx=86c1f000 ecx=e1d1b008 edx=00000000 esi=00000000 edi=0000002c
eip=bf06463b esp=a9250b94 ebp=00000001 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
igxpdv32+0xc63b:
bf06463b 8b8280000000 mov eax,dword ptr [edx+80h] ds:0023:00000080=????????
.trap
Resetting default scope

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x8E

PROCESS_NAME: Polygon.exe

LAST_CONTROL_TRANSFER: from bf960fba to bf06463b

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
a9250c2c bf960fba a9250ce4 00000140 00000008 igxpdv32+0xc63b
a9250c68 bf000663 a9250ce4 a9250d64 0013fc94 win32k!WatchdogDdDrawPrimitives2+0x4e
a9250d40 8054086c 924029d2 00000000 0015695c dxg!DxD3dDrawPrimitives2+0x1b9
a9250d40 7c90eb94 924029d2 00000000 0015695c nt!KiFastCallEntry+0xfc
0013fca4 00000000 00000000 00000000 00000000 0x7c90eb94


STACK_COMMAND: kb

FOLLOWUP_IP:
igxpdv32+c63b
bf06463b 8b8280000000 mov eax,dword ptr [edx+80h]

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: igxpdv32+c63b

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: igxpdv32

IMAGE_NAME: igxpdv32.DLL

DEBUG_FLR_IMAGE_TIMESTAMP: 48c95af3

FAILURE_BUCKET_ID: 0x8E_igxpdv32+c63b

BUCKET_ID: 0x8E_igxpdv32+c63b

Followup: MachineOwner
---------

eax=00000000 ebx=86c1f000 ecx=e1d1b008 edx=00000000 esi=00000000 edi=0000002c
eip=bf06463b esp=a9250b94 ebp=00000001 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
igxpdv32+0xc63b:
bf06463b 8b8280000000 mov eax,dword ptr [edx+80h] ds:0023:00000080=????????
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
a9250c2c bf960fba a9250ce4 00000140 00000008 igxpdv32+0xc63b
a9250c68 bf000663 a9250ce4 a9250d64 0013fc94 win32k!WatchdogDdDrawPrimitives2+0x4e (FPO: [Non-Fpo])
a9250d40 8054086c 924029d2 00000000 0015695c dxg!DxD3dDrawPrimitives2+0x1b9 (FPO: [Non-Fpo])
a9250d40 7c90eb94 924029d2 00000000 0015695c nt!KiFastCallEntry+0xfc (FPO: [0,0] TrapFrame @ a9250d64)
0013fca4 00000000 00000000 00000000 00000000 0x7c90eb94
Quote:Original post by Devestator
FAULTING_IP:
igxpdv32+c63b
bf06463b 8b8280000000 mov eax,dword ptr [edx+80h]

TRAP_FRAME: a9250b20 -- (.trap 0xffffffffa9250b20)
.trap 0xffffffffa9250b20
ErrCode = 00000000
eax=00000000 ebx=86c1f000 ecx=e1d1b008 edx=00000000 esi=00000000 edi=0000002c
eip=bf06463b esp=a9250b94 ebp=00000001
That's a null pointer dereference right there - the driver is accessing something 0x80 bytes from the start of a struct, and the struct pointer is null.

Quote:Original post by Devestator
DEFAULT_BUCKET_ID: DRIVER_FAULT

a9250c2c bf960fba a9250ce4 00000140 00000008 igxpdv32+0xc63b
win32k!WatchdogDdDrawPrimitives2+0x4e
a9250d40 8054086c 924029d2 00000000 0015695c dxg!DxD3dDrawPrimitives2+0x1b9
a9250d40 7c90eb94 924029d2 00000000 0015695c nt!KiFastCallEntry+0xfc
That shows it happens in one of the internal DrawPrimitive() calls.

Basically - it's a driver fault. Do you have the latest video drivers for your machine?

Quote:Original post by Evil Steve
That shows it happens in one of the internal DrawPrimitive() calls.

Basically - it's a driver fault. Do you have the latest video drivers for your machine?


You'll be suprised to know that i didn't send even one polygon to the render pipeline, I implemented an empty draw procedure, it is looks like a driver fault however i'm looking for a way to get around this.
Quote:Original post by jollyjeffers
try running with the reference rasterizer to ensure you're not relying on any non-standard behaviour.

hth
Jack


jollyjeffers, I had difficulties running the "reference rasterizer", the Directx return codes seems to be ok, but nothing gets rendered , all I get is black
(background color) screen.

Quote:Original post by Devestator
Quote:Original post by jollyjeffers
try running with the reference rasterizer to ensure you're not relying on any non-standard behaviour.

hth
Jack


jollyjeffers, I had difficulties running the "reference rasterizer", the Directx return codes seems to be ok, but nothing gets rendered , all I get is black
(background color) screen.
That tends to mean that you're doing something wrong then. The REF device is always correct - if it's not rendering something but the HAL device is, then you're somehow managing to render due to a driver glitch or unspecified behaviour.

Double check that all your functions are succeeding and there's no warnings or errors from the Debug Runtimes.

This topic is closed to new replies.

Advertisement