mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	vulkan: Add pixel-formats to query format properties
We need a database of pixel format properties to remove hardcoded magic numbers. This commit creates a simple function to query the bytes per pixel for common RGBA formats. This should be promoted to or superseeded by a common spa namespaced version.
This commit is contained in:
		
							parent
							
								
									49b67742c6
								
							
						
					
					
						commit
						c3327742cc
					
				
					 6 changed files with 57 additions and 3 deletions
				
			
		
							
								
								
									
										33
									
								
								spa/plugins/vulkan/pixel-formats.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								spa/plugins/vulkan/pixel-formats.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
/* Spa */
 | 
			
		||||
/* SPDX-FileCopyrightText: Copyright © 2023 columbarius */
 | 
			
		||||
/* SPDX-License-Identifier: MIT */
 | 
			
		||||
 | 
			
		||||
#include "pixel-formats.h"
 | 
			
		||||
 | 
			
		||||
#include <spa/utils/defs.h>
 | 
			
		||||
#include <spa/param/video/raw.h>
 | 
			
		||||
 | 
			
		||||
struct pixel_info {
 | 
			
		||||
	uint32_t format;
 | 
			
		||||
	uint32_t bpp;
 | 
			
		||||
} pixel_infos[] = {
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_RGBA_F32, 16 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_BGRA, 4 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_RGBA, 4 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_BGRx, 4 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_RGBx, 4 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_BGR, 3 },
 | 
			
		||||
	{ SPA_VIDEO_FORMAT_RGB, 3 },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool get_pixel_format_info(uint32_t format, struct pixel_format_info *info)
 | 
			
		||||
{
 | 
			
		||||
	struct pixel_info *p;
 | 
			
		||||
	SPA_FOR_EACH_ELEMENT(pixel_infos, p) {
 | 
			
		||||
		if (p->format != format)
 | 
			
		||||
			continue;
 | 
			
		||||
		info->bpp = p->bpp;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue