VirtualBox

Ignore:
Timestamp:
Aug 21, 2019 11:28:40 AM (5 years ago)
Author:
vboxsync
Message:

3D/Chromium: Move OpenGLTest to the helper apps directory under Main and get rid of the renderspu dependency, drop the remaining SharedOpenGL bits, bugref:9529

Location:
trunk/src/VBox/Main/src-helper-apps/OpenGLTest
Files:
3 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-helper-apps/OpenGLTest/Makefile.kmk

    r80364 r80365  
    11# $Id$
    22## @file
    3 # Sub-Makefile for the Shared OpenGL Host Service.
     3# Sub-Makefile for the OpenGLTest helper app.
    44#
    55
     
    2323# Target lists.
    2424#
    25 ifdef VBOX_WITH_MAIN
    26 LIBRARIES += VBoxOGLrenderspu
    27 BLDDIRS   += \
    28         $(VBOX_PATH_CROGL_GENFILES)/
    29 endif
    30 
    31 ifeq ($(KBUILD_TARGET),darwin)
    32  #
    33  # We have to symlink the system headers of OpenGl cause they have some
    34  # different directory hierarchy on Mac OS X (no /GL sub directory).
    35  #
    36  # See Config.kmk for the global variables.
    37  #
    38  INSTALLS += DarwinOpenGLHdrs
    39  DarwinOpenGLHdrs_INST     = $(VBOX_DARWIN_OPENGL_INST)
    40  DarwinOpenGLHdrs_SYMLINKS = \
    41         $(foreach hdr, $(VBOX_DARWIN_OPENGL_HEADERS),\
    42                 $(hdr)=>$(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers/$(hdr))
    43 endif # darwin
    44 
    45 #
    46 # VBoxOGLrenderspu
    47 #
    48 VBoxOGLrenderspu_TEMPLATE = VBOXCROGLR3HOSTLIB
    49 VBoxOGLrenderspu_INTERMEDIATES = \
    50         $(VBOX_PATH_CROGL_GENFILES)/state/cr_currentpointers.h \
    51         $(VBOX_PATH_CROGL_GENFILES)/state/cr_statefuncs.h
    52 VBoxOGLrenderspu_INCS = $(VBOX_GRAPHICS_INCS)
    53 VBoxOGLrenderspu_SOURCES = \
    54         render/renderspu.c \
    55         render/renderspu_config.c \
    56         render/renderspu_init.c
    57 VBoxOGLrenderspu_SOURCES.win     = \
    58         render/renderspu_wgl.c
    59 VBoxOGLrenderspu_SOURCES.linux   = render/renderspu_glx.c
    60 VBoxOGLrenderspu_SOURCES.solaris = render/renderspu_glx.c
    61 VBoxOGLrenderspu_SOURCES.freebsd = render/renderspu_glx.c
    62 VBoxOGLrenderspu_OBJCFLAGS.darwin = -Wno-shadow
    63 VBoxOGLrenderspu_SOURCES.darwin  = \
    64         OpenGLTest/OpenGLTestDarwin.cpp \
    65         render/renderspu_cocoa.c \
    66         render/renderspu_cocoa_helper.m
    67 ifdef VBOX_WITH_CRHGSMI
    68 VBoxOGLrenderspu_DEFS += VBOX_WITH_CRHGSMI
    69 endif
    70 ifdef VBOX_WITH_VDMA
    71 VBoxOGLrenderspu_DEFS += VBOX_WITH_VDMA
    72 endif
    73 
    7425LIBRARIES += VBoxOGLTest
    7526VBoxOGLTest_TEMPLATE = VBOXR3NP
    7627ifneq ($(KBUILD_TARGET),darwin)
    77   VBoxOGLTest_SOURCES = OpenGLTest/OpenGLTest.cpp
     28  VBoxOGLTest_SOURCES = OpenGLTest.cpp
    7829endif
    79 VBoxOGLTest_SOURCES.darwin = OpenGLTest/OpenGLTestDarwin.cpp
     30VBoxOGLTest_SOURCES.darwin = OpenGLTestDarwin.cpp
    8031
    8132#
     
    8435#
    8536if (   defined(VBOX_WITH_QTGUI) \
    86     && (defined(VBOX_WITH_CROGL) || defined(VBOX_WITH_VIDEOHWACCEL)) \
     37    && defined(VBOX_WITH_VIDEOHWACCEL) \
    8738    && !defined(VBOX_WITH_DEBUG_VCC_CRT))
    8839 ifneq ($(KBUILD_TARGET),darwin)
     
    9243  PROGRAMS += VBoxTestOGL
    9344  VBoxTestOGL_TEMPLATE = $(if $(VBOX_WITH_VIDEOHWACCEL),$(if $(VBOX_WITH_HARDENING),VBOXQTGUI,VBOXQTGUIEXE),VBOXMAINEXE)
    94   VBoxTestOGL_INCS     += $(VBOX_PATH_CROGL_INCLUDE) $(VBOX_PATH_CROGL_GENFILES)
    9545  VBoxTestOGL_DEFS.win         = _WIN32_WINNT=0x0500 WINDOWS=1
    9646  VBoxTestOGL_DEFS.linux       = Linux=1 _GNU_SOURCE
     
    9848  VBoxTestOGL_DEFS.darwin      = DARWIN=1 GL_GLEXT_LEGACY _GNU_SOURCE
    9949  VBoxTestOGL_DEFS.freebsd     = FreeBSD=1 _GNU_SOURCE
    100   VBoxTestOGL_SOURCES = OpenGLTest/OpenGLTestApp.cpp
    101   VBoxTestOGL_SOURCES.win = OpenGLTest/VBoxTestOGL.rc
     50  VBoxTestOGL_SOURCES = OpenGLTestApp.cpp
     51  VBoxTestOGL_SOURCES.win = VBoxTestOGL.rc
    10252  VBoxTestOGL_LIBS = \
    103         $(if $(VBOX_WITH_CROGL), \
    104             $(PATH_STAGE_LIB)/VBoxOGLhosterrorspu$(VBOX_SUFF_LIB) \
    105             $(PATH_STAGE_LIB)/VBoxOGLrenderspu$(VBOX_SUFF_LIB) \
    106             $(PATH_STAGE_LIB)/VBoxOGLhostspuload$(VBOX_SUFF_LIB) \
    107             $(PATH_STAGE_LIB)/VBoxOGLhostcrutil$(VBOX_SUFF_LIB),) \
    10853        $(if $(VBOX_WITH_VIDEOHWACCEL), $(PATH_STAGE_LIB)/VBoxOGL2D$(VBOX_SUFF_LIB),) \
    10954        $(LIB_RUNTIME)
    11055  VBoxTestOGL_DEFS += \
    11156    VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\" \
    112     $(if $(VBOX_WITH_CROGL), VBOX_WITH_CROGL,) \
    11357    $(if $(VBOX_WITH_VIDEOHWACCEL), VBOX_WITH_VIDEOHWACCEL,)
    11458  ifdef VBOX_WITH_VIDEOHWACCEL
  • trunk/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTest.cpp

    r76553 r80365  
    3232bool RTCALL VBoxOglIs3DAccelerationSupported(void)
    3333{
    34     if (RTEnvExist("VBOX_CROGL_FORCE_SUPPORTED"))
     34    if (RTEnvExist("VBOX_3D_FORCE_SUPPORTED"))
    3535    {
    36         LogRel(("VBOX_CROGL_FORCE_SUPPORTED is specified, skipping 3D test, and treating as supported\n"));
     36        LogRel(("VBOX_3D_FORCE_SUPPORTED is specified, skipping 3D test, and treating as supported\n"));
    3737        return true;
    3838    }
  • trunk/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTestApp.cpp

    r78410 r80365  
    2121#include <iprt/getopt.h>
    2222#include <iprt/initterm.h>
     23#include <iprt/ldr.h>
    2324#include <iprt/stream.h>
    2425#ifdef RT_OS_WINDOWS
     
    5556#endif
    5657
    57 #ifdef VBOX_WITH_CROGL
    58 #include <cr_spu.h>
     58/**
     59 * The OpenGL methods to look for when checking 3D presence.
     60 */
     61static const char * const g_apszOglMethods[] =
     62{
     63#ifdef RT_OS_WINDOWS
     64    "wglCreateContext",
     65    "wglDeleteContext",
     66    "wglMakeCurrent",
     67    "wglShareLists",
     68#elif defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) || defined(RT_OS_SOLARIS)
     69    "glXQueryVersion",
     70    "glXChooseVisual",
     71    "glXCreateContext",
     72    "glXMakeCurrent",
     73    "glXDestroyContext",
     74#endif
     75    "glAlphaFunc",
     76    "glBindTexture",
     77    "glBlendFunc",
     78    "glClear",
     79    "glClearColor",
     80    "glClearDepth",
     81    "glClearStencil",
     82    "glClipPlane",
     83    "glColorMask",
     84    "glColorPointer",
     85    "glCullFace",
     86    "glDeleteTextures",
     87    "glDepthFunc",
     88    "glDepthMask",
     89    "glDepthRange",
     90    "glDisable",
     91    "glDisableClientState",
     92    "glDrawArrays",
     93    "glDrawElements",
     94    "glEnable",
     95    "glEnableClientState",
     96    "glFogf",
     97    "glFogfv",
     98    "glFogi",
     99    "glFrontFace",
     100    "glGenTextures",
     101    "glGetBooleanv",
     102    "glGetError",
     103    "glGetFloatv",
     104    "glGetIntegerv",
     105    "glGetString",
     106    "glGetTexImage",
     107    "glLightModelfv",
     108    "glLightf",
     109    "glLightfv",
     110    "glLineWidth",
     111    "glLoadIdentity",
     112    "glLoadMatrixf",
     113    "glMaterialfv",
     114    "glMatrixMode",
     115    "glMultMatrixf",
     116    "glNormalPointer",
     117    "glPixelStorei",
     118    "glPointSize",
     119    "glPolygonMode",
     120    "glPolygonOffset",
     121    "glPopAttrib",
     122    "glPopMatrix",
     123    "glPushAttrib",
     124    "glPushMatrix",
     125    "glScissor",
     126    "glShadeModel",
     127    "glStencilFunc",
     128    "glStencilMask",
     129    "glStencilOp",
     130    "glTexCoordPointer",
     131    "glTexImage2D",
     132    "glTexParameterf",
     133    "glTexParameterfv",
     134    "glTexParameteri",
     135    "glTexSubImage2D",
     136    "glVertexPointer",
     137    "glViewport"
     138};
     139
     140
     141/**
     142 * Tries to resolve the given OpenGL symbol.
     143 *
     144 * @returns Pointer to the symbol or nULL on error.
     145 * @param   pszSymbol           The symbol to resolve.
     146 */
     147DECLINLINE(PFNRT) vboxTestOglGetProc(const char *pszSymbol)
     148{
     149    int rc;
     150
     151#ifdef RT_OS_WINDOWS
     152    static RTLDRMOD s_hOpenGL32 = NULL;
     153    if (s_hOpenGL32 == NULL)
     154    {
     155        rc = RTLdrLoadSystem("opengl32", /* fNoUnload = */ true, &s_hOpenGL32);
     156        if (RT_FAILURE(rc))
     157           s_hOpenGL32 = NULL;
     158    }
     159
     160    typedef PROC (WINAPI *PFNWGLGETPROCADDRESS)(LPCSTR);
     161    static PFNWGLGETPROCADDRESS s_wglGetProcAddress = NULL;
     162    if (s_wglGetProcAddress == NULL)
     163    {
     164        if (s_hOpenGL32 != NULL)
     165        {
     166            rc = RTLdrGetSymbol(s_hOpenGL32, "wglGetProcAddress", (void **)&s_wglGetProcAddress);
     167            if (RT_FAILURE(rc))
     168               s_wglGetProcAddress = NULL;
     169        }
     170    }
     171
     172    if (s_wglGetProcAddress)
     173    {
     174        /* Khronos: [on failure] "some implementations will return other values. 1, 2, and 3 are used, as well as -1". */
     175        PFNRT p = (PFNRT)s_wglGetProcAddress(pszSymbol);
     176        if (RT_VALID_PTR(p))
     177            return p;
     178
     179        /* Might be an exported symbol. */
     180        rc = RTLdrGetSymbol(s_hOpenGL32, pszSymbol, (void **)&p);
     181        if (RT_SUCCESS(rc))
     182            return p;
     183    }
     184#else /* The X11 gang */
     185    static RTLDRMOD s_hGL = NULL;
     186    if (s_hGL == NULL)
     187    {
     188        static const char s_szLibGL[] = "libGL.so.1";
     189        rc = RTLdrLoadEx(s_szLibGL, &s_hGL, RTLDRLOAD_FLAGS_GLOBAL | RTLDRLOAD_FLAGS_NO_UNLOAD, NULL);
     190        if (RT_FAILURE(rc))
     191        {
     192            s_hGL = NULL;
     193            return NULL;
     194        }
     195    }
     196
     197    typedef PFNRT (* PFNGLXGETPROCADDRESS)(const GLubyte * procName);
     198    static PFNGLXGETPROCADDRESS s_glXGetProcAddress = NULL;
     199    if (s_glXGetProcAddress == NULL)
     200    {
     201        rc = RTLdrGetSymbol(s_hGL, "glXGetProcAddress", (void **)&s_glXGetProcAddress);
     202        if (RT_FAILURE(rc))
     203        {
     204            s_glXGetProcAddress = NULL;
     205            return NULL;
     206        }
     207    }
     208
     209    PFNRT p = s_glXGetProcAddress((const GLubyte *)pszSymbol);
     210    if (RT_VALID_PTR(p))
     211        return p;
     212
     213    /* Might be an exported symbol. */
     214    rc = RTLdrGetSymbol(s_hGL, pszSymbol, (void **)&p);
     215    if (RT_SUCCESS(rc))
     216        return p;
     217#endif
     218
     219    return NULL;
     220}
    59221
    60222static int vboxCheck3DAccelerationSupported()
    61223{
    62224    LogRel(("Testing 3D Support:\n"));
    63     PCSPUREG aSpuRegs[] = { &g_RenderSpuReg, &g_ErrorSpuReg, NULL};
    64     SPU *spu = crSPUInitFromReg(NULL, 0, "render", NULL, &aSpuRegs[0]);
    65     if (spu)
    66     {
    67         crSPUUnloadChain(spu);
    68         LogRel(("Testing 3D Succeeded!\n"));
    69         return 0;
    70     }
    71     LogRel(("Testing 3D Failed\n"));
    72     return 1;
    73 }
    74 #endif
     225
     226    for (uint32_t i = 0; i < RT_ELEMENTS(g_apszOglMethods); i++)
     227    {
     228        PFNRT pfn = vboxTestOglGetProc(g_apszOglMethods[i]);
     229        if (!pfn)
     230        {
     231            LogRel(("Testing 3D Failed\n"));
     232            return 1;
     233        }
     234    }
     235
     236    LogRel(("Testing 3D Succeeded!\n"));
     237    return 0;
     238}
    75239
    76240#ifdef VBOX_WITH_VIDEOHWACCEL
     
    211375    if(argc < 2)
    212376    {
    213 #ifdef VBOX_WITH_CROGL
    214377        /* backwards compatibility: check 3D */
    215378        rc = vboxCheck3DAccelerationSupported();
    216 #endif
    217379    }
    218380    else
     
    234396        bool bTest2D = false;
    235397#endif
    236 #ifdef VBOX_WITH_CROGL
    237398        bool bTest3D = false;
    238 #endif
    239399#ifdef VBOXGLTEST_WITH_LOGGING
    240400        bool bLog = false;
     
    252412            {
    253413                case 't':
    254 #ifdef VBOX_WITH_CROGL
    255414                    if (!strcmp(Val.psz, "3D") || !strcmp(Val.psz, "3d"))
    256415                    {
     
    259418                        break;
    260419                    }
    261 #endif
    262420#ifdef VBOX_WITH_VIDEOHWACCEL
    263421                    if (!strcmp(Val.psz, "2D") || !strcmp(Val.psz, "2d"))
     
    286444                             "  --test 2D             test for 2D (video) OpenGL capabilities\n"
    287445#endif
    288 #ifdef VBOX_WITH_CROGL
    289446                             "  --test 3D             test for 3D OpenGL capabilities\n"
    290 #endif
    291447#ifdef VBOXGLTEST_WITH_LOGGING
    292448                             "  --log <log_file_name> log the GL test result to the given file\n"
     
    333489                rc = vboxInitQuietMode();
    334490
    335 #ifdef VBOX_WITH_CROGL
    336491            if(!rc && bTest3D)
    337492                rc = vboxCheck3DAccelerationSupported();
    338 #endif
    339493
    340494#ifdef VBOX_WITH_VIDEOHWACCEL
  • trunk/src/VBox/Main/src-helper-apps/OpenGLTest/OpenGLTestDarwin.cpp

    r78190 r80365  
    100100bool RTCALL VBoxOglIs3DAccelerationSupported(void)
    101101{
    102     if (RTEnvExist("VBOX_CROGL_FORCE_SUPPORTED"))
     102    if (RTEnvExist("VBOX_3D_FORCE_SUPPORTED"))
    103103    {
    104         LogRel(("VBOX_CROGL_FORCE_SUPPORTED is specified, skipping 3D test, and treating as supported\n"));
     104        LogRel(("VBOX_3D_FORCE_SUPPORTED is specified, skipping 3D test, and treating as supported\n"));
    105105        return true;
    106106    }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette