Changeset 50041 in vbox for trunk/src/VBox/HostServices/SharedOpenGL
- Timestamp:
- Jan 9, 2014 4:13:28 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 91522
- Location:
- trunk
- Files:
-
- 1 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/VBox-4.2 merged: 91503-91504,91506-91508,91510,91514-91515,91521
- Property svn:mergeinfo changed
-
trunk/src/VBox
- Property svn:mergeinfo changed
/branches/VBox-4.2/src/VBox merged: 91503-91504,91506-91508,91510,91514-91515,91521
- Property svn:mergeinfo changed
-
trunk/src/VBox/HostServices/SharedOpenGL/LICENSE
- Property svn:mergeinfo changed
/branches/VBox-4.2/src/VBox/HostServices/SharedOpenGL/LICENSE (added) merged: 91503-91504,91506-91508,91510,91514-91515,91521
- Property svn:mergeinfo changed
-
trunk/src/VBox/HostServices/SharedOpenGL/Makefile.kmk
r46343 r50041 175 175 $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D) 176 176 177 $(VBOX_PATH_CROGL_GENFILES)/server_get.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_get.py server_special get_components.py) $(VBOX_CROGL_API_FILES) | $$(dir $$@)177 $(VBOX_PATH_CROGL_GENFILES)/server_get.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_get.py server_special) $(VBOX_CROGL_API_FILES) | $$(dir $$@) 178 178 $(call MSG_GENERATE,python,$@,$<) 179 179 $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D) -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h
r49697 r50041 250 250 *pu8Val2 = tmp; 251 251 } 252 253 #ifdef DEBUG 254 # define CR_GLERR_CHECK(_op) do { \ 255 GLenum status; \ 256 while ((status = cr_server.head_spu->dispatch_table.GetError()) != GL_NO_ERROR) {/*Assert(0);*/} \ 257 _op \ 258 while ((status = cr_server.head_spu->dispatch_table.GetError()) != GL_NO_ERROR) {Assert(0);} \ 259 } while (0) 260 #else 261 # define CR_GLERR_CHECK(_op) do { \ 262 _op \ 263 } while (0) 264 #endif 252 265 253 266 #ifdef DEBUG_misha -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_get.py
r31808 r50041 109 109 ]; 110 110 111 from get_components import *;112 113 111 keys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt") 114 112 for func_name in keys: … … 143 141 print '\tcrServerReturnValue( &(%s[0]), %d*sizeof(%s) );' % (local_argname, max_components[func_name], local_argtype ); 144 142 else: 145 print '\tcrServerReturnValue( &(%s[0]), lookupComponents(pname)*sizeof(%s) );' % (local_argname, local_argtype );143 print '\tcrServerReturnValue( &(%s[0]), crStateHlpComponentsCount(pname)*sizeof(%s) );' % (local_argname, local_argtype ); 146 144 print '}\n' -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c
r47075 r50041 98 98 } 99 99 100 void SERVER_DISPATCH_APIENTRY crServerDispatchGetAttachedObjectsARB( GLhandleARB containerObj, GLsizei maxCount, GLsizei * count,GLhandleARB * obj)101 { 102 GLsizei *pLocal; 103 104 pLocal = (GLsizei*) crAlloc(maxCount*sizeof( GLhandleARB)+sizeof(GLsizei));105 if (!pLocal) 106 { 107 GLsizei zero=0; 108 crServerReturnValue(&zero, sizeof(zero)); 109 } 110 /* initial (fallback )value */ 111 *pLocal = 0; 112 cr_server.head_spu->dispatch_table.GetAttachedObjectsARB(crStateGetProgramHWID(containerObj), maxCount, pLocal, ( GLhandleARB*)&pLocal[1]);100 void SERVER_DISPATCH_APIENTRY crServerDispatchGetAttachedObjectsARB(VBoxGLhandleARB containerObj, GLsizei maxCount, GLsizei * count, VBoxGLhandleARB * obj) 101 { 102 GLsizei *pLocal; 103 104 pLocal = (GLsizei*) crAlloc(maxCount*sizeof(VBoxGLhandleARB)+sizeof(GLsizei)); 105 if (!pLocal) 106 { 107 GLsizei zero=0; 108 crServerReturnValue(&zero, sizeof(zero)); 109 } 110 /* initial (fallback )value */ 111 *pLocal = 0; 112 cr_server.head_spu->dispatch_table.GetAttachedObjectsARB(crStateGetProgramHWID(containerObj), maxCount, pLocal, (VBoxGLhandleARB*)&pLocal[1]); 113 113 114 114 { … … 120 120 } 121 121 122 crServerReturnValue(pLocal, (*pLocal)*sizeof( GLhandleARB)+sizeof(GLsizei));122 crServerReturnValue(pLocal, (*pLocal)*sizeof(VBoxGLhandleARB)+sizeof(GLsizei)); 123 123 crFree(pLocal); 124 124 } … … 126 126 AssertCompile(sizeof(GLsizei) == 4); 127 127 128 void SERVER_DISPATCH_APIENTRY crServerDispatchGetInfoLogARB( GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)128 void SERVER_DISPATCH_APIENTRY crServerDispatchGetInfoLogARB(VBoxGLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog) 129 129 { 130 130 GLsizei *pLocal; … … 305 305 } 306 306 307 void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterfvARB( GLhandleARB obj, GLenum pname, GLfloat * params )307 void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterfvARB( VBoxGLhandleARB obj, GLenum pname, GLfloat * params ) 308 308 { 309 309 GLfloat local_params[1]; … … 324 324 } 325 325 326 void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterivARB( GLhandleARB obj, GLenum pname, GLint * params )326 void SERVER_DISPATCH_APIENTRY crServerDispatchGetObjectParameterivARB( VBoxGLhandleARB obj, GLenum pname, GLint * params ) 327 327 { 328 328 GLint local_params[1]; -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_glsl.c
r48247 r50041 112 112 } 113 113 114 void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteObjectARB( GLhandleARB obj)114 void SERVER_DISPATCH_APIENTRY crServerDispatchDeleteObjectARB(VBoxGLhandleARB obj) 115 115 { 116 116 GLuint hwid = crStateDeleteObjectARB(obj); … … 130 130 } 131 131 132 GLhandleARB SERVER_DISPATCH_APIENTRY crServerDispatchGetHandleARB( GLenum pname )132 VBoxGLhandleARB SERVER_DISPATCH_APIENTRY crServerDispatchGetHandleARB( GLenum pname ) 133 133 { 134 GLhandleARB retval;134 VBoxGLhandleARB retval; 135 135 retval = cr_server.head_spu->dispatch_table.GetHandleARB(pname); 136 136 if (pname==GL_PROGRAM_OBJECT_ARB) -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.c
r45910 r50041 308 308 } 309 309 310 crStatePrioritizeTextures(n, textures, priorities); 311 310 312 for (i = 0; i < n; i++) 311 313 { … … 313 315 } 314 316 315 crStatePrioritizeTextures(n, textures, priorities);316 317 cr_server.head_spu->dispatch_table.PrioritizeTextures(n, newTextures, priorities); 317 318 crFree(newTextures); -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
r49591 r50041 332 332 #endif 333 333 334 //cr_server.bUseMultipleContexts = (crGetenv( "CR_SERVER_ENABLE_MULTIPLE_CONTEXTS" ) != NULL);334 cr_server.bUseMultipleContexts = (crGetenv( "CR_SERVER_ENABLE_MULTIPLE_CONTEXTS" ) != NULL); 335 335 336 336 if (cr_server.bUseMultipleContexts) … … 396 396 crStateDiffAPI( &(cr_server.head_spu->dispatch_table) ); 397 397 398 #ifdef VBOX_WITH_CRSERVER_DUMPER 399 crMemset(&cr_server.Recorder, 0, sizeof (cr_server.Recorder)); 400 crMemset(&cr_server.RecorderBlitter, 0, sizeof (cr_server.RecorderBlitter)); 401 crMemset(&cr_server.DbgPrintDumper, 0, sizeof (cr_server.DbgPrintDumper)); 402 crMemset(&cr_server.HtmlDumper, 0, sizeof (cr_server.HtmlDumper)); 403 cr_server.pDumper = NULL; 404 #endif 405 398 406 crUnpackSetReturnPointer( &(cr_server.return_ptr) ); 399 407 crUnpackSetWritebackPointer( &(cr_server.writeback_ptr) ); … … 432 440 #endif 433 441 434 //cr_server.bUseMultipleContexts = (crGetenv( "CR_SERVER_ENABLE_MULTIPLE_CONTEXTS" ) != NULL);442 cr_server.bUseMultipleContexts = (crGetenv( "CR_SERVER_ENABLE_MULTIPLE_CONTEXTS" ) != NULL); 435 443 436 444 if (cr_server.bUseMultipleContexts) … … 509 517 crServerInitTmpCtxDispatch(); 510 518 crStateDiffAPI( &(cr_server.head_spu->dispatch_table) ); 519 520 #ifdef VBOX_WITH_CRSERVER_DUMPER 521 crMemset(&cr_server.Recorder, 0, sizeof (cr_server.Recorder)); 522 crMemset(&cr_server.RecorderBlitter, 0, sizeof (cr_server.RecorderBlitter)); 523 crMemset(&cr_server.DbgPrintDumper, 0, sizeof (cr_server.DbgPrintDumper)); 524 crMemset(&cr_server.HtmlDumper, 0, sizeof (cr_server.HtmlDumper)); 525 cr_server.pDumper = NULL; 526 #endif 511 527 512 528 /*Check for PBO support*/ -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_misc.c
r49172 r50041 1398 1398 int64_t g_CrDbgDumpPid = 0; 1399 1399 unsigned long g_CrDbgDumpEnabled = 0; 1400 unsigned long g_CrDbgDumpDraw = CR_SERVER_DUMP_F_COMPILE_SHADER 1400 unsigned long g_CrDbgDumpDraw = 0 1401 #if 0 1402 | CR_SERVER_DUMP_F_COMPILE_SHADER 1401 1403 | CR_SERVER_DUMP_F_LINK_PROGRAM 1404 #endif 1405 ; 1406 #if 0 1402 1407 | CR_SERVER_DUMP_F_DRAW_BUFF_ENTER 1403 1408 | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE … … 1410 1415 | CR_SERVER_DUMP_F_DRAWEL 1411 1416 | CR_SERVER_DUMP_F_SHADER_SOURCE 1412 ; //CR_SERVER_DUMP_F_DRAW_BUFF_ENTER | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE; 1417 ; 1418 #endif 1413 1419 unsigned long g_CrDbgDumpDrawFramesSettings = CR_SERVER_DUMP_F_DRAW_BUFF_ENTER 1414 1420 | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE … … 1422 1428 unsigned long g_CrDbgDumpDrawFramesCount = 0; 1423 1429 1430 uint32_t g_CrDbgDumpDrawCount = 0; 1431 uint32_t g_CrDbgDumpDumpOnCount = 10; 1432 uint32_t g_CrDbgDumpDumpOnCountEnabled = 0; 1433 uint32_t g_CrDbgDumpDumpOnCountPerform = 0; 1434 uint32_t g_CrDbgDumpDrawFlags = CR_SERVER_DUMP_F_COMPILE_SHADER 1435 | CR_SERVER_DUMP_F_SHADER_SOURCE 1436 | CR_SERVER_DUMP_F_COMPILE_SHADER 1437 | CR_SERVER_DUMP_F_LINK_PROGRAM 1438 | CR_SERVER_DUMP_F_DRAW_BUFF_ENTER 1439 | CR_SERVER_DUMP_F_DRAW_BUFF_LEAVE 1440 | CR_SERVER_DUMP_F_DRAW_TEX_ENTER 1441 | CR_SERVER_DUMP_F_DRAW_PROGRAM_UNIFORMS_ENTER 1442 | CR_SERVER_DUMP_F_DRAW_PROGRAM_ATTRIBS_ENTER 1443 | CR_SERVER_DUMP_F_DRAW_PROGRAM_ENTER 1444 | CR_SERVER_DUMP_F_DRAW_STATE_ENTER 1445 | CR_SERVER_DUMP_F_SWAPBUFFERS_ENTER 1446 | CR_SERVER_DUMP_F_DRAWEL 1447 | CR_SERVER_DUMP_F_TEXPRESENT; 1448 1424 1449 void crServerDumpCheckTerm() 1425 1450 { … … 1437 1462 CRMuralInfo *pBlitterMural; 1438 1463 1439 if ( CrBltIsInitialized(&cr_server.RecorderBlitter))1440 return VINF_SUCCESS;1441 1442 pBlitterMural = crServerGetDummyMural(cr_server.MainContextInfo.CreateInfo.visualBits);1443 if (!pBlitterMural)1444 {1445 crWarning("crServerGetDummyMural failed");1446 return VERR_GENERAL_FAILURE;1447 } 1448 1449 crServerVBoxBlitterWinInit(&BltWin, pBlitterMural);1450 crServerVBoxBlitterCtxInit(&BltCtx, &cr_server.MainContextInfo); 1451 1452 rc = CrBltInit(&cr_server.RecorderBlitter, &BltCtx, true, true, NULL, &cr_server.TmpCtxDispatch);1453 if (!RT_SUCCESS(rc))1454 {1455 crWarning("CrBltInit failed rc %d", rc);1456 return rc;1457 } 1458 1459 rc = CrBltMuralSetCurrent(&cr_server.RecorderBlitter, &BltWin);1460 if (!RT_SUCCESS(rc))1461 {1462 crWarning("CrBltMuralSetCurrent failed rc %d", rc);1463 return rc;1464 if (!CrBltIsInitialized(&cr_server.RecorderBlitter)) 1465 { 1466 pBlitterMural = crServerGetDummyMural(cr_server.MainContextInfo.CreateInfo.visualBits); 1467 if (!pBlitterMural) 1468 { 1469 crWarning("crServerGetDummyMural failed"); 1470 return VERR_GENERAL_FAILURE; 1471 } 1472 1473 crServerVBoxBlitterWinInit(&BltWin, pBlitterMural); 1474 crServerVBoxBlitterCtxInit(&BltCtx, &cr_server.MainContextInfo); 1475 1476 rc = CrBltInit(&cr_server.RecorderBlitter, &BltCtx, true, true, NULL, &cr_server.TmpCtxDispatch); 1477 if (!RT_SUCCESS(rc)) 1478 { 1479 crWarning("CrBltInit failed rc %d", rc); 1480 return rc; 1481 } 1482 1483 rc = CrBltMuralSetCurrent(&cr_server.RecorderBlitter, &BltWin); 1484 if (!RT_SUCCESS(rc)) 1485 { 1486 crWarning("CrBltMuralSetCurrent failed rc %d", rc); 1487 return rc; 1488 } 1464 1489 } 1465 1490 … … 1468 1493 cr_server.pDumper = &cr_server.DbgPrintDumper.Base; 1469 1494 #else 1470 crDmpHtmlInit(&cr_server.HtmlDumper, "S:\\projects\\virtualbox\\3d\\dumps\\1", "index.html"); 1471 cr_server.pDumper = &cr_server.HtmlDumper.Base; 1495 if (!crDmpHtmlIsInited(&cr_server.HtmlDumper)) 1496 { 1497 static int cCounter = 0; 1498 // crDmpHtmlInit(&cr_server.HtmlDumper, "S:\\projects\\virtualbox\\3d\\dumps\\1", "index.html"); 1499 crDmpHtmlInitF(&cr_server.HtmlDumper, "/Users/oracle-mac/vbox/dump/1", "index%d.html", cCounter); 1500 cr_server.pDumper = &cr_server.HtmlDumper.Base; 1501 ++cCounter; 1502 } 1472 1503 #endif 1473 1504 … … 1630 1661 void crServerDumpFilterOpLeave(unsigned long event, CR_DUMPER *pDumper) 1631 1662 { 1663 if (CR_SERVER_DUMP_F_DRAW_LEAVE_ALL & event) 1664 { 1665 g_CrDbgDumpDumpOnCountPerform = 0; 1666 } 1632 1667 } 1633 1668 1634 1669 bool crServerDumpFilterOpEnter(unsigned long event, CR_DUMPER *pDumper) 1635 1670 { 1671 if ((CR_SERVER_DUMP_F_SWAPBUFFERS_ENTER & event) 1672 || (CR_SERVER_DUMP_F_TEXPRESENT & event)) 1673 { 1674 if (g_CrDbgDumpDumpOnCountEnabled == 1) 1675 g_CrDbgDumpDumpOnCountEnabled = 2; 1676 else if (g_CrDbgDumpDumpOnCountEnabled) 1677 { 1678 g_CrDbgDumpDumpOnCountEnabled = 0; 1679 if (cr_server.pDumper == &cr_server.HtmlDumper.Base) 1680 { 1681 crDmpHtmlTerm(&cr_server.HtmlDumper); 1682 cr_server.pDumper = NULL; 1683 } 1684 } 1685 1686 g_CrDbgDumpDrawCount = 0; 1687 } 1688 else if (CR_SERVER_DUMP_F_DRAW_ENTER_ALL & event) 1689 { 1690 if (g_CrDbgDumpDumpOnCountEnabled == 2) 1691 { 1692 if (g_CrDbgDumpDumpOnCount == g_CrDbgDumpDrawCount) 1693 { 1694 g_CrDbgDumpDumpOnCountPerform = 1; 1695 } 1696 ++g_CrDbgDumpDrawCount; 1697 } 1698 } 1699 if (g_CrDbgDumpDumpOnCountPerform) 1700 { 1701 if (g_CrDbgDumpDrawFlags & event) 1702 return true; 1703 } 1636 1704 return CR_SERVER_DUMP_DEFAULT_FILTER_OP(event); 1637 1705 } … … 1639 1707 bool crServerDumpFilterDmp(unsigned long event, CR_DUMPER *pDumper) 1640 1708 { 1709 if (g_CrDbgDumpDumpOnCountPerform) 1710 { 1711 if (g_CrDbgDumpDrawFlags & event) 1712 return true; 1713 } 1641 1714 return CR_SERVER_DUMP_DEFAULT_FILTER_DMP(event); 1642 1715 } … … 1673 1746 } 1674 1747 #endif 1675 /* */ 1748 1749 GLvoid crServerSpriteCoordReplEnable(GLboolean fEnable) 1750 { 1751 CRContext *g = crStateGetCurrent(); 1752 CRTextureState *t = &(g->texture); 1753 GLuint curTextureUnit = t->curTextureUnit; 1754 GLuint curTextureUnitRestore = curTextureUnit; 1755 GLuint i; 1756 1757 for (i = 0; i < g->limits.maxTextureUnits; ++i) 1758 { 1759 if (g->point.coordReplacement[i]) 1760 { 1761 if (i != curTextureUnit) 1762 { 1763 curTextureUnit = i; 1764 cr_server.head_spu->dispatch_table.ActiveTextureARB( i + GL_TEXTURE0_ARB ); 1765 } 1766 1767 cr_server.head_spu->dispatch_table.TexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, (GLint)fEnable); 1768 } 1769 } 1770 1771 if (curTextureUnit != curTextureUnitRestore) 1772 { 1773 cr_server.head_spu->dispatch_table.ActiveTextureARB( curTextureUnitRestore + GL_TEXTURE0_ARB ); 1774 } 1775 } 1776 1777 GLvoid SERVER_DISPATCH_APIENTRY crServerDispatchDrawArrays(GLenum mode, GLint first, GLsizei count) 1778 { 1779 #ifdef DEBUG 1780 GLenum status = cr_server.head_spu->dispatch_table.CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER_EXT); 1781 Assert(GL_FRAMEBUFFER_COMPLETE == status); 1782 #endif 1783 if (mode == GL_POINTS) 1784 crServerSpriteCoordReplEnable(GL_TRUE); 1785 CR_SERVER_DUMP_DRAW_ENTER(); 1786 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.DrawArrays(mode, first, count);); 1787 CR_SERVER_DUMP_DRAW_LEAVE(); 1788 if (mode == GL_POINTS) 1789 crServerSpriteCoordReplEnable(GL_FALSE); 1790 } 1791 1792 GLvoid SERVER_DISPATCH_APIENTRY crServerDispatchDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices) 1793 { 1794 #ifdef DEBUG 1795 GLenum status = cr_server.head_spu->dispatch_table.CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER_EXT); 1796 Assert(GL_FRAMEBUFFER_COMPLETE == status); 1797 #endif 1798 if (mode == GL_POINTS) 1799 crServerSpriteCoordReplEnable(GL_TRUE); 1800 CR_SERVER_DUMP_DRAW_ENTER(); 1801 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.DrawElements(mode, count, type, indices);); 1802 CR_SERVER_DUMP_DRAW_LEAVE(); 1803 if (mode == GL_POINTS) 1804 crServerSpriteCoordReplEnable(GL_FALSE); 1805 } 1806 1807 void SERVER_DISPATCH_APIENTRY crServerDispatchEnd( void ) 1808 { 1809 CRContext *g = crStateGetCurrent(); 1810 GLenum mode = g->current.mode; 1811 1812 crStateEnd(); 1813 cr_server.head_spu->dispatch_table.End(); 1814 1815 CR_SERVER_DUMP_DRAW_LEAVE(); 1816 1817 if (mode == GL_POINTS) 1818 crServerSpriteCoordReplEnable(GL_FALSE); 1819 } 1820 1821 #ifdef DEBUG 1822 extern GLuint g_VBoxTstNumVa; 1823 #endif 1824 1825 void SERVER_DISPATCH_APIENTRY crServerDispatchBegin(GLenum mode) 1826 { 1827 #ifdef DEBUG 1828 CRContext *ctx = crStateGetCurrent(); 1829 SPUDispatchTable *gl = &cr_server.head_spu->dispatch_table; 1830 1831 g_VBoxTstNumVa = 0; 1832 1833 if (ctx->program.vpProgramBinding) 1834 { 1835 AssertRelease(ctx->program.currentVertexProgram); 1836 1837 if (ctx->program.currentVertexProgram->isARBprogram) 1838 { 1839 GLint pid=-1; 1840 gl->GetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_BINDING_ARB, &pid); 1841 1842 if (pid != ctx->program.currentVertexProgram->id) 1843 { 1844 crWarning("pid(%d) != ctx->program.currentVertexProgram->id(%d)", pid, ctx->program.currentVertexProgram->id); 1845 } 1846 AssertRelease(pid == ctx->program.currentVertexProgram->id); 1847 } 1848 else 1849 { 1850 GLint pid=-1; 1851 1852 gl->GetIntegerv(GL_VERTEX_PROGRAM_BINDING_NV, &pid); 1853 if (pid != ctx->program.currentVertexProgram->id) 1854 { 1855 crWarning("pid(%d) != ctx->program.currentVertexProgram->id(%d)", pid, ctx->program.currentVertexProgram->id); 1856 } 1857 AssertRelease(pid == ctx->program.currentVertexProgram->id); 1858 } 1859 } 1860 else if (ctx->glsl.activeProgram) 1861 { 1862 GLint pid=-1; 1863 1864 gl->GetIntegerv(GL_CURRENT_PROGRAM, &pid); 1865 crDebug("pid %i, state: id %i, hwid %i", pid, ctx->glsl.activeProgram->id, ctx->glsl.activeProgram->hwid); 1866 if (pid != ctx->glsl.activeProgram->hwid) 1867 { 1868 crWarning("pid(%d) != ctx->glsl.activeProgram->hwid(%d)", pid, ctx->glsl.activeProgram->hwid); 1869 } 1870 AssertRelease(pid == ctx->glsl.activeProgram->hwid); 1871 } 1872 #endif 1873 1874 if (mode == GL_POINTS) 1875 crServerSpriteCoordReplEnable(GL_TRUE); 1876 1877 CR_SERVER_DUMP_DRAW_ENTER(); 1878 1879 crStateBegin(mode); 1880 cr_server.head_spu->dispatch_table.Begin(mode); 1881 } 1882 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special
r48247 r50041 254 254 GetProgramiv 255 255 GetShaderiv 256 Begin 257 DrawArrays 258 DrawElements 259 End 260 TexEnvf 261 TexEnvfv 262 TexEnvi 263 TexEnviv 264 GetTexEnvfv 265 GetTexEnviv -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_texture.c
r29857 r50041 137 137 (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels), 138 138 (target, level, internalFormat, width, height, depth, border, format, type, realptr), pixels) 139 140 141 void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvf( GLenum target, GLenum pname, GLfloat param ) 142 { 143 crStateTexEnvf( target, pname, param ); 144 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 145 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvf( target, pname, param );); 146 } 147 148 void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvfv( GLenum target, GLenum pname, const GLfloat * params ) 149 { 150 crStateTexEnvfv( target, pname, params ); 151 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 152 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvfv( target, pname, params );); 153 } 154 155 void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnvi( GLenum target, GLenum pname, GLint param ) 156 { 157 crStateTexEnvi( target, pname, param ); 158 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 159 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnvi( target, pname, param );); 160 } 161 162 void SERVER_DISPATCH_APIENTRY crServerDispatchTexEnviv( GLenum target, GLenum pname, const GLint * params ) 163 { 164 crStateTexEnviv( target, pname, params ); 165 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 166 CR_GLERR_CHECK(cr_server.head_spu->dispatch_table.TexEnviv( target, pname, params );); 167 } 168 169 void SERVER_DISPATCH_APIENTRY crServerDispatchGetTexEnvfv( GLenum target, GLenum pname, GLfloat * params ) 170 { 171 GLfloat local_params[4]; 172 (void) params; 173 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 174 cr_server.head_spu->dispatch_table.GetTexEnvfv( target, pname, local_params ); 175 else 176 crStateGetTexEnvfv( target, pname, local_params ); 177 178 crServerReturnValue( &(local_params[0]), crStateHlpComponentsCount(pname)*sizeof (GLfloat) ); 179 } 180 181 void SERVER_DISPATCH_APIENTRY crServerDispatchGetTexEnviv( GLenum target, GLenum pname, GLint * params ) 182 { 183 GLint local_params[4]; 184 (void) params; 185 if (GL_POINT_SPRITE != target && pname != GL_COORD_REPLACE) 186 cr_server.head_spu->dispatch_table.GetTexEnviv( target, pname, local_params ); 187 else 188 crStateGetTexEnviv( target, pname, local_params ); 189 190 crServerReturnValue( &(local_params[0]), crStateHlpComponentsCount(pname)*sizeof (GLint) ); 191 } -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c
r48726 r50041 1816 1816 FILLIN( "GetString", renderspuGetString ); 1817 1817 FILLIN( "VBoxPresentComposition", renderspuVBoxPresentComposition ); 1818 1819 1818 return i; 1820 1819 } -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.h
r48291 r50041 210 210 #endif 211 211 212 #ifdef RT_OS_DARWIN 213 typedef void (*PFNDELETE_OBJECT)(GLhandleARB obj); 214 typedef void (*PFNGET_ATTACHED_OBJECTS)( GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj ); 215 typedef GLhandleARB (*PFNGET_HANDLE)(GLenum pname); 216 typedef void (*PFNGET_INFO_LOG)( GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog ); 217 typedef void (*PFNGET_OBJECT_PARAMETERFV)( GLhandleARB obj, GLenum pname, GLfloat * params ); 218 typedef void (*PFNGET_OBJECT_PARAMETERIV)( GLhandleARB obj, GLenum pname, GLint * params ); 219 #endif 220 212 221 /** 213 222 * Renderspu state info … … 311 320 #ifdef RT_OS_DARWIN 312 321 # ifdef VBOX_WITH_COCOA_QT 322 PFNDELETE_OBJECT pfnDeleteObject; 323 PFNGET_ATTACHED_OBJECTS pfnGetAttachedObjects; 324 PFNGET_HANDLE pfnGetHandle; 325 PFNGET_INFO_LOG pfnGetInfoLog; 326 PFNGET_OBJECT_PARAMETERFV pfnGetObjectParameterfv; 327 PFNGET_OBJECT_PARAMETERIV pfnGetObjectParameteriv; 328 313 329 CR_GLSL_CACHE GlobalShaders; 314 330 # else … … 391 407 extern void renderspu_SystemReparentWindow(WindowInfo *window); 392 408 extern void renderspu_SystemVBoxPresentComposition( WindowInfo *window, struct VBOXVR_SCR_COMPOSITOR_ENTRY *pChangedEntry ); 409 uint32_t renderspu_SystemPostprocessFunctions(SPUNamedFunctionTable *aFunctions, uint32_t cFunctions, uint32_t cTable); 393 410 extern void renderspu_GCWindow(void); 394 411 extern int renderspuCreateFunctions( SPUNamedFunctionTable table[] ); -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa.c
r48291 r50041 22 22 #include <iprt/path.h> 23 23 24 #include <cr_string.h> 25 #include <cr_mem.h> 26 24 27 GLboolean renderspu_SystemInitVisual(VisualInfo *pVisInfo) 25 28 { … … 197 200 CrGlslTerm(&render_spu.GlobalShaders); 198 201 return VINF_SUCCESS; 202 } 203 204 static SPUNamedFunctionTable * renderspuFindEntry(SPUNamedFunctionTable *aFunctions, const char *pcszName) 205 { 206 SPUNamedFunctionTable *pCur; 207 208 for (pCur = aFunctions ; pCur->name != NULL ; pCur++) 209 { 210 if (!crStrcmp( pcszName, pCur->name ) ) 211 { 212 return pCur; 213 } 214 } 215 216 AssertFailed(); 217 218 return NULL; 199 219 } 200 220 … … 290 310 } 291 311 } 312 313 AssertCompile(sizeof (GLhandleARB) == sizeof (void*)); 314 315 static VBoxGLhandleARB crHndlSearchVBox(GLhandleARB hNative) 316 { 317 CRASSERT(!(((uintptr_t)hNative) >> 32)); 318 return (VBoxGLhandleARB)((uintptr_t)hNative); 319 } 320 321 static GLhandleARB crHndlSearchNative(VBoxGLhandleARB hVBox) 322 { 323 return (GLhandleARB)((uintptr_t)hVBox); 324 } 325 326 static VBoxGLhandleARB crHndlAcquireVBox(GLhandleARB hNative) 327 { 328 CRASSERT(!(((uintptr_t)hNative) >> 32)); 329 return (VBoxGLhandleARB)((uintptr_t)hNative); 330 } 331 332 static GLhandleARB crHndlReleaseVBox(VBoxGLhandleARB hVBox) 333 { 334 return (GLhandleARB)((uintptr_t)hVBox); 335 } 336 337 static void SPU_APIENTRY renderspu_SystemDeleteObjectARB(VBoxGLhandleARB obj) 338 { 339 GLhandleARB hNative = crHndlReleaseVBox(obj); 340 if (!hNative) 341 { 342 crWarning("no native for %d", obj); 343 return; 344 } 345 346 render_spu.pfnDeleteObject(hNative); 347 } 348 349 static void SPU_APIENTRY renderspu_SystemGetAttachedObjectsARB( VBoxGLhandleARB containerObj, GLsizei maxCount, GLsizei * pCount, VBoxGLhandleARB * obj ) 350 { 351 GLhandleARB *paAttachments; 352 GLhandleARB hNative = crHndlSearchNative(containerObj); 353 GLsizei count, i; 354 355 if (pCount) 356 *pCount = 0; 357 358 if (!hNative) 359 { 360 crWarning("no native for %d", obj); 361 return; 362 } 363 364 paAttachments = crCalloc(maxCount * sizeof (*paAttachments)); 365 if (!paAttachments) 366 { 367 crWarning("crCalloc failed"); 368 return; 369 } 370 371 render_spu.pfnGetAttachedObjects(hNative, maxCount, &count, paAttachments); 372 if (pCount) 373 *pCount = count; 374 if (count > maxCount) 375 { 376 crWarning("count too big"); 377 count = maxCount; 378 } 379 380 for (i = 0; i < count; ++i) 381 { 382 obj[i] = crHndlSearchVBox(paAttachments[i]); 383 CRASSERT(obj[i]); 384 } 385 386 crFree(paAttachments); 387 } 388 389 static VBoxGLhandleARB SPU_APIENTRY renderspu_SystemGetHandleARB(GLenum pname) 390 { 391 GLhandleARB hNative = render_spu.pfnGetHandle(pname); 392 VBoxGLhandleARB hVBox; 393 if (!hNative) 394 { 395 crWarning("pfnGetHandle failed"); 396 return 0; 397 } 398 hVBox = crHndlAcquireVBox(hNative); 399 CRASSERT(hVBox); 400 return hVBox; 401 } 402 403 static void SPU_APIENTRY renderspu_SystemGetInfoLogARB( VBoxGLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog ) 404 { 405 GLhandleARB hNative = crHndlSearchNative(obj); 406 if (!hNative) 407 { 408 crWarning("invalid handle!"); 409 return; 410 } 411 412 render_spu.pfnGetInfoLog(hNative, maxLength, length, infoLog); 413 } 414 415 static void SPU_APIENTRY renderspu_SystemGetObjectParameterfvARB( VBoxGLhandleARB obj, GLenum pname, GLfloat * params ) 416 { 417 GLhandleARB hNative = crHndlSearchNative(obj); 418 if (!hNative) 419 { 420 crWarning("invalid handle!"); 421 return; 422 } 423 424 render_spu.pfnGetObjectParameterfv(hNative, pname, params); 425 } 426 427 static void SPU_APIENTRY renderspu_SystemGetObjectParameterivARB( VBoxGLhandleARB obj, GLenum pname, GLint * params ) 428 { 429 GLhandleARB hNative = crHndlSearchNative(obj); 430 if (!hNative) 431 { 432 crWarning("invalid handle!"); 433 return; 434 } 435 436 render_spu.pfnGetObjectParameteriv(hNative, pname, params); 437 } 438 439 uint32_t renderspu_SystemPostprocessFunctions(SPUNamedFunctionTable *aFunctions, uint32_t cFunctions, uint32_t cTable) 440 { 441 SPUNamedFunctionTable * pEntry; 442 443 pEntry = renderspuFindEntry(aFunctions, "DeleteObjectARB"); 444 if (pEntry) 445 { 446 render_spu.pfnDeleteObject = (PFNDELETE_OBJECT)pEntry->fn; 447 pEntry->fn = (SPUGenericFunction)renderspu_SystemDeleteObjectARB; 448 } 449 450 pEntry = renderspuFindEntry(aFunctions, "GetAttachedObjectsARB"); 451 if (pEntry) 452 { 453 render_spu.pfnGetAttachedObjects = (PFNGET_ATTACHED_OBJECTS)pEntry->fn; 454 pEntry->fn = (SPUGenericFunction)renderspu_SystemGetAttachedObjectsARB; 455 } 456 457 pEntry = renderspuFindEntry(aFunctions, "GetHandleARB"); 458 if (pEntry) 459 { 460 render_spu.pfnGetHandle = (PFNGET_HANDLE)pEntry->fn; 461 pEntry->fn = (SPUGenericFunction)renderspu_SystemGetHandleARB; 462 } 463 464 pEntry = renderspuFindEntry(aFunctions, "GetInfoLogARB"); 465 if (pEntry) 466 { 467 render_spu.pfnGetInfoLog = (PFNGET_INFO_LOG)pEntry->fn; 468 pEntry->fn = (SPUGenericFunction)renderspu_SystemGetInfoLogARB; 469 } 470 471 pEntry = renderspuFindEntry(aFunctions, "GetObjectParameterfvARB"); 472 if (pEntry) 473 { 474 render_spu.pfnGetObjectParameterfv = (PFNGET_OBJECT_PARAMETERFV)pEntry->fn; 475 pEntry->fn = (SPUGenericFunction)renderspu_SystemGetObjectParameterfvARB; 476 } 477 478 pEntry = renderspuFindEntry(aFunctions, "GetObjectParameterivARB"); 479 if (pEntry) 480 { 481 render_spu.pfnGetObjectParameteriv = (PFNGET_OBJECT_PARAMETERIV)pEntry->fn; 482 pEntry->fn = (SPUGenericFunction)renderspu_SystemGetObjectParameterivARB; 483 } 484 485 return cFunctions; 486 } -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_glx.c
r48487 r50041 2080 2080 2081 2081 } 2082 2083 uint32_t renderspu_SystemPostprocessFunctions(SPUNamedFunctionTable *aFunctions, uint32_t cFunctions, uint32_t cTable) 2084 { 2085 return cFunctions; 2086 } -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_init.c
r48291 r50041 374 374 render_spu.gather_conns = NULL; 375 375 376 numFuncs = renderspu_SystemPostprocessFunctions(_cr_render_table, numFuncs, RT_ELEMENTS(_cr_render_table)); 377 376 378 crDebug("Render SPU: ---------- End of Init -------------"); 377 379 -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_wgl.c
r49011 r50041 1688 1688 1689 1689 } 1690 1691 uint32_t renderspu_SystemPostprocessFunctions(SPUNamedFunctionTable *aFunctions, uint32_t cFunctions, uint32_t cTable) 1692 { 1693 return cFunctions; 1694 } -
trunk/src/VBox/HostServices/SharedOpenGL/unpacker/unpack_shaders.c
r44529 r50041 40 40 GLint hasNonLocalLen = READ_DATA(16, GLsizei); 41 41 GLint *pLocalLength = DATA_POINTER(20, GLint); 42 c onst char **ppStrings = NULL;43 GLsizei i ;42 char **ppStrings = NULL; 43 GLsizei i, j, jUpTo; 44 44 int pos=20+count*sizeof(*pLocalLength); 45 45 … … 61 61 pLocalLength[i] -= 1; 62 62 } 63 64 Assert(pLocalLength[i] > 0); 65 jUpTo = i == count -1 ? pLocalLength[i] - 1 : pLocalLength[i]; 66 for (j = 0; j < jUpTo; ++j) 67 { 68 char *pString = ppStrings[i]; 69 70 if (pString[j] == '\0') 71 { 72 Assert(j == jUpTo - 1); 73 pString[j] = '\n'; 74 } 75 } 63 76 } 64 77 65 cr_unpackDispatch.ShaderSource(shader, count, ppStrings, length ? length : pLocalLength); 78 // cr_unpackDispatch.ShaderSource(shader, count, ppStrings, length ? length : pLocalLength); 79 cr_unpackDispatch.ShaderSource(shader, 1, ppStrings, 0); 80 66 81 crFree(ppStrings); 67 82 } … … 250 265 void crUnpackExtendGetAttachedObjectsARB(void) 251 266 { 252 GLhandleARB containerObj = READ_DATA(8,GLhandleARB);267 VBoxGLhandleARB containerObj = READ_DATA(8, VBoxGLhandleARB); 253 268 GLsizei maxCount = READ_DATA(12, GLsizei); 254 269 SET_RETURN_PTR(16); … … 259 274 void crUnpackExtendGetInfoLogARB(void) 260 275 { 261 GLhandleARB obj = READ_DATA(8,GLhandleARB);276 VBoxGLhandleARB obj = READ_DATA(8, VBoxGLhandleARB); 262 277 GLsizei maxLength = READ_DATA(12, GLsizei); 263 278 SET_RETURN_PTR(16);
Note:
See TracChangeset
for help on using the changeset viewer.