More progress with xlib and glx
This commit is contained in:
69
src/main.c
69
src/main.c
@@ -1,3 +1,4 @@
|
||||
#include <X11/X.h>
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <assert.h>
|
||||
@@ -238,6 +239,73 @@ void print_info(Display* display) {
|
||||
puts("");
|
||||
}
|
||||
|
||||
void glx_print_client_info(Display* display) {
|
||||
const char* glx_client_vendor_str = glXGetClientString(display, GLX_VENDOR);
|
||||
printf("Client GLX_VENDOR: %s\n", glx_client_vendor_str);
|
||||
const char* glx_client_version_str = glXGetClientString(display, GLX_VERSION);
|
||||
printf("Client GLX_VERSION: %s\n", glx_client_version_str);
|
||||
const char* glx_client_extensions_str = glXGetClientString(display, GLX_EXTENSIONS);
|
||||
printf("Client GLX_EXTENSIONS: %s\n", glx_client_extensions_str);
|
||||
}
|
||||
|
||||
void glx_print_server_info(Display* display) {
|
||||
const char* glx_server_vendor_str = glXQueryServerString(display, DefaultScreen(display), GLX_VENDOR);
|
||||
printf("Server GLX_VENDOR: %s\n", glx_server_vendor_str);
|
||||
const char* glx_server_version_str = glXQueryServerString(display, DefaultScreen(display), GLX_VERSION);
|
||||
printf("Server GLX_VERSION: %s\n", glx_server_version_str);
|
||||
const char* glx_server_extensions_str = glXQueryServerString(display, DefaultScreen(display), GLX_EXTENSIONS);
|
||||
printf("Server GLX_EXTENSIONS: %s\n", glx_server_extensions_str);
|
||||
}
|
||||
|
||||
void print_glxfbconfig(Display* display, const GLXFBConfig* cfg) {
|
||||
int value = 0;
|
||||
|
||||
#define PRINT_GLXFBCONFIG_VALUE(attrib) \
|
||||
value = 0; \
|
||||
if (glXGetFBConfigAttrib(display, *cfg, attrib, &value) != Success) { \
|
||||
LOG_FATALF("Invalid attrib %s", #attrib); \
|
||||
} \
|
||||
printf(" %s: %d\n", #attrib, value)
|
||||
|
||||
puts("{");
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_FBCONFIG_ID);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_BUFFER_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_LEVEL);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_DOUBLEBUFFER);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_STEREO);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_AUX_BUFFERS);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_RED_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_GREEN_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_BLUE_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_ALPHA_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_DEPTH_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_STENCIL_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_ACCUM_RED_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_ACCUM_GREEN_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_ACCUM_BLUE_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_ACCUM_ALPHA_SIZE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_SAMPLE_BUFFERS);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_SAMPLES);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_RENDER_TYPE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_DRAWABLE_TYPE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_X_RENDERABLE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_X_VISUAL_TYPE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_CONFIG_CAVEAT);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_TYPE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_INDEX_VALUE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_RED_VALUE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_GREEN_VALUE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_BLUE_VALUE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_TRANSPARENT_ALPHA_VALUE);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_MAX_PBUFFER_WIDTH);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_MAX_PBUFFER_HEIGHT);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_MAX_PBUFFER_PIXELS);
|
||||
PRINT_GLXFBCONFIG_VALUE(GLX_VISUAL_ID);
|
||||
puts("}");
|
||||
|
||||
#undef PRINT_GLXFBCONFIG_VALUE
|
||||
}
|
||||
|
||||
int main() {
|
||||
Display* display = XOpenDisplay(NULL);
|
||||
if (display == NULL) {
|
||||
@@ -276,7 +344,6 @@ int main() {
|
||||
printf(" %s\n", DynString_c_str(glx_extensions + i));
|
||||
}
|
||||
|
||||
|
||||
// XVisualInfo visual_info = { 0 };
|
||||
// Status xstatus = XMatchVisualInfo(display, DefaultScreen(display), 32, TrueColor, &visual_info);
|
||||
// if (xstatus == 0) {
|
||||
|
||||
Reference in New Issue
Block a user