• Advertisement
Sign in to follow this  

DrawIndexedInstanced on feature_level_9_3?

This topic is 2035 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

[code]
// 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 },
};

[/code]

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

Share this post


Link to post
Share on other sites
Advertisement
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.
[code]
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).
[/code]

So it's a driver error?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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 :(

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement