| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cc/test/fake_web_graphics_context_3d.h" | 5 #include "cc/fake_web_graphics_context_3d.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include "third_party/khronos/GLES2/gl2.h" |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/logging.h" | |
| 11 #include "gpu/GLES2/gl2extchromium.h" | |
| 12 #include "testing/gtest/include/gtest/gtest.h" | |
| 13 #include "third_party/khronos/GLES2/gl2ext.h" | |
| 14 | 8 |
| 15 using WebKit::WGC3Dboolean; | 9 using WebKit::WGC3Dboolean; |
| 16 using WebKit::WGC3Denum; | 10 using WebKit::WGC3Denum; |
| 17 using WebKit::WebGLId; | 11 using WebKit::WebGLId; |
| 18 using WebKit::WebGraphicsContext3D; | 12 using WebKit::WebGraphicsContext3D; |
| 19 | 13 |
| 20 namespace cc { | 14 namespace cc { |
| 21 | 15 |
| 22 static const WebGLId kBufferId = 1; | |
| 23 static const WebGLId kFramebufferId = 2; | |
| 24 static const WebGLId kProgramId = 3; | |
| 25 static const WebGLId kRenderbufferId = 4; | |
| 26 static const WebGLId kShaderId = 5; | |
| 27 | |
| 28 static unsigned s_context_id = 1; | |
| 29 | |
| 30 const WebGLId FakeWebGraphicsContext3D::kExternalTextureId = 1337; | |
| 31 | |
| 32 FakeWebGraphicsContext3D::FakeWebGraphicsContext3D() | 16 FakeWebGraphicsContext3D::FakeWebGraphicsContext3D() |
| 33 : context_id_(s_context_id++), | 17 : WebKit::WebGraphicsContext3D() { |
| 34 next_texture_id_(1), | |
| 35 have_extension_io_surface_(false), | |
| 36 have_extension_egl_image_(false), | |
| 37 times_make_current_succeeds_(-1), | |
| 38 times_bind_texture_succeeds_(-1), | |
| 39 times_end_query_succeeds_(-1), | |
| 40 context_lost_(false), | |
| 41 context_lost_callback_(NULL), | |
| 42 width_(0), | |
| 43 height_(0) { | |
| 44 } | |
| 45 | |
| 46 FakeWebGraphicsContext3D::FakeWebGraphicsContext3D( | |
| 47 const WebGraphicsContext3D::Attributes& attributes) | |
| 48 : context_id_(s_context_id++), | |
| 49 next_texture_id_(1), | |
| 50 attributes_(attributes), | |
| 51 have_extension_io_surface_(false), | |
| 52 have_extension_egl_image_(false), | |
| 53 times_make_current_succeeds_(-1), | |
| 54 times_bind_texture_succeeds_(-1), | |
| 55 times_end_query_succeeds_(-1), | |
| 56 context_lost_(false), | |
| 57 context_lost_callback_(NULL), | |
| 58 width_(0), | |
| 59 height_(0) { | |
| 60 } | 18 } |
| 61 | 19 |
| 62 FakeWebGraphicsContext3D::~FakeWebGraphicsContext3D() { | 20 FakeWebGraphicsContext3D::~FakeWebGraphicsContext3D() { |
| 63 } | 21 } |
| 64 | 22 |
| 65 bool FakeWebGraphicsContext3D::makeContextCurrent() { | 23 bool FakeWebGraphicsContext3D::makeContextCurrent() { |
| 66 if (times_make_current_succeeds_ >= 0) { | 24 return true; |
| 67 if (!times_make_current_succeeds_) { | |
| 68 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, | |
| 69 GL_INNOCENT_CONTEXT_RESET_ARB); | |
| 70 } | |
| 71 --times_make_current_succeeds_; | |
| 72 } | |
| 73 return !context_lost_; | |
| 74 } | 25 } |
| 75 | 26 |
| 76 int FakeWebGraphicsContext3D::width() { | 27 int FakeWebGraphicsContext3D::width() { |
| 77 return width_; | 28 return 1; |
| 78 } | 29 } |
| 79 | 30 |
| 80 int FakeWebGraphicsContext3D::height() { | 31 int FakeWebGraphicsContext3D::height() { |
| 81 return height_; | 32 return 1; |
| 82 } | 33 } |
| 83 | 34 |
| 84 void FakeWebGraphicsContext3D::reshape(int width, int height) { | 35 void FakeWebGraphicsContext3D::reshape(int width, int height) { |
| 85 width_ = width; | |
| 86 height_ = height; | |
| 87 } | 36 } |
| 88 | 37 |
| 89 bool FakeWebGraphicsContext3D::isGLES2Compliant() { | 38 bool FakeWebGraphicsContext3D::isGLES2Compliant() { |
| 90 return false; | 39 return false; |
| 91 } | 40 } |
| 92 | 41 |
| 93 bool FakeWebGraphicsContext3D::readBackFramebuffer( | 42 bool FakeWebGraphicsContext3D::readBackFramebuffer( |
| 94 unsigned char* pixels, | 43 unsigned char* pixels, |
| 95 size_t bufferSize, | 44 size_t bufferSize, |
| 96 WebGLId framebuffer, | 45 WebGLId framebuffer, |
| 97 int width, | 46 int width, |
| 98 int height) { | 47 int height) { |
| 99 return false; | 48 return false; |
| 100 } | 49 } |
| 101 | 50 |
| 102 WebGLId FakeWebGraphicsContext3D::getPlatformTextureId() { | 51 WebGLId FakeWebGraphicsContext3D::getPlatformTextureId() { |
| 103 return 0; | 52 return 0; |
| 104 } | 53 } |
| 105 | 54 |
| 106 bool FakeWebGraphicsContext3D::isContextLost() { | 55 bool FakeWebGraphicsContext3D::isContextLost() { |
| 107 return context_lost_; | 56 return false; |
| 108 } | 57 } |
| 109 | 58 |
| 110 WGC3Denum FakeWebGraphicsContext3D::getGraphicsResetStatusARB() { | 59 WGC3Denum FakeWebGraphicsContext3D::getGraphicsResetStatusARB() { |
| 111 return context_lost_ ? GL_UNKNOWN_CONTEXT_RESET_ARB : GL_NO_ERROR; | 60 return GL_NO_ERROR; |
| 112 } | 61 } |
| 113 | 62 |
| 114 void* FakeWebGraphicsContext3D::mapBufferSubDataCHROMIUM( | 63 void* FakeWebGraphicsContext3D::mapBufferSubDataCHROMIUM( |
| 115 WGC3Denum target, | 64 WGC3Denum target, |
| 116 WebKit::WGC3Dintptr offset, | 65 WebKit::WGC3Dintptr offset, |
| 117 WebKit::WGC3Dsizeiptr size, | 66 WebKit::WGC3Dsizeiptr size, |
| 118 WGC3Denum access) { | 67 WGC3Denum access) { |
| 119 return 0; | 68 return 0; |
| 120 } | 69 } |
| 121 | 70 |
| 122 void* FakeWebGraphicsContext3D::mapTexSubImage2DCHROMIUM( | 71 void* FakeWebGraphicsContext3D::mapTexSubImage2DCHROMIUM( |
| 123 WGC3Denum target, | 72 WGC3Denum target, |
| 124 WebKit::WGC3Dint level, | 73 WebKit::WGC3Dint level, |
| 125 WebKit::WGC3Dint xoffset, | 74 WebKit::WGC3Dint xoffset, |
| 126 WebKit::WGC3Dint yoffset, | 75 WebKit::WGC3Dint yoffset, |
| 127 WebKit::WGC3Dsizei width, | 76 WebKit::WGC3Dsizei width, |
| 128 WebKit::WGC3Dsizei height, | 77 WebKit::WGC3Dsizei height, |
| 129 WGC3Denum format, | 78 WGC3Denum format, |
| 130 WGC3Denum type, | 79 WGC3Denum type, |
| 131 WGC3Denum access) { | 80 WGC3Denum access) { |
| 132 return 0; | 81 return 0; |
| 133 } | 82 } |
| 134 | 83 |
| 135 WebKit::WebString FakeWebGraphicsContext3D::getRequestableExtensionsCHROMIUM() { | 84 WebKit::WebString FakeWebGraphicsContext3D::getRequestableExtensionsCHROMIUM() { |
| 136 return WebKit::WebString(); | 85 return WebKit::WebString(); |
| 137 } | 86 } |
| 138 | 87 |
| 139 WGC3Denum FakeWebGraphicsContext3D::checkFramebufferStatus( | 88 WGC3Denum FakeWebGraphicsContext3D::checkFramebufferStatus( |
| 140 WGC3Denum target) { | 89 WGC3Denum target) { |
| 141 if (context_lost_) | |
| 142 return GL_FRAMEBUFFER_UNDEFINED_OES; | |
| 143 return GL_FRAMEBUFFER_COMPLETE; | 90 return GL_FRAMEBUFFER_COMPLETE; |
| 144 } | 91 } |
| 145 | 92 |
| 146 bool FakeWebGraphicsContext3D::getActiveAttrib( | 93 bool FakeWebGraphicsContext3D::getActiveAttrib( |
| 147 WebGLId program, | 94 WebGLId program, |
| 148 WebKit::WGC3Duint index, | 95 WebKit::WGC3Duint index, |
| 149 ActiveInfo&) { | 96 ActiveInfo&) { |
| 150 return false; | 97 return false; |
| 151 } | 98 } |
| 152 | 99 |
| 153 bool FakeWebGraphicsContext3D::getActiveUniform( | 100 bool FakeWebGraphicsContext3D::getActiveUniform( |
| 154 WebGLId program, | 101 WebGLId program, |
| 155 WebKit::WGC3Duint index, | 102 WebKit::WGC3Duint index, |
| 156 ActiveInfo&) { | 103 ActiveInfo&) { |
| 157 return false; | 104 return false; |
| 158 } | 105 } |
| 159 | 106 |
| 160 WebKit::WGC3Dint FakeWebGraphicsContext3D::getAttribLocation( | 107 WebKit::WGC3Dint FakeWebGraphicsContext3D::getAttribLocation( |
| 161 WebGLId program, | 108 WebGLId program, |
| 162 const WebKit::WGC3Dchar* name) { | 109 const WebKit::WGC3Dchar* name) { |
| 163 return 0; | 110 return 0; |
| 164 } | 111 } |
| 165 | 112 |
| 166 WebGraphicsContext3D::Attributes | 113 WebGraphicsContext3D::Attributes |
| 167 FakeWebGraphicsContext3D::getContextAttributes() { | 114 FakeWebGraphicsContext3D::getContextAttributes() { |
| 168 return attributes_; | 115 return WebGraphicsContext3D::Attributes(); |
| 169 } | 116 } |
| 170 | 117 |
| 171 WGC3Denum FakeWebGraphicsContext3D::getError() { | 118 WGC3Denum FakeWebGraphicsContext3D::getError() { |
| 172 return 0; | 119 return 0; |
| 173 } | 120 } |
| 174 | 121 |
| 175 void FakeWebGraphicsContext3D::getIntegerv( | 122 void FakeWebGraphicsContext3D::getIntegerv( |
| 176 WGC3Denum pname, | 123 WGC3Denum pname, |
| 177 WebKit::WGC3Dint* value) { | 124 WebKit::WGC3Dint* value) { |
| 178 if (pname == GL_MAX_TEXTURE_SIZE) | 125 if (pname == GL_MAX_TEXTURE_SIZE) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 204 WebGLId shader) { | 151 WebGLId shader) { |
| 205 return WebKit::WebString(); | 152 return WebKit::WebString(); |
| 206 } | 153 } |
| 207 | 154 |
| 208 WebKit::WebString FakeWebGraphicsContext3D::getShaderSource( | 155 WebKit::WebString FakeWebGraphicsContext3D::getShaderSource( |
| 209 WebGLId shader) { | 156 WebGLId shader) { |
| 210 return WebKit::WebString(); | 157 return WebKit::WebString(); |
| 211 } | 158 } |
| 212 | 159 |
| 213 WebKit::WebString FakeWebGraphicsContext3D::getString(WGC3Denum name) { | 160 WebKit::WebString FakeWebGraphicsContext3D::getString(WGC3Denum name) { |
| 214 std::string string; | 161 return WebKit::WebString(); |
| 215 | |
| 216 if (name == GL_EXTENSIONS) { | |
| 217 if (have_extension_io_surface_) | |
| 218 string += "GL_CHROMIUM_iosurface GL_ARB_texture_rectangle "; | |
| 219 if (have_extension_egl_image_) | |
| 220 string += "GL_OES_EGL_image_external"; | |
| 221 } | |
| 222 | |
| 223 return WebKit::WebString::fromUTF8(string.c_str()); | |
| 224 } | 162 } |
| 225 | 163 |
| 226 WebKit::WGC3Dint FakeWebGraphicsContext3D::getUniformLocation( | 164 WebKit::WGC3Dint FakeWebGraphicsContext3D::getUniformLocation( |
| 227 WebGLId program, | 165 WebGLId program, |
| 228 const WebKit::WGC3Dchar* name) { | 166 const WebKit::WGC3Dchar* name) { |
| 229 return 0; | 167 return 0; |
| 230 } | 168 } |
| 231 | 169 |
| 232 WebKit::WGC3Dsizeiptr FakeWebGraphicsContext3D::getVertexAttribOffset( | 170 WebKit::WGC3Dsizeiptr FakeWebGraphicsContext3D::getVertexAttribOffset( |
| 233 WebKit::WGC3Duint index, | 171 WebKit::WGC3Duint index, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 264 WebGLId shader) { | 202 WebGLId shader) { |
| 265 return false; | 203 return false; |
| 266 } | 204 } |
| 267 | 205 |
| 268 WGC3Dboolean FakeWebGraphicsContext3D::isTexture( | 206 WGC3Dboolean FakeWebGraphicsContext3D::isTexture( |
| 269 WebGLId texture) { | 207 WebGLId texture) { |
| 270 return false; | 208 return false; |
| 271 } | 209 } |
| 272 | 210 |
| 273 WebGLId FakeWebGraphicsContext3D::createBuffer() { | 211 WebGLId FakeWebGraphicsContext3D::createBuffer() { |
| 274 return kBufferId | context_id_ << 16; | 212 return 1; |
| 275 } | 213 } |
| 276 | 214 |
| 277 void FakeWebGraphicsContext3D::deleteBuffer(WebKit::WebGLId id) { | 215 void FakeWebGraphicsContext3D::deleteBuffer(WebKit::WebGLId id) { |
| 278 EXPECT_EQ(kBufferId | context_id_ << 16, id); | |
| 279 } | 216 } |
| 280 | 217 |
| 281 WebGLId FakeWebGraphicsContext3D::createFramebuffer() { | 218 WebGLId FakeWebGraphicsContext3D::createFramebuffer() { |
| 282 return kFramebufferId | context_id_ << 16; | 219 return 1; |
| 283 } | 220 } |
| 284 | 221 |
| 285 void FakeWebGraphicsContext3D::deleteFramebuffer(WebKit::WebGLId id) { | 222 void FakeWebGraphicsContext3D::deleteFramebuffer(WebKit::WebGLId id) { |
| 286 EXPECT_EQ(kFramebufferId | context_id_ << 16, id); | |
| 287 } | 223 } |
| 288 | 224 |
| 289 WebGLId FakeWebGraphicsContext3D::createProgram() { | 225 WebGLId FakeWebGraphicsContext3D::createProgram() { |
| 290 return kProgramId | context_id_ << 16; | 226 return 1; |
| 291 } | 227 } |
| 292 | 228 |
| 293 void FakeWebGraphicsContext3D::deleteProgram(WebKit::WebGLId id) { | 229 void FakeWebGraphicsContext3D::deleteProgram(WebKit::WebGLId id) { |
| 294 EXPECT_EQ(kProgramId | context_id_ << 16, id); | |
| 295 } | 230 } |
| 296 | 231 |
| 297 WebGLId FakeWebGraphicsContext3D::createRenderbuffer() { | 232 WebGLId FakeWebGraphicsContext3D::createRenderbuffer() { |
| 298 return kRenderbufferId | context_id_ << 16; | 233 return 1; |
| 299 } | 234 } |
| 300 | 235 |
| 301 void FakeWebGraphicsContext3D::deleteRenderbuffer(WebKit::WebGLId id) { | 236 void FakeWebGraphicsContext3D::deleteRenderbuffer(WebKit::WebGLId id) { |
| 302 EXPECT_EQ(kRenderbufferId | context_id_ << 16, id); | |
| 303 } | 237 } |
| 304 | 238 |
| 305 WebGLId FakeWebGraphicsContext3D::createShader(WGC3Denum) { | 239 WebGLId FakeWebGraphicsContext3D::createShader(WGC3Denum) { |
| 306 return kShaderId | context_id_ << 16; | 240 return 1; |
| 307 } | 241 } |
| 308 | 242 |
| 309 void FakeWebGraphicsContext3D::deleteShader(WebKit::WebGLId id) { | 243 void FakeWebGraphicsContext3D::deleteShader(WebKit::WebGLId id) { |
| 310 EXPECT_EQ(kShaderId | context_id_ << 16, id); | |
| 311 } | 244 } |
| 312 | 245 |
| 313 WebGLId FakeWebGraphicsContext3D::createTexture() { | 246 WebGLId FakeWebGraphicsContext3D::createTexture() { |
| 314 WebGLId texture_id = NextTextureId(); | 247 return 1; |
| 315 DCHECK_NE(texture_id, kExternalTextureId); | |
| 316 textures_.push_back(texture_id); | |
| 317 return texture_id; | |
| 318 } | 248 } |
| 319 | 249 |
| 320 void FakeWebGraphicsContext3D::deleteTexture(WebGLId texture_id) { | 250 void FakeWebGraphicsContext3D::deleteTexture(WebGLId texture_id) { |
| 321 DCHECK(std::find(textures_.begin(), textures_.end(), texture_id) != | |
| 322 textures_.end()); | |
| 323 textures_.erase(std::find(textures_.begin(), textures_.end(), texture_id)); | |
| 324 } | 251 } |
| 325 | 252 |
| 326 void FakeWebGraphicsContext3D::attachShader(WebGLId program, WebGLId shader) { | 253 void FakeWebGraphicsContext3D::attachShader(WebGLId program, WebGLId shader) { |
| 327 EXPECT_EQ(kProgramId | context_id_ << 16, program); | |
| 328 EXPECT_EQ(kShaderId | context_id_ << 16, shader); | |
| 329 } | 254 } |
| 330 | 255 |
| 331 void FakeWebGraphicsContext3D::useProgram(WebGLId program) { | 256 void FakeWebGraphicsContext3D::useProgram(WebGLId program) { |
| 332 if (!program) | |
| 333 return; | |
| 334 EXPECT_EQ(kProgramId | context_id_ << 16, program); | |
| 335 } | 257 } |
| 336 | 258 |
| 337 void FakeWebGraphicsContext3D::bindBuffer(WGC3Denum target, WebGLId buffer) { | 259 void FakeWebGraphicsContext3D::bindBuffer(WGC3Denum target, WebGLId buffer) { |
| 338 if (!buffer) | |
| 339 return; | |
| 340 EXPECT_EQ(kBufferId | context_id_ << 16, buffer); | |
| 341 } | 260 } |
| 342 | 261 |
| 343 void FakeWebGraphicsContext3D::bindFramebuffer( | 262 void FakeWebGraphicsContext3D::bindFramebuffer( |
| 344 WGC3Denum target, WebGLId framebuffer) { | 263 WGC3Denum target, WebGLId framebuffer) { |
| 345 if (!framebuffer) | |
| 346 return; | |
| 347 EXPECT_EQ(kFramebufferId | context_id_ << 16, framebuffer); | |
| 348 } | 264 } |
| 349 | 265 |
| 350 void FakeWebGraphicsContext3D::bindRenderbuffer( | 266 void FakeWebGraphicsContext3D::bindRenderbuffer( |
| 351 WGC3Denum target, WebGLId renderbuffer) { | 267 WGC3Denum target, WebGLId renderbuffer) { |
| 352 if (!renderbuffer) | |
| 353 return; | |
| 354 EXPECT_EQ(kRenderbufferId | context_id_ << 16, renderbuffer); | |
| 355 } | 268 } |
| 356 | 269 |
| 357 void FakeWebGraphicsContext3D::bindTexture( | 270 void FakeWebGraphicsContext3D::bindTexture( |
| 358 WGC3Denum target, WebGLId texture_id) { | 271 WGC3Denum target, WebGLId texture_id) { |
| 359 if (times_bind_texture_succeeds_ >= 0) { | |
| 360 if (!times_bind_texture_succeeds_) { | |
| 361 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, | |
| 362 GL_INNOCENT_CONTEXT_RESET_ARB); | |
| 363 } | |
| 364 --times_bind_texture_succeeds_; | |
| 365 } | |
| 366 | |
| 367 if (!texture_id) | |
| 368 return; | |
| 369 if (texture_id == kExternalTextureId) | |
| 370 return; | |
| 371 DCHECK(std::find(textures_.begin(), textures_.end(), texture_id) != | |
| 372 textures_.end()); | |
| 373 used_textures_.insert(texture_id); | |
| 374 } | 272 } |
| 375 | 273 |
| 376 WebGLId FakeWebGraphicsContext3D::createQueryEXT() { | 274 WebGLId FakeWebGraphicsContext3D::createQueryEXT() { |
| 377 return 1; | 275 return 1; |
| 378 } | 276 } |
| 379 | 277 |
| 380 WGC3Dboolean FakeWebGraphicsContext3D::isQueryEXT(WebGLId query) { | 278 WGC3Dboolean FakeWebGraphicsContext3D::isQueryEXT(WebGLId query) { |
| 381 return true; | 279 return true; |
| 382 } | 280 } |
| 383 | 281 |
| 384 void FakeWebGraphicsContext3D::endQueryEXT(WebKit::WGC3Denum target) { | 282 void FakeWebGraphicsContext3D::endQueryEXT(WebKit::WGC3Denum target) { |
| 385 if (times_end_query_succeeds_ >= 0) { | |
| 386 if (!times_end_query_succeeds_) { | |
| 387 loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, | |
| 388 GL_INNOCENT_CONTEXT_RESET_ARB); | |
| 389 } | |
| 390 --times_end_query_succeeds_; | |
| 391 } | |
| 392 } | 283 } |
| 393 | 284 |
| 394 void FakeWebGraphicsContext3D::getQueryObjectuivEXT( | 285 void FakeWebGraphicsContext3D::getQueryObjectuivEXT( |
| 395 WebKit::WebGLId query, | 286 WebKit::WebGLId query, |
| 396 WebKit::WGC3Denum pname, | 287 WebKit::WGC3Denum pname, |
| 397 WebKit::WGC3Duint* params) { | 288 WebKit::WGC3Duint* params) { |
| 398 // If the context is lost, behave as if result is available. | |
| 399 if (pname == GL_QUERY_RESULT_AVAILABLE_EXT) | |
| 400 *params = 1; | |
| 401 } | 289 } |
| 402 | 290 |
| 403 void FakeWebGraphicsContext3D::setContextLostCallback( | 291 void FakeWebGraphicsContext3D::setContextLostCallback( |
| 404 WebGraphicsContextLostCallback* callback) { | 292 WebGraphicsContextLostCallback* callback) { |
| 405 context_lost_callback_ = callback; | |
| 406 } | 293 } |
| 407 | 294 |
| 408 void FakeWebGraphicsContext3D::loseContextCHROMIUM(WGC3Denum current, | 295 void FakeWebGraphicsContext3D::loseContextCHROMIUM(WGC3Denum current, |
| 409 WGC3Denum other) { | 296 WGC3Denum other) { |
| 410 if (context_lost_) | |
| 411 return; | |
| 412 context_lost_ = true; | |
| 413 if (context_lost_callback_) | |
| 414 context_lost_callback_->onContextLost(); | |
| 415 } | |
| 416 | |
| 417 WebKit::WebGLId FakeWebGraphicsContext3D::NextTextureId() { | |
| 418 WebGLId texture_id = next_texture_id_++; | |
| 419 DCHECK(texture_id < (1 << 16)); | |
| 420 texture_id |= context_id_ << 16; | |
| 421 return texture_id; | |
| 422 } | 297 } |
| 423 | 298 |
| 424 } // namespace cc | 299 } // namespace cc |
| OLD | NEW |