<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - nir_instr_as_deref: Assertion `parent && parent->type == nir_instr_type_deref' failed."
href="https://bugs.freedesktop.org/show_bug.cgi?id=109603#c1">Comment # 1</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - nir_instr_as_deref: Assertion `parent && parent->type == nir_instr_type_deref' failed."
href="https://bugs.freedesktop.org/show_bug.cgi?id=109603">bug 109603</a>
from <span class="vcard"><a class="email" href="mailto:xavierb@gmail.com" title="xbx <xavierb@gmail.com>"> <span class="fn">xbx</span></a>
</span></b>
<pre>the hlsl code it was compiled from:
RWBuffer<uint> Weights : register(u0);
struct SCtx
{
uint iList ;
uint LightId ;
float LightW ;
};
void LoadLight(in out SCtx C)
{
const uint LightIdW = Weights[C.iList];
C.LightId = LightIdW & 0xFFFFFF;
C.LightW = float(LightIdW >> 24)/255.;
}
void GoToNextLight(in out SCtx C, uint LightId)
{
if (LightId != C.LightId)
return;
C.iList++;
LoadLight(C);
}
groupshared uint Group_DstLightIdWs[16 * 32];
[numthreads(32,1,1)]
void main(uint iMerge : SV_DispatchThreadID)
{
const uint iListSrc0 = 4 * iMerge;
const uint iDstLightIdW_Start = 16 * iMerge;
SCtx Ctxs[4];
[loop]
for (uint iDstLightIdW = 0; iDstLightIdW<16; iDstLightIdW++) {
uint LightId = Ctxs[0].LightId;
Group_DstLightIdWs[iDstLightIdW_Start + iDstLightIdW] =
LightId;
for (uint iListSrc = 0; iListSrc < 4; iListSrc++) {
GoToNextLight(Ctxs[iListSrc], LightId);
}
}
if (iMerge < 123) {
for (uint iDstLightIdW = 0; iDstLightIdW<16; iDstLightIdW++) {
Weights[iDstLightIdW_Start+iDstLightIdW] =
Group_DstLightIdWs[iDstLightIdW_Start+iDstLightIdW];
}
}
}</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>