On 12/16/2015 05:44 PM, Marek Olšák wrote:
Ok, I'll remove the C++ style comments for the next version from all patches. I'll also add a short explanation about the performance gain here.On Wed, Dec 16, 2015 at 12:05 AM, Miklós Máté <mtm...@gmail.com> wrote:Apitrace showed this call to be 5ms (9 times per frame), but in reality it's about 500us. This shortcut makes it 20us. --- src/mesa/main/teximage.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index ab60a2f..ba13720 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -3393,6 +3393,21 @@ formats_differ_in_component_sizes(mesa_format f1, mesa_format f2) return GL_FALSE; } +static GLboolean +canAvoidRealloc(struct gl_texture_image *texImage, GLenum internalFormat, + GLint x, GLint y, GLsizei width, GLsizei height, GLint border) +{ + if (texImage->InternalFormat != internalFormat) + return false; + if (texImage->Border != border) + return false; + if (texImage->Width2 != width) + return false; + if (texImage->Height2 != height) + return false; + return true; +} + /** * Implement the glCopyTexImage1/2D() functions. */ @@ -3433,6 +3448,20 @@ copyteximage(struct gl_context *ctx, GLuint dims, texObj = _mesa_get_current_tex_object(ctx, target); assert(texObj);Here should be an explanation why it's needed. Also, we don't use "//" comments.
MM
+ _mesa_lock_texture(ctx, texObj); + { + texImage = _mesa_select_tex_image(texObj, target, level); + if (texImage && canAvoidRealloc(texImage, internalFormat, + x, y, width, height, border)) { + _mesa_unlock_texture(ctx, texObj); + //_mesa_debug(0, "using shortcut\n"); + return _mesa_copy_texture_sub_image(ctx, dims, texObj, target, level, + 0, 0, 0, x, y, width, height, "CopyTexImage"); + } + //_mesa_debug(0, "can't shortcut %p, %dx%d\n", texImage, width, height); + } + _mesa_unlock_texture(ctx, texObj); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, internalFormat, GL_NONE, GL_NONE); -- 2.6.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev