forked from eden-emu/eden
		
	shader,spirv: Implement ImageQueryLod.
This commit is contained in:
		
							parent
							
								
									2c276ec6eb
								
							
						
					
					
						commit
						613b48c4a2
					
				
					 9 changed files with 38 additions and 1 deletions
				
			
		|  | @ -161,6 +161,10 @@ Id EmitBindlessImageQueryDimensions(EmitContext&) { | |||
|     throw LogicError("Unreachable instruction"); | ||||
| } | ||||
| 
 | ||||
| Id EmitBindlessImageQueryLod(EmitContext&) { | ||||
|     throw LogicError("Unreachable instruction"); | ||||
| } | ||||
| 
 | ||||
| Id EmitBoundImageSampleImplicitLod(EmitContext&) { | ||||
|     throw LogicError("Unreachable instruction"); | ||||
| } | ||||
|  | @ -193,6 +197,10 @@ Id EmitBoundImageQueryDimensions(EmitContext&) { | |||
|     throw LogicError("Unreachable instruction"); | ||||
| } | ||||
| 
 | ||||
| Id EmitBoundImageQueryLod(EmitContext&) { | ||||
|     throw LogicError("Unreachable instruction"); | ||||
| } | ||||
| 
 | ||||
| Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, | ||||
|                               Id bias_lc, Id offset) { | ||||
|     const auto info{inst->Flags<IR::TextureInstInfo>()}; | ||||
|  | @ -287,4 +295,11 @@ Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, const IR::Value& i | |||
|     throw LogicError("Unspecified image type {}", info.type.Value()); | ||||
| } | ||||
| 
 | ||||
| Id EmitImageQueryLod(EmitContext& ctx, IR::Inst*, const IR::Value& index, Id coords) { | ||||
|     const Id zero{ctx.f32_zero_value}; | ||||
|     const Id image{TextureImage(ctx, index)}; | ||||
|     return ctx.OpCompositeConstruct(ctx.F32[4], ctx.OpImageQueryLod(ctx.F32[2], image, coords), | ||||
|                                     zero, zero); | ||||
| } | ||||
| 
 | ||||
| } // namespace Shader::Backend::SPIRV
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 FernandoS27
						FernandoS27