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

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

Issue 1925663002: command_buffer: Defer restoring of FBO bindings when changing virtual contexts Base URL: https://chromium.googlesource.com/chromium/src.git@lazy-bindframebuffer-03-copy-texture-chromium-instantiation
Patch Set: rework Created 4 years, 7 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
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 <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 83 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
84 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result); 84 EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), *result);
85 } 85 }
86 86
87 TEST_P(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) { 87 TEST_P(GLES2DecoderWithShaderTest, BindAndDeleteFramebuffer) {
88 SetupTexture(); 88 SetupTexture();
89 AddExpectationsForSimulatedAttrib0(kNumVertices, 0); 89 AddExpectationsForSimulatedAttrib0(kNumVertices, 0);
90 SetupExpectationsForApplyingDefaultDirtyState(); 90 SetupExpectationsForApplyingDefaultDirtyState();
91 DoBindFramebuffer( 91 DoBindFramebuffer(
92 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 92 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
93 DoDeleteFramebuffer(client_framebuffer_id_, 93 DoDeleteFramebuffer(client_framebuffer_id_, kServiceFramebufferId);
94 kServiceFramebufferId, 94 EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, 0))
95 true, 95 .Times(1)
96 GL_FRAMEBUFFER, 96 .RetiresOnSaturation();
97 0,
98 true,
99 GL_FRAMEBUFFER,
100 0);
101 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices)) 97 EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices))
102 .Times(1) 98 .Times(1)
103 .RetiresOnSaturation(); 99 .RetiresOnSaturation();
104 DrawArrays cmd; 100 DrawArrays cmd;
105 cmd.Init(GL_TRIANGLES, 0, kNumVertices); 101 cmd.Init(GL_TRIANGLES, 0, kNumVertices);
106 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 102 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
107 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 103 EXPECT_EQ(GL_NO_ERROR, GetGLError());
108 } 104 }
109 105
110 TEST_P(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) { 106 TEST_P(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) {
(...skipping 2635 matching lines...) Expand 10 before | Expand all | Expand 10 after
2746 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); 2742 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer));
2747 2743
2748 // Test deleting renderbuffer marks fbo as not complete. 2744 // Test deleting renderbuffer marks fbo as not complete.
2749 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId); 2745 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId);
2750 if (bound_fbo) { 2746 if (bound_fbo) {
2751 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer)); 2747 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer));
2752 } else { 2748 } else {
2753 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); 2749 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer));
2754 } 2750 }
2755 // Cleanup 2751 // Cleanup
2756 DoDeleteFramebuffer(client_framebuffer_id_, 2752 DoDeleteFramebuffer(client_framebuffer_id_, kServiceFramebufferId);
2757 kServiceFramebufferId,
2758 bound_fbo,
2759 GL_FRAMEBUFFER,
2760 0,
2761 bound_fbo,
2762 GL_FRAMEBUFFER,
2763 0);
2764 } 2753 }
2765 2754
2766 TEST_P(GLES2DecoderWithShaderTest, 2755 TEST_P(GLES2DecoderWithShaderTest,
2767 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) { 2756 RenderbufferChangesMarkFBOAsNotCompleteBoundFBO) {
2768 CheckRenderbufferChangesMarkFBOAsNotComplete(true); 2757 CheckRenderbufferChangesMarkFBOAsNotComplete(true);
2769 } 2758 }
2770 2759
2771 TEST_P(GLES2DecoderWithShaderTest, 2760 TEST_P(GLES2DecoderWithShaderTest,
2772 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) { 2761 RenderbufferChangesMarkFBOAsNotCompleteUnboundFBO) {
2773 CheckRenderbufferChangesMarkFBOAsNotComplete(false); 2762 CheckRenderbufferChangesMarkFBOAsNotComplete(false);
(...skipping 22 matching lines...) Expand all
2796 DoFramebufferTexture2D(GL_FRAMEBUFFER, 2785 DoFramebufferTexture2D(GL_FRAMEBUFFER,
2797 GL_COLOR_ATTACHMENT0, 2786 GL_COLOR_ATTACHMENT0,
2798 GL_TEXTURE_2D, 2787 GL_TEXTURE_2D,
2799 kFBOClientTextureId, 2788 kFBOClientTextureId,
2800 kFBOServiceTextureId, 2789 kFBOServiceTextureId,
2801 0, 2790 0,
2802 GL_NO_ERROR); 2791 GL_NO_ERROR);
2803 2792
2804 DoBindRenderbuffer( 2793 DoBindRenderbuffer(
2805 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 2794 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
2806 DoBindFramebuffer(
2807 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
2808 DoRenderbufferStorage(GL_RENDERBUFFER, 2795 DoRenderbufferStorage(GL_RENDERBUFFER,
2809 GL_DEPTH_COMPONENT16, 2796 GL_DEPTH_COMPONENT16,
2810 GL_DEPTH_COMPONENT, 2797 GL_DEPTH_COMPONENT,
2811 1, 2798 1,
2812 1, 2799 1,
2813 GL_NO_ERROR); 2800 GL_NO_ERROR);
2814 DoFramebufferRenderbuffer(GL_FRAMEBUFFER, 2801 DoFramebufferRenderbuffer(GL_FRAMEBUFFER,
2815 GL_DEPTH_ATTACHMENT, 2802 GL_DEPTH_ATTACHMENT,
2816 GL_RENDERBUFFER, 2803 GL_RENDERBUFFER,
2817 client_renderbuffer_id_, 2804 client_renderbuffer_id_,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2862 framebuffer_manager->MarkAsComplete(framebuffer); 2849 framebuffer_manager->MarkAsComplete(framebuffer);
2863 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); 2850 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer));
2864 DoDeleteTexture(kFBOClientTextureId, kFBOServiceTextureId); 2851 DoDeleteTexture(kFBOClientTextureId, kFBOServiceTextureId);
2865 2852
2866 if (bound_fbo) { 2853 if (bound_fbo) {
2867 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer)); 2854 EXPECT_FALSE(framebuffer_manager->IsComplete(framebuffer));
2868 } else { 2855 } else {
2869 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); 2856 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer));
2870 } 2857 }
2871 // Cleanup 2858 // Cleanup
2872 DoDeleteFramebuffer(client_framebuffer_id_, 2859 DoDeleteFramebuffer(client_framebuffer_id_, kServiceFramebufferId);
2873 kServiceFramebufferId,
2874 bound_fbo,
2875 GL_FRAMEBUFFER,
2876 0,
2877 bound_fbo,
2878 GL_FRAMEBUFFER,
2879 0);
2880 } 2860 }
2881 2861
2882 TEST_P(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) { 2862 TEST_P(GLES2DecoderWithShaderTest, TextureChangesMarkFBOAsNotCompleteBoundFBO) {
2883 CheckTextureChangesMarkFBOAsNotComplete(true); 2863 CheckTextureChangesMarkFBOAsNotComplete(true);
2884 } 2864 }
2885 2865
2886 TEST_P(GLES2DecoderWithShaderTest, 2866 TEST_P(GLES2DecoderWithShaderTest,
2887 TextureChangesMarkFBOAsNotCompleteUnboundFBO) { 2867 TextureChangesMarkFBOAsNotCompleteUnboundFBO) {
2888 CheckTextureChangesMarkFBOAsNotComplete(false); 2868 CheckTextureChangesMarkFBOAsNotComplete(false);
2889 } 2869 }
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
3313 EXPECT_EQ(1, result->GetNumResults()); 3293 EXPECT_EQ(1, result->GetNumResults());
3314 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 3294 EXPECT_EQ(GL_NO_ERROR, GetGLError());
3315 } 3295 }
3316 3296
3317 // TODO(gman): PixelStorei 3297 // TODO(gman): PixelStorei
3318 3298
3319 // TODO(gman): SwapBuffers 3299 // TODO(gman): SwapBuffers
3320 3300
3321 } // namespace gles2 3301 } // namespace gles2
3322 } // namespace gpu 3302 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698