Jump to content
  • Advertisement
Sign in to follow this  
red75prime

[D3D12] WARP device crashes on conservative rendering

This topic is 774 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

Did anyone experience something similar?

 

EDIT: crash information: 0xC0000094: Integer division by zero in d3d12warp.dll!Interpolate<class EdgeIteratorPairGeneric<class EdgeIterator,1,0> >(struct InterpolationContext &)

 

 

WARP device crashes program when I use conservative rendering. Crash occurs inside working thread of WARP device (I guessed it by call stack). Crash occurs only when the shape, I draw using conservative rasterization, is visible. GTX 980 works fine.

 

Pipeline setup (in Rust): https://github.com/red75prime/dxgen/blob/8824b6f79c7353cd807adced67a628f9457eea0d/src/dxgen/scaffolding/src/light.rs#L51-L74

 

Command list: https://github.com/red75prime/dxgen/blob/8824b6f79c7353cd807adced67a628f9457eea0d/src/dxgen/scaffolding/src/light.rs#L142-L152

 

Resources (I use upload heap): https://github.com/red75prime/dxgen/blob/8824b6f79c7353cd807adced67a628f9457eea0d/src/dxgen/scaffolding/src/light.rs#L98-L130

 

I don't use input assembler in shader.

// constants, instance data, indices, coordinated, normals, texture coords
#define RSD "RootFlags(0)," \
            "CBV(b0), SRV(t1), SRV(t2), SRV(t3)" 

#include "view_constants.hlsl"
//// Content of view_constants.hlsl
//cbuffer cb0 : register(b0) {
//  float4x4 view;
//  float4x4 proj;
//  float3 eye_pos;
//  float3 light_pos;
//}


struct Indices {
  uint crd;
  uint nrm;
  uint tex;
};

StructuredBuffer<Indices> indices : register(t1);
StructuredBuffer<float3> coords: register(t2);
StructuredBuffer<float3> normals: register(t3);
//StructuredBuffer<float2> tex_coord: register(t4); 

struct VS_OUTPUT
{
    float4 pos: SV_Position;
};

[RootSignature(RSD)]
VS_OUTPUT VSMain(uint vtx: SV_VertexID) {
  VS_OUTPUT ret;
  // Instancing isn't used for now. Number of instances is 1.
  ret.pos = float4(coords[indices[vtx].crd]/10 + light_pos, 1);
  ret.pos = mul(ret.pos, view);
  ret.pos = mul(ret.pos, proj);

  return ret;
}

[RootSignature(RSD)]
float4 PSMain() : SV_TARGET {
  return float4(200, 200, 200, 1);
}

Edited by red75prime

Share this post


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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!