Files
svcmobrel-release d1678190cf Updating prebuilts and/or headers
913b088cb559f31e09a1baf89d85d75cb43079b4 - nvidia-xconfig-35.2.1/nvidia-xconfig.h
1e39095238886dfc6a69f7ec750e10c05a93e7d1 - nvidia-xconfig-35.2.1/nvidia-xconfig.1.m4
f14e9577e537037d4778d490ef70f13b0e94a70a - nvidia-xconfig-35.2.1/option_table.h
4cc77b90af91e615a64ae04893fdffa7939db84c - nvidia-xconfig-35.2.1/COPYING
41bcac41393c9a465c30c07cf1ab386647a16687 - nvidia-xconfig-35.2.1/util.c
647e7896275a1113ec99352d573823a05001f57e - nvidia-xconfig-35.2.1/lscf.c
22a5c807291792a264b5acca7ff6d199468890b8 - nvidia-xconfig-35.2.1/Makefile
bfa37f78ba458f14a1865bbf3f67eb84987a7e1c - nvidia-xconfig-35.2.1/extract_edids.c
c946eefad99cec9366d8abbd4e45c5d138d3b7be - nvidia-xconfig-35.2.1/make_usable.c
46f2ea329459b0b16cb36cc14cec0de737d0963e - nvidia-xconfig-35.2.1/options.c
b3d0f9f27c4d9cb7940d04e1dd387d357a16024c - nvidia-xconfig-35.2.1/nvidia-xconfig.c
6f6f68f976250f2646450e571f9ab2d7eee1ac80 - nvidia-xconfig-35.2.1/nvidia-cfg.h
9b0c02164398be2795fea7cb13c9e1b062d24bfb - nvidia-xconfig-35.2.1/query_gpu_info.c
10edc2c301fd331439b38d001c0df41669c238b2 - nvidia-xconfig-35.2.1/multiple_screens.c
d37da5a118e0418b267a48d05fd144611316b42c - nvidia-xconfig-35.2.1/gen-manpage-opts.c
a5ad539267b73169480e7898b284823639c4db3a - nvidia-xconfig-35.2.1/tree.c
5d55b94375c2055cfa1578e4c7f34c90e63a33f7 - nvidia-xconfig-35.2.1/common-utils/gen-manpage-opts-helper.c
8259a24058c714629f9819cc8c830ea9b202bb27 - nvidia-xconfig-35.2.1/common-utils/gen-manpage-opts-helper.h
8a346196b052cfb1e06dd83d2ad1fe71e928d2b3 - nvidia-xconfig-35.2.1/common-utils/common-utils.c
aac5cbf0e68e1da4e646c316a7c0e620304ee16b - nvidia-xconfig-35.2.1/common-utils/msg.c
e572cac43202f6c2af1c80b9e3901215126093ed - nvidia-xconfig-35.2.1/common-utils/nvgetopt.h
384e36102dcd08ed4c5de05b5e3b8a7cdb2e257d - nvidia-xconfig-35.2.1/common-utils/nvgetopt.c
1654638c567bc7f2bd70b54d807b498ab14c1061 - nvidia-xconfig-35.2.1/common-utils/nvpci-utils.h
524990f5497f9bbeb3d148b5e7dc8d2267c3163d - nvidia-xconfig-35.2.1/common-utils/nvpci-utils.c
abb5c1b445d9353f2d2840bda848cd16109710a4 - nvidia-xconfig-35.2.1/common-utils/msg.h
dc2678d8a9d794a4b2b2718fce57ec087f21f54b - nvidia-xconfig-35.2.1/common-utils/common-utils.h
4d9b03ea3badceb6bdfdf6589e6731140ec44079 - nvidia-xconfig-35.2.1/XF86Config-parser/Generate.c
0a274c4bc54b6ae0f6d009e443bda0cb033d66b5 - nvidia-xconfig-35.2.1/XF86Config-parser/Pointer.c
6c210ad0eaee1db3fec48ff01746cb054b4f9aaa - nvidia-xconfig-35.2.1/XF86Config-parser/Video.c
3f2238c88d737bd329a9bca1ac4b0bcf77bb9ac2 - nvidia-xconfig-35.2.1/XF86Config-parser/xf86tokens.h
33211ca0a10f50e2c87b9e8feef6c1ab381b57a1 - nvidia-xconfig-35.2.1/XF86Config-parser/DRI.c
2022a4a3c2a1b23a67ae74f50a3849f5f3a45e4b - nvidia-xconfig-35.2.1/XF86Config-parser/Keyboard.c
45ceb0129668346ae3e52d81bb6e2f97efadf9d0 - nvidia-xconfig-35.2.1/XF86Config-parser/Input.c
e67d630ef396ab7d34524c333f3a77fc42ba8fc6 - nvidia-xconfig-35.2.1/XF86Config-parser/configProcs.h
953b945f3b117d6fb44f1f738af17b6380a9ec72 - nvidia-xconfig-35.2.1/XF86Config-parser/Monitor.c
c7b8d8ca0f7c9dcc2cdca4f8e77d1122c71892ef - nvidia-xconfig-35.2.1/XF86Config-parser/Read.c
de1c758e29f217e1a99e4c076d54ac84bce98b18 - nvidia-xconfig-35.2.1/XF86Config-parser/Screen.c
7344be997921dec57959691e986763ee686888d5 - nvidia-xconfig-35.2.1/XF86Config-parser/Device.c
4407207cf890539dc604cff5b834c994b307729a - nvidia-xconfig-35.2.1/XF86Config-parser/Write.c
18711ff932af2202869a30f3b32d6d7fe7811c84 - nvidia-xconfig-35.2.1/XF86Config-parser/Layout.c
ac878b26ded86a3c502a6a81fc4c4a96162afefb - nvidia-xconfig-35.2.1/XF86Config-parser/Merge.c
83b0a8efd6a508db54995688ab353591bdb242a2 - nvidia-xconfig-35.2.1/XF86Config-parser/Flags.c
04efe162cf6d97882f2bb87f3712d9a65c2320f3 - nvidia-xconfig-35.2.1/XF86Config-parser/Scan.c
f3d611bdbddfa64675a0810ef81dada57e224bcd - nvidia-xconfig-35.2.1/XF86Config-parser/Extensions.c
a9bc06f33bf525c2b08be2dc3cd64a59c4c7946d - nvidia-xconfig-35.2.1/XF86Config-parser/Configint.h
ec19d673a6a7d1d8f855f2d32d3e8f63046c3625 - nvidia-xconfig-35.2.1/XF86Config-parser/Files.c
cda3a4ab05bf48ba28af35b5c4c632e968afc7fa - nvidia-xconfig-35.2.1/XF86Config-parser/Util.c
c66a0a141e25e31b568fb9df41f17d7fb9e6d3b9 - nvidia-xconfig-35.2.1/XF86Config-parser/xf86Parser.h
9cbc29da282aa957f28b7fc83caf1e3b19ee2a52 - nvidia-xconfig-35.2.1/XF86Config-parser/Vendor.c
5ffb2caa5077a2e6ec1c5ece807e71503fb2fbce - nvidia-xconfig-35.2.1/XF86Config-parser/Module.c

