forked from eden-emu/eden
		
	decode/image: Implement B10G11R11F
- Used by Kirby Star Allies
This commit is contained in:
		
							parent
							
								
									edb2114bac
								
							
						
					
					
						commit
						480e1fa987
					
				
					 1 changed files with 17 additions and 9 deletions
				
			
		|  | @ -97,6 +97,7 @@ ComponentType GetComponentType(Tegra::Engines::SamplerDescriptor descriptor, | ||||||
|         break; |         break; | ||||||
|     case TextureFormat::B5G6R5: |     case TextureFormat::B5G6R5: | ||||||
|     case TextureFormat::B6G5R5: |     case TextureFormat::B6G5R5: | ||||||
|  |     case TextureFormat::BF10GF11RF11: | ||||||
|         if (component == 0) { |         if (component == 0) { | ||||||
|             return descriptor.b_type; |             return descriptor.b_type; | ||||||
|         } |         } | ||||||
|  | @ -119,7 +120,7 @@ ComponentType GetComponentType(Tegra::Engines::SamplerDescriptor descriptor, | ||||||
|         } |         } | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|     UNIMPLEMENTED_MSG("texture format not implement={}", format); |     UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||||||
|     return ComponentType::FLOAT; |     return ComponentType::FLOAT; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -191,6 +192,14 @@ u32 GetComponentSize(TextureFormat format, std::size_t component) { | ||||||
|             return 6; |             return 6; | ||||||
|         } |         } | ||||||
|         return 0; |         return 0; | ||||||
|  |     case TextureFormat::BF10GF11RF11: | ||||||
|  |         if (component == 1 || component == 2) { | ||||||
|  |             return 11; | ||||||
|  |         } | ||||||
|  |         if (component == 0) { | ||||||
|  |             return 10; | ||||||
|  |         } | ||||||
|  |         return 0; | ||||||
|     case TextureFormat::G8R24: |     case TextureFormat::G8R24: | ||||||
|         if (component == 0) { |         if (component == 0) { | ||||||
|             return 8; |             return 8; | ||||||
|  | @ -211,10 +220,9 @@ u32 GetComponentSize(TextureFormat format, std::size_t component) { | ||||||
|         return (component == 0 || component == 1) ? 8 : 0; |         return (component == 0 || component == 1) ? 8 : 0; | ||||||
|     case TextureFormat::G4R4: |     case TextureFormat::G4R4: | ||||||
|         return (component == 0 || component == 1) ? 4 : 0; |         return (component == 0 || component == 1) ? 4 : 0; | ||||||
|     default: |  | ||||||
|         UNIMPLEMENTED_MSG("texture format not implement={}", format); |  | ||||||
|         return 0; |  | ||||||
|     } |     } | ||||||
|  |     UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||||||
|  |     return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::size_t GetImageComponentMask(TextureFormat format) { | std::size_t GetImageComponentMask(TextureFormat format) { | ||||||
|  | @ -235,6 +243,7 @@ std::size_t GetImageComponentMask(TextureFormat format) { | ||||||
|     case TextureFormat::R32_B24G8: |     case TextureFormat::R32_B24G8: | ||||||
|     case TextureFormat::B5G6R5: |     case TextureFormat::B5G6R5: | ||||||
|     case TextureFormat::B6G5R5: |     case TextureFormat::B6G5R5: | ||||||
|  |     case TextureFormat::BF10GF11RF11: | ||||||
|         return std::size_t{R | G | B}; |         return std::size_t{R | G | B}; | ||||||
|     case TextureFormat::R32_G32: |     case TextureFormat::R32_G32: | ||||||
|     case TextureFormat::R16_G16: |     case TextureFormat::R16_G16: | ||||||
|  | @ -248,10 +257,9 @@ std::size_t GetImageComponentMask(TextureFormat format) { | ||||||
|     case TextureFormat::R8: |     case TextureFormat::R8: | ||||||
|     case TextureFormat::R1: |     case TextureFormat::R1: | ||||||
|         return std::size_t{R}; |         return std::size_t{R}; | ||||||
|     default: |  | ||||||
|         UNIMPLEMENTED_MSG("texture format not implement={}", format); |  | ||||||
|         return std::size_t{R | G | B | A}; |  | ||||||
|     } |     } | ||||||
|  |     UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||||||
|  |     return std::size_t{R | G | B | A}; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::size_t GetImageTypeNumCoordinates(Tegra::Shader::ImageType image_type) { | std::size_t GetImageTypeNumCoordinates(Tegra::Shader::ImageType image_type) { | ||||||
|  | @ -299,7 +307,7 @@ std::pair<Node, bool> ShaderIR::GetComponentValue(ComponentType component_type, | ||||||
|             return {std::move(original_value), true}; |             return {std::move(original_value), true}; | ||||||
|         } |         } | ||||||
|     default: |     default: | ||||||
|         UNIMPLEMENTED_MSG("Unimplement component type={}", component_type); |         UNIMPLEMENTED_MSG("Unimplemented component type={}", component_type); | ||||||
|         return {std::move(original_value), true}; |         return {std::move(original_value), true}; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -459,7 +467,7 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) { | ||||||
|             default: |             default: | ||||||
|                 break; |                 break; | ||||||
|             } |             } | ||||||
|             UNIMPLEMENTED_MSG("Unimplemented operation={} type={}", |             UNIMPLEMENTED_MSG("Unimplemented operation={}, type={}", | ||||||
|                               static_cast<u64>(instr.suatom_d.operation.Value()), |                               static_cast<u64>(instr.suatom_d.operation.Value()), | ||||||
|                               static_cast<u64>(instr.suatom_d.operation_type.Value())); |                               static_cast<u64>(instr.suatom_d.operation_type.Value())); | ||||||
|             return OperationCode::AtomicImageAdd; |             return OperationCode::AtomicImageAdd; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Morph
						Morph