Remove SPIRV-Cross support from D3D12 backend.

Bug: dawn:1036

Change-Id: If447f93f7a17ecfe73f04605a60893edb00990d3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/61402
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index c7edb9f..2781762 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -135,7 +135,8 @@
         mFormatTable = BuildFormatTable(this);
         SetDefaultToggles();
         if ((adapter->GetBackendType() == wgpu::BackendType::Metal ||
-             adapter->GetBackendType() == wgpu::BackendType::Vulkan) &&
+             adapter->GetBackendType() == wgpu::BackendType::Vulkan ||
+             adapter->GetBackendType() == wgpu::BackendType::D3D12) &&
             !IsToggleEnabled(Toggle::UseTintGenerator)) {
             EmitLog(
                 WGPULoggingType_Warning,
diff --git a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
index 265725e..28228a7 100644
--- a/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
+++ b/src/dawn_native/d3d12/ShaderModuleD3D12.cpp
@@ -28,12 +28,6 @@
 
 #include <d3dcompiler.h>
 
-#include <spirv_hlsl.hpp>
-
-// Tint include must be after spirv_hlsl.hpp, because spirv-cross has its own
-// version of spirv_headers. We also need to undef SPV_REVISION because SPIRV-Cross
-// is at 3 while spirv-headers is at 4.
-#undef SPV_REVISION
 #include <tint/tint.h>
 
 namespace dawn_native { namespace d3d12 {
@@ -320,75 +314,6 @@
         return std::move(result.hlsl);
     }
 
-    ResultOrError<std::string> ShaderModule::TranslateToHLSLWithSPIRVCross(
-        const char* entryPointName,
-        SingleShaderStage stage,
-        PipelineLayout* layout) const {
-        ASSERT(!IsError());
-
-        // If these options are changed, the values in DawnSPIRVCrossHLSLFastFuzzer.cpp need to
-        // be updated.
-        spirv_cross::CompilerGLSL::Options options_glsl;
-        // Force all uninitialized variables to be 0, otherwise they will fail to compile
-        // by FXC.
-        options_glsl.force_zero_initialized_variables = true;
-
-        spirv_cross::CompilerHLSL::Options options_hlsl;
-        if (GetDevice()->IsToggleEnabled(Toggle::UseDXC)) {
-            options_hlsl.shader_model = ToBackend(GetDevice())->GetDeviceInfo().shaderModel;
-        } else {
-            options_hlsl.shader_model = 51;
-        }
-
-        if (GetDevice()->IsExtensionEnabled(Extension::ShaderFloat16)) {
-            options_hlsl.enable_16bit_types = true;
-        }
-        // PointCoord and PointSize are not supported in HLSL
-        // TODO (hao.x.li@intel.com): The point_coord_compat and point_size_compat are
-        // required temporarily for https://bugs.chromium.org/p/dawn/issues/detail?id=146,
-        // but should be removed once WebGPU requires there is no gl_PointSize builtin.
-        // See https://github.com/gpuweb/gpuweb/issues/332
-        options_hlsl.point_coord_compat = true;
-        options_hlsl.point_size_compat = true;
-        options_hlsl.nonwritable_uav_texture_as_srv = true;
-
-        spirv_cross::CompilerHLSL compiler(GetSpirv());
-        compiler.set_common_options(options_glsl);
-        compiler.set_hlsl_options(options_hlsl);
-        compiler.set_entry_point(entryPointName, ShaderStageToExecutionModel(stage));
-
-        const EntryPointMetadata::BindingInfoArray& moduleBindingInfo =
-            GetEntryPoint(entryPointName).bindings;
-
-        for (BindGroupIndex group : IterateBitSet(layout->GetBindGroupLayoutsMask())) {
-            const BindGroupLayout* bgl = ToBackend(layout->GetBindGroupLayout(group));
-            const auto& bindingOffsets = bgl->GetBindingOffsets();
-            const auto& groupBindingInfo = moduleBindingInfo[group];
-            for (const auto& it : groupBindingInfo) {
-                const EntryPointMetadata::ShaderBindingInfo& bindingInfo = it.second;
-                BindingNumber bindingNumber = it.first;
-                BindingIndex bindingIndex = bgl->GetBindingIndex(bindingNumber);
-
-                // Declaring a read-only storage buffer in HLSL but specifying a storage buffer in
-                // the BGL produces the wrong output. Force read-only storage buffer bindings to
-                // be treated as UAV instead of SRV.
-                const bool forceStorageBufferAsUAV =
-                    (bindingInfo.buffer.type == wgpu::BufferBindingType::ReadOnlyStorage &&
-                     bgl->GetBindingInfo(bindingIndex).buffer.type ==
-                         wgpu::BufferBindingType::Storage);
-
-                uint32_t bindingOffset = bindingOffsets[bindingIndex];
-                compiler.set_decoration(bindingInfo.id, spv::DecorationBinding, bindingOffset);
-                if (forceStorageBufferAsUAV) {
-                    compiler.set_hlsl_force_storage_buffer_as_uav(
-                        static_cast<uint32_t>(group), static_cast<uint32_t>(bindingNumber));
-                }
-            }
-        }
-
-        return compiler.compile();
-    }
-
     ResultOrError<CompiledShader> ShaderModule::Compile(const char* entryPointName,
                                                         SingleShaderStage stage,
                                                         PipelineLayout* layout,
@@ -399,19 +324,10 @@
         std::string hlslSource;
         std::string remappedEntryPoint;
         CompiledShader compiledShader = {};
-        if (device->IsToggleEnabled(Toggle::UseTintGenerator)) {
-            DAWN_TRY_ASSIGN(hlslSource, TranslateToHLSLWithTint(entryPointName, stage, layout,
-                                                                &remappedEntryPoint,
-                                                                &compiledShader.firstOffsetInfo));
-            entryPointName = remappedEntryPoint.c_str();
-        } else {
-            DAWN_TRY_ASSIGN(hlslSource,
-                            TranslateToHLSLWithSPIRVCross(entryPointName, stage, layout));
-
-            // Note that the HLSL will always use entryPoint "main" under
-            // SPIRV-cross.
-            entryPointName = "main";
-        }
+        DAWN_TRY_ASSIGN(hlslSource,
+                        TranslateToHLSLWithTint(entryPointName, stage, layout, &remappedEntryPoint,
+                                                &compiledShader.firstOffsetInfo));
+        entryPointName = remappedEntryPoint.c_str();
 
         if (device->IsToggleEnabled(Toggle::DumpShaders)) {
             std::ostringstream dumpedMsg;
diff --git a/src/dawn_native/d3d12/ShaderModuleD3D12.h b/src/dawn_native/d3d12/ShaderModuleD3D12.h
index 98eed9e..d1b2a0a 100644
--- a/src/dawn_native/d3d12/ShaderModuleD3D12.h
+++ b/src/dawn_native/d3d12/ShaderModuleD3D12.h
@@ -65,10 +65,6 @@
                                                            std::string* remappedEntryPointName,
                                                            FirstOffsetInfo* firstOffsetInfo) const;
 
-        ResultOrError<std::string> TranslateToHLSLWithSPIRVCross(const char* entryPointName,
-                                                                 SingleShaderStage stage,
-                                                                 PipelineLayout* layout) const;
-
         ResultOrError<PersistentCacheKey> CreateHLSLKey(const char* entryPointName,
                                                         SingleShaderStage stage,
                                                         const std::string& hlslSource,