VirtualBox

Ignore:
Timestamp:
Jun 7, 2013 9:27:03 PM (12 years ago)
Author:
vboxsync
Message:

crOpenGL: more dump/debug stuff

Location:
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h

    r46395 r46453  
    398398void crServerDumpFramesCheck();
    399399void crServerDumpState();
     400void crServerDumpDrawel(const char*pszFormat, ...);
     401void crServerDumpDrawelv(GLuint idx, const char*pszElFormat, uint32_t cbEl, const void *pvVal, uint32_t cVal);
     402
    400403
    401404extern unsigned long g_CrDbgDumpEnabled;
     
    461464#define CR_SERVER_DUMP_F_DRAW_STATE_ENTER                0x00000004
    462465#define CR_SERVER_DUMP_F_DRAW_STATE_LEAVE                0x00000008
    463 
    464466#define CR_SERVER_DUMP_F_DRAW_ENTER_ALL (CR_SERVER_DUMP_F_DRAW_BUFF_ENTER \
    465467        | CR_SERVER_DUMP_F_DRAW_TEX_ENTER \
     
    477479
    478480#define CR_SERVER_DUMP_F_COMPILE_SHADER         0x00001000
    479 #define CR_SERVER_DUMP_F_LINK_PROGRAM           0x00002000
     481#define CR_SERVER_DUMP_F_SHADER_SOURCE          0x00002000
     482#define CR_SERVER_DUMP_F_LINK_PROGRAM           0x00004000
    480483#define CR_SERVER_DUMP_F_SWAPBUFFERS_ENTER      0x00010000
    481484#define CR_SERVER_DUMP_F_SWAPBUFFERS_LEAVE      0x00020000
     485#define CR_SERVER_DUMP_F_DRAWEL                 0x00100000
     486
    482487
    483488#define CR_SERVER_DUMP_DEFAULT_FILTER_OP(_ev) ((((_ev) & g_CrDbgDumpDraw) != 0) \
     
    505510            crServerDumpCheckInit(); \
    506511            crDmpStrF(cr_server.Recorder.pDumper, "<== %s", __FUNCTION__); \
     512            if (CR_SERVER_DUMP_FILTER_DMP(CR_SERVER_DUMP_F_DRAW_TEX_LEAVE, cr_server.Recorder.pDumper)) { crServerDumpTextures(); } \
    507513            if (CR_SERVER_DUMP_FILTER_DMP(CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE, cr_server.Recorder.pDumper)) { crServerDumpBuffer(-1); } \
    508             if (CR_SERVER_DUMP_FILTER_DMP(CR_SERVER_DUMP_F_DRAW_TEX_LEAVE, cr_server.Recorder.pDumper)) { crServerDumpTextures(); } \
    509514            if (CR_SERVER_DUMP_FILTER_DMP(CR_SERVER_DUMP_F_DRAW_PROGRAM_UNIFORMS_LEAVE, cr_server.Recorder.pDumper)) { crServerDumpCurrentProgramUniforms(); } \
    510515            if (CR_SERVER_DUMP_FILTER_DMP(CR_SERVER_DUMP_F_DRAW_PROGRAM_LEAVE, cr_server.Recorder.pDumper)) { crServerDumpCurrentProgram(); } \
     
    516521            if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_COMPILE_SHADER, cr_server.Recorder.pDumper)) break; \
    517522            crServerDumpCheckInit(); \
     523            crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
    518524            crServerDumpShader((_id)); \
     525            crDmpStrF(cr_server.Recorder.pDumper, "====="); \
     526        } while (0)
     527
     528#define CR_SERVER_DUMP_SHADER_SOURCE(_id) do { \
     529            if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_SHADER_SOURCE, cr_server.Recorder.pDumper)) break; \
     530            crServerDumpCheckInit(); \
     531            crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
     532            crServerDumpShader((_id)); \
     533            crDmpStrF(cr_server.Recorder.pDumper, "====="); \
    519534        } while (0)
    520535
     
    522537            if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_LINK_PROGRAM, cr_server.Recorder.pDumper)) break; \
    523538            crServerDumpCheckInit(); \
     539            crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
    524540            crServerDumpProgram((_id)); \
     541            crDmpStrF(cr_server.Recorder.pDumper, "====="); \
    525542        } while (0)
    526543
     
    536553            if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_SWAPBUFFERS_LEAVE, cr_server.Recorder.pDumper)) break; \
    537554            crServerDumpCheckInit(); \
    538         } while (0)
     555            crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
     556        } while (0)
     557
     558#define CR_SERVER_DUMP_DRAWEL_F(_msg) do { \
     559        if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_DRAWEL, cr_server.Recorder.pDumper)) break; \
     560        crServerDumpCheckInit(); \
     561        crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
     562        crServerDumpDrawel _msg; \
     563    } while (0)
     564
     565#define CR_SERVER_DUMP_DRAWEL_V(_index, _pszElFormat, _cbEl, _pvVal, _cVal) do { \
     566        if (!CR_SERVER_DUMP_FILTER_OP(CR_SERVER_DUMP_F_DRAWEL, cr_server.Recorder.pDumper)) break; \
     567        crServerDumpCheckInit(); \
     568        crDmpStrF(cr_server.Recorder.pDumper, "== %s", __FUNCTION__); \
     569        crServerDumpDrawelv((_index), (_pszElFormat), (_cbEl), (_pvVal), (_cVal)); \
     570    } while (0)
    539571#else /* if !defined VBOX_WITH_CRSERVER_DUMPER */
    540572#define CR_SERVER_DUMP_DRAW_ENTER() do {} while (0)
     
    544576#define CR_SERVER_DUMP_SWAPBUFFERS_ENTER() do {} while (0)
    545577#define CR_SERVER_DUMP_SWAPBUFFERS_LEAVE() do {} while (0)
     578#define CR_SERVER_DUMP_SHADER_SOURCE() do {} while (0)
     579#define CR_SERVER_DUMP_DRAWEL_F(_msg) do {} while (0)
     580#define CR_SERVER_DUMP_DRAWEL_V(_pszElFormat, _cbEl, _pvVal, _cVal) do {} while (0)
    546581#endif /* !VBOX_WITH_CRSERVER_DUMPER */
    547582
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c

    r46368 r46453  
    3838    CRASSERT(err == GL_NO_ERROR);
    3939#endif
     40    CR_SERVER_DUMP_SHADER_SOURCE(shader);
    4041}
    4142
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_misc.c

    r46396 r46453  
    13981398        | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE
    13991399        | CR_SERVER_DUMP_F_DRAW_PROGRAM_UNIFORMS_ENTER
    1400         | CR_SERVER_DUMP_F_DRAW_TEX_ENTER
     1400        | CR_SERVER_DUMP_F_DRAW_TEX_LEAVE
    14011401        | CR_SERVER_DUMP_F_DRAW_PROGRAM_ENTER
    14021402        | CR_SERVER_DUMP_F_DRAW_STATE_ENTER
    14031403        | CR_SERVER_DUMP_F_SWAPBUFFERS_ENTER
     1404        | CR_SERVER_DUMP_F_DRAWEL
    14041405        ; //CR_SERVER_DUMP_F_DRAW_BUFF_ENTER | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE;
    14051406unsigned long g_CrDbgDumpDrawFramesSettings = CR_SERVER_DUMP_F_DRAW_BUFF_ENTER
     
    14951496{
    14961497    CRContext *ctx = crStateGetCurrent();
    1497     Assert(0);
    14981498    crRecDumpGlGetState(&cr_server.Recorder, ctx);
    14991499    crRecDumpGlEnableState(&cr_server.Recorder, ctx);
     1500}
     1501
     1502void crServerDumpDrawel(const char*pszFormat, ...)
     1503{
     1504    CRContext *ctx = crStateGetCurrent();
     1505    va_list pArgList;
     1506    va_start(pArgList, pszFormat);
     1507    crRecDumpVertAttrV(&cr_server.Recorder, ctx, pszFormat, pArgList);
     1508    va_end(pArgList);
     1509}
     1510
     1511void crServerDumpDrawelv(GLuint idx, const char*pszElFormat, uint32_t cbEl, const void *pvVal, uint32_t cVal)
     1512{
     1513    CRContext *ctx = crStateGetCurrent();
     1514    crRecDumpVertAttrv(&cr_server.Recorder, ctx, idx, pszElFormat, cbEl, pvVal, cVal);
    15001515}
    15011516
     
    15561571}
    15571572
    1558 static uint32_t g_VDbgCDraws = 0;
    1559 static uint32_t g_VDbgCFrames = 0;
    1560 static uint32_t g_VDbgDoFrameDump = 0;
    1561 static uint32_t g_VDbgInitFrameDump = 0;
    1562 
    1563 
    15641573bool crServerDumpFilterOp(unsigned long event, CR_DUMPER *pDumper)
    15651574{
    1566     CRContext *ctx = crStateGetCurrent();
    1567     if (event & CR_SERVER_DUMP_F_DRAW_ALL)
    1568     {
    1569         if(!ctx->glsl.activeProgram || ctx->glsl.activeProgram->id != 21)
    1570             return false;
    1571 
    1572         if (event & CR_SERVER_DUMP_F_DRAW_ENTER_ALL)
    1573         {
    1574             ++g_VDbgCDraws;
    1575 //            crDmpStrF(cr_server.Recorder.pDumper, "DRAW(%d:%d)", g_VDbgCFrames, g_VDbgCDraws);
    1576         }
    1577 
    1578         if (!g_VDbgDoFrameDump)
    1579             return false;
    1580 
    1581 #define CR_SERVER_DUMP_MARKER_ENTER_STR "VBox.Cr.DrawEnter"
    1582 #define CR_SERVER_DUMP_MARKER_LEAVE_STR "VBox.Cr.DrawLeave"
    1583 
    1584         if (0)//(g_VDbgCFrames == 53 && g_VDbgCDraws == 13)
    1585         {
    1586             if (event & CR_SERVER_DUMP_F_DRAW_ENTER_ALL)
    1587                 cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_SERVER_DUMP_MARKER_ENTER_STR), CR_SERVER_DUMP_MARKER_ENTER_STR);
    1588             else
    1589                 cr_server.head_spu->dispatch_table.StringMarkerGREMEDY(sizeof (CR_SERVER_DUMP_MARKER_LEAVE_STR), CR_SERVER_DUMP_MARKER_LEAVE_STR);
    1590         }
    1591     }
    1592     else if (event & CR_SERVER_DUMP_F_SWAPBUFFERS_ENTER)
    1593     {
    1594         bool fSkip = true;
    1595         ++g_VDbgCFrames;
    1596 //        crDmpStrF(cr_server.Recorder.pDumper, "FRAME(%d)", g_VDbgCFrames);
    1597         g_VDbgCDraws = 0;
    1598         if (g_VDbgDoFrameDump)
    1599         {
    1600             g_VDbgDoFrameDump = 0;
    1601             fSkip = false;
    1602         }
    1603 
    1604         if (g_VDbgInitFrameDump)
    1605         {
    1606             g_VDbgDoFrameDump = 1;
    1607             g_VDbgInitFrameDump = 0;
    1608         }
    1609 
    1610         if (fSkip)
    1611             return false;
    1612     }
    1613 
    16141575    return CR_SERVER_DUMP_DEFAULT_FILTER_OP(event);
    16151576}
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