[Mesa-dev] [Bug 89622] Drivers/Gallium/swrast: Pixel image limited to GL_MAX_TEXTURE_SIZE
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Tue Mar 17 19:48:53 PDT 2015
https://bugs.freedesktop.org/show_bug.cgi?id=89622
--- Comment #5 from Ilia Mirkin <imirkin at alum.mit.edu> ---
(In reply to Dan Sebald from comment #0)
> First, I want to point out that building Mesa from scratch *without* the
> options
>
> --with-dri-drivers=nouveau --with-gallium-drivers=nouveau
>
> produces no nouveau_dri.so library file. There is a nouveau_vieux_dri.so,
> but no nouveau_dri.so. When I then run an app that accesses this newly
> built mesa library files I see the warning message:
>
> libGL error: unable to load driver: nouveau_dri.so
> libGL error: driver pointer missing
> libGL error: failed to load driver: nouveau
>
> It's no harm of course, but if this should not be happening--given
> nourveau_dri.so--wasn't built, I'll file a bug report.
libGL has no idea what's built. It's told by your X server (via DRI2) that it
should look for a DRI driver called "nouveau", so it looks for
"nouveau_dri.so".
> OK, I filed a bug report about vertical white lines in the legacy
> swrast_dri.so associated with intervals of GL_MAX_TEXTURE_SIZE in the x
> dimension of the input image:
>
> https://bugs.freedesktop.org/show_bug.cgi?id=89586
>
> I then went to try the newer Gallium version of the software implementation
> and found that a limitation is placed on the size of the input image to
> GL_MAX_TEXTURE_SIZE. This can be seen in frame buffer images I will attach,
> Screenshot-incomplete_image_x-dimension.png and
> Screenshot-incomplete_image_y-dimension.png where only a portion of the
> gradient image appears. The source of this limitation is in
> src/mesa/state_tracker/st_cb_drawpixels.c. Out of curiousity, I removed the
> limitation as follows:
>
> --- a/src/mesa/state_tracker/st_cb_drawpixels.c
> +++ b/src/mesa/state_tracker/st_cb_drawpixels.c
> @@ -1110,14 +1110,6 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint
> y,
>
> st_validate_state(st);
>
> - /* Limit the size of the glDrawPixels to the max texture size.
> - * Strictly speaking, that's not correct but since we don't handle
> - * larger images yet, this is better than crashing.
> - */
> - clippedUnpack = *unpack;
> - unpack = &clippedUnpack;
> - clamp_size(st->pipe, &width, &height, &clippedUnpack);
> -
> if (format == GL_DEPTH_STENCIL)
> write_stencil = write_depth = GL_TRUE;
> else if (format == GL_STENCIL_INDEX)
>
> and the result is that the image comes out fine.
>
> So, what is the problem here? Is it that not all systems are ensured to
> have non-paged memory, and my system just happens to have it? Can this be
> tested and adjusted accordingly? More generally, it seems that the Gallium
> version of pixel zoom/draw can be done in a more straightforward way than
> legacy swrast is doing. Notice that Gallium is treating the image as blocks
> (i.e., the clip affects both width and height). It shouldn't be difficult
> to write a double loop to write to the frame buffer in blocks (unless there
> is a problem of not being able to select the memory page in the
> st_DrawPixels() routine because that is done prior to the function call).
> What role does the st->pipe play in affecting size of writes?
For those of us still getting with the program... let's say that
max_texture_size = 128 (for simplicity). Is the situation that you have a (say)
256-pixel wide image that you're feeding to glDrawPixels to be put onto a
128-wide texture, and you're using glPixelZoom(0.5) to achieve this?
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150318/3cdea373/attachment-0001.html>
More information about the mesa-dev
mailing list