On Fri, Jul 15, 2016 at 12:34 PM, Brian Paul <bri...@vmware.com> wrote: > On 07/15/2016 01:19 PM, Anuj Phogat wrote: >> >> On Fri, Jul 15, 2016 at 10:14 AM, Brian Paul <bri...@vmware.com> wrote: >>> >>> If numSamples > 0, we can compute the size of the whole mipmapped >>> texture. >>> That's the case for glTexStorage(GL_PROXY_TEXTURE_x). >>> >>> Also, multiply the texture size by numSamples for MSAA textures. >>> --- >>> src/mesa/main/teximage.c | 48 >>> +++++++++++++++++++++++++++++++++++++++++++++--- >>> 1 file changed, 45 insertions(+), 3 deletions(-) >>> >>> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c >>> index c75f605..0f13d61 100644 >>> --- a/src/mesa/main/teximage.c >>> +++ b/src/mesa/main/teximage.c >>> @@ -40,6 +40,7 @@ >>> #include "image.h" >>> #include "imports.h" >>> #include "macros.h" >>> +#include "mipmap.h" >>> #include "multisample.h" >>> #include "pixelstore.h" >>> #include "state.h" >>> @@ -1268,12 +1269,53 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, >>> GLenum target, >>> mesa_format format, GLuint numSamples, >>> GLint width, GLint height, GLint depth) >>> { >>> + uint64_t bytes, mbytes; >>> + >>> + assert(numSamples > 0); >>> + >>> + if (numLevels > 0) { >>> + /* Compute total memory for a whole mipmap. This is the path >>> + * taken for glTexStorage(GL_PROXY_TEXTURE_x). >>> + */ >>> + unsigned l; >>> + >>> + assert(level == 0); >>> + >>> + bytes = 0; >>> + >>> + for (l = 0; l < numLevels; l++) { >>> + GLint nextWidth, nextHeight, nextDepth; >>> + >>> + /* XXX this doesn't yet account for multisampling */ >>> + bytes += _mesa_format_image_size64(format, width, height, >>> depth); >>> + >>> + if (_mesa_next_mipmap_level_size(target, 0, width, height, >>> depth, >>> + &nextWidth, &nextHeight, >>> + &nextDepth)) { >>> + width = nextWidth; >>> + height = nextHeight; >>> + depth = nextDepth; >>> + } >>> + else { >>> + break; >>> + } >>> + } >>> + } >>> + else { >> >> nitpick. Use } else { >> >>> + /* We just compute the size of one mipmap level. This is the path >>> + * taken for glTexImage(GL_PROXY_TEXTURE_x). >>> + */ >>> + bytes = _mesa_format_image_size64(format, width, height, depth); >> >> Don't we need to multiply bytes by _mesa_num_tex_faces() here too? > > > Uh, that's done a few lines below. > Right. I can now see it's a common code. Sorry for the noise. >>> + } >>> + >>> + bytes *= _mesa_num_tex_faces(target); >>> + bytes *= numSamples; >>> + >>> + mbytes = bytes / (1024 * 1024); /* convert to MB */ >>> + >>> /* We just check if the image size is less than MaxTextureMbytes. >>> * Some drivers may do more specific checks. >>> */ >>> - uint64_t bytes = _mesa_format_image_size64(format, width, height, >>> depth); >>> - uint64_t mbytes = bytes / (1024 * 1024); /* convert to MB */ >>> - mbytes *= _mesa_num_tex_faces(target); >>> return mbytes <= (uint64_t) ctx->Const.MaxTextureMbytes; >>> } >>> >>> -- >>> 1.9.1 >>> >>> _______________________________________________ >>> mesa-dev mailing list >>> mesa-dev@lists.freedesktop.org >>> >>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=CwIBaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=Chw7SvWUSVQKjs40uL5HS7a3CnCLscN8vvbeFek5DJ8&s=OMMsCQ7_rpU1xc2WbqI6X64jcC4_RwtUhV_nnNtgtCE&e= > >
Series is: Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev