[Mesa-dev] Help! CopyImageSubData is defeating me

Nicolai Hähnle nhaehnle at gmail.com
Sun Jun 25 22:24:32 UTC 2017


On 25.06.2017 23:42, Ilia Mirkin wrote:
> On Sun, Jun 25, 2017 at 5:39 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
>> On June 25, 2017 2:31:56 PM Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>
>>> On Sun, Jun 25, 2017 at 5:25 PM, Jason Ekstrand <jason at jlekstrand.net>
>>> wrote:
>>>>
>>>> On June 25, 2017 1:40:09 PM Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>>>
>>>>> On Sun, Jun 25, 2017 at 4:33 PM, Jason Ekstrand <jason at jlekstrand.net>
>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> Anyone have thoughts on this? Am I being foolish for trying to hold
>>>>>>> onto GL_RGBA4 texturing? (Any decision here also affects st/nine.)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Yes.  Chances are that you're also doing texture views wrong.  Are
>>>>>> there
>>>>>> any
>>>>>> 4444 formats supported on nvidia hardware?
>>>>>
>>>>>
>>>>>
>>>>> Well, any permutation of a 4444 format is easily supportable for
>>>>> texturing.
>>>>>
>>>>> What's wrong with the texture views? Should be fine... unless I'm
>>>>> missing something. It's really just this issue with RB <-> Texture
>>>>> copies where the RB's internal format is GL_RGBA4 while the *real*
>>>>> internal format is RGBA8. Texture views between e.g. RGB565 and
>>>>> RGBA4444 should work fine (and the fb will fail to validate as one
>>>>> might expect if one were to attach a GL_RGBA4 texture view of a
>>>>> GL_RGB565 texture).
>>>>
>>>>
>>>>
>>>> But what if you have a 4444 and you render to as 4444 and then try to
>>>> texture from it as 565?
>>>
>>>
>>> If you have a 4444 texture and attach it to a FB, then that FB will
>>> not be complete. So you can't render to it in the first place.
>>
>>
>> Ok, then I'm confused as to how you have a copy_image problem.  Is the issue
>> just that gallium won't let you CopyImageSubData into a texture you can't
>> render into?  Why not just treat it as R16 when using it as a copy_image
>> destination?
> 
> No, the issue is copying between a GL_RGBA4 RB and GL_RGBA4 texture.
> Behind the scenes, the GL_RGBA4 RB gets upgraded to a
> 8-bit-per-channel format, while the GL_RGBA4 texture has a
> 4-bit-per-channel format. Then when trying to copy-image between them,
> you have two totally differently-formatted textures.

Bind the GL_RGBA4 destination texture as a GL_RG8UI or GL_R16UI surface 
and render to it using a shader that does the conversion manually?

Cheers,
Nicolai


> 
>    -ilia
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list