gl_shader_decompiler: Avoid unnecessary copies of MetaImage
MetaImage contains a std::vector, so copying here could result in unnecessary reallocations. Given the operation lives throughout the entire scope, this is safe to do.
This commit is contained in:
		
							parent
							
								
									ba0086e32d
								
							
						
					
					
						commit
						9760795bfb
					
				| @ -1235,7 +1235,7 @@ private: | ||||
| 
 | ||||
|     std::string BuildImageValues(Operation operation) { | ||||
|         constexpr std::array constructors{"uint", "uvec2", "uvec3", "uvec4"}; | ||||
|         const auto meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         const auto& meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
| 
 | ||||
|         const std::size_t values_count{meta.values.size()}; | ||||
|         std::string expr = fmt::format("{}(", constructors.at(values_count - 1)); | ||||
| @ -1780,14 +1780,14 @@ private: | ||||
|             return {"0", Type::Int}; | ||||
|         } | ||||
| 
 | ||||
|         const auto meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         const auto& meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         return {fmt::format("imageLoad({}, {}){}", GetImage(meta.image), | ||||
|                             BuildIntegerCoordinates(operation), GetSwizzle(meta.element)), | ||||
|                 Type::Uint}; | ||||
|     } | ||||
| 
 | ||||
|     Expression ImageStore(Operation operation) { | ||||
|         const auto meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         const auto& meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         code.AddLine("imageStore({}, {}, {});", GetImage(meta.image), | ||||
|                      BuildIntegerCoordinates(operation), BuildImageValues(operation)); | ||||
|         return {}; | ||||
| @ -1795,7 +1795,7 @@ private: | ||||
| 
 | ||||
|     template <const std::string_view& opname> | ||||
|     Expression AtomicImage(Operation operation) { | ||||
|         const auto meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         const auto& meta{std::get<MetaImage>(operation.GetMeta())}; | ||||
|         ASSERT(meta.values.size() == 1); | ||||
| 
 | ||||
|         return {fmt::format("imageAtomic{}({}, {}, {})", opname, GetImage(meta.image), | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lioncash
						Lioncash