• Advertisement
Sign in to follow this  

[D3D12] WARP device crashes on conservative rendering

This topic is 681 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;

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;

float4 PSMain() : SV_TARGET {
  return float4(200, 200, 200, 1);

Edited by red75prime

Share this post

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

  • Advertisement