2011/4/26 Alex Deucher <alexdeuc...@gmail.com>: > 2011/4/26 Christian König <deathsim...@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. >> >> > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev