[Mesa-dev] [PATCH 2/2] st/mesa: try PIPE_BIND_RENDER_TARGET when choosing float texture formats

Erik Faye-Lund kusmabite at gmail.com
Wed Sep 30 17:08:36 PDT 2015


On Tue, Sep 29, 2015 at 7:50 PM, Brian Paul <brianp at vmware.com> wrote:
>
> I was actually thinking of expanding this change to cover _all_ color formats but wanted to take a small step first.  What do you think?
>

I have some patches in this area sitting around here:

https://github.com/kusma/mesa/commits/color_renderable_fix

In particular:

https://github.com/kusma/mesa/commit/4b72b20dc80a79133c037c7c68413034b228bf66
https://github.com/kusma/mesa/commit/ac5f4575bd11c817c03e7dbc5939f5c0d952d3f1

The first one needs fixing up by using _mesa_base_tex_format instead
of adding it's own implementation.

> On 09/29/2015 11:46 AM, Roland Scheidegger wrote:
>>
>> If that was due to some rgb vs. rgbx thing (that is, could texture from
>> rgb but only render to rgbx) I wonder if the same logic shouldn't also
>> apply to the integer formats.
>> But either way (I guess the app should check fbo completeness in any
>> case so strictly speaking for correctness this isn't really required)
>>
>> Reviewed-by: Roland Scheidegger <sroland at vmware.com>
>>
>> Am 29.09.2015 um 17:39 schrieb Brian Paul:
>>>
>>> For 8-bit RGB(A) texture formats we set the PIPE_BIND_RENDER_TARGET flag
>>> to try to get a hardware format which also supports rendering (for FBO
>>> textures).  Do the same thing for floating point formats.
>>>
>>> This allows the Redway Flat demo to run.
>>> ---
>>>   src/mesa/state_tracker/st_format.c | 6 +++++-
>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
>>> index 0c94428..144b7d6 100644
>>> --- a/src/mesa/state_tracker/st_format.c
>>> +++ b/src/mesa/state_tracker/st_format.c
>>> @@ -1963,7 +1963,11 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target,
>>>      else if (internalFormat == 3 || internalFormat == 4 ||
>>>               internalFormat == GL_RGB || internalFormat == GL_RGBA ||
>>>               internalFormat == GL_RGB8 || internalFormat == GL_RGBA8 ||
>>> -            internalFormat == GL_BGRA)
>>> +            internalFormat == GL_BGRA ||
>>> +            internalFormat == GL_RGB16F ||
>>> +            internalFormat == GL_RGBA16F ||
>>> +            internalFormat == GL_RGB32F ||
>>> +            internalFormat == GL_RGBA32F)
>>>          bindings |= PIPE_BIND_RENDER_TARGET;
>>>
>>>      /* GLES allows the driver to choose any format which matches
>>>
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list