Advertisement Jump to content
Sign in to follow this  
red75prime

[D3D12] WARP device crashes on conservative rendering

This topic is 952 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.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!