On Tue, Jan 31, 2012 at 7:05 PM, Brian Paul <brian.e.p...@gmail.com> wrote: > On Tue, Jan 31, 2012 at 4:47 PM, Ian Romanick <i...@freedesktop.org> wrote: >> From: Ian Romanick <ian.d.roman...@intel.com> >> >> This is a partial revert of f9874fe. It turns out that the types >> don't always match. Specifically, this can happen when doing >> glCopyPixels from a float FBO to a RGBA8 FBO. >> >> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> >> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45429 >> --- >> src/mesa/swrast/s_span.c | 19 +++++++++++++++---- >> 1 files changed, 15 insertions(+), 4 deletions(-) >> >> diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c >> index 28f2f3d..422d86c 100644 >> --- a/src/mesa/swrast/s_span.c >> +++ b/src/mesa/swrast/s_span.c >> @@ -1321,12 +1321,23 @@ _swrast_write_rgba_span( struct gl_context *ctx, >> SWspan *span) >> if (rb) { >> GLchan rgbaSave[MAX_WIDTH][4]; >> >> - if (span->array->ChanType == GL_UNSIGNED_BYTE) { >> - span->array->rgba = span->array->rgba8; >> + GLenum datatype; >> + GLuint comps; >> + >> + _mesa_format_to_type_and_comps(rb->Format, &datatype, &comps); >> + >> + /* set span->array->rgba to colors for render buffer's datatype >> */ >> + if (datatype != span->array->ChanType) { >> + convert_color_type(span, datatype, 0); >> } >> else { >> - span->array->rgba = (void *) >> - span->array->attribs[FRAG_ATTRIB_COL0]; >> + if (span->array->ChanType == GL_UNSIGNED_BYTE) { >> + span->array->rgba = span->array->rgba8; >> + } >> + else { >> + span->array->rgba = (void *) >> + span->array->attribs[FRAG_ATTRIB_COL0]; >> + } >> } >> >> if (!multiFragOutputs && numBuffers > 1) { > > LGTM. Reviewed-by: Brian Paul <bri...@vmware.com>
Candidate for 8.0, right? -Brian _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev