[Mesa-dev] [PATCH] llvmpipe: add EXT_packed_float render target format support

Jose Fonseca jfonseca at vmware.com
Fri Mar 22 10:20:28 PDT 2013



----- Original Message -----
> Am 22.03.2013 13:28, schrieb Jose Fonseca:
> >> @@ -1009,6 +1020,17 @@ lp_blend_type_from_format_desc(const struct
> >> util_format_description *format_desc
> >>     unsigned i;
> >>     unsigned chan;
> >>  
> >> +   if (format_desc->format == PIPE_FORMAT_R11G11B10_FLOAT) {
> >> +      /* always use ordinary floats for blending */
> >> +      type->floating = true;
> >> +      type->fixed = false;
> >> +      type->sign = true;
> > 
> > R11G11B10_FLOAT is always positive, so you could set sign to false here. It
> > might save some 0 comparisons.
> Hmm I don't think that's quite right. OpenGL states that blending should
> always be done with signed arithmetic even for packed floats (though the
> incoming fragment shader colors may be subject to clamping depending on
> clamping controls), clamping be done afterwards when packing.
> Also, we do the clamping as part of the packing in any case currently
> (if we know that it's positive we could skip the min() instruction
> though we'd need to pass the lp_type).

Yes, you're right

> >> +      type->norm = false;
> >> +      type->width = 32;
> >> +      type->length = 4;
> >> +      return;
> >> +   }
> >> +
> >>     for (i = 0; i < 4; i++)
> >>        if (format_desc->channel[i].type != UTIL_FORMAT_TYPE_VOID)
> >>           break;

Jose


More information about the mesa-dev mailing list