Skip to main content
GameDev.net gamedev.net
🔒 Locked

D3D11 WARNING: ID3D10Device::CopyResource

Started by AquaMacker Apr 11, 2014 at 6:32 AM 7 replies 3.9k views
Original Post
AquaMacker
AquaMacker

HI

D3D11 WARNING: ID3D10Device::CopyResource: This ID3D10Device[1] method of the immediate context is locked out because an ID3D11Device[1] device context state is active. [ STATE_SETTING WARNING #3145945: DEVICE_LOCKEDOUT_INTERFACE]

Have you ever seen before this warning message in output window ?

What the hell....?!

In My All source there is no CopyResource.
I Don't know where to find that error message.

Is that no big trouble ?
That warning comes out my program slower.
I guess that warning is big problem !!!

How can I fix that warning ?

Thanks in advance. smile.png


AquaMacker
AquaMacker

Please don't pass indifferencely.

I use multithread. Is related to that warnning ?

Come on Guy !!!

Jason Z
Jason Z

Somehow you are calling a D3D10 Device method. Behind the COM interface is an object that may or may not implement multiple of the device interfaces, so it isn't alarming to see this type of message. My guess is that you have accidentally acquired a D3D10 device when you meant to get an 11 device.

Can you show the code where you create your device, and the declaration of the device COM pointer that is causing this warning message to come up?

Jason Zink :: DirectX MVP   Direct3D 11 engine on CodePlex: Hieroglyph 3 Direct3D Books: 
Juliean
Juliean

In the directx-control panel, in the Direct3D 10.x/11-tab, go to "Break Settings" an "Enable break on functionality", also tick "warning". Now you should see at least the line where this warning is issued, unless you got any other warnings that are issued before that.

EDIT: You also need to add your application to the list in "Edit list" on that page.

AquaMacker
AquaMacker

Thanks I found !!!


hr = 
D3DX10CreateMesh( pDevice, stVertex::pInputElementDesc, stVertex::nNumElements,
stVertex::pInputElementDesc[0].SemanticName,
36, 12,
D3DX10_MESH_32_BIT,
&pMesh );

pMesh->SetVertexData( 0, vertices );
pMesh->SetIndexData( indices, nIndexCount );

pMesh->GenerateAdjacencyAndPointReps( 0.001f );
pMesh->Optimize( D3DX10_MESHOPT_ATTR_SORT | D3DX10_MESHOPT_VERTEX_CACHE, 0, 0 );
pMesh->CommitToDevice() !!! <- that warning point 

This part is so simple box making source. so simple so simple.
Vertex number 36, index number is 12.
Vertex values is wrong ? hr is S_OK.

I don't understand.


I use ID3D10Device1* pDevice. Is related ?

Juliean
Juliean




D3DX10CreateMesh

This is DirectX10 functionality, so thats at least why the DX10-function in the warning is called. I don't think this function still works for DX11, from what I know DX11 doesn't have a default mesh class, you have to write yourself one and do the vertex buffer loading manually, or use e.g. DXUT-mesh or something like that.

AquaMacker
AquaMacker

Thank you very much, Juliean.

But my english is so bad.

I use DX10.1 (
ID3D10Device1) not DX11.

Am I change Device to
ID3D10Device ?

and that source is I loading VB manually.

I'm sorry for my bad english...

SeanMiddleditch
SeanMiddleditch

Thank you very much, Juliean.

I use DX10.1 (
[background=#fafbfc]ID3D10Device1) not DX11.

Am I change Device to [/background]

[background=#fafbfc]ID3D10Device ?[/background]

Use D3D10CreateDeviceAndSwapChain1 which creates an ID3D10Device1

Though there is absolutely no good reason to use DirectX 10. The only OS that supports 10 but not 11 is early un-patched Vista. You can use Direct3D11 on older hardware by setting a feature level, so you can ask Direct3D11 to limit itself to features supported by D3D9, D3D10, or D3D10.1 features. When doing so, you are still using the Direct3D11 API and cannot mix in old Direct3D10 code.
Sean Middleditch – Game Systems Engineer – Join my team!
AquaMacker
AquaMacker

VB,IB better than ID3DX10Mesh. smile.png smile.png smile.png

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.