On Mon, Apr 5, 2010 at 6:06 PM, Chia-I Wu <olva...@gmail.com> wrote:
> On Mon, Apr 5, 2010 at 3:38 PM, Dave Airlie <airl...@gmail.com> wrote:
>> On Mon, Apr 5, 2010 at 5:24 PM, Chia-I Wu <olva...@gmail.com> wrote:
>>> On Mon, Apr 5, 2010 at 1:41 PM, Dave Airlie <airl...@gmail.com> wrote:
>>>> On Mon, Apr 5, 2010 at 2:37 PM, Chia-I Wu <olva...@gmail.com> wrote:
>>>>> On Mon, Apr 5, 2010 at 12:00 PM, Dave Airlie <airl...@gmail.com> wrote:
>>>>>>> The attached patch fixes tfp test for me (with i915g).  Could you see 
>>>>>>> if r300g
>>>>>>> passes the test with the patch?
>>>>>>> The teximage callback has an internal_format parameter that specifies 
>>>>>>> how the
>>>>>>> pipe texture should be treated.  It can differ from the format of the 
>>>>>>> texture.
>>>>>>> It seems to suffice for TFP.  I was lazy enough not to use it :(
>>>>>> That was my first attempt also, however it fails as the texture is
>>>>>> already created, and
>>>>>> in r300g we already have worked out the hw state assuming the texture
>>>>>> format won't
>>>>>> change. This seems to be what gallium expects. So in this case you end
>>>>>> up recreating
>>>>>> a new texture at finalise because the formats don't match and you lose
>>>>>> the pixmap.
>>>>> r300g does not see the texture before st_finalize_texture, right?  It 
>>>>> seems to
>>>>> me that the patch should give the correct behavior but a (really bad)
>>>>> unnecessary texture copy in st_finalize_texture.  Could we avoid the copy 
>>>>> by
>>>>> solely changing the sampler view?
>>>> It sees the texture via
>>>> dri_st_framebuffer_validate_att(drawable->stfb,
>>>> ST_ATTACHMENT_FRONT_LEFT)
>>>> which causes the texture to be creates from the dri2 buffer handle,
>>>> The thing is we need the exact buffer object we get from the X server,
>>>> we can't copy it to another texture later, as it destroys the shared 
>>>> texture
>>>> and just seems to create another private one.
>>> Suppose a PIPE_FORMAT_B8G8R8A8_UNORM GLXPixmap is created both for 
>>> rendering,
>>> and t-f-p texturing with GLX_TEXTURE_FORMAT_RGB_EXT.  The front left buffer 
>>> of
>>> the pixmap should be a single PIPE_FORMAT_B8G8R8A8_UNORM pipe_texture.  When
>>> glXBindTexImageEXT is called, st/mesa should "view" the pipe_texture as if
>>> there is no alpha channel.  It is hacky for st/dri to create another
>>> pipe_texture from the same dri2 buffer handle with a different format and 
>>> pass
>>> the new pipe_texture to st/mesa.
>>>
>>> To achieve the "viewing" thing efficiently, st/mesa should create a
>>> PIPE_FORMAT_B8G8R8X8_UNORM sampler view for the pipe_texture (I suppose 
>>> this is
>>> what a sampler view for?  No?).  This is contrary to performing an implicit
>>> copy on the pipe_texture only to ignore the alpha channel, which is what
>>> st_finalize_texture does.  IIRC, tfp allows an implementation to perform an
>>> implicit copy upon binding.  Both behaviors are correct in this sense, but 
>>> the
>>> latter is obviously undesirable.
>>>
>>
>> Yes a sampler view seems the sanest. The latter behaviour might be
>> correct but doesn't
>> work here, at least with the equiv patch I tried originally the test
>> still failed, so it would be
>> correct if it worked though slower.
> The patch I sent earlier works here with i915g.  I am not sure where it goes
> wrong with r300g.  Do you mind have a look into it?

Yeah I suspect we have an issue in r300g alright, we use a stride override
when we get the texture from TFP, and this might not be propogated properly
when we copy it later.

Dave.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to