[D3D12] Non-indexed line loops

This commit is contained in:
Triang3l
2019-01-15 14:19:59 +03:00
parent 17dfd84f71
commit a1a1110784
24 changed files with 1009 additions and 918 deletions

View File

@@ -282,17 +282,17 @@ class DxbcShaderTranslator : public ShaderTranslator {
struct SystemConstants {
// vec4 0
uint32_t flags;
uint32_t line_loop_closing_index;
uint32_t vertex_index_endian_and_edge_factors;
int32_t vertex_base_index;
uint32_t pixel_pos_reg;
// vec4 1
float ndc_scale[3];
float pixel_half_pixel_offset;
uint32_t pixel_pos_reg;
// vec4 2
float ndc_offset[3];
float alpha_test_reference;
float pixel_half_pixel_offset;
// vec4 3
float point_size[2];
@@ -308,9 +308,10 @@ class DxbcShaderTranslator : public ShaderTranslator {
uint32_t sample_count_log2[2];
// vec4 5
float alpha_test_reference;
uint32_t edram_pitch_tiles;
uint32_t edram_depth_base_dwords;
uint32_t padding_5[2];
uint32_t padding_5;
// vec4 6
float color_exp_bias[4];
@@ -543,33 +544,34 @@ class DxbcShaderTranslator : public ShaderTranslator {
kSysConst_Flags_Index = 0,
kSysConst_Flags_Vec = 0,
kSysConst_Flags_Comp = 0,
kSysConst_VertexIndexEndianAndEdgeFactors_Index = kSysConst_Flags_Index + 1,
kSysConst_LineLoopClosingIndex_Index = kSysConst_Flags_Index + 1,
kSysConst_LineLoopClosingIndex_Vec = kSysConst_Flags_Vec,
kSysConst_LineLoopClosingIndex_Comp = 1,
kSysConst_VertexIndexEndianAndEdgeFactors_Index =
kSysConst_LineLoopClosingIndex_Index + 1,
kSysConst_VertexIndexEndianAndEdgeFactors_Vec = kSysConst_Flags_Vec,
kSysConst_VertexIndexEndianAndEdgeFactors_Comp = 1,
kSysConst_VertexIndexEndianAndEdgeFactors_Comp = 2,
kSysConst_VertexBaseIndex_Index =
kSysConst_VertexIndexEndianAndEdgeFactors_Index + 1,
kSysConst_VertexBaseIndex_Vec = kSysConst_Flags_Vec,
kSysConst_VertexBaseIndex_Comp = 2,
kSysConst_PixelPosReg_Index = kSysConst_VertexBaseIndex_Index + 1,
kSysConst_PixelPosReg_Vec = kSysConst_Flags_Vec,
kSysConst_VertexBaseIndex_Comp = 3,
kSysConst_NDCScale_Index = kSysConst_VertexBaseIndex_Index + 1,
kSysConst_NDCScale_Vec = kSysConst_VertexBaseIndex_Vec + 1,
kSysConst_NDCScale_Comp = 0,
kSysConst_PixelPosReg_Index = kSysConst_NDCScale_Index + 1,
kSysConst_PixelPosReg_Vec = kSysConst_NDCScale_Vec,
kSysConst_PixelPosReg_Comp = 3,
kSysConst_NDCScale_Index = kSysConst_PixelPosReg_Index + 1,
kSysConst_NDCScale_Vec = kSysConst_PixelPosReg_Vec + 1,
kSysConst_NDCScale_Comp = 0,
kSysConst_PixelHalfPixelOffset_Index = kSysConst_NDCScale_Index + 1,
kSysConst_PixelHalfPixelOffset_Vec = kSysConst_NDCScale_Vec,
kSysConst_NDCOffset_Index = kSysConst_PixelPosReg_Index + 1,
kSysConst_NDCOffset_Vec = kSysConst_PixelPosReg_Vec + 1,
kSysConst_NDCOffset_Comp = 0,
kSysConst_PixelHalfPixelOffset_Index = kSysConst_NDCOffset_Index + 1,
kSysConst_PixelHalfPixelOffset_Vec = kSysConst_NDCOffset_Vec,
kSysConst_PixelHalfPixelOffset_Comp = 3,
kSysConst_NDCOffset_Index = kSysConst_PixelHalfPixelOffset_Index + 1,
kSysConst_NDCOffset_Vec = kSysConst_PixelHalfPixelOffset_Vec + 1,
kSysConst_NDCOffset_Comp = 0,
kSysConst_AlphaTestReference_Index = kSysConst_NDCOffset_Index + 1,
kSysConst_AlphaTestReference_Vec = kSysConst_NDCOffset_Vec,
kSysConst_AlphaTestReference_Comp = 3,
kSysConst_PointSize_Index = kSysConst_AlphaTestReference_Index + 1,
kSysConst_PointSize_Vec = kSysConst_AlphaTestReference_Vec + 1,
kSysConst_PointSize_Index = kSysConst_PixelHalfPixelOffset_Index + 1,
kSysConst_PointSize_Vec = kSysConst_PixelHalfPixelOffset_Vec + 1,
kSysConst_PointSize_Comp = 0,
kSysConst_PointSizeMinMax_Index = kSysConst_PointSize_Index + 1,
kSysConst_PointSizeMinMax_Vec = kSysConst_PointSize_Vec,
@@ -582,12 +584,15 @@ class DxbcShaderTranslator : public ShaderTranslator {
kSysConst_SampleCountLog2_Vec = kSysConst_PointScreenToNDC_Vec,
kSysConst_SampleCountLog2_Comp = 2,
kSysConst_EDRAMPitchTiles_Index = kSysConst_SampleCountLog2_Index + 1,
kSysConst_EDRAMPitchTiles_Vec = kSysConst_SampleCountLog2_Vec + 1,
kSysConst_EDRAMPitchTiles_Comp = 0,
kSysConst_AlphaTestReference_Index = kSysConst_SampleCountLog2_Index + 1,
kSysConst_AlphaTestReference_Vec = kSysConst_SampleCountLog2_Vec + 1,
kSysConst_AlphaTestReference_Comp = 0,
kSysConst_EDRAMPitchTiles_Index = kSysConst_AlphaTestReference_Index + 1,
kSysConst_EDRAMPitchTiles_Vec = kSysConst_AlphaTestReference_Vec,
kSysConst_EDRAMPitchTiles_Comp = 1,
kSysConst_EDRAMDepthBaseDwords_Index = kSysConst_EDRAMPitchTiles_Index + 1,
kSysConst_EDRAMDepthBaseDwords_Vec = kSysConst_EDRAMPitchTiles_Vec,
kSysConst_EDRAMDepthBaseDwords_Comp = 1,
kSysConst_EDRAMDepthBaseDwords_Vec = kSysConst_AlphaTestReference_Vec,
kSysConst_EDRAMDepthBaseDwords_Comp = 2,
kSysConst_ColorExpBias_Index = kSysConst_EDRAMDepthBaseDwords_Index + 1,
kSysConst_ColorExpBias_Vec = kSysConst_EDRAMDepthBaseDwords_Vec + 1,