[Mesa-dev] gallium scaled types
Roland Scheidegger
sroland at vmware.com
Tue Sep 13 13:01:15 PDT 2011
Am 13.09.2011 21:39, schrieb Jose Fonseca:
>
>
> ----- Original Message -----
>> Am 13.09.2011 20:45, schrieb Jose Fonseca:
>>>
>>>
>>> ----- Original Message -----
>>>> José, Roland,
>>>>
>>>> there is a problem with the proposed approach of having the
>>>> convert_to_float flag. That flag might not be supported for
>>>> certain integer formats. We would need to update some more
>>>> places, e.g. is_format_supported:
>>>>
>>>> boolean (*is_format_supported)( struct pipe_screen *, enum
>>>> pipe_format format, enum pipe_texture_target target, unsigned
>>>> sample_count, unsigned bindings, boolean
>>>> can_be_converted_to_float );
>>>
>>>
>>>
>>>> See the last parameter. Ugly, isn't it? There is no other way
>>>> around it.
>>>
>>> AFAIK, is_format_supported() was never used for vertex formats,
>>> just textures. And given that textures can only be sampled
>>> without implicit conversion (i.e., the "pure" vs scaled integers
>>> doesn't apply), I see no need to add can_be_converted_to_float
>>> to is_format_supported().
>>>
>>> I think what we need a is_vertex_format_supported(), or
>>> something like that.
>>
>> No, is_format_supported() definitely is used for vertex buffers
>> and the like (target PIPE_BUFFER, bindings PIPE_BIND_VERTEX_BUFFER
>> etc.).
>
> Ah, OK.
>
>> Given that you want to be able to rebind resources to different
>> attachment points (e.g. render target and vertex buffer) I think
>> it really needs to be unified.
>
> I'm not sure how this currently works. Unlike texture buffer, a
> vertex buffer doesn't have a single or even constant format -- a
> vertex buffer can have an arbitrary number of vertex attribute
> formats, and they can vary along the buffer's life time. I guess
> I'll need to read the code.
I'm not sure it really works correctly for now. I don't think any driver
even allows PIPE_BUFFER used for PIPE_BIND_SAMPLER_VIEW for instance so
it's more theoretical anyway.
But I think it should work because PIPE_BUFFER is literally just a 1
dimensional array of elements, at least if attached as a sampler view or
render target. Not sure though all the interfaces are really right for
it to work, but if not we need to fix them at some point.
Roland
>
> Well, if it's better to continue to use is_format_supported, then
> indeed needs to get that flag in an additional parameter. If the
> number parameters is getting large we can either group them in a
> structure, or create dedicated helper functions for the most common
> cases, e.g.: - one util_is_vertex_format_supported() inline helper
> for vertex formats that doesn't take sample_count & target args - one
> util_is_texture_format_supported() for textures formats, that doesn't
> take the can_be_converted_to_float arg.
>
> Jose
More information about the mesa-dev
mailing list