[Mesa-dev] Status of VDPAU and XvMC state-trackers (was Re: Build error on current xvmc-r600 pipe-video)

Alex Deucher alexdeucher at gmail.com
Tue Apr 26 14:27:25 PDT 2011


2011/4/26 Alex Deucher <alexdeucher at gmail.com>:
> 2011/4/26 Christian König <deathsimple at vodafone.de>:
>> Hi Alex,
>>
>> Am Dienstag, den 26.04.2011, 09:52 -0400 schrieb Alex Deucher:
>>> This looks great Christian.  Nice work.  One quick note regarding
>>> 68cc6bc5d8b6986acc7f5780d705f4ae9be2a446, COLOR[0-7]_INFO does need a
>>> bo.  It's required since that reg has the tiling field and we need the
>>> reloc to know if the surface is tiled or not.
>>
>> Ah, thanks for that. I was really wondering why this register was market
>> with this flag, because it contains neither addr nor length of a block.
>>
>> But one question remains: What's the correct way to fix that?
>>
>> Hacking the winsys code to do the relocation only when a bo is specified
>> is easy, but I'm not really sure what the drm cb checker will say to
>> that. Ok, I just implemented this while typing and it seems to work fine
>> (at least on kernel 2.6.37).
>>
>> Another open end I wanted to ask you is about this diff fragment from
>> r600_state.c:
>>
>>        /* on R600 this can't be set if BLEND_CLAMP isn't set,
>>           if BLEND_FLOAT32 is set of > 11 bits in a UNORM or SNORM */
>> -       if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS &&
>> -           desc->channel[i].size < 12)
>> +       if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS && desc->channel[i].size < 12) {
>> +               //TODO: Seems to work on RV710, but i have no idea what to do between R600-RV710
>> +               if (rctx->family < CHIP_RV710) {
>> +                       color_info |= S_0280A0_BLEND_CLAMP(1);
>> +                       color_info_mask |= S_0280A0_BLEND_CLAMP(1);
>> +               }
>>                color_info |= S_0280A0_SOURCE_FORMAT(V_0280A0_EXPORT_NORM);
>> +       }
>>
>> According to the documentation and comments BLEND_CLAMP seems to be
>> necessary on R600 with 8bit snorm buffers, but this implies that we
>> would never be able to fully implement the clamping control from
>> ARB_color_buffer_float spec...
>>
>> Tests on my RV710 are showing that 8bit snorm buffers are still working
>> quite fine even without BLEND_CLAMP, so what does R600 means in this
>> case? R6xx, but not R7xx chipset family? or just the original R600
>> chipset?
>
> Setting SOURCE_FORMAT to EXPORT_NORM (1) is merely an optimization.
> Leaving SOURCE_FORMAT at 0 will work in all cases, but is less
> efficient.  The conditions for the setting the SOURCE_FORMAT=1
> optimization are as follows:
>
> R600/RV6xx:
> BLEND_CLAMP is enabled
> BLEND_FLOAT32 is disabled
> 11-bit or smaller UNORM/SNORM/SRGB
>
> R7xx:
> 11-bit or smaller UNORM/SNORM/SRGB
> 16-bit or smaller FLOAT
>
> Also, note that the following fields in CB_COLOR[0-7]_INFO are gone in r7xx:
> READ_SIZE, CLEAR_COLOR, BLEND_FLOAT32, and TILE_COMPACT.

And for completeness, evergreen/NI is the same as r7xx.

Alex

>
> Alex
>
>>
>> Regards,
>> Christian.
>>
>>
>


More information about the mesa-dev mailing list