From 8ea17e7a25550ea91d5f75e8c2bd6232057d5cc9 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 11 Apr 2018 01:49:39 +0200 Subject: [PATCH] [dxbc] Implemented Nop instruction Required for Metal Gear Solid V. --- src/dxbc/dxbc_compiler.cpp | 3 +++ src/dxbc/dxbc_defs.cpp | 2 +- src/dxbc/dxbc_defs.h | 1 + src/dxbc/dxbc_options.cpp | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dxbc/dxbc_compiler.cpp b/src/dxbc/dxbc_compiler.cpp index 9f6744d9..e6aff389 100644 --- a/src/dxbc/dxbc_compiler.cpp +++ b/src/dxbc/dxbc_compiler.cpp @@ -96,6 +96,9 @@ namespace dxvk { case DxbcInstClass::Interpolate: return this->emitInterpolate(ins); + case DxbcInstClass::NoOperation: + return; + case DxbcInstClass::TextureQuery: return this->emitTextureQuery(ins); diff --git a/src/dxbc/dxbc_defs.cpp b/src/dxbc/dxbc_defs.cpp index c87c5ad0..634e6099 100644 --- a/src/dxbc/dxbc_defs.cpp +++ b/src/dxbc/dxbc_defs.cpp @@ -282,7 +282,7 @@ namespace dxvk { { DxbcOperandKind::SrcReg, DxbcScalarType::Float32 }, } }, /* Nop */ - { }, + { 0, DxbcInstClass::NoOperation }, /* Not */ { 2, DxbcInstClass::VectorAlu, { { DxbcOperandKind::DstReg, DxbcScalarType::Uint32 }, diff --git a/src/dxbc/dxbc_defs.h b/src/dxbc/dxbc_defs.h index 16a38334..d1cedaca 100644 --- a/src/dxbc/dxbc_defs.h +++ b/src/dxbc/dxbc_defs.h @@ -44,6 +44,7 @@ namespace dxvk { HullShaderPhase, ///< Hull shader phase declaration HullShaderInstCnt, ///< Hull shader phase instance count Interpolate, ///< Input attribute interpolation + NoOperation, ///< The most useful instruction class TextureQuery, ///< Texture query instruction TextureQueryLod, ///< Texture LOD query instruction TextureQueryMs, ///< Multisample texture query diff --git a/src/dxbc/dxbc_options.cpp b/src/dxbc/dxbc_options.cpp index f2e802f6..2b2327f4 100644 --- a/src/dxbc/dxbc_options.cpp +++ b/src/dxbc/dxbc_options.cpp @@ -11,7 +11,7 @@ namespace dxvk { if (vendor == DxvkGpuVendor::Nvidia && (devProps.driverVersion < VK_MAKE_VERSION(396, 18, 0) - || getEnvVar(L"__GL_NextGenCompiler") == "0")) { + || env::getEnvVar(L"__GL_NextGenCompiler") == "0")) { // Older versions of the driver expect the // coordinate vector to have an extra component this->addExtraDrefCoordComponent = true;