Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc

Issue 1168213003: gpu: Make sure we restore scissor rect after clearing a texture level. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: enable scissor test in UnClearedAttachmentsGetClearedOnClear Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_drawing.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 1657 matching lines...) Expand 10 before | Expand all | Expand 10 after
1668 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 1668 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
1669 DoBindFramebuffer( 1669 DoBindFramebuffer(
1670 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1670 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1671 DoFramebufferTexture2D(GL_FRAMEBUFFER, 1671 DoFramebufferTexture2D(GL_FRAMEBUFFER,
1672 GL_COLOR_ATTACHMENT0, 1672 GL_COLOR_ATTACHMENT0,
1673 GL_TEXTURE_2D, 1673 GL_TEXTURE_2D,
1674 kFBOClientTextureId, 1674 kFBOClientTextureId,
1675 kFBOServiceTextureId, 1675 kFBOServiceTextureId,
1676 0, 1676 0,
1677 GL_NO_ERROR); 1677 GL_NO_ERROR);
1678 // Set scissor rect and enable GL_SCISSOR_TEST to make sure we re-enable it
1679 // and restore the rect again after the clear.
1680 DoEnableDisable(GL_SCISSOR_TEST, true);
1681 DoScissor(0, 0, 64, 64);
1678 1682
1679 // Setup "render from" texture. 1683 // Setup "render from" texture.
1680 SetupTexture(); 1684 SetupTexture();
1681 1685
1682 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target 1686 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target
1683 GL_COLOR_BUFFER_BIT, // clear bits 1687 GL_COLOR_BUFFER_BIT, // clear bits
1684 0, 1688 0, 0, 0,
1685 0, 1689 0, // color
1686 0, 1690 0, // stencil
1687 0, // color 1691 1.0f, // depth
1688 0, // stencil 1692 true, // scissor test
1689 1.0f, // depth 1693 0, 0, 64, 64);
1690 false); // scissor test
1691 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB 1694 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB
1692 false, // Framebuffer has depth 1695 false, // Framebuffer has depth
1693 false, // Framebuffer has stencil 1696 false, // Framebuffer has stencil
1694 0x1111, // color bits 1697 0x1111, // color bits
1695 false, // depth mask 1698 false, // depth mask
1696 false, // depth enabled 1699 false, // depth enabled
1697 0, // front stencil mask 1700 0, // front stencil mask
1698 0, // back stencil mask 1701 0, // back stencil mask
1699 false); // stencil enabled 1702 false); // stencil enabled
1700 1703
(...skipping 21 matching lines...) Expand all
1722 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 1725 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
1723 DoBindFramebuffer( 1726 DoBindFramebuffer(
1724 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1727 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1725 DoFramebufferTexture2D(GL_FRAMEBUFFER, 1728 DoFramebufferTexture2D(GL_FRAMEBUFFER,
1726 GL_COLOR_ATTACHMENT0, 1729 GL_COLOR_ATTACHMENT0,
1727 GL_TEXTURE_2D, 1730 GL_TEXTURE_2D,
1728 kFBOClientTextureId, 1731 kFBOClientTextureId,
1729 kFBOServiceTextureId, 1732 kFBOServiceTextureId,
1730 0, 1733 0,
1731 GL_NO_ERROR); 1734 GL_NO_ERROR);
1735 DoEnableDisable(GL_SCISSOR_TEST, false);
1736 DoScissor(0, 0, 1, 1);
1732 1737
1733 // Setup "render from" texture. 1738 // Setup "render from" texture.
1734 SetupTexture(); 1739 SetupTexture();
1735 1740
1736 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target 1741 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target
1737 GL_COLOR_BUFFER_BIT, // clear bits 1742 GL_COLOR_BUFFER_BIT, // clear bits
1738 0, 1743 0, 0, 0,
1739 0, 1744 0, // color
1740 0, 1745 0, // stencil
1741 0, // color 1746 1.0f, // depth
1742 0, // stencil 1747 false, // scissor test
1743 1.0f, // depth 1748 0, 0, 1, 1);
1744 false); // scissor test
1745 1749
1746 EXPECT_CALL(*gl_, GetError()) 1750 EXPECT_CALL(*gl_, GetError())
1747 .WillOnce(Return(GL_NO_ERROR)) 1751 .WillOnce(Return(GL_NO_ERROR))
1748 .WillOnce(Return(GL_NO_ERROR)) 1752 .WillOnce(Return(GL_NO_ERROR))
1749 .RetiresOnSaturation(); 1753 .RetiresOnSaturation();
1750 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) 1754 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _))
1751 .Times(1) 1755 .Times(1)
1752 .RetiresOnSaturation(); 1756 .RetiresOnSaturation();
1753 typedef ReadPixels::Result Result; 1757 typedef ReadPixels::Result Result;
1754 uint32 result_shm_id = kSharedMemoryId; 1758 uint32 result_shm_id = kSharedMemoryId;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1793 DoBindFramebuffer( 1797 DoBindFramebuffer(
1794 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 1798 GL_READ_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
1795 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER, 1799 DoFramebufferTexture2D(GL_READ_FRAMEBUFFER,
1796 GL_COLOR_ATTACHMENT0, 1800 GL_COLOR_ATTACHMENT0,
1797 GL_TEXTURE_2D, 1801 GL_TEXTURE_2D,
1798 kFBOClientTextureId, 1802 kFBOClientTextureId,
1799 kFBOServiceTextureId, 1803 kFBOServiceTextureId,
1800 0, 1804 0,
1801 GL_NO_ERROR); 1805 GL_NO_ERROR);
1802 1806
1803 // Enable GL_SCISSOR_TEST to make sure we disable it in the clear, 1807 // Set scissor rect and disable GL_SCISSOR_TEST to make sure we enable it in
1804 // then re-enable after. 1808 // the clear, then disable it and restore the rect again.
1805 DoEnableDisable(GL_SCISSOR_TEST, true); 1809 DoScissor(0, 0, 32, 32);
1810 DoEnableDisable(GL_SCISSOR_TEST, false);
1806 1811
1807 SetupExpectationsForFramebufferClearingMulti( 1812 SetupExpectationsForFramebufferClearingMulti(
1808 kServiceFramebufferId, // read framebuffer service id 1813 kServiceFramebufferId, // read framebuffer service id
1809 0, // backbuffer service id 1814 0, // backbuffer service id
1810 GL_READ_FRAMEBUFFER, // target 1815 GL_READ_FRAMEBUFFER, // target
1811 GL_COLOR_BUFFER_BIT, // clear bits 1816 GL_COLOR_BUFFER_BIT, // clear bits
1812 0, 1817 0, 0, 0,
1813 0,
1814 0,
1815 0, // color 1818 0, // color
1816 0, // stencil 1819 0, // stencil
1817 1.0f, // depth 1820 1.0f, // depth
1818 true); // scissor test 1821 false, // scissor test
1822 0, 0, 32, 32);
1819 1823
1820 EXPECT_CALL(*gl_, GetError()) 1824 EXPECT_CALL(*gl_, GetError())
1821 .WillOnce(Return(GL_NO_ERROR)) 1825 .WillOnce(Return(GL_NO_ERROR))
1822 .WillOnce(Return(GL_NO_ERROR)) 1826 .WillOnce(Return(GL_NO_ERROR))
1823 .RetiresOnSaturation(); 1827 .RetiresOnSaturation();
1824 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) 1828 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _))
1825 .Times(1) 1829 .Times(1)
1826 .RetiresOnSaturation(); 1830 .RetiresOnSaturation();
1827 typedef ReadPixels::Result Result; 1831 typedef ReadPixels::Result Result;
1828 uint32 result_shm_id = kSharedMemoryId; 1832 uint32 result_shm_id = kSharedMemoryId;
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
2194 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0); 2198 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0, 0);
2195 DoBindFramebuffer( 2199 DoBindFramebuffer(
2196 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 2200 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
2197 DoFramebufferTexture2D(GL_FRAMEBUFFER, 2201 DoFramebufferTexture2D(GL_FRAMEBUFFER,
2198 GL_COLOR_ATTACHMENT0, 2202 GL_COLOR_ATTACHMENT0,
2199 GL_TEXTURE_2D, 2203 GL_TEXTURE_2D,
2200 kFBOClientTextureId, 2204 kFBOClientTextureId,
2201 kFBOServiceTextureId, 2205 kFBOServiceTextureId,
2202 0, 2206 0,
2203 GL_NO_ERROR); 2207 GL_NO_ERROR);
2208 DoEnableDisable(GL_SCISSOR_TEST, false);
2209 DoScissor(0, 0, 1, 1);
2204 2210
2205 // Setup "render from" texture. 2211 // Setup "render from" texture.
2206 SetupTexture(); 2212 SetupTexture();
2207 2213
2208 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target 2214 SetupExpectationsForFramebufferClearing(GL_FRAMEBUFFER, // target
2209 GL_COLOR_BUFFER_BIT, // clear bits 2215 GL_COLOR_BUFFER_BIT, // clear bits
2210 0, 2216 0, 0, 0,
2211 0, 2217 0, // color
2212 0, 2218 0, // stencil
2213 0, // color 2219 1.0f, // depth
2214 0, // stencil 2220 false, // scissor test
2215 1.0f, // depth 2221 0, 0, 1, 1);
2216 false); // scissor test
2217 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB 2222 SetupExpectationsForApplyingDirtyState(false, // Framebuffer is RGB
2218 false, // Framebuffer has depth 2223 false, // Framebuffer has depth
2219 false, // Framebuffer has stencil 2224 false, // Framebuffer has stencil
2220 0x1111, // color bits 2225 0x1111, // color bits
2221 false, // depth mask 2226 false, // depth mask
2222 false, // depth enabled 2227 false, // depth enabled
2223 0, // front stencil mask 2228 0, // front stencil mask
2224 0, // back stencil mask 2229 0, // back stencil mask
2225 false); // stencil enabled 2230 false); // stencil enabled
2226 2231
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
2377 EXPECT_EQ(1, result->GetNumResults()); 2382 EXPECT_EQ(1, result->GetNumResults());
2378 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2383 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2379 } 2384 }
2380 2385
2381 // TODO(gman): PixelStorei 2386 // TODO(gman): PixelStorei
2382 2387
2383 // TODO(gman): SwapBuffers 2388 // TODO(gman): SwapBuffers
2384 2389
2385 } // namespace gles2 2390 } // namespace gles2
2386 } // namespace gpu 2391 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest_drawing.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698