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

Roland Scheidegger sroland at vmware.com
Tue Sep 29 11:04:23 PDT 2015


Probably makes sense. Albeit I'm not sure about the L/A/LA/I stuff,
probably apps are aware that trying to render to that may fail (and
hence potentially choosing some rgb format instead of a single-channel
format is really not desirable for those).

Roland


Am 29.09.2015 um 19:50 schrieb Brian Paul:
> 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?
> 
> -Brian
> 
> 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
>>>
>>
> 



More information about the mesa-dev mailing list