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

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

Issue 1236053003: texture mipmap level is not zero-only in ES 3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: code rebase Created 5 years, 1 month 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 "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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 110 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
111 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 111 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
112 } 112 }
113 113
114 TEST_P(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) { 114 TEST_P(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) {
115 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0); 115 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
116 FramebufferTexture2D cmd; 116 FramebufferTexture2D cmd;
117 cmd.Init(GL_FRAMEBUFFER, 117 cmd.Init(GL_FRAMEBUFFER,
118 GL_COLOR_ATTACHMENT0, 118 GL_COLOR_ATTACHMENT0,
119 GL_TEXTURE_2D, 119 GL_TEXTURE_2D,
120 client_texture_id_); 120 client_texture_id_,
121 0);
121 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 122 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
122 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 123 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
123 } 124 }
124 125
126 TEST_P(GLES3DecoderTest, FramebufferTexture2DWithNoBoundTarget) {
127 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
128 FramebufferTexture2D cmd;
129 cmd.Init(GL_FRAMEBUFFER,
130 GL_COLOR_ATTACHMENT0,
131 GL_TEXTURE_2D,
132 client_texture_id_,
133 1);
134 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
135 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
136 }
137
138 TEST_P(GLES2DecoderTest, FramebufferTexture2DValidArgs) {
139 EXPECT_CALL(*gl_,
140 FramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
141 GL_TEXTURE_2D, kServiceTextureId, 0));
142 DoBindFramebuffer(
143 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
144 EXPECT_CALL(*gl_, GetError())
145 .WillOnce(Return(GL_NO_ERROR))
146 .WillOnce(Return(GL_NO_ERROR))
147 .RetiresOnSaturation();
148 cmds::FramebufferTexture2D cmd;
149 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
150 client_texture_id_, 0);
151 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
152 EXPECT_EQ(GL_NO_ERROR, GetGLError());
153 }
154
155 TEST_P(GLES3DecoderTest, FramebufferTexture2DValidArgs) {
156 EXPECT_CALL(*gl_,
157 FramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
158 GL_TEXTURE_2D, kServiceTextureId, 1));
159 DoBindFramebuffer(
160 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
161 EXPECT_CALL(*gl_, GetError())
162 .WillOnce(Return(GL_NO_ERROR))
163 .WillOnce(Return(GL_NO_ERROR))
164 .RetiresOnSaturation();
165 cmds::FramebufferTexture2D cmd;
166 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
167 client_texture_id_, 1);
168 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
169 EXPECT_EQ(GL_NO_ERROR, GetGLError());
170 }
171
172 TEST_P(GLES2DecoderTest, FramebufferTexture2DInvalidArgs0_0) {
173 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
174 DoBindFramebuffer(
175 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
176 cmds::FramebufferTexture2D cmd;
177 cmd.Init(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
178 client_texture_id_, 0);
179 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
180 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
181 }
182
183 TEST_P(GLES3DecoderTest, FramebufferTexture2DInvalidArgs0_0) {
184 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
185 DoBindFramebuffer(
186 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
187 cmds::FramebufferTexture2D cmd;
188 cmd.Init(GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
189 client_texture_id_, 1);
190 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
191 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
192 }
193
194 TEST_P(GLES2DecoderTest, FramebufferTexture2DInvalidArgs2_0) {
195 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
196 DoBindFramebuffer(
197 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
198 cmds::FramebufferTexture2D cmd;
199 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP,
200 client_texture_id_, 0);
201 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
202 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
203 }
204
205 TEST_P(GLES3DecoderTest, FramebufferTexture2DInvalidArgs2_0) {
206 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
207 DoBindFramebuffer(
208 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
209 cmds::FramebufferTexture2D cmd;
210 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP,
211 client_texture_id_, 1);
212 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
213 EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
214 }
215
216 TEST_P(GLES2DecoderTest, FramebufferTexture2DInvalidArgs4_0) {
217 EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
218 DoBindFramebuffer(
219 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
220 cmds::FramebufferTexture2D cmd;
221 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
222 client_texture_id_, 1);
223 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
224 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
225 }
226
227 TEST_P(GLES3DecoderTest, FramebufferTexture2DValidArgs4_0) {
228 EXPECT_CALL(*gl_,
229 FramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
230 GL_TEXTURE_2D, kServiceTextureId, 0));
231 DoBindFramebuffer(
232 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
233 EXPECT_CALL(*gl_, GetError())
234 .WillOnce(Return(GL_NO_ERROR))
235 .WillOnce(Return(GL_NO_ERROR))
236 .RetiresOnSaturation();
237 cmds::FramebufferTexture2D cmd;
238 cmd.Init(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
239 client_texture_id_, 0);
240 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
241 EXPECT_EQ(GL_NO_ERROR, GetGLError());
242 }
243
125 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) { 244 TEST_P(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) {
126 EXPECT_CALL(*gl_, GetError()) 245 EXPECT_CALL(*gl_, GetError())
127 .WillOnce(Return(GL_NO_ERROR)) 246 .WillOnce(Return(GL_NO_ERROR))
128 .WillOnce(Return(GL_NO_ERROR)) 247 .WillOnce(Return(GL_NO_ERROR))
129 .RetiresOnSaturation(); 248 .RetiresOnSaturation();
130 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)) 249 EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
131 .Times(0); 250 .Times(0);
132 GetFramebufferAttachmentParameteriv cmd; 251 GetFramebufferAttachmentParameteriv cmd;
133 cmd.Init(GL_FRAMEBUFFER, 252 cmd.Init(GL_FRAMEBUFFER,
134 GL_COLOR_ATTACHMENT0, 253 GL_COLOR_ATTACHMENT0,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 GetFramebufferAttachmentParameteriv::Result* result = 308 GetFramebufferAttachmentParameteriv::Result* result =
190 static_cast<GetFramebufferAttachmentParameteriv::Result*>( 309 static_cast<GetFramebufferAttachmentParameteriv::Result*>(
191 shared_memory_address_); 310 shared_memory_address_);
192 result->SetNumResults(0); 311 result->SetNumResults(0);
193 const GLint* result_value = result->GetData(); 312 const GLint* result_value = result->GetData();
194 FramebufferTexture2D fbtex_cmd; 313 FramebufferTexture2D fbtex_cmd;
195 GetFramebufferAttachmentParameteriv cmd; 314 GetFramebufferAttachmentParameteriv cmd;
196 fbtex_cmd.Init(GL_FRAMEBUFFER, 315 fbtex_cmd.Init(GL_FRAMEBUFFER,
197 GL_COLOR_ATTACHMENT0, 316 GL_COLOR_ATTACHMENT0,
198 GL_TEXTURE_2D, 317 GL_TEXTURE_2D,
199 client_texture_id_); 318 client_texture_id_,
319 0);
200 cmd.Init(GL_FRAMEBUFFER, 320 cmd.Init(GL_FRAMEBUFFER,
201 GL_COLOR_ATTACHMENT0, 321 GL_COLOR_ATTACHMENT0,
202 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, 322 GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
203 shared_memory_id_, 323 shared_memory_id_,
204 shared_memory_offset_); 324 shared_memory_offset_);
205 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); 325 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd));
206 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 326 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
207 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 327 EXPECT_EQ(GL_NO_ERROR, GetGLError());
208 EXPECT_EQ(client_texture_id_, static_cast<GLuint>(*result_value)); 328 EXPECT_EQ(client_texture_id_, static_cast<GLuint>(*result_value));
209 } 329 }
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 GL_COLOR_ATTACHMENT0, 1449 GL_COLOR_ATTACHMENT0,
1330 GL_TEXTURE_2D, 1450 GL_TEXTURE_2D,
1331 kServiceTextureId, 1451 kServiceTextureId,
1332 0)) 1452 0))
1333 .Times(1) 1453 .Times(1)
1334 .RetiresOnSaturation(); 1454 .RetiresOnSaturation();
1335 FramebufferTexture2D fbtex_cmd; 1455 FramebufferTexture2D fbtex_cmd;
1336 fbtex_cmd.Init(GL_FRAMEBUFFER, 1456 fbtex_cmd.Init(GL_FRAMEBUFFER,
1337 GL_COLOR_ATTACHMENT0, 1457 GL_COLOR_ATTACHMENT0,
1338 GL_TEXTURE_2D, 1458 GL_TEXTURE_2D,
1339 client_texture_id_); 1459 client_texture_id_,
1460 0);
1340 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd)); 1461 EXPECT_EQ(error::kNoError, ExecuteCmd(fbtex_cmd));
1341 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1462 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1342 } 1463 }
1343 1464
1344 TEST_P(GLES2DecoderTest, RenderbufferStorageGLError) { 1465 TEST_P(GLES2DecoderTest, RenderbufferStorageGLError) {
1345 DoBindRenderbuffer( 1466 DoBindRenderbuffer(
1346 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1467 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1347 EnsureRenderbufferBound(false); 1468 EnsureRenderbufferBound(false);
1348 EXPECT_CALL(*gl_, GetError()) 1469 EXPECT_CALL(*gl_, GetError())
1349 .WillOnce(Return(GL_NO_ERROR)) 1470 .WillOnce(Return(GL_NO_ERROR))
(...skipping 1446 matching lines...) Expand 10 before | Expand all | Expand 10 after
2796 EXPECT_EQ(1, result->GetNumResults()); 2917 EXPECT_EQ(1, result->GetNumResults());
2797 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 2918 EXPECT_EQ(GL_NO_ERROR, GetGLError());
2798 } 2919 }
2799 2920
2800 // TODO(gman): PixelStorei 2921 // TODO(gman): PixelStorei
2801 2922
2802 // TODO(gman): SwapBuffers 2923 // TODO(gman): SwapBuffers
2803 2924
2804 } // namespace gles2 2925 } // namespace gles2
2805 } // namespace gpu 2926 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698