[Mesa-dev] [PATCH] i965: Advertise 8 bits subpixel precision for viewport bounds on gen6+
danylo
danylo.piliaiev at gmail.com
Tue Jun 19 08:35:17 UTC 2018
Hi Lionel,
Indeed the value 8 here is questionable. I picked it because other
drivers advertise the same value e.g. in Mesa radeon returns 8 for gl
and vulkan or on Windows Intel's driver returns 8. But why 8? It's some
kind of mystery.
> "If the implementation truely has floating point viewport bounds, it
> may report a sufficiently high value to indicate this. "
8 seems to be a sufficiently high value (it seems if someone even checks
the value it's going like 'precision > 0' - it is used as a flag). But
still it's probably not good enough argument...
Floating point (IEEE 754) has 24 bits of significand precision, in other
way - 6 to 9 significant decimal digits. And drivers return 8, the only
8 in float-point is 8 exponent bits.
Unless someone knows why 8, there two paths:
* Left it to be 8 - be the same as other drivers
* Make 24 - to reflect 24 bits of significand precision of float
- Danil
On 18.06.18 17:27, Lionel Landwerlin wrote:
> Hey Danylo,
>
> Thanks for this patch.
> I'm not really an expert here but my understanding is that it should
> reflect the number of bits in fixed point precision.
> We use 32bits floats in the packets sent to the hardware.
> Quoting the spec :
>
> "If the implementation truely has floating point viewport bounds, it
> may report a sufficiently high value to indicate this. "
>
> Maybe we should use something a bit bigger than 8?
>
> Cheers,
>
> -
> Lionel
>
> On 18/06/18 13:50, Danylo Piliaiev wrote:
>> We use floating-points for viewport bounds so VIEWPORT_SUBPIXEL_BITS
>> should reflect this.
>>
>> Bugzilla:https://bugs.freedesktop.org/show_bug.cgi?id=105975
>>
>> Signed-off-by: Danylo Piliaiev<danylo.piliaiev at globallogic.com>
>> ---
>> src/mesa/drivers/dri/i965/brw_context.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
>> index 9ced230..eacf326 100644
>> --- a/src/mesa/drivers/dri/i965/brw_context.c
>> +++ b/src/mesa/drivers/dri/i965/brw_context.c
>> @@ -688,7 +688,7 @@ brw_initialize_context_constants(struct brw_context *brw)
>> /* ARB_viewport_array, OES_viewport_array */
>> if (devinfo->gen >= 6) {
>> ctx->Const.MaxViewports = GEN6_NUM_VIEWPORTS;
>> - ctx->Const.ViewportSubpixelBits = 0;
>> + ctx->Const.ViewportSubpixelBits = 8;
>>
>> /* Cast to float before negating because MaxViewportWidth is unsigned.
>> */
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180619/e6eb83b9/attachment-0001.html>
More information about the mesa-dev
mailing list