- Timestamp:
- May 6, 2014 5:21:16 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 93582
- Location:
- trunk/src/VBox
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/getprocaddress.py ¶
r37032 r51200 59 59 if (func_name == "Writeback" or 60 60 func_name == "BoundsInfoCR" or 61 func_name == "GetUniformsLocations"): 61 func_name == "GetUniformsLocations" or 62 func_name == "GetAttribsLocations"): 62 63 continue 63 64 if apiutil.Category(func_name) == "Chromium": -
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/pack/packspu.h ¶
r49264 r51200 23 23 # include "cr_dump.h" 24 24 #endif 25 26 extern uint32_t g_u32VBoxHostCaps; 25 27 26 28 typedef struct thread_info_t ThreadInfo; -
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_glsl.c ¶
r50041 r51200 115 115 } 116 116 117 GLint PACKSPU_APIENTRY packspu_GetAttribLocationUnchached( GLuint program, const char * name ) 118 { 119 GET_THREAD(thread); 120 int writeback = 1; 121 GLint return_val = (GLint) 0; 122 if (!CRPACKSPU_IS_WDDM_CRHGSMI() && !(pack_spu.thread[pack_spu.idxThreadInUse].netServer.conn->actual_network)) 123 { 124 crError( "packspu_GetAttribLocation doesn't work when there's no actual network involved!\nTry using the simplequery SPU in your chain!" ); 125 } 126 if (pack_spu.swap) 127 { 128 crPackGetAttribLocationSWAP( program, name, &return_val, &writeback ); 129 } 130 else 131 { 132 crPackGetAttribLocation( program, name, &return_val, &writeback ); 133 } 134 packspuFlush( (void *) thread ); 135 CRPACKSPU_WRITEBACK_WAIT(thread, writeback); 136 if (pack_spu.swap) 137 { 138 return_val = (GLint) SWAP32(return_val); 139 } 140 return return_val; 141 } 142 143 GLint PACKSPU_APIENTRY packspu_GetAttribLocation(GLuint program, const char * name) 144 { 145 if (!(CR_VBOX_CAP_GETATTRIBSLOCATIONS & g_u32VBoxHostCaps)) 146 return packspu_GetAttribLocationUnchached(program, name); 147 148 if (!crStateIsProgramAttribsCached(program)) 149 { 150 GET_THREAD(thread); 151 int writeback = 1; 152 GLsizei maxcbData; 153 GLsizei *pData; 154 GLint mu; 155 156 packspu_GetIntegerv(GL_MAX_VERTEX_ATTRIBS, &mu); 157 maxcbData = 4*32*mu*sizeof(char); 158 159 pData = (GLsizei *) crAlloc(maxcbData+sizeof(GLsizei)); 160 if (!pData) 161 { 162 crWarning("packspu_GetAttribLocation: not enough memory, fallback to single query"); 163 return packspu_GetAttribLocationUnchached(program, name); 164 } 165 166 crPackGetAttribsLocations(program, maxcbData, pData, NULL, &writeback); 167 168 packspuFlush((void *) thread); 169 CRPACKSPU_WRITEBACK_WAIT(thread, writeback); 170 171 crStateGLSLProgramCacheAttribs(program, pData[0], &pData[1]); 172 173 CRASSERT(crStateIsProgramAttribsCached(program)); 174 175 crFree(pData); 176 } 177 178 /*crDebug("packspu_GetAttribLocation(%d, %s)=%i", program, name, crStateGetAttribLocation(program, name));*/ 179 return crStateGetAttribLocation(program, name); 180 } 181 117 182 void PACKSPU_APIENTRY packspu_GetUniformsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData) 118 183 { … … 121 186 (void) cbData; 122 187 (void) pData; 123 crWarning("packspu_GetUniformsLocations shouldn't be called directly"); 188 WARN(("packspu_GetUniformsLocations shouldn't be called directly")); 189 } 190 191 void PACKSPU_APIENTRY packspu_GetAttribsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData) 192 { 193 (void) program; 194 (void) maxcbData; 195 (void) cbData; 196 (void) pData; 197 WARN(("packspu_GetAttribsLocations shouldn't be called directly")); 124 198 } 125 199 -
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_net.c ¶
r50984 r51200 13 13 #include "packspu.h" 14 14 #include "packspu_proto.h" 15 16 uint32_t g_u32VBoxHostCaps = 0; 15 17 16 18 static void … … 244 246 if (server->conn) 245 247 { 246 uint32_t u32HostCaps = crNetHostCapsGet();247 if ( u32HostCaps & CR_VBOX_CAP_CMDBLOCKS)248 g_u32VBoxHostCaps = crNetHostCapsGet(); 249 if (g_u32VBoxHostCaps & CR_VBOX_CAP_CMDBLOCKS) 248 250 crPackCmdBlocksEnable(); 249 251 } -
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_special ¶
r49264 r51200 84 84 DeleteProgram 85 85 GetUniformLocation 86 GetAttribLocation 86 87 GetUniformsLocations 88 GetAttribsLocations 87 89 BindFramebufferEXT 88 90 DeleteObjectARB -
TabularUnified trunk/src/VBox/Additions/common/crOpenGL/windows_getprocaddress.py ¶
r48058 r51200 71 71 if (func_name == "Writeback" or 72 72 func_name == "BoundsInfoCR" or 73 func_name == "GetUniformsLocations"): 73 func_name == "GetUniformsLocations" or 74 func_name == "GetAttribsLocations"): 74 75 continue 75 76 if apiutil.Category(func_name) == "Chromium": -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt ¶
r50095 r51200 8385 8385 chrelopcode 0 8386 8386 8387 # custom 8388 name GetAttribsLocations 8389 return void 8390 param program GLuint 8391 param maxcbData GLsizei 8392 param cbData GLsizei * 8393 param pData GLvoid * 8394 category Chromium 8395 props get 8396 chromium extpack 8397 chrelopcode 1 8398 8387 8399 name WindowShow 8388 8400 return void -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/include/cr_protocol.h ¶
r50973 r51200 38 38 */ 39 39 #define CR_VBOX_CAP_CMDBLOCKS 0x00000004 40 /* GetAttribsLocations support */ 41 #define CR_VBOX_CAP_GETATTRIBSLOCATIONS 0x00000008 42 43 #define CR_VBOX_CAPS_ALL 0x0000000f 40 44 41 45 -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/include/state/cr_glsl.h ¶
r50041 r51200 72 72 GLuint cUniforms; 73 73 #ifdef IN_GUEST 74 CRGLSLAttrib *pAttribs; 75 GLuint cAttribs; 74 76 GLboolean bUniformsSynced; /*uniforms info is updated since last link program call.*/ 77 GLboolean bAttribsSynced; /*attribs info is updated since last link program call.*/ 75 78 #endif 76 79 } CRGLSLProgram; … … 103 106 104 107 DECLEXPORT(GLboolean) STATE_APIENTRY crStateIsProgramUniformsCached(GLuint program); 108 DECLEXPORT(GLboolean) STATE_APIENTRY crStateIsProgramAttribsCached(GLuint program); 105 109 106 110 #ifdef IN_GUEST 107 111 DECLEXPORT(void) STATE_APIENTRY crStateGLSLProgramCacheUniforms(GLuint program, GLsizei cbData, GLvoid *pData); 112 DECLEXPORT(void) STATE_APIENTRY crStateGLSLProgramCacheAttribs(GLuint program, GLsizei cbData, GLvoid *pData); 108 113 #else 109 114 DECLEXPORT(void) STATE_APIENTRY crStateGLSLProgramCacheUniforms(GLuint program, GLsizei maxcbData, GLsizei *cbData, GLvoid *pData); 115 DECLEXPORT(void) STATE_APIENTRY crStateGLSLProgramCacheAttribs(GLuint program, GLsizei maxcbData, GLsizei *cbData, GLvoid *pData); 110 116 #endif 111 117 -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/packer/pack_shaders.c ¶
r50041 r51200 568 568 } 569 569 570 void PACK_APIENTRY crPackGetAttribsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData, int * writeback) 571 { 572 CR_GET_PACKER_CONTEXT(pc); 573 unsigned char *data_ptr; 574 (void) pData; 575 CR_GET_BUFFERED_POINTER(pc, 32); 576 WRITE_DATA(0, GLint, 32); 577 WRITE_DATA(4, GLenum, CR_GETATTRIBSLOCATIONS_EXTEND_OPCODE); 578 WRITE_DATA(8, GLuint, program); 579 WRITE_DATA(12, GLsizei, maxcbData); 580 WRITE_NETWORK_POINTER(16, (void *) cbData); 581 WRITE_NETWORK_POINTER(24, (void *) writeback); 582 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 583 CR_UNLOCK_PACKER_CONTEXT(pc); 584 } 585 570 586 void PACK_APIENTRY crPackGetAttribLocation(GLuint program, const char * name, GLint * return_value, int * writeback) 571 587 { -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/packer/packer_special ¶
r50973 r51200 171 171 LockArraysEXT 172 172 GetUniformsLocations 173 GetAttribsLocations 173 174 UniformMatrix2x3fv 174 175 UniformMatrix3x2fv -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_glsl.c ¶
r50041 r51200 58 58 } 59 59 60 #ifdef IN_GUEST 61 static void crStateFreeProgramAttribsLocationCache(CRGLSLProgram* pProgram) 62 { 63 if (pProgram->pAttribs) crFree(pProgram->pAttribs); 64 65 pProgram->pAttribs = NULL; 66 pProgram->cAttribs = 0; 67 } 68 #endif 69 60 70 static void crStateFreeProgramAttribs(CRGLSLProgram* pProgram) 61 71 { … … 77 87 if (pProgram->currentState.pAttribs) 78 88 crFree(pProgram->currentState.pAttribs); 89 90 #ifdef IN_GUEST 91 crStateFreeProgramAttribsLocationCache(pProgram); 92 93 pProgram->bAttribsSynced = GL_FALSE; 94 #endif 95 79 96 } 80 97 … … 361 378 pProgram->pUniforms = NULL; 362 379 pProgram->cUniforms = 0; 380 363 381 #ifdef IN_GUEST 382 pProgram->pAttribs = NULL; 383 pProgram->cAttribs = 0; 384 364 385 pProgram->bUniformsSynced = GL_FALSE; 386 pProgram->bAttribsSynced = GL_FALSE; 365 387 #endif 366 388 … … 600 622 pProgram->activeState.pAttribs[i].name = crStrdup(pProgram->currentState.pAttribs[i].name); 601 623 } 624 625 #ifdef IN_GUEST 626 crStateFreeProgramAttribsLocationCache(pProgram); 627 #endif 602 628 603 629 crStateFreeProgramUniforms(pProgram); … … 770 796 if (!pProgram) 771 797 { 772 crWarning("Unknown program %d", program);798 WARN(("Unknown program %d", program)); 773 799 return GL_FALSE; 774 800 } … … 777 803 return pProgram->bUniformsSynced; 778 804 #else 779 crWarning("crStateIsProgramUniformsCached called on host side!!"); 805 WARN(("crStateIsProgramUniformsCached called on host side!!")); 806 return GL_FALSE; 807 #endif 808 } 809 810 DECLEXPORT(GLboolean) STATE_APIENTRY crStateIsProgramAttribsCached(GLuint program) 811 { 812 CRGLSLProgram *pProgram = crStateGetProgramObj(program); 813 814 if (!pProgram) 815 { 816 WARN(("Unknown program %d", program)); 817 return GL_FALSE; 818 } 819 820 #ifdef IN_GUEST 821 return pProgram->bAttribsSynced; 822 #else 823 WARN(("crStateIsProgramAttribsCached called on host side!!")); 780 824 return GL_FALSE; 781 825 #endif … … 856 900 857 901 pProgram->bUniformsSynced = GL_TRUE; 902 903 CRASSERT((pCurrent-((char*)pData))==cbRead); 904 CRASSERT(cbRead==cbData); 905 } 906 907 DECLEXPORT(void) STATE_APIENTRY 908 crStateGLSLProgramCacheAttribs(GLuint program, GLsizei cbData, GLvoid *pData) 909 { 910 CRGLSLProgram *pProgram = crStateGetProgramObj(program); 911 char *pCurrent = pData; 912 GLsizei cbRead, cbName; 913 GLuint i; 914 915 if (!pProgram) 916 { 917 WARN(("Unknown program %d", program)); 918 return; 919 } 920 921 if (pProgram->bAttribsSynced) 922 { 923 WARN(("crStateGLSLProgramCacheAttribs: this shouldn't happen!")); 924 crStateFreeProgramAttribsLocationCache(pProgram); 925 } 926 927 if (cbData<sizeof(GLsizei)) 928 { 929 WARN(("crStateGLSLProgramCacheAttribs: data too short")); 930 return; 931 } 932 933 pProgram->cAttribs = ((GLsizei*)pCurrent)[0]; 934 pCurrent += sizeof(GLsizei); 935 cbRead = sizeof(GLsizei); 936 937 crDebug("crStateGLSLProgramCacheAttribs: %i active attribs", pProgram->cAttribs); 938 939 if (pProgram->cAttribs) 940 { 941 pProgram->pAttribs = crAlloc(pProgram->cAttribs*sizeof(CRGLSLAttrib)); 942 if (!pProgram->pAttribs) 943 { 944 WARN(("crStateGLSLProgramCacheAttribs: no memory")); 945 pProgram->cAttribs = 0; 946 return; 947 } 948 } 949 950 for (i=0; i<pProgram->cAttribs; ++i) 951 { 952 cbRead += sizeof(GLuint)+sizeof(GLsizei); 953 if (cbRead>cbData) 954 { 955 crWarning("crStateGLSLProgramCacheAttribs: out of data reading attrib %i", i); 956 return; 957 } 958 pProgram->pAttribs[i].index = ((GLint*)pCurrent)[0]; 959 pCurrent += sizeof(GLint); 960 cbName = ((GLsizei*)pCurrent)[0]; 961 pCurrent += sizeof(GLsizei); 962 963 cbRead += cbName; 964 if (cbRead>cbData) 965 { 966 crWarning("crStateGLSLProgramCacheAttribs: out of data reading attrib's name %i", i); 967 return; 968 } 969 970 pProgram->pAttribs[i].name = crStrndup(pCurrent, cbName); 971 pCurrent += cbName; 972 973 crDebug("crStateGLSLProgramCacheAttribs: attribs[%i]=%d, %s", i, pProgram->pAttribs[i].index, pProgram->pAttribs[i].name); 974 } 975 976 pProgram->bAttribsSynced = GL_TRUE; 858 977 859 978 CRASSERT((pCurrent-((char*)pData))==cbRead); … … 991 1110 CRASSERT((pCurrent-((char*)pData))==cbWritten); 992 1111 } 1112 1113 static GLboolean crStateGLSLProgramCacheOneAttrib(GLuint location, GLsizei cbName, GLchar *pName, 1114 char **pCurrent, GLsizei *pcbWritten, GLsizei maxcbData) 1115 { 1116 *pcbWritten += sizeof(GLint)+sizeof(GLsizei)+cbName; 1117 if (*pcbWritten>maxcbData) 1118 { 1119 WARN(("crStateGLSLProgramCacheOneAttrib: buffer too small")); 1120 crFree(pName); 1121 return GL_FALSE; 1122 } 1123 1124 crDebug("crStateGLSLProgramCacheOneAttrib: attrib[%i]=%s.", location, pName); 1125 1126 ((GLint*)*pCurrent)[0] = location; 1127 *pCurrent += sizeof(GLint); 1128 ((GLsizei*)*pCurrent)[0] = cbName; 1129 *pCurrent += sizeof(GLsizei); 1130 crMemcpy(*pCurrent, pName, cbName); 1131 *pCurrent += cbName; 1132 1133 return GL_TRUE; 1134 } 1135 1136 DECLEXPORT(void) STATE_APIENTRY 1137 crStateGLSLProgramCacheAttribs(GLuint program, GLsizei maxcbData, GLsizei *cbData, GLvoid *pData) 1138 { 1139 CRGLSLProgram *pProgram = crStateGetProgramObj(program); 1140 GLint maxAttribLen, activeAttribs=0, fakeAttribsCount, i, j; 1141 char *pCurrent = pData; 1142 GLsizei cbWritten; 1143 1144 if (!pProgram) 1145 { 1146 crWarning("Unknown program %d", program); 1147 return; 1148 } 1149 1150 diff_api.GetProgramiv(pProgram->hwid, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &maxAttribLen); 1151 diff_api.GetProgramiv(pProgram->hwid, GL_ACTIVE_ATTRIBUTES, &activeAttribs); 1152 1153 *cbData = 0; 1154 1155 cbWritten = sizeof(GLsizei); 1156 if (cbWritten>maxcbData) 1157 { 1158 crWarning("crStateGLSLProgramCacheAttribs: buffer too small"); 1159 return; 1160 } 1161 ((GLsizei*)pCurrent)[0] = activeAttribs; 1162 fakeAttribsCount = activeAttribs; 1163 pCurrent += sizeof(GLsizei); 1164 1165 crDebug("crStateGLSLProgramCacheAttribs: %i active attribs", activeAttribs); 1166 1167 if (activeAttribs>0) 1168 { 1169 /*+8 to make sure our array attribs with higher indices and [] will fit in as well*/ 1170 GLchar *name = (GLchar *) crAlloc(maxAttribLen+8); 1171 GLenum type; 1172 GLint size; 1173 GLsizei cbName; 1174 GLint location; 1175 1176 if (!name) 1177 { 1178 crWarning("crStateGLSLProgramCacheAttribs: no memory"); 1179 return; 1180 } 1181 1182 for (i=0; i<activeAttribs; ++i) 1183 { 1184 diff_api.GetActiveAttrib(pProgram->hwid, i, maxAttribLen, &cbName, &size, &type, name); 1185 location = diff_api.GetAttribLocation(pProgram->hwid, name); 1186 1187 if (!crStateGLSLProgramCacheOneAttrib(location, cbName, name, &pCurrent, &cbWritten, maxcbData)) 1188 return; 1189 1190 /* Only one active attrib variable will be reported for a attrib array by glGetActiveAttrib, 1191 * so we insert fake elements for other array elements. 1192 */ 1193 if (size!=1) 1194 { 1195 char *pIndexStr = crStrchr(name, '['); 1196 GLint firstIndex=1; 1197 fakeAttribsCount += size; 1198 1199 crDebug("crStateGLSLProgramCacheAttribs: expanding array attrib, size=%i", size); 1200 1201 /*For array attribs it's valid to query location of 1st element as both attrib and attrib[0]. 1202 *The name returned by glGetActiveAttrib is driver dependent, 1203 *atleast it's with [0] on win/ati and without [0] on linux/nvidia. 1204 */ 1205 if (!pIndexStr) 1206 { 1207 pIndexStr = name+cbName; 1208 firstIndex=0; 1209 } 1210 else 1211 { 1212 cbName = pIndexStr-name; 1213 if (!crStateGLSLProgramCacheOneAttrib(location, cbName, name, &pCurrent, &cbWritten, maxcbData)) 1214 return; 1215 } 1216 1217 for (j=firstIndex; j<size; ++j) 1218 { 1219 sprintf(pIndexStr, "[%i]", j); 1220 cbName = crStrlen(name); 1221 1222 location = diff_api.GetAttribLocation(pProgram->hwid, name); 1223 1224 if (!crStateGLSLProgramCacheOneAttrib(location, cbName, name, &pCurrent, &cbWritten, maxcbData)) 1225 return; 1226 } 1227 } 1228 } 1229 1230 crFree(name); 1231 } 1232 1233 if (fakeAttribsCount!=activeAttribs) 1234 { 1235 ((GLsizei*)pData)[0] = fakeAttribsCount; 1236 crDebug("FakeCount %i", fakeAttribsCount); 1237 } 1238 1239 *cbData = cbWritten; 1240 1241 CRASSERT((pCurrent-((char*)pData))==cbWritten); 1242 } 993 1243 #endif 994 1244 … … 1024 1274 #else 1025 1275 crWarning("crStateGetUniformLocation called on host side!!"); 1276 return -1; 1277 #endif 1278 } 1279 1280 DECLEXPORT(GLint) STATE_APIENTRY crStateGetAttribLocation(GLuint program, const char * name) 1281 { 1282 #ifdef IN_GUEST 1283 CRGLSLProgram *pProgram = crStateGetProgramObj(program); 1284 GLint result=-1; 1285 GLuint i; 1286 1287 if (!pProgram) 1288 { 1289 WARN(("Unknown program %d", program)); 1290 return -1; 1291 } 1292 1293 if (!pProgram->bAttribsSynced) 1294 { 1295 WARN(("crStateGetAttribLocation called for uncached attribs")); 1296 return -1; 1297 } 1298 1299 for (i=0; i<pProgram->cAttribs; ++i) 1300 { 1301 if (!crStrcmp(name, pProgram->pAttribs[i].name)) 1302 { 1303 result = pProgram->pAttribs[i].index; 1304 break; 1305 } 1306 } 1307 1308 return result; 1309 #else 1310 crWarning("crStateGetAttribLocation called on host side!!"); 1026 1311 return -1; 1027 1312 #endif -
TabularUnified trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_special ¶
r44326 r51200 377 377 ValidateProgram 378 378 BindAttribLocation 379 GetAttribLocation 379 380 GetUniformLocation 380 381 CopyTexImage2D -
TabularUnified trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_config.c ¶
r51147 r51200 226 226 { 227 227 cr_server.u32Caps = crServerVBoxParseNumerics(env, 0); 228 cr_server.u32Caps &= ~(CR_VBOX_CAP_TEX_PRESENT | CR_VBOX_CAP_CMDVBVA | CR_VBOX_CAP_CMDBLOCKS);228 cr_server.u32Caps &= CR_VBOX_CAPS_ALL; 229 229 } 230 230 else … … 233 233 | CR_VBOX_CAP_CMDVBVA 234 234 | CR_VBOX_CAP_CMDBLOCKS 235 #ifdef DEBUG_misha 236 | CR_VBOX_CAP_GETATTRIBSLOCATIONS 237 #endif 235 238 ; 236 239 … … 376 379 { 377 380 cr_server.u32Caps = crServerVBoxParseNumerics(env, 0); 378 cr_server.u32Caps &= ~(CR_VBOX_CAP_TEX_PRESENT | CR_VBOX_CAP_CMDVBVA | CR_VBOX_CAP_CMDBLOCKS);381 cr_server.u32Caps &= CR_VBOX_CAPS_ALL; 379 382 } 380 383 else … … 383 386 | CR_VBOX_CAP_CMDVBVA 384 387 | CR_VBOX_CAP_CMDBLOCKS 388 #ifdef DEBUG_misha 389 | CR_VBOX_CAP_GETATTRIBSLOCATIONS 390 #endif 385 391 ; 386 392 } -
TabularUnified trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_getshaders.c ¶
r50041 r51200 224 224 } 225 225 226 void SERVER_DISPATCH_APIENTRY 227 crServerDispatchGetAttribsLocations(GLuint program, GLsizei maxcbData, GLsizei * cbData, GLvoid * pData) 228 { 229 GLsizei *pLocal; 230 231 (void) cbData; 232 (void) pData; 233 234 pLocal = (GLsizei*) crAlloc(maxcbData+sizeof(GLsizei)); 235 if (!pLocal) 236 { 237 GLsizei zero=0; 238 crServerReturnValue(&zero, sizeof(zero)); 239 } 240 241 /* initial (fallback )value */ 242 *pLocal = 0; 243 crStateGLSLProgramCacheAttribs(program, maxcbData, pLocal, (char*)&pLocal[1]); 244 245 crServerReturnValue(pLocal, (*pLocal)+sizeof(GLsizei)); 246 crFree(pLocal); 247 } 248 226 249 static GLint __GetUniformSize(GLuint program, GLint location) 227 250 { -
TabularUnified trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special ¶
r50041 r51200 221 221 DeleteObjectARB 222 222 GetUniformsLocations 223 GetAttribsLocations 223 224 GetPolygonStipple 224 225 Flush -
TabularUnified trunk/src/VBox/HostServices/SharedOpenGL/unpacker/unpack_shaders.c ¶
r50041 r51200 336 336 cr_unpackDispatch.GetUniformsLocations(program, maxcbData, NULL, NULL); 337 337 } 338 339 void crUnpackExtendGetAttribsLocations(void) 340 { 341 GLuint program = READ_DATA(8, GLuint); 342 GLsizei maxcbData = READ_DATA(12, GLsizei); 343 SET_RETURN_PTR(16); 344 SET_WRITEBACK_PTR(24); 345 cr_unpackDispatch.GetAttribsLocations(program, maxcbData, NULL, NULL); 346 } -
TabularUnified trunk/src/VBox/HostServices/SharedOpenGL/unpacker/unpacker_special ¶
r46757 r51200 169 169 UnlockArraysEXT 170 170 GetUniformsLocations 171 GetAttribsLocations 171 172 GetTexImage 172 173 GetCompressedTexImageARB
Note:
See TracChangeset
for help on using the changeset viewer.