spirv: Fix image and image buffer descriptor index usage
This commit is contained in:
		| @@ -162,8 +162,10 @@ Id Texture(EmitContext& ctx, IR::TextureInstInfo info, [[maybe_unused]] const IR | ||||
|     } | ||||
| } | ||||
|  | ||||
| Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, | ||||
|                 [[maybe_unused]] const IR::Value& index) { | ||||
| Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, const IR::Value& index) { | ||||
|     if (!index.IsImmediate() || index.U32() != 0) { | ||||
|         throw NotImplementedException("Indirect image indexing"); | ||||
|     } | ||||
|     if (info.type == TextureType::Buffer) { | ||||
|         const TextureBufferDefinition& def{ctx.texture_buffers.at(info.descriptor_index)}; | ||||
|         if (def.count > 1) { | ||||
| @@ -182,14 +184,14 @@ Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, | ||||
| } | ||||
|  | ||||
| Id Image(EmitContext& ctx, const IR::Value& index, IR::TextureInstInfo info) { | ||||
|     if (!index.IsImmediate()) { | ||||
|     if (!index.IsImmediate() || index.U32() != 0) { | ||||
|         throw NotImplementedException("Indirect image indexing"); | ||||
|     } | ||||
|     if (info.type == TextureType::Buffer) { | ||||
|         const ImageBufferDefinition def{ctx.image_buffers.at(index.U32())}; | ||||
|         const ImageBufferDefinition def{ctx.image_buffers.at(info.descriptor_index)}; | ||||
|         return ctx.OpLoad(def.image_type, def.id); | ||||
|     } else { | ||||
|         const ImageDefinition def{ctx.images.at(index.U32())}; | ||||
|         const ImageDefinition def{ctx.images.at(info.descriptor_index)}; | ||||
|         return ctx.OpLoad(def.image_type, def.id); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user