Android-x86
Fork
Donation

  • R/O
  • HTTP
  • SSH
  • HTTPS

external-swiftshader: Commit

external/swiftshader


Commit MetaInfo

Revision894858a5bac9bfc8afde903e9c40a26631edde72 (tree)
Time2018-03-27 05:25:07
AuthorNicolas Capens <capn@goog...>
CommiterNicolas Capens

Log Message

Don't upload array texture images six times.

Change-Id: I5be0cc629477b6cfb3ede6b4484f067d1c30b0ec
Reviewed-on: https://swiftshader-review.googlesource.com/17929
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>

Change Summary

Incremental Difference

--- a/src/OpenGL/libGLES_CM/libGLES_CM.cpp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.cpp
@@ -4249,7 +4249,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
42494249 return error(GL_INVALID_VALUE);
42504250 }
42514251
4252- GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
4252+ GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
42534253
42544254 es1::Context *context = es1::getContext();
42554255
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -925,7 +925,7 @@ void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x,
925925 {
926926 return error(GL_INVALID_VALUE);
927927 }
928- // Fall through
928+ // Fall through to GL_TEXTURE_2D case.
929929 case GL_TEXTURE_2D:
930930 if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) ||
931931 height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level))
@@ -3463,24 +3463,24 @@ const GLubyte* GetString(GLenum name)
34633463 case GL_RENDERER:
34643464 return (GLubyte*)"Google SwiftShader";
34653465 case GL_VERSION:
3466- {
3467- es2::Context *context = es2::getContext();
3468- return (context && (context->getClientVersion() >= 3)) ?
3469- (GLubyte*)"OpenGL ES 3.0 SwiftShader " VERSION_STRING :
3470- (GLubyte*)"OpenGL ES 2.0 SwiftShader " VERSION_STRING;
3471- }
3466+ {
3467+ es2::Context *context = es2::getContext();
3468+ return (context && (context->getClientVersion() >= 3)) ?
3469+ (GLubyte*)"OpenGL ES 3.0 SwiftShader " VERSION_STRING :
3470+ (GLubyte*)"OpenGL ES 2.0 SwiftShader " VERSION_STRING;
3471+ }
34723472 case GL_SHADING_LANGUAGE_VERSION:
3473- {
3474- es2::Context *context = es2::getContext();
3475- return (context && (context->getClientVersion() >= 3)) ?
3476- (GLubyte*)"OpenGL ES GLSL ES 3.00 SwiftShader " VERSION_STRING :
3477- (GLubyte*)"OpenGL ES GLSL ES 1.00 SwiftShader " VERSION_STRING;
3478- }
3473+ {
3474+ es2::Context *context = es2::getContext();
3475+ return (context && (context->getClientVersion() >= 3)) ?
3476+ (GLubyte*)"OpenGL ES GLSL ES 3.00 SwiftShader " VERSION_STRING :
3477+ (GLubyte*)"OpenGL ES GLSL ES 1.00 SwiftShader " VERSION_STRING;
3478+ }
34793479 case GL_EXTENSIONS:
3480- {
3481- es2::Context *context = es2::getContext();
3482- return context ? context->getExtensions(GL_INVALID_INDEX) : (GLubyte*)nullptr;
3483- }
3480+ {
3481+ es2::Context *context = es2::getContext();
3482+ return context ? context->getExtensions(GL_INVALID_INDEX) : (GLubyte*)nullptr;
3483+ }
34843484 default:
34853485 return error(GL_INVALID_ENUM, (GLubyte*)nullptr);
34863486 }
@@ -4971,7 +4971,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
49714971 }
49724972 }
49734973
4974- GLenum validationError = ValidateTextureFormatType(format, type, internalformat, target, context->getClientVersion());
4974+ GLenum validationError = ValidateTextureFormatType(format, type, internalformat, target, clientVersion);
49754975 if(validationError != GL_NO_ERROR)
49764976 {
49774977 return error(validationError);
@@ -4989,7 +4989,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
49894989 {
49904990 return error(GL_INVALID_VALUE); // Defining level other than 0 is not allowed
49914991 }
4992- // Fall through
4992+ // Fall through to GL_TEXTURE_2D case.
49934993 case GL_TEXTURE_2D:
49944994 if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) ||
49954995 height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level))
@@ -5018,14 +5018,14 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
50185018 return error(GL_INVALID_ENUM);
50195019 }
50205020
5021- GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
5022-
50235021 validationError = context->getPixels(&data, type, context->getRequiredBufferSize(width, height, 1, format, type));
50245022 if(validationError != GL_NO_ERROR)
50255023 {
50265024 return error(validationError);
50275025 }
50285026
5027+ GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
5028+
50295029 if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB)
50305030 {
50315031 es2::Texture2D *texture = context->getTexture2D(target);
@@ -6267,7 +6267,7 @@ void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei wi
62676267 return error(validationError);
62686268 }
62696269
6270- GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
6270+ GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
62716271 texture->setImage(level, width, height, depth, sizedInternalFormat, format, type, context->getUnpackParameters(), data);
62726272 }
62736273 }
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -264,18 +264,18 @@ GL_APICALL void GL_APIENTRY glReadBuffer(GLenum src)
264264 case GL_COLOR_ATTACHMENT29:
265265 case GL_COLOR_ATTACHMENT30:
266266 case GL_COLOR_ATTACHMENT31:
267- {
268- GLuint index = (src - GL_COLOR_ATTACHMENT0);
269- if(index >= MAX_COLOR_ATTACHMENTS)
270267 {
271- return error(GL_INVALID_OPERATION);
272- }
273- if(readFramebufferName == 0)
274- {
275- return error(GL_INVALID_OPERATION);
268+ GLuint index = (src - GL_COLOR_ATTACHMENT0);
269+ if(index >= MAX_COLOR_ATTACHMENTS)
270+ {
271+ return error(GL_INVALID_OPERATION);
272+ }
273+ if(readFramebufferName == 0)
274+ {
275+ return error(GL_INVALID_OPERATION);
276+ }
277+ context->setFramebufferReadBuffer(src);
276278 }
277- context->setFramebufferReadBuffer(src);
278- }
279279 break;
280280 default:
281281 return error(GL_INVALID_ENUM);
@@ -387,7 +387,7 @@ GL_APICALL void GL_APIENTRY glTexImage3D(GLenum target, GLint level, GLint inter
387387 return error(validationError);
388388 }
389389
390- GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
390+ GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type);
391391 texture->setImage(level, width, height, depth, sizedInternalFormat, format, type, context->getUnpackParameters(), data);
392392 }
393393 }
@@ -3621,6 +3621,7 @@ GL_APICALL void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum
36213621 {
36223622 return error(GL_INVALID_ENUM);
36233623 }
3624+ // Fall through to GL_TEXTURE_2D case.
36243625 case GL_TEXTURE_2D:
36253626 {
36263627 if((width > es2::IMPLEMENTATION_MAX_TEXTURE_SIZE) ||
@@ -3735,10 +3736,8 @@ GL_APICALL void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum
37353736
37363737 for(int level = 0; level < levels; level++)
37373738 {
3738- for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; face++)
3739- {
3740- texture->setImage(level, width, height, depth, internalformat, GL_NONE, GL_NONE, context->getUnpackParameters(), nullptr);
3741- }
3739+ texture->setImage(level, width, height, depth, internalformat, GL_NONE, GL_NONE, context->getUnpackParameters(), nullptr);
3740+
37423741 width = std::max(1, (width / 2));
37433742 height = std::max(1, (height / 2));
37443743 }
Show on old repository browser