Change-Id: I95f040ed93f9532cc6977e9284d2be1256f1b734
2023-01-24 11:20:58 -08:00

227 lines
6.6 KiB
C

/*
* nvidia-xconfig: A tool for manipulating X config files,
* specifically for use by the NVIDIA Linux graphics driver.
*
* Copyright (C) 2006 NVIDIA Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses>.
*
*
* query_gpu_info.c
*/
#include "nvidia-xconfig.h"
#include "msg.h"
#include <string.h>
static char *display_device_mask_to_display_device_name(unsigned int mask);
/*
* query_gpu_info() - query information about the GPU, and print it
* out
*/
int query_gpu_info(Options *op)
{
DevicesPtr pDevices;
DisplayDevicePtr pDisplayDevice;
int i, j;
char *name, *busid;
/* query the GPU information */
pDevices = find_devices(op);
if (!pDevices) {
nv_error_msg("Unable to query GPU information");
return FALSE;
}
/* print the GPU information */
nv_info_msg(NULL, "Number of GPUs: %d", pDevices->nDevices);
for (i = 0; i < pDevices->nDevices; i++) {
nv_info_msg(NULL, "");
nv_info_msg(NULL, "GPU #%d:", i);
nv_info_msg(TAB, "Name : %s", pDevices->devices[i].name);
nv_info_msg(TAB, "UUID : %s", pDevices->devices[i].uuid);
busid = nv_format_busid(op, i);
nv_info_msg(TAB, "PCI BusID : %s", busid);
nvfree(busid);
nv_info_msg(NULL, "");
nv_info_msg(TAB, "Number of Display Devices: %d",
pDevices->devices[i].nDisplayDevices);
nv_info_msg(NULL, "");
for (j = 0; j < pDevices->devices[i].nDisplayDevices; j++) {
pDisplayDevice = &pDevices->devices[i].displayDevices[j];
name = display_device_mask_to_display_device_name
(pDisplayDevice->mask);
if (!name) name = nvstrdup("Unknown");
nv_info_msg(TAB, "Display Device %d (%s):", j, name);
nvfree(name);
/*
* convenience macro to first check that the value is
* non-zero
*/
#define PRT(_fmt, _val) \
if (_val) { \
nv_info_msg(BIGTAB, (_fmt), (_val)); \
}
if (pDisplayDevice->info_valid) {
PRT("EDID Name : %s",
pDisplayDevice->info.monitor_name);
PRT("Minimum HorizSync : %.3f kHz",
pDisplayDevice->info.min_horiz_sync/1000.0);
PRT("Maximum HorizSync : %.3f kHz",
pDisplayDevice->info.max_horiz_sync/1000.0);
PRT("Minimum VertRefresh : %d Hz",
pDisplayDevice->info.min_vert_refresh);
PRT("Maximum VertRefresh : %d Hz",
pDisplayDevice->info.max_vert_refresh);
PRT("Maximum PixelClock : %.3f MHz",
pDisplayDevice->info.max_pixel_clock/1000.0);
PRT("Maximum Width : %d pixels",
pDisplayDevice->info.max_xres);
PRT("Maximum Height : %d pixels",
pDisplayDevice->info.max_yres);
PRT("Preferred Width : %d pixels",
pDisplayDevice->info.preferred_xres);
PRT("Preferred Height : %d pixels",
pDisplayDevice->info.preferred_yres);
PRT("Preferred VertRefresh : %d Hz",
pDisplayDevice->info.preferred_refresh);
PRT("Physical Width : %d mm",
pDisplayDevice->info.physical_width);
PRT("Physical Height : %d mm",
pDisplayDevice->info.physical_height);
} else {
nv_info_msg(BIGTAB, "No EDID information available.");
}
nv_info_msg(NULL, "");
}
}
free_devices(pDevices);
return TRUE;
} /* query_gpu_info() */
/*
* diaplay_mask/display_name conversions: the NV-CONTROL X extension
* identifies a display device by a bit in a display device mask. The
* below function translates from a display mask to a string
* describing the display devices.
*/
#define BITSHIFT_CRT 0
#define BITSHIFT_TV 8
#define BITSHIFT_DFP 16
#define BITMASK_ALL_CRT (0xff << BITSHIFT_CRT)
#define BITMASK_ALL_TV (0xff << BITSHIFT_TV)
#define BITMASK_ALL_DFP (0xff << BITSHIFT_DFP)
/*
* display_device_mask_to_display_name() - construct a string
* describing the given display device mask.
*/
#define DISPLAY_DEVICE_STRING_LEN 256
static char *display_device_mask_to_display_device_name(unsigned int mask)
{
char *s;
int first = TRUE;
unsigned int devcnt, devmask;
char *display_device_name_string;
display_device_name_string = nvalloc(DISPLAY_DEVICE_STRING_LEN);
s = display_device_name_string;
devmask = 1 << BITSHIFT_CRT;
devcnt = 0;
while (devmask & BITMASK_ALL_CRT) {
if (devmask & mask) {
if (first) first = FALSE;
else s += sprintf(s, ", ");
s += sprintf(s, "CRT-%X", devcnt);
}
devmask <<= 1;
devcnt++;
}
devmask = 1 << BITSHIFT_DFP;
devcnt = 0;
while (devmask & BITMASK_ALL_DFP) {
if (devmask & mask) {
if (first) first = FALSE;
else s += sprintf(s, ", ");
s += sprintf(s, "DFP-%X", devcnt);
}
devmask <<= 1;
devcnt++;
}
devmask = 1 << BITSHIFT_TV;
devcnt = 0;
while (devmask & BITMASK_ALL_TV) {
if (devmask & mask) {
if (first) first = FALSE;
else s += sprintf(s, ", ");
s += sprintf(s, "TV-%X", devcnt);
}
devmask <<= 1;
devcnt++;
}
*s = '\0';
return (display_device_name_string);
} /* display_device_mask_to_display_name() */