shader_ir/other: Implement S2R InvocationId
This commit is contained in:
		
							parent
							
								
									ecbfa416f0
								
							
						
					
					
						commit
						0b5b93053d
					
				| @ -1915,6 +1915,10 @@ private: | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     Expression InvocationId(Operation operation) { | ||||
|         return {"gl_InvocationID", Type::Int}; | ||||
|     } | ||||
| 
 | ||||
|     Expression YNegate(Operation operation) { | ||||
|         return {"y_direction", Type::Float}; | ||||
|     } | ||||
| @ -2153,6 +2157,7 @@ private: | ||||
|         &GLSLDecompiler::EmitVertex, | ||||
|         &GLSLDecompiler::EndPrimitive, | ||||
| 
 | ||||
|         &GLSLDecompiler::InvocationId, | ||||
|         &GLSLDecompiler::YNegate, | ||||
|         &GLSLDecompiler::LocalInvocationId<0>, | ||||
|         &GLSLDecompiler::LocalInvocationId<1>, | ||||
|  | ||||
| @ -2357,6 +2357,7 @@ private: | ||||
|         &SPIRVDecompiler::EmitVertex, | ||||
|         &SPIRVDecompiler::EndPrimitive, | ||||
| 
 | ||||
|         &SPIRVDecompiler::InvocationId, | ||||
|         &SPIRVDecompiler::YNegate, | ||||
|         &SPIRVDecompiler::LocalInvocationId<0>, | ||||
|         &SPIRVDecompiler::LocalInvocationId<1>, | ||||
|  | ||||
| @ -69,6 +69,8 @@ u32 ShaderIR::DecodeOther(NodeBlock& bb, u32 pc) { | ||||
|     case OpCode::Id::MOV_SYS: { | ||||
|         const Node value = [this, instr] { | ||||
|             switch (instr.sys20) { | ||||
|             case SystemVariable::InvocationId: | ||||
|                 return Operation(OperationCode::InvocationId); | ||||
|             case SystemVariable::Ydirection: | ||||
|                 return Operation(OperationCode::YNegate); | ||||
|             case SystemVariable::InvocationInfo: | ||||
|  | ||||
| @ -172,6 +172,7 @@ enum class OperationCode { | ||||
|     EmitVertex,   /// () -> void
 | ||||
|     EndPrimitive, /// () -> void
 | ||||
| 
 | ||||
|     InvocationId,       /// () -> int
 | ||||
|     YNegate,            /// () -> float
 | ||||
|     LocalInvocationIdX, /// () -> uint
 | ||||
|     LocalInvocationIdY, /// () -> uint
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ReinUsesLisp
						ReinUsesLisp