MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / chooseFBConfig

Function chooseFBConfig

server/glxvisual.cpp:864–1025  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

862 break;
863
864VGLFBConfig *chooseFBConfig(Display *dpy, int screen, const int attribs[],
865 int &nElements)
866{
867 GLXFBConfig *glxConfigs = NULL;
868 VGLFBConfig *configs = NULL;
869
870 if(!dpy || screen < 0) return NULL;
871
872 if(fconfig.egl)
873 {
874 int fbConfigID = GLX_DONT_CARE, doubleBuffer = GLX_DONT_CARE, redSize = 0,
875 greenSize = 0, blueSize = 0, alphaSize = 0, depthSize = 0,
876 stencilSize = 0, samples = 0, drawableType = GLX_WINDOW_BIT,
877 xRenderable = GLX_DONT_CARE, visualType = GLX_DONT_CARE, stereo = 0,
878 sRGB = GLX_DONT_CARE;
879
880 if(!attribs) return getFBConfigs(dpy, screen, nElements);
881
882 buildCfgAttribTable(dpy, screen);
883 GET_CA_TABLE()
884
885 for(int i = 0; attribs[i] != None && i < MAX_ATTRIBS; i++)
886 {
887 switch(attribs[i])
888 {
889 PARSE_ATTRIB_DC(GLX_FBCONFIG_ID, fbConfigID, 1, caEntries)
890 PARSE_ATTRIB_DC(GLX_DOUBLEBUFFER, doubleBuffer, 0, 1)
891 PARSE_ATTRIB(GLX_STEREO, stereo, 0, 1)
892 PARSE_ATTRIB_DC(GLX_RED_SIZE, redSize, 0, 10)
893 PARSE_ATTRIB_DC(GLX_GREEN_SIZE, greenSize, 0, 10)
894 PARSE_ATTRIB_DC(GLX_BLUE_SIZE, blueSize, 0, 10)
895 PARSE_ATTRIB_DC(GLX_ALPHA_SIZE, alphaSize, 0, 8)
896 PARSE_ATTRIB(GLX_DEPTH_SIZE, depthSize, 0, 24)
897 PARSE_ATTRIB(GLX_STENCIL_SIZE, stencilSize, 0, 8)
898 PARSE_ATTRIB(GLX_SAMPLES, samples, 0, 64)
899 case GLX_DRAWABLE_TYPE:
900 drawableType = attribs[++i];
901 if(drawableType != (int)GLX_DONT_CARE && (drawableType &
902 ~(GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT)))
903 goto bailout;
904 break;
905 PARSE_ATTRIB_DC(GLX_X_RENDERABLE, xRenderable, 0, 1)
906 PARSE_ATTRIB_DC(GLX_X_VISUAL_TYPE, visualType, GLX_TRUE_COLOR,
907 GLX_DIRECT_COLOR)
908 PARSE_ATTRIB_DC(GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, sRGB, 0, 1);
909
910 case GLX_LEVEL:
911 case GLX_AUX_BUFFERS:
912 case GLX_ACCUM_RED_SIZE:
913 case GLX_ACCUM_GREEN_SIZE:
914 case GLX_ACCUM_BLUE_SIZE:
915 case GLX_ACCUM_ALPHA_SIZE:
916 if(attribs[++i] != 0) goto bailout;
917 break;
918 case GLX_RENDER_TYPE:
919 if(attribs[++i] != GLX_RGBA_BIT) goto bailout;
920 break;
921 case GLX_CONFIG_CAVEAT:

Callers 3

glXChooseFBConfigFunction · 0.85
configsFromVisAttribsFunction · 0.85
getDefaultFBConfigFunction · 0.85

Calls 2

getFBConfigsFunction · 0.85
buildCfgAttribTableFunction · 0.85

Tested by

no test coverage detected