All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bug 31810] New: r600g: Sampling from an alpha texture in a fragment shader
@ 2010-11-21 12:47 bugzilla-daemon
  2010-11-21 14:53 ` [Bug 31810] " bugzilla-daemon
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: bugzilla-daemon @ 2010-11-21 12:47 UTC (permalink / raw)
  To: dri-devel

https://bugs.freedesktop.org/show_bug.cgi?id=31810

           Summary: r600g: Sampling from an alpha texture in a fragment
                    shader
           Product: Mesa
           Version: git
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/Gallium/r600
        AssignedTo: dri-devel@lists.freedesktop.org
        ReportedBy: otaylor@redhat.com


Created an attachment (id=40447)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=40447)
piglit patch described

The attach piglit addition works on g600c and softpipe fails on r600g.

(The test is close to minimal, but not having diagnosed the bug
I don't know if "sampling from an alpha texture" is the fundamental
thing that needs to be tested or not... or there could even be failing
piglit tests elsewhere that are showing the same problem.)

The TGSI looks right:

DCL IN[0], COLOR, LINEAR
DCL IN[1], GENERIC[0], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL TEMP[0]
  0: TEX TEMP[0], IN[1], SAMP[0], 2D
  1: MUL OUT[0], IN[0], TEMP[0].wwww
  2: END
VERT

Despite spending a lot of time fooling around this yesterday and checking
what I thought were the obvious things I really have no idea what is going
on; hopefully it will be obvious for someone more familiar with the R700
shader code.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug 31810] r600g: Sampling from an alpha texture in a fragment shader
  2010-11-21 12:47 [Bug 31810] New: r600g: Sampling from an alpha texture in a fragment shader bugzilla-daemon
@ 2010-11-21 14:53 ` bugzilla-daemon
  2010-11-22  5:56 ` bugzilla-daemon
  2010-11-22  6:05 ` bugzilla-daemon
  2 siblings, 0 replies; 4+ messages in thread
From: bugzilla-daemon @ 2010-11-21 14:53 UTC (permalink / raw)
  To: dri-devel

https://bugs.freedesktop.org/show_bug.cgi?id=31810

Owen Taylor <otaylor@redhat.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #40447|0                           |1
        is obsolete|                            |

--- Comment #1 from Owen Taylor <otaylor@redhat.com> 2010-11-21 06:53:37 PST ---
Created an attachment (id=40449)
 View: https://bugs.freedesktop.org/attachment.cgi?id=40449
 Review: https://bugs.freedesktop.org/review?bug=31810&attachment=40449

Slightly simpler version of Piglit test

Here's a slightly simpler version of the test (gets rid of multiplying by a
color)

I'm a little reluctant to provide any of the results of my experiments trying
to understand this, since I'm still confused and maybe will just confuse
anybody following on, but in the SQ_TEX_WORD1 generated from:

 0: TEX TEMP[0], IN[0], SAMP[0], 2D

If I manually tweak the DST_SEL_X/DEST_SEL_Y/DEST_SEL_Z/DEST_SEL_W I see the
following results for the loaded stored into the temporary:

 Sel  Result
 xyzw xyzw
 ---------
 1000 1000
 0100 0100
 0010 0010
 0001 0001

 0w00 0000
 0w01 0001

 100w 1001
 1w00 1100 (example A)

 w000 w000
 w001 w001
 ww01 ww01 (example B)
 w100 w100
 w00w w00w

So, in the marked example A above, if I set DST_SEL_X to SQ_SEL_1 and DST_SEL_Y
to SQ_SEL_W and DST_SEL_Z and DST_SEL_W to SQ_SEL_0, then I end up with a value
that has 1's for x and y, and 0's for z and w.

Possibly wrong interpretation: In all the cases above what you an observe is
that the value of a component is the same as if you first replaced w with the
value selected by DST_SEL_X and then applied the actual selector.

So, DST_SEL_Y=SQ_SEL_W in example A gave us 1 because DST_SEL_X=SQ_SEL_1, but
in example B it gave us w because DST_SEL_X=SQ_SEL_1.

This might have something to do with the interaction with the swizzle inherent
to the A8 texture format that sets X,Y,Z=0 and W=X. That would match up with
this only occurring for A8 textures and not for RGBA textures.  but I don't
understand why a swizzle at texture load time would cause the selectors from
INST_TEX to have a double effect. Anyways, I'm still confused. I don't really
have time to work on this more, but if it isn't obvious, then one possible
approach would be to compare the bytecode and texture setup of the classic
driver (which works for this) to what the gallium driver is doing.

Oh, and I should mention that I did my testing on an RV710, in case it's a
r6xx/r7xx difference.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug 31810] r600g: Sampling from an alpha texture in a fragment shader
  2010-11-21 12:47 [Bug 31810] New: r600g: Sampling from an alpha texture in a fragment shader bugzilla-daemon
  2010-11-21 14:53 ` [Bug 31810] " bugzilla-daemon
@ 2010-11-22  5:56 ` bugzilla-daemon
  2010-11-22  6:05 ` bugzilla-daemon
  2 siblings, 0 replies; 4+ messages in thread
From: bugzilla-daemon @ 2010-11-22  5:56 UTC (permalink / raw)
  To: dri-devel

https://bugs.freedesktop.org/show_bug.cgi?id=31810

--- Comment #2 from Dave Airlie <airlied@freedesktop.org> 2010-11-21 21:56:01 PST ---
just FYI for anyone else looking at this:

its something to do with the staged texture upload code. disabling it makes it
all a lot happier

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug 31810] r600g: Sampling from an alpha texture in a fragment shader
  2010-11-21 12:47 [Bug 31810] New: r600g: Sampling from an alpha texture in a fragment shader bugzilla-daemon
  2010-11-21 14:53 ` [Bug 31810] " bugzilla-daemon
  2010-11-22  5:56 ` bugzilla-daemon
@ 2010-11-22  6:05 ` bugzilla-daemon
  2 siblings, 0 replies; 4+ messages in thread
From: bugzilla-daemon @ 2010-11-22  6:05 UTC (permalink / raw)
  To: dri-devel

https://bugs.freedesktop.org/show_bug.cgi?id=31810

Dave Airlie <airlied@freedesktop.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

--- Comment #3 from Dave Airlie <airlied@freedesktop.org> 2010-11-21 22:05:49 PST ---
should be fixed by
d5aadf0d80e8c973ef5cf9d82e97f23f0e3c032b in mesa master.

Thanks Owen for the test program made it a lot easier to track down.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-11-22  6:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-21 12:47 [Bug 31810] New: r600g: Sampling from an alpha texture in a fragment shader bugzilla-daemon
2010-11-21 14:53 ` [Bug 31810] " bugzilla-daemon
2010-11-22  5:56 ` bugzilla-daemon
2010-11-22  6:05 ` bugzilla-daemon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.