• Create Account

## DrawIndexedInstanced on feature_level_9_3?

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

5 replies to this topic

### #1hupsilardee  Members

491
Like
0Likes
Like

Posted 23 June 2012 - 02:10 PM

Now apparently DrawIndexedInstanced is supported on feature level 9_3 / vs_4_0_level_9_3, but it seems to be crashing for me, does anybody know why this might be happening? I'm definitely not exceeding the primitive, index or texture repeat restrictions, it's a 33 polygon tree drawn 4 times.
The error is a "Unhandled exception at 0x76cbfc56 in XEngine11.exe: 0x0000087C: 0x87c." Weird that there seems to be no description text
Here is an outline of the setup: Perhaps I have set up the input layout incorrectly?

// Vertex Shader: normal and texcoord parts snipped
VSOutput VSmain(float3 iPos : POSITION0, float3 iNorm : NORMAL0, float2 iTex : TEXCOORD0 ,float3 iInstPos : POSITION1)
{
float4 worldPos = mul(float4(iPos, 1), World);
worldPos.xyz += iInstPos;
float4 viewPos = mul(worldPos, View);
float4 projPos = mul(viewPos, Proj);

VSOutput output;
output.Position = projPos;
return output;
}

// Input layout

D3D11_INPUT_ELEMENT_DESC desc[] =
{
// { name, index, format, slot, offset, class, steprate }

// stream 0
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },

// stream 1
{ "POSITION", 1, DXGI_FORMAT_R32G32B32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 },
};



I've tried using TEXCOORD1 and NORMAL1 as the semantics for the instance position in the shader but that didnt work. Also, somebody else at the XNA forums seemed to have a similar problem, but theirs was solved by making sure the semantic index was explicitly typed in the shader, which is not my problem.

I remember this was particularly fiddly to achieve in D3D9. Just hoping it doesn't take too long to figure out for D3D11.

EDIT: I tried changing my index buffer to use 32 bit indices (DXGI_FORMAT_R32_UINT). Now the same crash occurs - at the line where the index buffer is bound to the pipeline.

Edited by hupsilardee, 25 June 2012 - 04:14 AM.

### #2MJP  Moderators

18192
Like
0Likes
Like

Posted 23 June 2012 - 04:36 PM

That code you have looks okay...do you have the DEBUG flag enabled for your device?

### #3hupsilardee  Members

491
Like
0Likes
Like

Posted 24 June 2012 - 03:50 AM

I had D3D11_CREATE_DEVICE_DEBUG enabled, and in the DX control panel I put D3D9 on debug with maximum output and D3D11 with "Force On" and the project added to the executable list. So it gives me some interesting messages in the output window.
D3D11: Removing Device.
D3D11: WARNING: ID3D11Device::RemoveDevice: Device removal has been triggered for the following reason (DXGI_ERROR_DRIVER_INTERNAL_ERROR: There is strong evidence that the driver has performed an undefined operation; but it may be because the application performed an illegal or undefined operation to begin with.). [ EXECUTION WARNING #379: DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT ]
D3D11: Raising UM Driver Internal Error to continuable exception.First-chance exception at 0x76cbfc56 in XEngine11.exe: 0x0000087C: 0x87c.
Unhandled exception at 0x76cbfc56 in XEngine11.exe: 0x0000087C: 0x87c.
The program '[19512] XEngine11.exe: Native' has exited with code 2172 (0x87c).


So it's a driver error?

### #4MJP  Moderators

18192
Like
0Likes
Like

Posted 24 June 2012 - 01:53 PM

Yeah it looks like you crashed the driver somehow. These kinds of things can be hard to track down.

### #5mhagain  Members

12429
Like
0Likes
Like

Posted 24 June 2012 - 11:01 PM

Try verifying against a WARP device with feature level 11 - that will help confirm if it's your code or level 9_3 that's causing you trouble.

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.

### #6hupsilardee  Members

491
Like
0Likes
Like

Posted 25 June 2012 - 03:40 AM

Good idea. Should have thought of that earlier. As it turns out, the WARP device renders 4 models as expected, so it's level_9_3 causing the problem

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.