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

Unified Diff: gpu/command_buffer/service/test_helper.cc

Issue 1335873002: Initialize default texture for GL_TEXTURE_3D and GL_TEXTURE_2D_ARRAY (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments from zmo Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/test_helper.cc
diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc
index c3efa89204d5a794337be84ec63c1a6c9f54683f..3143d3c7c95f9e15a30d9f585c28bbb49c35602b 100644
--- a/gpu/command_buffer/service/test_helper.cc
+++ b/gpu/command_buffer/service/test_helper.cc
@@ -58,6 +58,10 @@ T ConstructShaderVariable(
#ifndef COMPILER_MSVC
const GLuint TestHelper::kServiceBlackTexture2dId;
const GLuint TestHelper::kServiceDefaultTexture2dId;
+const GLuint TestHelper::kServiceBlackTexture3dId;
+const GLuint TestHelper::kServiceDefaultTexture3dId;
+const GLuint TestHelper::kServiceBlackTexture2dArrayId;
+const GLuint TestHelper::kServiceDefaultTexture2dArrayId;
const GLuint TestHelper::kServiceBlackTextureCubemapId;
const GLuint TestHelper::kServiceDefaultTextureCubemapId;
const GLuint TestHelper::kServiceBlackExternalTextureId;
@@ -93,10 +97,18 @@ void TestHelper::SetupTextureInitializationExpectations(
bool needs_initialization = (target != GL_TEXTURE_EXTERNAL_OES);
bool needs_faces = (target == GL_TEXTURE_CUBE_MAP);
+ bool is_3d_or_2d_array_target = (target == GL_TEXTURE_3D ||
+ target == GL_TEXTURE_2D_ARRAY);
static GLuint texture_2d_ids[] = {
kServiceBlackTexture2dId,
kServiceDefaultTexture2dId };
+ static GLuint texture_3d_ids[] = {
+ kServiceBlackTexture3dId,
+ kServiceDefaultTexture3dId };
+ static GLuint texture_2d_array_ids[] = {
+ kServiceBlackTexture2dArrayId,
+ kServiceDefaultTexture2dArrayId };
static GLuint texture_cube_map_ids[] = {
kServiceBlackTextureCubemapId,
kServiceDefaultTextureCubemapId };
@@ -112,6 +124,12 @@ void TestHelper::SetupTextureInitializationExpectations(
case GL_TEXTURE_2D:
texture_ids = &texture_2d_ids[0];
break;
+ case GL_TEXTURE_3D:
+ texture_ids = &texture_3d_ids[0];
+ break;
+ case GL_TEXTURE_2D_ARRAY:
+ texture_ids = &texture_2d_array_ids[0];
+ break;
case GL_TEXTURE_CUBE_MAP:
texture_ids = &texture_cube_map_ids[0];
break;
@@ -152,10 +170,17 @@ void TestHelper::SetupTextureInitializationExpectations(
.RetiresOnSaturation();
}
} else {
- EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA,
- GL_UNSIGNED_BYTE, _))
- .Times(1)
- .RetiresOnSaturation();
+ if (is_3d_or_2d_array_target) {
+ EXPECT_CALL(*gl, TexImage3D(target, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA,
+ GL_UNSIGNED_BYTE, _))
+ .Times(1)
+ .RetiresOnSaturation();
+ } else {
+ EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA,
+ GL_UNSIGNED_BYTE, _))
+ .Times(1)
+ .RetiresOnSaturation();
+ }
}
}
}
@@ -166,6 +191,7 @@ void TestHelper::SetupTextureInitializationExpectations(
void TestHelper::SetupTextureManagerInitExpectations(
::gfx::MockGLInterface* gl,
+ bool is_es3_enabled,
const char* extensions,
bool use_default_textures) {
InSequence sequence;
@@ -175,6 +201,13 @@ void TestHelper::SetupTextureManagerInitExpectations(
SetupTextureInitializationExpectations(
gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
+ if (is_es3_enabled) {
+ SetupTextureInitializationExpectations(
+ gl, GL_TEXTURE_3D, use_default_textures);
+ SetupTextureInitializationExpectations(
+ gl, GL_TEXTURE_2D_ARRAY, use_default_textures);
+ }
+
bool ext_image_external = false;
bool arb_texture_rectangle = false;
base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
@@ -211,6 +244,12 @@ void TestHelper::SetupTextureDestructionExpectations(
case GL_TEXTURE_2D:
texture_id = kServiceDefaultTexture2dId;
break;
+ case GL_TEXTURE_3D:
+ texture_id = kServiceDefaultTexture3dId;
+ break;
+ case GL_TEXTURE_2D_ARRAY:
+ texture_id = kServiceDefaultTexture2dArrayId;
+ break;
case GL_TEXTURE_CUBE_MAP:
texture_id = kServiceDefaultTextureCubemapId;
break;
@@ -231,12 +270,20 @@ void TestHelper::SetupTextureDestructionExpectations(
void TestHelper::SetupTextureManagerDestructionExpectations(
::gfx::MockGLInterface* gl,
+ bool is_es3_enabled,
const char* extensions,
bool use_default_textures) {
SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures);
SetupTextureDestructionExpectations(
gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
+ if (is_es3_enabled) {
+ SetupTextureDestructionExpectations(
+ gl, GL_TEXTURE_3D, use_default_textures);
+ SetupTextureDestructionExpectations(
+ gl, GL_TEXTURE_2D_ARRAY,use_default_textures);
+ }
+
bool ext_image_external = false;
bool arb_texture_rectangle = false;
base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
@@ -260,7 +307,7 @@ void TestHelper::SetupTextureManagerDestructionExpectations(
gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures);
}
- EXPECT_CALL(*gl, DeleteTextures(4, _))
+ EXPECT_CALL(*gl, DeleteTextures(6, _))
Zhenyao Mo 2015/09/15 18:37:15 This needs to be conditional. If it's ES2, then 4
qiankun 2015/09/17 09:39:27 This tests "glDeleteTextures(arraysize(black_textu
Zhenyao Mo 2015/09/17 14:47:05 I see. You can use kNumDefaultTextures here inste
qiankun 2015/09/17 15:18:31 Done.
.Times(1)
.RetiresOnSaturation();
}
@@ -343,7 +390,8 @@ void TestHelper::SetupContextGroupInitExpectations(
}
bool use_default_textures = bind_generates_resource;
- SetupTextureManagerInitExpectations(gl, extensions, use_default_textures);
+ SetupTextureManagerInitExpectations(
+ gl, false, extensions, use_default_textures);
}
void TestHelper::SetupFeatureInfoInitExpectations(

Powered by Google App Engine
This is Rietveld 408576698