- Timestamp:
- Aug 21, 2014 7:20:27 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95662
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/VBox-4.3 merged: 95661
- Property svn:mergeinfo changed
-
trunk/src/VBox
- Property svn:mergeinfo changed
/branches/VBox-4.3/src/VBox merged: 95661
- Property svn:mergeinfo changed
-
trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
r52329 r52451 565 565 } 566 566 567 #ifdef DEBUG_misha 568 if (pCurState->lists.currentIndex) 569 { 570 WARN(("GetError called in DisplayList")); 571 } 572 #endif 573 574 if (!pCurState->lists.currentIndex || !(g_u32VBoxHostCaps & CR_VBOX_CAP_CMDBLOCKS)) 575 { 576 packspuFlush( (void *) thread ); 577 CRPACKSPU_WRITEBACK_WAIT(thread, writeback); 578 if (pack_spu.swap) 579 { 580 return_val = (GLenum) SWAP32(return_val); 581 } 582 } 583 else 584 { 585 return_val = GL_NO_ERROR; 567 packspuFlush( (void *) thread ); 568 CRPACKSPU_WRITEBACK_WAIT(thread, writeback); 569 570 if (pack_spu.swap) 571 { 572 return_val = (GLenum) SWAP32(return_val); 586 573 } 587 574 -
trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_net.c
r51319 r52451 250 250 { 251 251 g_u32VBoxHostCaps = crNetHostCapsGet(); 252 if (g_u32VBoxHostCaps & CR_VBOX_CAP_CMDBLOCKS) 253 crPackCmdBlocksEnable(); 252 crPackCapsSet(g_u32VBoxHostCaps); 254 253 } 255 254 } -
trunk/src/VBox/GuestHost/OpenGL/include/cr_pack.h
r52260 r52451 191 191 extern DECLEXPORT(void) crPackExpandMultiDrawElementsEXTSWAP( GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount, CRClientState *c, const GLfloat *pZva ); 192 192 193 extern DECLEXPORT(void) crPackCmdBlocksEnable(); 194 193 extern DECLEXPORT(void) crPackCapsSet(uint32_t u32Caps); 195 194 196 195 /** … … 311 310 } while (0) 312 311 312 #define CR_CMDBLOCK_CHECK_FLUSH( pc ) \ 313 do { \ 314 if (!(cr_packer_cmd_blocks_enabled & CR_VBOX_CAP_CMDBLOCKS_FLUSH)) break; \ 315 if(!CRPACKBLOCKSTATE_IS_OP_STARTED((pc)->u32CmdBlockState, CRPACKBLOCKSTATE_OP_NEWLIST)) break; \ 316 THREADASSERT( pc ); \ 317 CRASSERT( (pc)->currentBuffer ); \ 318 if ( !crPackCanHoldOpcode( pc, 1, 4 ) ) { \ 319 (pc)->Flush( (pc)->flush_arg ); \ 320 Assert(crPackCanHoldOpcode( pc, 1, 4 ) ); \ 321 } \ 322 CR_CMDBLOCK_OP( pc, CR_CMDBLOCKFLUSH_OPCODE ); \ 323 (pc)->Flush( (pc)->flush_arg ); \ 324 } while (0) 325 313 326 /** 314 327 * Alloc space for a message of 'len' bytes (plus 1 opcode). -
trunk/src/VBox/GuestHost/OpenGL/include/cr_protocol.h
r51330 r52451 51 51 /* GetAttribsLocations support */ 52 52 #define CR_VBOX_CAP_GETATTRIBSLOCATIONS 0x00000008 53 54 #define CR_VBOX_CAPS_ALL 0x0000000f 53 /* flush command blocks for execution */ 54 #define CR_VBOX_CAP_CMDBLOCKS_FLUSH 0x00000010 55 56 #define CR_VBOX_CAPS_ALL 0x0000001f 55 57 56 58 -
trunk/src/VBox/GuestHost/OpenGL/include/cr_unpack.h
r50975 r52451 34 34 CR_UNPACK_BUFFER_TYPE_GENERIC = 0, 35 35 CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN, 36 CR_UNPACK_BUFFER_TYPE_CMDBLOCK_FLUSH, 36 37 CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END 37 38 } CR_UNPACK_BUFFER_TYPE; -
trunk/src/VBox/GuestHost/OpenGL/packer/opcodes.py
r50973 r52451 39 39 enum_index = enum_index + 1 40 40 print "\tCR_CMDBLOCKEND_OPCODE=%d," % enum_index 41 enum_index = enum_index + 1 42 print "\tCR_CMDBLOCKFLUSH_OPCODE=%d," % enum_index 41 43 print "\tCR_NOP_OPCODE=255" 42 44 if enum_index > 254: -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_beginend.c
r52260 r52451 85 85 CR_UNLOCK_PACKER_CONTEXT(pc); 86 86 } 87 -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_bufferobject.c
r33475 r52451 100 100 WRITE_NETWORK_POINTER( 28, (void *) writeback ); 101 101 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 102 CR_CMDBLOCK_CHECK_FLUSH(pc); 102 103 CR_UNLOCK_PACKER_CONTEXT(pc); 103 104 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_context.c
r33475 r52451 46 46 WRITE_NETWORK_POINTER( DISPLAY_NAME_LEN + 24, (void *) writeback ); 47 47 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 48 CR_CMDBLOCK_CHECK_FLUSH(pc); 48 49 CR_UNLOCK_PACKER_CONTEXT(pc); 49 50 } … … 78 79 WRITE_NETWORK_POINTER( DISPLAY_NAME_LEN + 24, (void *) writeback ); 79 80 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 81 CR_CMDBLOCK_CHECK_FLUSH(pc); 80 82 CR_UNLOCK_PACKER_CONTEXT(pc); 81 83 } … … 107 109 WRITE_NETWORK_POINTER( DISPLAY_NAME_LEN + 20, (void *) writeback ); 108 110 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 111 CR_CMDBLOCK_CHECK_FLUSH(pc); 109 112 CR_UNLOCK_PACKER_CONTEXT(pc); 110 113 } … … 135 138 WRITE_NETWORK_POINTER( DISPLAY_NAME_LEN + 20, (void *) writeback ); 136 139 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 140 CR_CMDBLOCK_CHECK_FLUSH(pc); 137 141 CR_UNLOCK_PACKER_CONTEXT(pc); 138 142 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_init.c
r50984 r52451 18 18 #endif 19 19 20 int cr_packer_cmd_blocks_enabled = 0;20 uint32_t cr_packer_cmd_blocks_enabled = 0; 21 21 22 22 CRPackContext *crPackNewContext( int swapping ) … … 69 69 } 70 70 71 void crPackC mdBlocksEnable()71 void crPackCapsSet(uint32_t u32Caps) 72 72 { 73 cr_packer_cmd_blocks_enabled = 1;73 cr_packer_cmd_blocks_enabled = (u32Caps & (CR_VBOX_CAP_CMDBLOCKS_FLUSH | CR_VBOX_CAP_CMDBLOCKS)); 74 74 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_pixels.c
r50666 r52451 104 104 WRITE_NETWORK_POINTER( 48, (char *) pixels ); 105 105 WRITE_OPCODE( pc, CR_READPIXELS_OPCODE ); 106 CR_CMDBLOCK_CHECK_FLUSH(pc); 106 107 CR_UNLOCK_PACKER_CONTEXT(pc); 107 108 } … … 220 221 WRITE_NETWORK_POINTER( 32, (void *) writeback ); 221 222 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 223 CR_CMDBLOCK_CHECK_FLUSH(pc); 222 224 CR_UNLOCK_PACKER_CONTEXT(pc); 223 225 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_program.c
r51313 r52451 282 282 WRITE_NETWORK_POINTER(20 + n * sizeof(*programs), (void *) writeback); 283 283 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 284 CR_CMDBLOCK_CHECK_FLUSH(pc); 284 285 CR_UNLOCK_PACKER_CONTEXT(pc); 285 286 } … … 300 301 WRITE_NETWORK_POINTER( 16 + len + 8, (void *) writeback ); 301 302 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 303 CR_CMDBLOCK_CHECK_FLUSH(pc); 302 304 CR_UNLOCK_PACKER_CONTEXT(pc); 303 305 } … … 317 319 WRITE_NETWORK_POINTER( 16 + len + 8, (void *) writeback ); 318 320 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 321 CR_CMDBLOCK_CHECK_FLUSH(pc); 319 322 CR_UNLOCK_PACKER_CONTEXT(pc); 320 323 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_shaders.c
r51200 r52451 429 429 WRITE_NETWORK_POINTER(28, (void *) writeback); 430 430 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 431 CR_CMDBLOCK_CHECK_FLUSH(pc); 431 432 CR_UNLOCK_PACKER_CONTEXT(pc); 432 433 } … … 449 450 WRITE_NETWORK_POINTER(28, (void *) writeback); 450 451 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 452 CR_CMDBLOCK_CHECK_FLUSH(pc); 451 453 CR_UNLOCK_PACKER_CONTEXT(pc); 452 454 } … … 466 468 WRITE_NETWORK_POINTER(24, (void *) writeback); 467 469 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 470 CR_CMDBLOCK_CHECK_FLUSH(pc); 468 471 CR_UNLOCK_PACKER_CONTEXT(pc); 469 472 } … … 482 485 WRITE_NETWORK_POINTER(24, (void *) writeback); 483 486 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 487 CR_CMDBLOCK_CHECK_FLUSH(pc); 484 488 CR_UNLOCK_PACKER_CONTEXT(pc); 485 489 } … … 498 502 WRITE_NETWORK_POINTER(24, (void *) writeback); 499 503 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 504 CR_CMDBLOCK_CHECK_FLUSH(pc); 500 505 CR_UNLOCK_PACKER_CONTEXT(pc); 501 506 } … … 515 520 WRITE_NETWORK_POINTER(24, (void *) writeback); 516 521 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 522 CR_CMDBLOCK_CHECK_FLUSH(pc); 517 523 CR_UNLOCK_PACKER_CONTEXT(pc); 518 524 } … … 532 538 WRITE_NETWORK_POINTER(24, (void *) writeback); 533 539 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 540 CR_CMDBLOCK_CHECK_FLUSH(pc); 534 541 CR_UNLOCK_PACKER_CONTEXT(pc); 535 542 } … … 549 556 WRITE_NETWORK_POINTER(24, (void *) writeback); 550 557 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 558 CR_CMDBLOCK_CHECK_FLUSH(pc); 551 559 CR_UNLOCK_PACKER_CONTEXT(pc); 552 560 } … … 565 573 WRITE_NETWORK_POINTER(24, (void *) writeback); 566 574 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 575 CR_CMDBLOCK_CHECK_FLUSH(pc); 567 576 CR_UNLOCK_PACKER_CONTEXT(pc); 568 577 } … … 581 590 WRITE_NETWORK_POINTER(24, (void *) writeback); 582 591 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 592 CR_CMDBLOCK_CHECK_FLUSH(pc); 583 593 CR_UNLOCK_PACKER_CONTEXT(pc); 584 594 } … … 600 610 WRITE_NETWORK_POINTER(8, (void *) writeback); 601 611 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 612 CR_CMDBLOCK_CHECK_FLUSH(pc); 602 613 CR_UNLOCK_PACKER_CONTEXT(pc); 603 614 } … … 619 630 WRITE_NETWORK_POINTER(8, (void *) writeback); 620 631 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 632 CR_CMDBLOCK_CHECK_FLUSH(pc); 621 633 CR_UNLOCK_PACKER_CONTEXT(pc); 622 634 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_swap_texture.c
r33475 r52451 685 685 WRITE_NETWORK_POINTER( sizeof( int ) + 24 + n*sizeof( *textures ), (void *) writeback ); 686 686 WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); 687 CR_CMDBLOCK_CHECK_FLUSH(pc); 687 688 CR_UNLOCK_PACKER_CONTEXT(pc); 688 689 } -
trunk/src/VBox/GuestHost/OpenGL/packer/pack_texture.c
r35919 r52451 719 719 WRITE_NETWORK_POINTER(20 + n * sizeof(*textures), (void *) writeback); 720 720 WRITE_OPCODE(pc, CR_EXTEND_OPCODE); 721 CR_CMDBLOCK_CHECK_FLUSH(pc); 721 722 CR_UNLOCK_PACKER_CONTEXT(pc); 722 723 } -
trunk/src/VBox/GuestHost/OpenGL/packer/packer.py
r52329 r52451 211 211 print "\tWRITE_OPCODE( pc, %s );" % apiutil.OpcodeName( func_name ) 212 212 213 if "get" in apiutil.Properties(func_name): 214 print '\tCR_CMDBLOCK_CHECK_FLUSH(pc);' 215 213 216 print '\tCR_UNLOCK_PACKER_CONTEXT(pc);' 214 217 print '}\n' -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h
r51670 r52451 420 420 int CrPMgrLoadState(PSSMHANDLE pSSM, uint32_t version); 421 421 HCR_FRAMEBUFFER CrPMgrFbGet(uint32_t idScreen); 422 int CrPMgrClearRegionsGlobal(); 422 423 /*cleanup stuff*/ 423 424 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_config.c
r51655 r52451 178 178 | CR_VBOX_CAP_CMDBLOCKS 179 179 | CR_VBOX_CAP_GETATTRIBSLOCATIONS 180 | CR_VBOX_CAP_CMDBLOCKS_FLUSH 180 181 ; 181 182 } … … 328 329 | CR_VBOX_CAP_CMDBLOCKS 329 330 | CR_VBOX_CAP_GETATTRIBSLOCATIONS 331 | CR_VBOX_CAP_CMDBLOCKS_FLUSH 330 332 ; 331 333 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp
r52429 r52451 4890 4890 } 4891 4891 4892 int CrPMgrClearRegionsGlobal() 4893 { 4894 for (HCR_FRAMEBUFFER hFb = CrPMgrFbGetFirstEnabled(); 4895 hFb; 4896 hFb = CrPMgrFbGetNextEnabled(hFb)) 4897 { 4898 int rc = CrFbUpdateBegin(hFb); 4899 if (RT_SUCCESS(rc)) 4900 { 4901 rc = CrFbRegionsClear(hFb); 4902 if (RT_FAILURE(rc)) 4903 { 4904 WARN(("CrFbRegionsClear failed %d", rc)); 4905 } 4906 4907 CrFbUpdateEnd(hFb); 4908 } 4909 } 4910 4911 return VINF_SUCCESS; 4912 } 4913 4892 4914 int CrPMgrModeVrdp(bool fEnable) 4893 4915 { -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_stream.c
r52260 r52451 655 655 break; 656 656 } 657 case CR_UNPACK_BUFFER_TYPE_CMDBLOCK_FLUSH: /* just flush for now */ 658 { 659 CrPMgrClearRegionsGlobal(); /* clear regions to ensure we don't do MakeCurrent and friends */ 660 crServerPendProcess(conn); 661 Assert(RTListIsEmpty(&conn->PendingMsgList)); 662 break; 663 } 657 664 case CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END: 658 665 { 659 CRASSERT(!RTListIsEmpty(&conn->PendingMsgList));666 // CRASSERT(!RTListIsEmpty(&conn->PendingMsgList)); 660 667 crServerPendProcess(conn); 661 668 Assert(RTListIsEmpty(&conn->PendingMsgList)); -
trunk/src/VBox/HostServices/SharedOpenGL/unpacker/unpack.py
r50975 r52451 211 211 const uint8_t *pu8Codes = (const uint8_t *)opcodes; 212 212 213 CR_UNPACK_BUFFER_TYPE enmType;214 213 uint8_t first; 215 214 uint8_t last; … … 220 219 first = pu8Codes[0]; 221 220 last = pu8Codes[1-(int)num_opcodes]; 222 223 enmType = (first != CR_CMDBLOCKBEGIN_OPCODE) ? CR_UNPACK_BUFFER_TYPE_GENERIC : CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN; 224 225 if (last != CR_CMDBLOCKEND_OPCODE) 226 return enmType; 227 228 /* last is CMDBLOCKEND*/ 229 return (enmType == CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN) ? CR_UNPACK_BUFFER_TYPE_GENERIC : CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END; 221 222 switch (last) 223 { 224 case CR_CMDBLOCKFLUSH_OPCODE: 225 return CR_UNPACK_BUFFER_TYPE_CMDBLOCK_FLUSH; 226 case CR_CMDBLOCKEND_OPCODE: 227 return (first == CR_CMDBLOCKBEGIN_OPCODE) ? CR_UNPACK_BUFFER_TYPE_GENERIC : CR_UNPACK_BUFFER_TYPE_CMDBLOCK_END; 228 default: 229 return (first != CR_CMDBLOCKBEGIN_OPCODE) ? CR_UNPACK_BUFFER_TYPE_GENERIC : CR_UNPACK_BUFFER_TYPE_CMDBLOCK_BEGIN; 230 } 230 231 } 231 232 … … 288 289 case CR_CMDBLOCKBEGIN_OPCODE: 289 290 case CR_CMDBLOCKEND_OPCODE: 291 case CR_CMDBLOCKFLUSH_OPCODE: 290 292 case CR_NOP_OPCODE: 291 293 INCR_DATA_PTR_NO_ARGS( );
Note:
See TracChangeset
for help on using the changeset viewer.