mirror of
https://github.com/RPCS3/glslang.git
synced 2024-11-24 03:39:51 +00:00
SPV: Generate the LocalSize Execution Mode for compute shaders.
This commit is contained in:
parent
56bab0483a
commit
b56a26ab4d
@ -493,6 +493,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(const glslang::TIntermediate* gls
|
|||||||
|
|
||||||
case EShLangCompute:
|
case EShLangCompute:
|
||||||
builder.addCapability(spv::CapabilityShader);
|
builder.addCapability(spv::CapabilityShader);
|
||||||
|
builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0),
|
||||||
|
glslangIntermediate->getLocalSize(1),
|
||||||
|
glslangIntermediate->getLocalSize(2));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -648,14 +648,18 @@ void Builder::addEntryPoint(ExecutionModel model, Function* function, const char
|
|||||||
entryPoints.push_back(entryPoint);
|
entryPoints.push_back(entryPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int value)
|
// Currently relying on the fact that all 'value' of interest are small non-negative values.
|
||||||
|
void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int value1, int value2, int value3)
|
||||||
{
|
{
|
||||||
// TODO: handle multiple optional arguments
|
|
||||||
Instruction* instr = new Instruction(OpExecutionMode);
|
Instruction* instr = new Instruction(OpExecutionMode);
|
||||||
instr->addIdOperand(entryPoint->getId());
|
instr->addIdOperand(entryPoint->getId());
|
||||||
instr->addImmediateOperand(mode);
|
instr->addImmediateOperand(mode);
|
||||||
if (value >= 0)
|
if (value1 >= 0)
|
||||||
instr->addImmediateOperand(value);
|
instr->addImmediateOperand(value1);
|
||||||
|
if (value2 >= 0)
|
||||||
|
instr->addImmediateOperand(value2);
|
||||||
|
if (value3 >= 0)
|
||||||
|
instr->addImmediateOperand(value3);
|
||||||
|
|
||||||
executionModes.push_back(instr);
|
executionModes.push_back(instr);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ public:
|
|||||||
|
|
||||||
// Methods for adding information outside the CFG.
|
// Methods for adding information outside the CFG.
|
||||||
void addEntryPoint(ExecutionModel, Function*, const char* name);
|
void addEntryPoint(ExecutionModel, Function*, const char* name);
|
||||||
void addExecutionMode(Function*, ExecutionMode mode, int value = -1);
|
void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1);
|
||||||
void addName(Id, const char* name);
|
void addName(Id, const char* name);
|
||||||
void addMemberName(Id, int member, const char* name);
|
void addMemberName(Id, int member, const char* name);
|
||||||
void addLine(Id target, Id fileName, int line, int column);
|
void addLine(Id target, Id fileName, int line, int column);
|
||||||
|
@ -14,6 +14,7 @@ Linked compute stage:
|
|||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main"
|
||||||
|
ExecutionMode 4 LocalSize 16 32 4
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 13 "outb"
|
Name 13 "outb"
|
||||||
MemberName 13(outb) 0 "f"
|
MemberName 13(outb) 0 "f"
|
||||||
|
@ -15,6 +15,7 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
|
|||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main"
|
||||||
|
ExecutionMode 4 LocalSize 1 1 1
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 10 "func(au1;"
|
Name 10 "func(au1;"
|
||||||
Name 9 "c"
|
Name 9 "c"
|
||||||
|
@ -14,6 +14,7 @@ Linked compute stage:
|
|||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint GLCompute 4 "main"
|
EntryPoint GLCompute 4 "main"
|
||||||
|
ExecutionMode 4 LocalSize 1 1 1
|
||||||
Name 4 "main"
|
Name 4 "main"
|
||||||
Name 8 "bufName"
|
Name 8 "bufName"
|
||||||
MemberName 8(bufName) 0 "f"
|
MemberName 8(bufName) 0 "f"
|
||||||
|
Loading…
Reference in New Issue
Block a user