VirtualBox

Changeset 83579 in vbox for trunk/src


Ignore:
Timestamp:
Apr 6, 2020 12:17:53 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
136922
Message:

Devices/Graphics: added helpers to parse and log the shader code, bugref:9639

Location:
trunk/src/VBox/Devices
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h

    r82968 r83579  
    13951395#endif
    13961396
     1397int vmsvga3dShaderParse(uint32_t cbShaderData, uint32_t const *pShaderData);
     1398void vmsvga3dShaderLogRel(char const *pszMsg, SVGA3dShaderType type, uint32_t cbShaderData, uint32_t const *pShaderData);
     1399
    13971400#endif /* !VBOX_INCLUDED_SRC_Graphics_DevVGA_SVGA3d_internal_h */
    13981401
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r83513 r83579  
    68356835
    68366836    Log(("vmsvga3dShaderDefine cid=%u shid=%d type=%s cbData=0x%x\n", cid, shid, (type == SVGA3D_SHADERTYPE_VS) ? "VERTEX" : "PIXEL", cbData));
    6837     Log3(("shader code:\n%.*Rhxd\n", cbData, pShaderData));
    68386837
    68396838    PVMSVGA3DCONTEXT pContext;
     
    68416840    AssertRCReturn(rc, rc);
    68426841
     6842    AssertReturn(shid < SVGA3D_MAX_SHADER_IDS, VERR_INVALID_PARAMETER);
     6843
     6844    rc = vmsvga3dShaderParse(cbData, pShaderData);
     6845    if (RT_FAILURE(rc))
     6846    {
     6847        AssertRC(rc);
     6848        vmsvga3dShaderLogRel("Failed to parse", type, cbData, pShaderData);
     6849        return rc;
     6850    }
     6851
    68436852    VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext);
    68446853
    6845     AssertReturn(shid < SVGA3D_MAX_SHADER_IDS, VERR_INVALID_PARAMETER);
    68466854    if (type == SVGA3D_SHADERTYPE_VS)
    68476855    {
     
    69186926    if (rc != VINF_SUCCESS)
    69196927    {
     6928        vmsvga3dShaderLogRel("Failed to create", type, cbData, pShaderData);
     6929
    69206930        RTMemFree(pShader->pShaderProgram);
    69216931        memset(pShader, 0, sizeof(*pShader));
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp

    r83513 r83579  
    54135413
    54145414    Log(("vmsvga3dShaderDefine %x shid=%x type=%s cbData=%x\n", cid, shid, (type == SVGA3D_SHADERTYPE_VS) ? "VERTEX" : "PIXEL", cbData));
    5415 #ifdef LOG_ENABLED
    5416     Log3(("Shader code:\n"));
    5417     const uint32_t cTokensPerLine = 8;
    5418     const uint32_t *paTokens = (uint32_t *)pShaderData;
    5419     const uint32_t cTokens = cbData / sizeof(uint32_t);
    5420     for (uint32_t iToken = 0; iToken < cTokens; ++iToken)
    5421     {
    5422         if ((iToken % cTokensPerLine) == 0)
    5423         {
    5424             if (iToken == 0)
    5425                 Log3(("0x%08X,", paTokens[iToken]));
    5426             else
    5427                 Log3(("\n0x%08X,", paTokens[iToken]));
    5428         }
    5429         else
    5430             Log3((" 0x%08X,", paTokens[iToken]));
    5431     }
    5432     Log3(("\n"));
    5433 #endif
    54345415
    54355416    PVMSVGA3DCONTEXT pContext;
     
    54385419
    54395420    AssertReturn(shid < SVGA3D_MAX_SHADER_IDS, VERR_INVALID_PARAMETER);
     5421
     5422    rc = vmsvga3dShaderParse(cbData, pShaderData);
     5423    if (RT_FAILURE(rc))
     5424    {
     5425        AssertRC(rc);
     5426        vmsvga3dShaderLogRel("Failed to parse", type, cbData, pShaderData);
     5427        return rc;
     5428    }
     5429
    54405430    if (type == SVGA3D_SHADERTYPE_VS)
    54415431    {
     
    55115501    {
    55125502        /* Dump the shader code. */
    5513         static int scLogged = 0;
    5514         if (scLogged < 8)
    5515         {
    5516             ++scLogged;
    5517 
    5518             LogRel(("VMSVGA: Failed to create %s shader:\n", (type == SVGA3D_SHADERTYPE_VS) ? "VERTEX" : "PIXEL"));
    5519             const uint32_t cTokensPerLine = 8;
    5520             const uint32_t *paTokens = (uint32_t *)pShaderData;
    5521             const uint32_t cTokens = cbData / sizeof(uint32_t);
    5522             for (uint32_t iToken = 0; iToken < cTokens; ++iToken)
    5523             {
    5524                 if ((iToken % cTokensPerLine) == 0)
    5525                 {
    5526                     if (iToken == 0)
    5527                         LogRel(("0x%08X,", paTokens[iToken]));
    5528                     else
    5529                         LogRel(("\n0x%08X,", paTokens[iToken]));
    5530                 }
    5531                 else
    5532                     LogRel((" 0x%08X,", paTokens[iToken]));
    5533             }
    5534             LogRel(("\n"));
    5535         }
     5503        vmsvga3dShaderLogRel("Failed to create", type, cbData, pShaderData);
    55365504
    55375505        RTMemFree(pShader->pShaderProgram);
  • trunk/src/VBox/Devices/Makefile.kmk

    r83296 r83579  
    295295  VBoxDD_SOURCES        += \
    296296        Graphics/DevVGA-SVGA3d.cpp \
     297        Graphics/DevVGA-SVGA3d-hlp.cpp \
    297298        Graphics/DevVGA-SVGA3d-info.cpp \
    298299        Graphics/DevVGA-SVGA3d-shared.cpp \
Note: See TracChangeset for help on using the changeset viewer.

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