Paul Berry <stereotype...@gmail.com> writes: > On 26 February 2013 12:39, Eric Anholt <e...@anholt.net> wrote: > >> I tried to make the presentation be the data that was originally >> probed -- there's a second readpixels that's unfortunately, but we do >> use separate textures so that any workaround relayouts of the probed >> textures don't get tweaked in the process of displaying. >> > > I'm having trouble parsing this sentence. Can you explain further?
Better? commit a01be8e55f6d4345df45d579677d4d4bfedbebbf Author: Eric Anholt <e...@anholt.net> Date: Tue Feb 26 12:23:52 2013 -0800 depthstencil-render-miplevels: Present the results in non-auto mode. I tried to make the presentation match the data that was originally probed out of the buffer. This means not using depth texturing, since on Intel that can trigger texture relayouts. I also left in use of the piglit probe functions for the auto path, so there are two separate readpixels calls on each level in the non-auto case where presentation happens. >> +/** >> + * Presents the results of the rendering on the screen. >> + */ >> +static void >> +render_results_to_screen() >> +{ >> + GLuint tex; >> + >> + printf("\n"); >> + printf("Depth is on the left, stencil is on the right.\n"); >> + printf("Colors should proceed from nearly-black to nearly-red.\n"); >> + >> + piglit_ortho_projection(piglit_width, piglit_height, false); >> > > This function draws an image whose width and height are 2*miplevel0_size. > Since the window size is 512x512, that means that the whole image won't > appear unless miplevel0_size is 256 or less (I believe this explains why > Chad didn't see the image he expected when running > "depthstencil-render-miplevels 1024 d=z24"). > > I'd be ok with a quick and dirty fix to this--for example, if you changed > this to do piglit_ortho_projection(2*miplevel0_size, 2*miplevel0_size, > false) in the case where miplevel0_size > 256, then the whole image would > appear in the window, but scaled down. It's hacky, but I think it would be > good enough for what you're trying to achieve here. Nice hack. I like it. >> + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); >> + glClearColor(0.5, 0.5, 0.5, 0.0); >> + glClear(GL_COLOR_BUFFER_BIT); >> + >> + glGenTextures(1, &tex); >> + glBindTexture(GL_TEXTURE_2D, tex); >> + >> + if (attach_depth) { >> + for (int level = 0; level <= max_miplevel; ++level) { >> + int dim = miplevel0_size >> level; >> + >> + glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, >> + dim, dim, >> + 0, >> + GL_RED, GL_FLOAT, >> + depth_miplevel_data[level]); >> + if (!piglit_check_gl_error(GL_NO_ERROR)) >> + piglit_report_result(PIGLIT_FAIL); >> + } >> + >> + render_tex_to_screen(tex, 0, 1); >> > > Any particular reason the y coordinate is 1 rather than 0? No particularly great reason, other than having done so for many other tests like fbo-generatemipmap.
pgpyI37ModDbg.pgp
Description: PGP signature
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit