mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-11-30 22:24:15 +01:00
[dxbc] Implemented stream instructions for single-stream GS
This commit is contained in:
parent
b8a540d4ef
commit
8c64a81e27
@ -215,6 +215,9 @@ namespace dxvk {
|
||||
case DxbcOpcode::DclSampler:
|
||||
return this->emitDclSampler(ins);
|
||||
|
||||
case DxbcOpcode::DclStream:
|
||||
return this->emitDclStream(ins);
|
||||
|
||||
case DxbcOpcode::DclUavTyped:
|
||||
case DxbcOpcode::DclResource:
|
||||
return this->emitDclResourceTyped(ins);
|
||||
@ -631,6 +634,12 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void DxbcCompiler::emitDclStream(const DxbcShaderInstruction& ins) {
|
||||
if (ins.dst[0].idx[0].offset != 0)
|
||||
Logger::err("Dxbc: Multiple streams not supported");
|
||||
}
|
||||
|
||||
|
||||
void DxbcCompiler::emitDclResourceTyped(const DxbcShaderInstruction& ins) {
|
||||
// dclResource takes two operands:
|
||||
// (dst0) The resource register ID
|
||||
@ -1727,12 +1736,14 @@ namespace dxvk {
|
||||
|
||||
void DxbcCompiler::emitGeometryEmit(const DxbcShaderInstruction& ins) {
|
||||
switch (ins.op) {
|
||||
case DxbcOpcode::Emit: {
|
||||
case DxbcOpcode::Emit:
|
||||
case DxbcOpcode::EmitStream: {
|
||||
emitOutputSetup();
|
||||
m_module.opEmitVertex();
|
||||
} break;
|
||||
|
||||
case DxbcOpcode::Cut: {
|
||||
case DxbcOpcode::Cut:
|
||||
case DxbcOpcode::CutStream: {
|
||||
m_module.opEndPrimitive();
|
||||
} break;
|
||||
|
||||
|
@ -430,6 +430,9 @@ namespace dxvk {
|
||||
void emitDclSampler(
|
||||
const DxbcShaderInstruction& ins);
|
||||
|
||||
void emitDclStream(
|
||||
const DxbcShaderInstruction& ins);
|
||||
|
||||
void emitDclResourceTyped(
|
||||
const DxbcShaderInstruction& ins);
|
||||
|
||||
|
@ -567,9 +567,13 @@ namespace dxvk {
|
||||
/* HsJoinPhase */
|
||||
{ },
|
||||
/* EmitStream */
|
||||
{ },
|
||||
{ 1, DxbcInstClass::GeometryEmit, {
|
||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||
} },
|
||||
/* CutStream */
|
||||
{ },
|
||||
{ 1, DxbcInstClass::GeometryEmit, {
|
||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||
} },
|
||||
/* EmitThenCutStream */
|
||||
{ },
|
||||
/* InterfaceCall */
|
||||
@ -696,7 +700,9 @@ namespace dxvk {
|
||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Float32 },
|
||||
} },
|
||||
/* DclStream */
|
||||
{ },
|
||||
{ 1, DxbcInstClass::Declaration, {
|
||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||
} },
|
||||
/* DclFunctionBody */
|
||||
{ },
|
||||
/* DclFunctionTable */
|
||||
|
Loading…
Reference in New Issue
Block a user