summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/dxbc/dxbc_common.cpp
blob: d150c585b83ccdd525f03399be988f6f4f7b2341 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "dxbc_common.h"

namespace dxvk {
  
  VkShaderStageFlagBits DxbcProgramInfo::shaderStage() const {
    switch (m_type) {
      case DxbcProgramType::PixelShader    : return VK_SHADER_STAGE_FRAGMENT_BIT;
      case DxbcProgramType::VertexShader   : return VK_SHADER_STAGE_VERTEX_BIT;
      case DxbcProgramType::GeometryShader : return VK_SHADER_STAGE_GEOMETRY_BIT;
      case DxbcProgramType::HullShader     : return VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT;
      case DxbcProgramType::DomainShader   : return VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT;
      case DxbcProgramType::ComputeShader  : return VK_SHADER_STAGE_COMPUTE_BIT;
    }
    
    throw DxvkError("DxbcProgramInfo::shaderStage: Unsupported program type");
  }
  
  
  spv::ExecutionModel DxbcProgramInfo::executionModel() const {
    switch (m_type) {
      case DxbcProgramType::PixelShader    : return spv::ExecutionModelFragment;
      case DxbcProgramType::VertexShader   : return spv::ExecutionModelVertex;
      case DxbcProgramType::GeometryShader : return spv::ExecutionModelGeometry;
      case DxbcProgramType::HullShader     : return spv::ExecutionModelTessellationControl;
      case DxbcProgramType::DomainShader   : return spv::ExecutionModelTessellationEvaluation;
      case DxbcProgramType::ComputeShader  : return spv::ExecutionModelGLCompute;
    }
    
    throw DxvkError("DxbcProgramInfo::executionModel: Unsupported program type");
  }
  
}