Implement TXQ_B
This commit is contained in:
		 Fernando Sahmkow
					Fernando Sahmkow
				
			
				
					committed by
					
						 FernandoS27
						FernandoS27
					
				
			
			
				
	
			
			
			 FernandoS27
						FernandoS27
					
				
			
						parent
						
							189bd1980c
						
					
				
				
					commit
					4841440382
				
			| @@ -151,6 +151,8 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | ||||
|         WriteTexsInstructionFloat(bb, instr, values); | ||||
|         break; | ||||
|     } | ||||
|     case OpCode::Id::TXQ_B: | ||||
|         is_bindless = true; | ||||
|     case OpCode::Id::TXQ: { | ||||
|         if (instr.txq.UsesMiscMode(TextureMiscMode::NODEP)) { | ||||
|             LOG_WARNING(HW_GPU, "TXQ.NODEP implementation is incomplete"); | ||||
| @@ -160,7 +162,10 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | ||||
|         // Sadly, not all texture instructions specify the type of texture their sampler | ||||
|         // uses. This must be fixed at a later instance. | ||||
|         const auto& sampler = | ||||
|             GetSampler(instr.sampler, Tegra::Shader::TextureType::Texture2D, false, false); | ||||
|             !is_bindless | ||||
|                 ? GetSampler(instr.sampler, Tegra::Shader::TextureType::Texture2D, false, false) | ||||
|                 : GetBindlessSampler(instr.gpr8, Tegra::Shader::TextureType::Texture2D, false, | ||||
|                                      false); | ||||
|  | ||||
|         u32 indexer = 0; | ||||
|         switch (instr.txq.query_type) { | ||||
| @@ -171,7 +176,8 @@ u32 ShaderIR::DecodeTexture(NodeBlock& bb, u32 pc) { | ||||
|                 } | ||||
|                 MetaTexture meta{sampler, {}, {}, {}, {}, {}, {}, element}; | ||||
|                 const Node value = | ||||
|                     Operation(OperationCode::TextureQueryDimensions, meta, GetRegister(instr.gpr8)); | ||||
|                     Operation(OperationCode::TextureQueryDimensions, meta, | ||||
|                               GetRegister(instr.gpr8.Value() + (is_bindless ? 1 : 0))); | ||||
|                 SetTemporal(bb, indexer++, value); | ||||
|             } | ||||
|             for (u32 i = 0; i < indexer; ++i) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user