Closed Bug 599675 Opened 14 years ago Closed 14 years ago

d3d device lost detection needs more work

Categories

(Core :: Graphics, defect)

x86
Windows 7
defect
Not set
major

Tracking

()

RESOLVED FIXED
Tracking Status
blocking2.0 --- beta7+

People

(Reporter: vlad, Assigned: bas.schouten)

Details

Attachments

(1 file)

I see consistent lockup of my browser window if a GPU reset occurs.  Win 7 64-bit, another app is doing the GPU reset, nvidia 260.61 drivers.


17:53 < vlad> Bas: so this hang, it is ThebesLayerD3D9::DrawRegion calling cairo_d2d_finish_device, which in turn does:
17:53 < vlad> while (!done) { if (FAILED(query->GetData(&done, sizeof(BOOL), 0)) break; }
17:53 < vlad> that is never failing, and is never setting done to true
17:54 < vlad> I am guessing we should be checking for device lost inside that loop

I think it has to be done inside the loop, because the async nature of things means that the reset might not happen until we're actually executing that loop.
blocking2.0: --- → ?
That's bad, the function should 'fail' as soon as the device is lost, rather than return S_FALSE for not having the data! (and it seems to do that on my machine) But I guess that isn't very reliable then! D3D10 layers should take care of this but in the meanwhile we might want to insert a check for DeviceRemovedReason and break is that returns some form of device loss.
This takes care of breaking out of the loop when a device is lost.
Assignee: nobody → bas.schouten
Status: NEW → ASSIGNED
Attachment #478661 - Flags: review?(vladimir)
Attachment #478661 - Flags: review?(vladimir) → review+
http://hg.mozilla.org/mozilla-central/rev/e6ae83018a7c
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: