Merge pull request #2559 from greg-lunarg/i2555
Allow DepthUnchanged and DepthReplaced Modes in same SPIR-V module.
This commit is contained in:
		
						commit
						159b057080
					
				| @ -1551,15 +1551,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, | |||||||
|             builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); |             builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (glslangIntermediate->getDepth() != glslang::EldUnchanged && glslangIntermediate->isDepthReplacing()) |         if (glslangIntermediate->isDepthReplacing()) | ||||||
|             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); |             builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); | ||||||
| 
 | 
 | ||||||
| #ifndef GLSLANG_WEB | #ifndef GLSLANG_WEB | ||||||
| 
 | 
 | ||||||
|         switch(glslangIntermediate->getDepth()) { |         switch(glslangIntermediate->getDepth()) { | ||||||
|         case glslang::EldGreater:  mode = spv::ExecutionModeDepthGreater; break; |         case glslang::EldGreater:   mode = spv::ExecutionModeDepthGreater;   break; | ||||||
|         case glslang::EldLess:     mode = spv::ExecutionModeDepthLess;    break; |         case glslang::EldLess:      mode = spv::ExecutionModeDepthLess;      break; | ||||||
|         default:                   mode = spv::ExecutionModeMax;          break; |         case glslang::EldUnchanged: mode = spv::ExecutionModeDepthUnchanged; break; | ||||||
|  |         default:                    mode = spv::ExecutionModeMax;            break; | ||||||
|         } |         } | ||||||
|         if (mode != spv::ExecutionModeMax) |         if (mode != spv::ExecutionModeMax) | ||||||
|             builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); |             builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); | ||||||
|  | |||||||
							
								
								
									
										44
									
								
								Test/baseResults/spv.depthUnchanged.frag.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								Test/baseResults/spv.depthUnchanged.frag.out
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | spv.depthUnchanged.frag | ||||||
|  | // Module Version 10000 | ||||||
|  | // Generated by (magic number): 8000a | ||||||
|  | // Id's are bound by 22 | ||||||
|  | 
 | ||||||
|  |                               Capability Shader | ||||||
|  |                1:             ExtInstImport  "GLSL.std.450" | ||||||
|  |                               MemoryModel Logical GLSL450 | ||||||
|  |                               EntryPoint Fragment 4  "main" 9 14 16 | ||||||
|  |                               ExecutionMode 4 OriginUpperLeft | ||||||
|  |                               ExecutionMode 4 DepthReplacing | ||||||
|  |                               ExecutionMode 4 DepthUnchanged | ||||||
|  |                               Source GLSL 430 | ||||||
|  |                               Name 4  "main" | ||||||
|  |                               Name 9  "outColor" | ||||||
|  |                               Name 14  "gl_FragDepth" | ||||||
|  |                               Name 16  "gl_FragCoord" | ||||||
|  |                               Decorate 9(outColor) Location 0 | ||||||
|  |                               Decorate 14(gl_FragDepth) BuiltIn FragDepth | ||||||
|  |                               Decorate 16(gl_FragCoord) BuiltIn FragCoord | ||||||
|  |                2:             TypeVoid | ||||||
|  |                3:             TypeFunction 2 | ||||||
|  |                6:             TypeFloat 32 | ||||||
|  |                7:             TypeVector 6(float) 4 | ||||||
|  |                8:             TypePointer Output 7(fvec4) | ||||||
|  |      9(outColor):      8(ptr) Variable Output | ||||||
|  |               10:    6(float) Constant 1065353216 | ||||||
|  |               11:    6(float) Constant 0 | ||||||
|  |               12:    7(fvec4) ConstantComposite 10 11 11 10 | ||||||
|  |               13:             TypePointer Output 6(float) | ||||||
|  | 14(gl_FragDepth):     13(ptr) Variable Output | ||||||
|  |               15:             TypePointer Input 7(fvec4) | ||||||
|  | 16(gl_FragCoord):     15(ptr) Variable Input | ||||||
|  |               17:             TypeInt 32 0 | ||||||
|  |               18:     17(int) Constant 1 | ||||||
|  |               19:             TypePointer Input 6(float) | ||||||
|  |          4(main):           2 Function None 3 | ||||||
|  |                5:             Label | ||||||
|  |                               Store 9(outColor) 12 | ||||||
|  |               20:     19(ptr) AccessChain 16(gl_FragCoord) 18 | ||||||
|  |               21:    6(float) Load 20 | ||||||
|  |                               Store 14(gl_FragDepth) 21 | ||||||
|  |                               Return | ||||||
|  |                               FunctionEnd | ||||||
							
								
								
									
										8
									
								
								Test/spv.depthUnchanged.frag
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Test/spv.depthUnchanged.frag
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | #version 430 | ||||||
|  | layout(location = 0) out vec4 outColor; | ||||||
|  | layout(depth_unchanged) out float gl_FragDepth; | ||||||
|  | void main() { | ||||||
|  |   outColor = vec4(1.0, 0.0, 0.0, 1.0); | ||||||
|  |   gl_FragDepth = gl_FragCoord.y; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @ -328,6 +328,7 @@ INSTANTIATE_TEST_SUITE_P( | |||||||
|         "spv.demoteDisabled.frag", |         "spv.demoteDisabled.frag", | ||||||
|         "spv.deepRvalue.frag", |         "spv.deepRvalue.frag", | ||||||
|         "spv.depthOut.frag", |         "spv.depthOut.frag", | ||||||
|  |         "spv.depthUnchanged.frag", | ||||||
|         "spv.discard-dce.frag", |         "spv.discard-dce.frag", | ||||||
|         "spv.doWhileLoop.frag", |         "spv.doWhileLoop.frag", | ||||||
|         "spv.earlyReturnDiscard.frag", |         "spv.earlyReturnDiscard.frag", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 greg-lunarg
						greg-lunarg