forked from eden-emu/eden
		
	renderer_opengl: Use VideoCore pixel format
This commit is contained in:
		
							parent
							
								
									9a76e94b3d
								
							
						
					
					
						commit
						8ad7268c75
					
				
					 3 changed files with 11 additions and 23 deletions
				
			
		|  | @ -17,18 +17,6 @@ | |||
| 
 | ||||
| namespace Tegra { | ||||
| 
 | ||||
| u32 FramebufferConfig::BytesPerPixel(PixelFormat format) { | ||||
|     switch (format) { | ||||
|     case PixelFormat::ABGR8: | ||||
|     case PixelFormat::BGRA8: | ||||
|         return 4; | ||||
|     default: | ||||
|         return 4; | ||||
|     } | ||||
| 
 | ||||
|     UNREACHABLE(); | ||||
| } | ||||
| 
 | ||||
| GPU::GPU(Core::System& system, VideoCore::RendererBase& renderer, bool is_async) | ||||
|     : system{system}, renderer{renderer}, is_async{is_async} { | ||||
|     auto& rasterizer{renderer.Rasterizer()}; | ||||
|  |  | |||
|  | @ -94,11 +94,6 @@ struct FramebufferConfig { | |||
|         BGRA8 = 5, | ||||
|     }; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Returns the number of bytes per pixel. | ||||
|      */ | ||||
|     static u32 BytesPerPixel(PixelFormat format); | ||||
| 
 | ||||
|     VAddr address; | ||||
|     u32 offset; | ||||
|     u32 width; | ||||
|  |  | |||
|  | @ -147,7 +147,9 @@ void RendererOpenGL::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) { | |||
|  * Loads framebuffer from emulated memory into the active OpenGL texture. | ||||
|  */ | ||||
| void RendererOpenGL::LoadFBToScreenInfo(const Tegra::FramebufferConfig& framebuffer) { | ||||
|     const u32 bytes_per_pixel{Tegra::FramebufferConfig::BytesPerPixel(framebuffer.pixel_format)}; | ||||
|     const auto pixel_format{ | ||||
|         VideoCore::Surface::PixelFormatFromGPUPixelFormat(framebuffer.pixel_format)}; | ||||
|     const u32 bytes_per_pixel{VideoCore::Surface::GetBytesPerPixel(pixel_format)}; | ||||
|     const u64 size_in_bytes{framebuffer.stride * framebuffer.height * bytes_per_pixel}; | ||||
|     const VAddr framebuffer_addr{framebuffer.address + framebuffer.offset}; | ||||
| 
 | ||||
|  | @ -274,22 +276,25 @@ void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, | |||
|     texture.height = framebuffer.height; | ||||
|     texture.pixel_format = framebuffer.pixel_format; | ||||
| 
 | ||||
|     const auto pixel_format{ | ||||
|         VideoCore::Surface::PixelFormatFromGPUPixelFormat(framebuffer.pixel_format)}; | ||||
|     const u32 bytes_per_pixel{VideoCore::Surface::GetBytesPerPixel(pixel_format)}; | ||||
|     gl_framebuffer_data.resize(texture.width * texture.height * bytes_per_pixel); | ||||
| 
 | ||||
|     GLint internal_format; | ||||
|     switch (framebuffer.pixel_format) { | ||||
|     case Tegra::FramebufferConfig::PixelFormat::ABGR8: | ||||
|         internal_format = GL_RGBA8; | ||||
|         texture.gl_format = GL_RGBA; | ||||
|         texture.gl_type = GL_UNSIGNED_INT_8_8_8_8_REV; | ||||
|         gl_framebuffer_data.resize(texture.width * texture.height * 4); | ||||
| 
 | ||||
|         break; | ||||
|     default: | ||||
|         internal_format = GL_RGBA8; | ||||
|         texture.gl_format = GL_RGBA; | ||||
|         texture.gl_type = GL_UNSIGNED_INT_8_8_8_8_REV; | ||||
|         gl_framebuffer_data.resize(texture.width * texture.height * 4); | ||||
|         LOG_CRITICAL(Render_OpenGL, "Unknown framebuffer pixel format: {}", | ||||
|                      static_cast<u32>(framebuffer.pixel_format)); | ||||
|         UNREACHABLE(); | ||||
|         UNIMPLEMENTED_MSG("Unknown framebuffer pixel format: {}", | ||||
|                           static_cast<u32>(framebuffer.pixel_format)); | ||||
|     } | ||||
| 
 | ||||
|     texture.resource.Release(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ReinUsesLisp
						ReinUsesLisp