Changeset 44332 in vbox for trunk/src/VBox/GuestHost/OpenGL/state_tracker
- Timestamp:
- Jan 23, 2013 9:16:23 AM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 83279
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_stencil.c
r44326 r44332 342 342 } 343 343 344 #ifdef CRSTATE_DEBUG_STENCIL_ERR 345 #define CRSTATE_CLEARERR() do { \ 346 while (diff_api.GetError() != GL_NO_ERROR) {} \ 347 } while (0) 348 349 #define CRSTATE_CHECKGLERR(_op) do {\ 350 GLenum _glErr; \ 351 CRSTATE_CLEARERR(); \ 352 _op; \ 353 while ((_glErr = diff_api.GetError()) != GL_NO_ERROR) { Assert(0);} \ 354 }while (0) 355 #else 356 #define CRSTATE_CHECKGLERR(_op) do { _op; } while (0) 357 #endif 358 344 359 #define CR_STATE_STENCIL_FUNC_MATCH(_s1, _i1, _s2, _i2) (\ 345 360 (_s1)->buffers[(_i1)].func == (_s2)->buffers[(_i2)].func && \ … … 627 642 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, bitID)) 628 643 { 629 if ( CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK))644 if (!CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK)) 630 645 { 631 646 if (activeFace == GL_FRONT) … … 635 650 } 636 651 637 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].func,638 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].ref,639 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].mask);640 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK);652 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].func, 653 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].ref, 654 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].mask); 655 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK); 641 656 } 642 657 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, nbitID); … … 858 873 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, bitID)) 859 874 { 860 if ( CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK))875 if (!CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK)) 861 876 { 862 877 if (activeFace == GL_FRONT) … … 866 881 } 867 882 868 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].fail,869 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].passDepthFail,870 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].passDepthPass);871 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK);883 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].fail, 884 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthFail, 885 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthPass); 886 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK); 872 887 } 873 888 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, nbitID); … … 928 943 if (from->stencilTest != to->stencilTest) 929 944 { 930 able[to->stencilTest](GL_STENCIL_TEST);945 CRSTATE_CHECKGLERR(able[to->stencilTest](GL_STENCIL_TEST)); 931 946 FILLDIRTY(b->enable); 932 947 FILLDIRTY(b->dirty); … … 941 956 if (from->stencilTwoSideEXT != to->stencilTwoSideEXT) 942 957 { 943 able[to->stencilTwoSideEXT](GL_STENCIL_TEST_TWO_SIDE_EXT);958 CRSTATE_CHECKGLERR(able[to->stencilTwoSideEXT](GL_STENCIL_TEST_TWO_SIDE_EXT)); 944 959 FILLDIRTY(b->enableTwoSideEXT); 945 960 FILLDIRTY(b->dirty); … … 951 966 if (from->clearValue != to->clearValue) 952 967 { 953 diff_api.ClearStencil (to->clearValue);968 CRSTATE_CHECKGLERR(diff_api.ClearStencil (to->clearValue)); 954 969 FILLDIRTY(b->clearValue); 955 970 FILLDIRTY(b->dirty); … … 992 1007 } 993 1008 994 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1009 CRSTATE_CHECKGLERR(diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 995 1010 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 996 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1011 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 997 1012 998 1013 frontIsSet = GL_TRUE; … … 1007 1022 } 1008 1023 1009 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1024 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1010 1025 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1011 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1026 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 1012 1027 frontIsSet = GL_TRUE; 1013 1028 } … … 1020 1035 } 1021 1036 1022 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func,1037 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1023 1038 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1024 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask) ;1039 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask)); 1025 1040 backIsSet = GL_TRUE; 1026 1041 } … … 1046 1061 } 1047 1062 1048 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1063 CRSTATE_CHECKGLERR(diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1049 1064 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1050 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1065 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 1051 1066 1052 1067 frontIsSet = GL_TRUE; … … 1064 1079 } 1065 1080 1066 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1081 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1067 1082 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1068 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1083 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 1069 1084 frontIsSet = GL_TRUE; 1070 1085 } … … 1080 1095 } 1081 1096 1082 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func,1097 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1083 1098 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1084 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask) ;1099 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask)); 1085 1100 backIsSet = GL_TRUE; 1086 1101 } … … 1107 1122 } 1108 1123 1109 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1124 CRSTATE_CHECKGLERR(diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1110 1125 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1111 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1126 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 1112 1127 1113 1128 frontIsSet = GL_TRUE; … … 1125 1140 } 1126 1141 1127 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func,1142 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1128 1143 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1129 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask) ;1144 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask)); 1130 1145 frontIsSet = GL_TRUE; 1131 1146 } … … 1141 1156 } 1142 1157 1143 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func,1158 CRSTATE_CHECKGLERR(diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1144 1159 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1145 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask) ;1160 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask)); 1146 1161 backIsSet = GL_TRUE; 1147 1162 } … … 1155 1170 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, bitID)) 1156 1171 { 1157 if ( CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK))1172 if (!CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK)) 1158 1173 { 1159 1174 if (activeFace == GL_FRONT) 1160 1175 { 1161 diff_api.ActiveStencilFaceEXT(GL_BACK);1176 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_BACK)); 1162 1177 activeFace = GL_BACK; 1163 1178 } 1164 1179 1165 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func,1166 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].ref,1167 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].mask);1180 CRSTATE_CHECKGLERR(diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].func, 1181 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].ref, 1182 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].mask)); 1168 1183 1169 1184 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func); … … 1208 1223 if (activeFace == GL_BACK) 1209 1224 { 1210 diff_api.ActiveStencilFaceEXT(GL_FRONT);1225 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1211 1226 activeFace = GL_FRONT; 1212 1227 } 1213 1228 1214 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1229 CRSTATE_CHECKGLERR(diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1215 1230 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1216 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1231 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1217 1232 1218 1233 frontIsSet = GL_TRUE; … … 1223 1238 if (activeFace == GL_BACK) 1224 1239 { 1225 diff_api.ActiveStencilFaceEXT(GL_FRONT);1240 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1226 1241 activeFace = GL_FRONT; 1227 1242 } 1228 1243 1229 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1244 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1230 1245 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1231 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1246 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1232 1247 frontIsSet = GL_TRUE; 1233 1248 } … … 1236 1251 if (activeFace == GL_BACK) 1237 1252 { 1238 diff_api.ActiveStencilFaceEXT(GL_FRONT);1253 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1239 1254 activeFace = GL_FRONT; 1240 1255 } 1241 1256 1242 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail,1257 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1243 1258 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1244 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass) ;1259 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass)); 1245 1260 backIsSet = GL_TRUE; 1246 1261 } … … 1262 1277 if (activeFace == GL_BACK) 1263 1278 { 1264 diff_api.ActiveStencilFaceEXT(GL_FRONT);1265 activeFace = GL_FRONT; 1266 } 1267 1268 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1279 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1280 activeFace = GL_FRONT; 1281 } 1282 1283 CRSTATE_CHECKGLERR(diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1269 1284 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1270 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1285 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1271 1286 1272 1287 frontIsSet = GL_TRUE; … … 1280 1295 if (activeFace == GL_BACK) 1281 1296 { 1282 diff_api.ActiveStencilFaceEXT(GL_FRONT);1283 activeFace = GL_FRONT; 1284 } 1285 1286 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1297 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1298 activeFace = GL_FRONT; 1299 } 1300 1301 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1287 1302 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1288 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1303 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1289 1304 frontIsSet = GL_TRUE; 1290 1305 } … … 1296 1311 if (activeFace == GL_BACK) 1297 1312 { 1298 diff_api.ActiveStencilFaceEXT(GL_FRONT);1299 activeFace = GL_FRONT; 1300 } 1301 1302 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail,1313 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1314 activeFace = GL_FRONT; 1315 } 1316 1317 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1303 1318 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1304 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass) ;1319 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass)); 1305 1320 backIsSet = GL_TRUE; 1306 1321 } … … 1324 1339 if (activeFace == GL_BACK) 1325 1340 { 1326 diff_api.ActiveStencilFaceEXT(GL_FRONT);1327 activeFace = GL_FRONT; 1328 } 1329 1330 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1341 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1342 activeFace = GL_FRONT; 1343 } 1344 1345 CRSTATE_CHECKGLERR(diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1331 1346 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1332 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1347 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1333 1348 1334 1349 frontIsSet = GL_TRUE; … … 1342 1357 if (activeFace == GL_BACK) 1343 1358 { 1344 diff_api.ActiveStencilFaceEXT(GL_FRONT);1345 activeFace = GL_FRONT; 1346 } 1347 1348 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail,1359 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1360 activeFace = GL_FRONT; 1361 } 1362 1363 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1349 1364 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1350 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass) ;1365 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass)); 1351 1366 frontIsSet = GL_TRUE; 1352 1367 } … … 1358 1373 if (activeFace == GL_BACK) 1359 1374 { 1360 diff_api.ActiveStencilFaceEXT(GL_FRONT);1361 activeFace = GL_FRONT; 1362 } 1363 1364 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail,1375 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_FRONT)); 1376 activeFace = GL_FRONT; 1377 } 1378 1379 CRSTATE_CHECKGLERR(diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1365 1380 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1366 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass) ;1381 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass)); 1367 1382 backIsSet = GL_TRUE; 1368 1383 } … … 1377 1392 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, bitID)) 1378 1393 { 1379 if ( CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK))1394 if (!CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK)) 1380 1395 { 1381 1396 if (activeFace == GL_FRONT) 1382 1397 { 1383 diff_api.ActiveStencilFaceEXT(GL_BACK);1398 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(GL_BACK)); 1384 1399 activeFace = GL_BACK; 1385 1400 } 1386 1401 1387 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].fail,1388 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].passDepthFail,1389 to->buffers[CRSTATE_STENCIL_BUFFER_ REF_ID_TWO_SIDE_BACK].passDepthPass);1402 CRSTATE_CHECKGLERR(diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].fail, 1403 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthFail, 1404 to->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthPass)); 1390 1405 1391 1406 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op); … … 1401 1416 if (activeFace != to->activeStencilFace) 1402 1417 { 1403 diff_api.ActiveStencilFaceEXT(activeFace);1418 CRSTATE_CHECKGLERR(diff_api.ActiveStencilFaceEXT(activeFace)); 1404 1419 } 1405 1420 … … 1420 1435 if (from->writeMask != to->writeMask) 1421 1436 { 1422 diff_api.StencilMask (to->writeMask);1437 CRSTATE_CHECKGLERR(diff_api.StencilMask (to->writeMask)); 1423 1438 FILLDIRTY(b->writeMask); 1424 1439 FILLDIRTY(b->dirty);
Note:
See TracChangeset
for help on using the changeset viewer.