Changeset 43766 in vbox for trunk/src/VBox/GuestHost/OpenGL/state_tracker
- Timestamp:
- Oct 29, 2012 12:53:40 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 81697
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_client.c
r43764 r43766 1633 1633 GLint curClientTextureUnit = from->curClientTextureUnit; 1634 1634 int i; 1635 GLint idHwArrayBuffer = CR_BUFFER_HWID(toCtx->bufferobject.arrayBuffer); 1636 const GLint idHwInitialBuffer = idHwArrayBuffer; 1637 1638 #ifdef DEBUG_misha 1639 { 1640 GLint tstHwBuffer = -1; 1641 diff_api.GetIntegerv(GL_ARRAY_BUFFER_BINDING, &tstHwBuffer); 1642 CRASSERT(idHwInitialBuffer == tstHwBuffer); 1643 } 1644 #endif 1645 1635 1646 1636 1647 if (CHECKDIRTY(cb->clientPointer, bitID)) { … … 1641 1652 from->array.v.stride != to->array.v.stride || 1642 1653 from->array.v.buffer != to->array.v.buffer) { 1654 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.v.buffer); 1655 if (idHwArrayBufferUsed != idHwArrayBuffer) 1656 { 1657 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1658 idHwArrayBuffer = idHwArrayBufferUsed; 1659 } 1643 1660 diff_api.VertexPointer(to->array.v.size, to->array.v.type, 1644 1661 to->array.v.stride, to->array.v.p); … … 1656 1673 from->array.n.stride != to->array.n.stride || 1657 1674 from->array.n.buffer != to->array.n.buffer) { 1675 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.n.buffer); 1676 if (idHwArrayBufferUsed != idHwArrayBuffer) 1677 { 1678 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1679 idHwArrayBuffer = idHwArrayBufferUsed; 1680 } 1658 1681 diff_api.NormalPointer(to->array.n.type, 1659 1682 to->array.n.stride, to->array.n.p); … … 1671 1694 from->array.c.stride != to->array.c.stride || 1672 1695 from->array.c.buffer != to->array.c.buffer) { 1696 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.c.buffer); 1697 if (idHwArrayBufferUsed != idHwArrayBuffer) 1698 { 1699 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1700 idHwArrayBuffer = idHwArrayBufferUsed; 1701 } 1673 1702 diff_api.ColorPointer(to->array.c.size, to->array.c.type, 1674 1703 to->array.c.stride, to->array.c.p); … … 1686 1715 from->array.i.stride != to->array.i.stride || 1687 1716 from->array.i.buffer != to->array.i.buffer) { 1717 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.i.buffer); 1718 if (idHwArrayBufferUsed != idHwArrayBuffer) 1719 { 1720 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1721 idHwArrayBuffer = idHwArrayBufferUsed; 1722 } 1688 1723 diff_api.IndexPointer(to->array.i.type, 1689 1724 to->array.i.stride, to->array.i.p); … … 1702 1737 from->array.t[i].stride != to->array.t[i].stride || 1703 1738 from->array.t[i].buffer != to->array.t[i].buffer) { 1739 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.t[i].buffer); 1740 if (idHwArrayBufferUsed != idHwArrayBuffer) 1741 { 1742 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1743 idHwArrayBuffer = idHwArrayBufferUsed; 1744 } 1704 1745 diff_api.ClientActiveTextureARB(GL_TEXTURE0_ARB + i); 1705 1746 curClientTextureUnit = i; … … 1719 1760 if (from->array.e.stride != to->array.e.stride || 1720 1761 from->array.e.buffer != to->array.e.buffer) { 1762 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.e.buffer); 1763 if (idHwArrayBufferUsed != idHwArrayBuffer) 1764 { 1765 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1766 idHwArrayBuffer = idHwArrayBufferUsed; 1767 } 1721 1768 diff_api.EdgeFlagPointer(to->array.e.stride, to->array.e.p); 1722 1769 from->array.e.stride = to->array.e.stride; … … 1732 1779 from->array.s.stride != to->array.s.stride || 1733 1780 from->array.s.buffer != to->array.s.buffer) { 1781 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.s.buffer); 1782 if (idHwArrayBufferUsed != idHwArrayBuffer) 1783 { 1784 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1785 idHwArrayBuffer = idHwArrayBufferUsed; 1786 } 1734 1787 diff_api.SecondaryColorPointerEXT(to->array.s.size, to->array.s.type, 1735 1788 to->array.s.stride, to->array.s.p); … … 1747 1800 from->array.f.stride != to->array.f.stride || 1748 1801 from->array.f.buffer != to->array.f.buffer) { 1802 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.f.buffer); 1803 if (idHwArrayBufferUsed != idHwArrayBuffer) 1804 { 1805 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1806 idHwArrayBuffer = idHwArrayBufferUsed; 1807 } 1749 1808 diff_api.FogCoordPointerEXT(to->array.f.type, 1750 1809 to->array.f.stride, to->array.f.p); … … 1765 1824 from->array.a[i].normalized != to->array.a[i].normalized || 1766 1825 from->array.a[i].buffer != to->array.a[i].buffer) { 1826 GLint idHwArrayBufferUsed = CR_BUFFER_HWID(to->array.[i].buffer); 1827 if (idHwArrayBufferUsed != idHwArrayBuffer) 1828 { 1829 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwArrayBufferUsed); 1830 idHwArrayBuffer = idHwArrayBufferUsed; 1831 } 1767 1832 diff_api.VertexAttribPointerARB(i, to->array.a[i].size, 1768 1833 to->array.a[i].type, … … 1781 1846 } 1782 1847 #endif 1848 } 1849 1850 if (idHwArrayBuffer != idHwInitialBuffer) 1851 { 1852 diff_api.BindBufferARB(GL_ARRAY_BUFFER_ARB, idHwInitialBuffer); 1783 1853 } 1784 1854 … … 2109 2179 if (to->array.a[i].enabled) 2110 2180 diff_api.EnableVertexAttribArrayARB(i); 2111 else 2181 else 2112 2182 diff_api.DisableVertexAttribArrayARB(i); 2113 2183 FILLDIRTY(cb->enableClientState);
Note:
See TracChangeset
for help on using the changeset viewer.