Best Phoronix-test-suite code snippet using phodevi_gpu.gpu_screen_resolution
phodevi_gpu.php
Source:phodevi_gpu.php  
...52			case 'available-modes':53				$property = new phodevi_device_property('gpu_available_modes', phodevi::std_caching);54				break;55			case 'screen-resolution':56				$property = new phodevi_device_property('gpu_screen_resolution', phodevi::std_caching);57				break;58			case 'screen-resolution-string':59				$property = new phodevi_device_property('gpu_screen_resolution_string', phodevi::std_caching);60				break;61			case '2d-acceleration':62				$property = new phodevi_device_property('gpu_2d_acceleration', phodevi::std_caching);63				break;64		}65		return $property;66	}67	public static function gpu_2d_acceleration()68	{69		$xorg_log = isset(phodevi::$vfs->xorg_log) ? phodevi::$vfs->xorg_log : false;70		$accel_2d = false;71		if($xorg_log)72		{73			if(strpos($xorg_log, 'EXA(0)'))74			{75				$accel_2d = 'EXA';76			}77			else if(stripos($xorg_log, 'GLAMOR acceleration'))78			{79				$accel_2d = 'GLAMOR';80			}81			else if(strpos($xorg_log, 'SNA initialized'))82			{83				$accel_2d = 'SNA';84			}85			else if(strpos($xorg_log, 'UXA(0)'))86			{87				$accel_2d = 'UXA';88			}89			else if(strpos($xorg_log, 'Gallium3D XA'))90			{91				$accel_2d = 'Gallium3D XA';92			}93			else if(strpos($xorg_log, 'shadowfb'))94			{95				$accel_2d = 'ShadowFB';96			}97		}98		return $accel_2d;99	}100	public static function set_property($identifier, $args)101	{102		switch($identifier)103		{104			case 'screen-resolution':105				$property = self::gpu_set_resolution($args);106				break;107		}108		return $property;109	}110	public static function gpu_set_resolution($args)111	{112		if(count($args) != 2 || phodevi::is_windows() || phodevi::is_macosx() || !pts_client::executable_in_path('xrandr'))113		{114			return false;115		}116		$width = $args[0];117		$height = $args[1];118		shell_exec('xrandr -s ' . $width . 'x' . $height . ' 2>&1');119		return phodevi::read_property('gpu', 'screen-resolution') == array($width, $height); // Check if video resolution set worked120	}121	public static function gpu_oc_offset_string()122	{123		$offset = 0;124		if(is_file('/sys/class/drm/card0/device/pp_sclk_od'))125		{126			// AMDGPU OverDrive127			$pp_sclk_od = pts_file_io::file_get_contents('/sys/class/drm/card0/device/pp_sclk_od');128			if(is_numeric($pp_sclk_od) && $pp_sclk_od > 0)129			{130				$offset = 'AMD OverDrive GPU Overclock: ' . $pp_sclk_od . '%';131			}132		}133		return $offset;134	}135	public static function gpu_aa_level()136	{137		// Determine AA level if over-rode138		$aa_level = false;139		if(phodevi::is_nvidia_graphics())140		{141			$nvidia_fsaa = phodevi_parser::read_nvidia_extension('FSAA');142			switch($nvidia_fsaa)143			{144				case 1:145					$aa_level = '2x Bilinear';146					break;147				case 5:148					$aa_level = '4x Bilinear';149					break;150				case 7:151					$aa_level = '8x';152					break;153				case 8:154					$aa_level = '16x';155					break;156				case 10:157					$aa_level = '8xQ';158					break;159				case 12:160					$aa_level = '16xQ';161					break;162			}163		}164		else if(phodevi::is_ati_graphics() && phodevi::is_linux())165		{166			$ati_fsaa = phodevi_linux_parser::read_amd_pcsdb('OpenGL,AntiAliasSamples');167			$ati_fsaa_filter = phodevi_linux_parser::read_amd_pcsdb('OpenGL,AAF');168			if(!empty($ati_fsaa))169			{170				if($ati_fsaa_filter == '0x00000000')171				{172					// Filter: Box173					switch($ati_fsaa)174					{175						case '0x00000002':176							$aa_level = '2x Box';177							break;178						case '0x00000004':179							$aa_level = '4x Box';180							break;181						case '0x00000008':182							$aa_level = '8x Box';183							break;184					}185				}186				else if($ati_fsaa_filter == '0x00000001')187				{188					// Filter: Narrow-tent189					switch($ati_fsaa)190					{191						case '0x00000002':192							$aa_level = '4x Narrow-tent';193							break;194						case '0x00000004':195							$aa_level = '8x Narrow-tent';196							break;197						case '0x00000008':198							$aa_level = '12x Narrow-tent';199							break;200					}201				}202				else if($ati_fsaa_filter == '0x00000002')203				{204					// Filter: Wide-tent205					switch($ati_fsaa)206					{207						case '0x00000002':208							$aa_level = '6x Wide-tent';209							break;210						case '0x00000004':211							$aa_level = '8x Wide-tent';212							break;213						case '0x00000008':214							$aa_level = '16x Wide-tent';215							break;216					}217				}218				else if($ati_fsaa_filter == '0x00000003')219				{220					// Filter: Edge-detect221					switch($ati_fsaa)222					{223						case '0x00000004':224							$aa_level = '12x Edge-detect';225							break;226						case '0x00000008':227							$aa_level = '24x Edge-detect';228							break;229					}230				}231			}232		}233		else if(phodevi::is_mesa_graphics())234		{235			$gallium_msaa = getenv('GALLIUM_MSAA');236			if(is_numeric($gallium_msaa) && $gallium_msaa > 0)237			{238				// Simple test to try to figure out if the GALLIUM_MSAA anti-aliasing value was forced239				$aa_level = $gallium_msaa . 'x MSAA';240			}241		}242		else if(getenv('__GL_FSAA_MODE'))243		{244			$gl_msaa = getenv('__GL_FSAA_MODE');245			if(is_numeric($gl_msaa) && $gl_msaa > 0)246			{247				$aa_level = '__GL_FSAA_MODE=' . $gallium_msaa;248			}249		}250		return $aa_level;251	}252	public static function gpu_af_level()253	{254		// Determine AF level if over-rode255		$af_level = false;256		if(phodevi::is_nvidia_graphics())257		{258			$nvidia_af = phodevi_parser::read_nvidia_extension('LogAniso');259			switch($nvidia_af)260			{261				case 1:262					$af_level = '2x';263					break;264				case 2:265					$af_level = '4x';266					break;267				case 3:268					$af_level = '8x';269					break;270				case 4:271					$af_level = '16x';272					break;273			}274		}275		else if(phodevi::is_ati_graphics() && phodevi::is_linux())276		{277			$ati_af = phodevi_linux_parser::read_amd_pcsdb('OpenGL,AnisoDegree');278			if(!empty($ati_af))279			{280				switch($ati_af)281				{282					case '0x00000002':283						$af_level = '2x';284						break;285					case '0x00000004':286						$af_level = '4x';287						break;288					case '0x00000008':289						$af_level = '8x';290						break;291					case '0x00000010':292						$af_level = '16x';293						break;294				}295			}296		}297		else if(getenv('__GL_LOG_MAX_ANISO'))298		{299			$max_aniso = getenv('__GL_LOG_MAX_ANISO');300			if(is_numeric($max_aniso) && $max_aniso > 0)301			{302				switch($max_aniso)303				{304					case 1:305						$max_aniso = '2x';306						break;307					case 2:308						$max_aniso = '4x';309						break;310					case 3:311						$max_aniso = '8x';312						break;313					case 4:314						$max_aniso = '16x';315						break;316				}317				$af_level = $max_aniso;318			}319		}320		return $af_level;321	}322	public static function gpu_compute_cores()323	{324		// Determine AF level if over-rode325		$cores = 0;326		if(phodevi::is_nvidia_graphics())327		{328			$cores = phodevi_parser::read_nvidia_extension('CUDACores');329		}330		return $cores;331	}332	public static function gpu_xrandr_resolution()333	{334		$resolution = false;335		if(pts_client::executable_in_path('xrandr') && getenv('DISPLAY'))336		{337			// Read resolution from xrandr338			// First try reading "current" screen 0 as it should better handle multiple monitors, etc.339			// e.g. Screen 0: minimum 1 x 1, current 2560 x 1341, maximum 8192 x 8192340			$info = shell_exec('xrandr 2>&1');341			$info = substr($info, strpos($info, 'current ') + 8);342			$info = explode(' x ', trim(substr($info, 0, strpos($info, ','))));343			if(count($info) == 2 && is_numeric($info[0]) && is_numeric($info[1]))344			{345				$resolution = $info;346			}347			if($resolution == false)348			{349				$info = shell_exec('xrandr 2>&1 | grep "*"');350				if(strpos($info, '*') !== false)351				{352					$res = pts_strings::trim_explode('x', $info);353					if(isset($res[1]))354					{355						$res[0] = substr($res[0], strrpos($res[0], ' '));356						$res[1] = substr($res[1], 0, strpos($res[1], ' '));357						$res = array_map('trim', $res);358						if(is_numeric($res[0]) && is_numeric($res[1]))359						{360							$resolution = array($res[0], $res[1]);361						}362					}363				}364			}365		}366		return $resolution;367	}368	public static function gpu_screen_resolution()369	{370		$resolution = false;371		if((($default_mode = getenv('DEFAULT_VIDEO_MODE')) != false))372		{373			$default_mode = explode('x', $default_mode);374			if(count($default_mode) == 2 && is_numeric($default_mode[0]) && is_numeric($default_mode[1]))375			{376				return $default_mode;377			}378		}379		if(phodevi::is_macosx())380		{381			$info = pts_strings::trim_explode(' ', phodevi_osx_parser::read_osx_system_profiler('SPDisplaysDataType', 'Resolution'));382			$resolution = array();383			$resolution[0] = $info[0];384			$resolution[1] = $info[2];385		}386		else if(phodevi::is_linux() || phodevi::is_bsd() || phodevi::is_solaris())387		{388			if($resolution == false && pts_client::executable_in_path('xrandr'))389			{390				$resolution = self::gpu_xrandr_resolution();391			}392			if($resolution == false && phodevi::is_linux())393			{394				// Before calling xrandr first try to get the resolution through KMS path395				foreach(pts_file_io::glob('/sys/class/drm/card*/*/modes') as $connector_path)396				{397					$connector_path = dirname($connector_path) . '/';398					if(is_file($connector_path . 'enabled') && pts_file_io::file_get_contents($connector_path . 'enabled') == 'enabled')399					{400						$mode = pts_arrays::first_element(explode("\n", pts_file_io::file_get_contents($connector_path . 'modes')));401						$info = pts_strings::trim_explode('x', $mode);402						if(count($info) == 2)403						{404							$resolution = $info;405							break;406						}407					}408				}409			}410			if($resolution == false && phodevi::is_nvidia_graphics())411			{412				// Way to find resolution through NVIDIA's NV-CONTROL extension413				// But rely upon xrandr first since when using NVIDIA TwinView the reported FrontEndResolution may be the smaller of the two414				if(($frontend_res = phodevi_parser::read_nvidia_extension('FrontendResolution')) != false)415				{416					$resolution = pts_strings::comma_explode($frontend_res);417				}418			}419			if($resolution == false)420			{421				// Fallback to reading resolution from xdpyinfo422				foreach(phodevi_parser::read_xdpy_monitor_info() as $monitor_line)423				{424					$this_resolution = substr($monitor_line, strpos($monitor_line, ': ') + 2);425					$this_resolution = substr($this_resolution, 0, strpos($this_resolution, ' '));426					$this_resolution = explode('x', $this_resolution);427					if(count($this_resolution) == 2 && is_numeric($this_resolution[0]) && is_numeric($this_resolution[1]))428					{429						$resolution = $this_resolution;430						break;431					}432				}433			}434			if($resolution == false && is_readable('/sys/class/graphics/fb0/virtual_size'))435			{436				// As last fall-back try reading size of fb437				$virtual_size = explode(',', pts_file_io::file_get_contents('/sys/class/graphics/fb0/virtual_size'));438				if(count($virtual_size) == 2 && is_numeric($virtual_size[0]) && is_numeric($virtual_size[1]))439				{440					$resolution = $virtual_size;441				}442			}443		}444		return $resolution == false ? array(-1, -1) : $resolution;445	}446	public static function gpu_screen_resolution_string()447	{448		// Return the current screen resolution449		$resolution = implode('x', phodevi::read_property('gpu', 'screen-resolution'));450		if($resolution == '-1x-1')451		{452			$resolution = null;453		}454		return $resolution;455	}456	public static function gpu_available_modes()457	{458		// XRandR available modes459		$current_resolution = phodevi::read_property('gpu', 'screen-resolution');460		$current_pixel_count = $current_resolution[0] * $current_resolution[1];...gpu_screen_resolution
Using AI Code Generation
1$gpu = new phodevi_gpu();2echo $gpu->gpu_screen_resolution();3$gpu = new phodevi_gpu();4echo $gpu->gpu_screen_resolution();5$gpu = new phodevi_gpu();6echo $gpu->gpu_screen_resolution();7$gpu = new phodevi_gpu();8echo $gpu->gpu_screen_resolution();9$gpu = new phodevi_gpu();10echo $gpu->gpu_screen_resolution();11$gpu = new phodevi_gpu();12echo $gpu->gpu_screen_resolution();13$gpu = new phodevi_gpu();14echo $gpu->gpu_screen_resolution();15$gpu = new phodevi_gpu();16echo $gpu->gpu_screen_resolution();17$gpu = new phodevi_gpu();18echo $gpu->gpu_screen_resolution();gpu_screen_resolution
Using AI Code Generation
1include_once 'phodevi.php';2$screen_resolution = phodevi_gpu::gpu_screen_resolution();3echo $screen_resolution;4include_once 'phodevi.php';5$gpu_temperature = phodevi_gpu::gpu_temperature();6echo $gpu_temperature;7include_once 'phodevi.php';8$gpu_name = phodevi_gpu::gpu_name();9echo $gpu_name;10include_once 'phodevi.php';11$gpu_vendor = phodevi_gpu::gpu_vendor();12echo $gpu_vendor;13include_once 'phodevi.php';14$gpu_bus = phodevi_gpu::gpu_bus();15echo $gpu_bus;16include_once 'phodevi.php';17$gpu_driver = phodevi_gpu::gpu_driver();18echo $gpu_driver;gpu_screen_resolution
Using AI Code Generation
1require_once('phodevi.php');2echo phodevi_gpu::gpu_screen_resolution(0);3require_once('phodevi.php');4echo phodevi_gpu::gpu_screen_resolution(1);5require_once('phodevi.php');6echo phodevi_gpu::gpu_screen_resolution(2);7require_once('phodevi.php');8echo phodevi_gpu::gpu_screen_resolution(3);9require_once('phodevi.php');10echo phodevi_gpu::gpu_screen_resolution(4);11require_once('phodevi.php');12echo phodevi_gpu::gpu_screen_resolution(5);13require_once('phodevi.php');14echo phodevi_gpu::gpu_screen_resolution(6);gpu_screen_resolution
Using AI Code Generation
1require_once 'phodevi.php';2$phodevi = new phodevi();3$gpu = $phodevi->gpu();4if($gpu->gpu_screen_resolution() != false)5{6	$resolution = $gpu->gpu_screen_resolution();7	echo "Screen Resolution: {$resolution[0]} x {$resolution[1]}";8}9{10	echo "Can't get screen resolution";11}12require_once 'phodevi.php';13$phodevi = new phodevi();14$gpu = $phodevi->gpu();15if($gpu->gpu_screen_resolution() != false)16{17	$resolution = $gpu->gpu_screen_resolution();18	echo "Screen Resolution: {$resolution[0]} x {$resolution[1]}";19}20{21	echo "Can't get screen resolution";22}23require_once 'phodevi.php';24$phodevi = new phodevi();25$gpu = $phodevi->gpu();26if($gpu->gpu_screen_resolution() != false)27{28	$resolution = $gpu->gpu_screen_resolution();29	echo "Screen Resolution: {$resolution[0]} x {$resolution[1]}";30}31{32	echo "Can't get screen resolution";33}34require_once 'phodevi.php';35$phodevi = new phodevi();36$gpu = $phodevi->gpu();37if($gpu->gpu_screen_resolution() != false)38{39	$resolution = $gpu->gpu_screen_resolution();40	echo "Screen Resolution: {$resolution[0]} x {$resolution[1]}";41}42{43	echo "Can't get screen resolution";44}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with gpu_screen_resolution on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!
