Skip to content

Commit e8de761

Browse files
fftzengsys_zuul
authored andcommitted
Use array for shaderResourceLoaded
Change-Id: Ib43984d51c76fd540d66ff9b09326da4b32084cc
1 parent 615c2c1 commit e8de761

9 files changed

+41
-11
lines changed

IGC/Compiler/CISACodeGen/CShader.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ CShader::CShader(Function* pFunc, CShaderProgram* pProgram)
6666
m_constantBufferMask = 0;
6767
m_constantBufferLoaded = 0;
6868
m_uavLoaded = 0;
69-
m_shaderResourceLoaded = 0;
69+
for (int i = 0; i < 4; i++)
70+
{
71+
m_shaderResourceLoaded[i] = 0;
72+
}
7073
m_renderTargetLoaded = 0;
7174
isInputsPulled = false;
7275
m_cbSlot = -1;

IGC/Compiler/CISACodeGen/ComputeShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,10 @@ namespace IGC
289289

290290
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
291291
pKernelProgram->UavLoaded = m_uavLoaded;
292-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
292+
for (int i = 0; i < 4; i++)
293+
{
294+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
295+
}
293296
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
294297

295298
pKernelProgram->hasControlFlow = m_numBlocks > 1 ? true : false;

IGC/Compiler/CISACodeGen/DomainShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,10 @@ namespace IGC
277277
pKernelProgram->VertexURBEntryOutputReadOffset = GetURBHeaderSize();
278278
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
279279
pKernelProgram->UavLoaded = m_uavLoaded;
280-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
280+
for (int i = 0; i < 4; i++)
281+
{
282+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
283+
}
281284
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
282285

283286
pKernelProgram->DeclaresRTAIndex = m_properties.m_isRTAIndexDeclared;

IGC/Compiler/CISACodeGen/GeometryShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,10 @@ namespace IGC
351351

352352
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
353353
pKernelProgram->UavLoaded = m_uavLoaded;
354-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
354+
for (int i = 0; i < 4; i++)
355+
{
356+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
357+
}
355358
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
356359

357360
pKernelProgram->NOSBufferSize = m_NOSBufferSize / getGRFSize(); // in 256 bits

IGC/Compiler/CISACodeGen/HullShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,10 @@ namespace IGC
278278

279279
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
280280
pKernelProgram->UavLoaded = m_uavLoaded;
281-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
281+
for (int i = 0; i < 4; i++)
282+
{
283+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
284+
}
282285
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
283286

284287
pKernelProgram->NOSBufferSize = m_NOSBufferSize / getGRFSize(); // in 256 bits

IGC/Compiler/CISACodeGen/PixelShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,10 @@ namespace IGC
718718
pKernelProgram->hasZWDelta = m_ZWDelta;
719719
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
720720
pKernelProgram->UavLoaded = m_uavLoaded;
721-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
721+
for (int i = 0; i < 4; i++)
722+
{
723+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
724+
}
722725
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
723726

724727
pKernelProgram->hasControlFlow = m_numBlocks > 1 ? true : false;

IGC/Compiler/CISACodeGen/ShaderCodeGen.hpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ namespace IGC
337337

338338
if (bufType == RESOURCE)
339339
{
340-
m_shaderResourceLoaded |= (uint64_t)1 << typeBti;
340+
m_shaderResourceLoaded[typeBti / 32] |= BIT(typeBti % 32);
341341
}
342342
else if (bufType == CONSTANT_BUFFER)
343343
{
@@ -360,7 +360,16 @@ namespace IGC
360360

361361
if (bufType == RESOURCE)
362362
{
363-
m_shaderResourceLoaded |= QWBITMASK_RANGE(0, m_pBtiLayout->GetTextureIndexSize());
363+
unsigned int MaxArray = m_pBtiLayout->GetTextureIndexSize() / 32;
364+
for (unsigned int i = 0; i < MaxArray; i++)
365+
{
366+
m_shaderResourceLoaded[i] = 0xffffffff;
367+
}
368+
369+
for (unsigned int i = MaxArray * 32; i < m_pBtiLayout->GetTextureIndexSize(); i++)
370+
{
371+
m_shaderResourceLoaded[MaxArray] = BIT(i % 32);
372+
}
364373
}
365374
else if (bufType == CONSTANT_BUFFER)
366375
{
@@ -490,7 +499,7 @@ namespace IGC
490499
uint m_constantBufferMask;
491500
uint m_constantBufferLoaded;
492501
uint m_uavLoaded;
493-
uint64_t m_shaderResourceLoaded;
502+
uint m_shaderResourceLoaded[4];
494503
uint m_renderTargetLoaded;
495504

496505
int m_cbSlot;

IGC/Compiler/CISACodeGen/VertexShaderCodeGen.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ namespace IGC
174174
pKernelProgram->MaxNumberOfThreads = m_Platform->getMaxVertexShaderThreads(isPositionOnlyShader);
175175
pKernelProgram->ConstantBufferLoaded = m_constantBufferLoaded;
176176
pKernelProgram->UavLoaded = m_uavLoaded;
177-
pKernelProgram->ShaderResourceLoaded = m_shaderResourceLoaded;
177+
for (unsigned int i = 0; i < 4; i++)
178+
{
179+
pKernelProgram->ShaderResourceLoaded[i] = m_shaderResourceLoaded[i];
180+
}
178181
pKernelProgram->RenderTargetLoaded = m_renderTargetLoaded;
179182

180183
pKernelProgram->hasVertexID = m_properties.m_HasVertexID;

IGC/Compiler/CodeGenPublic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ namespace IGC
264264
unsigned int NOSBufferSize = 0;
265265
unsigned int ConstantBufferLoaded = 0;
266266
unsigned int UavLoaded = 0;
267-
uint64_t ShaderResourceLoaded = 0;
267+
unsigned int ShaderResourceLoaded[4];
268268
unsigned int RenderTargetLoaded = 0;
269269

270270
bool hasControlFlow = false;

0 commit comments

Comments
 (0)