зеркало из https://github.com/stride3d/xkslang.git
remapper: do not eliminate interface variables in dce by default
this is done by counting op_entrypoint as a use/def
This commit is contained in:
Родитель
85b52f304d
Коммит
39d5e711a7
|
@ -926,8 +926,17 @@ namespace spv {
|
||||||
// Count function variable use
|
// Count function variable use
|
||||||
process(
|
process(
|
||||||
[&](spv::Op opCode, unsigned start) {
|
[&](spv::Op opCode, unsigned start) {
|
||||||
if (opCode == spv::OpVariable) { ++varUseCount[asId(start+2)]; return true; }
|
if (opCode == spv::OpVariable) {
|
||||||
return false;
|
++varUseCount[asId(start+2)];
|
||||||
|
return true;
|
||||||
|
} else if (opCode == spv::OpEntryPoint) {
|
||||||
|
const int wordCount = asWordCount(start);
|
||||||
|
for (int i = 4; i < wordCount; i++) {
|
||||||
|
++varUseCount[asId(start+i)];
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else
|
||||||
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
[&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }
|
[&](spv::Id& id) { if (varUseCount[id]) ++varUseCount[id]; }
|
||||||
|
|
Загрузка…
Ссылка в новой задаче