[Mesa-dev] [PATCH 1/4] xa: handle solid-fill src/mask

Rob Clark robdclark at gmail.com
Thu Apr 3 07:51:56 PDT 2014


On Thu, Apr 3, 2014 at 10:41 AM, Brian Paul <brianp at vmware.com> wrote:
> On 04/03/2014 08:13 AM, Rob Clark wrote:
>>
>> On Thu, Apr 3, 2014 at 10:07 AM, Brian Paul <brianp at vmware.com> wrote:
>>>
>>> On 04/02/2014 11:17 PM, Thomas Hellstrom wrote:
>>>>
>>>>
>>>> On 04/01/2014 05:04 PM, Rob Clark wrote:
>>>>>
>>>>>
>>>>> From: Rob Clark <robclark at freedesktop.org>
>>>>>
>>>>> Add support to property handle solid-fill src and/or mask.  Without
>>>>> this
>>>>> we fallback to sw a lot for common things like text rendering.
>>>>>
>>>>> Signed-off-by: Rob Clark <robclark at freedesktop.org>
>>>>> ---
>>>>>    src/gallium/state_trackers/xa/xa_composite.c |  88 ++++----
>>>>>    src/gallium/state_trackers/xa/xa_priv.h      |   7 +-
>>>>>    src/gallium/state_trackers/xa/xa_renderer.c  | 289
>>>>> ++++++++++++++++-----------
>>>>>    src/gallium/state_trackers/xa/xa_tgsi.c      |  31 ++-
>>>>>    4 files changed, 242 insertions(+), 173 deletions(-)
>>>>
>>>>
>>>>
>>>> Rob,
>>>> While testing this patch it looks like we sometimes set two samplers,
>>>> and the first one is NULL.
>>>> The SVGA driver asserts on that condition.
>>>> We might need to move the active sampler to the first entry in that
>>>> case, and adjust tex coords and shader accordingly.
>>>>
>>>> I'll discuss with BrianP.
>>>
>>>
>>>
>>> I think the root problem is a disagreement between texture samplers and
>>> sampler views.  If a texture sampler is non-null, the corresponding
>>> sampler
>>> view be should be non-null too, and vice versa.
>>>
>>> We're tripping over an assertion when a a sampler view is non-null but
>>> the
>>> corresponding sampler is NULL.
>>
>>
>> Right..
>>
>> Well, I think it would be not to hard to make things always start with
>> SAMP[0], which would avoid this.  But I am pretty fuzzy about whether
>> it is the driver or state tracker that is wrong here..  I started with
>> the assumption that it was just a freedreno bug, but if it causes
>> problem w/ vmware too, then maybe the state tracker is at fault.
>
>
> I believe the general policy is that drivers can assume they're being passed
> valid input and consistent state.  State trackers shouldn't pass
> inconsistent state to drivers.
>
> In this case, the number of texture samplers and sampler views is
> inconsistent.  The drivers could examine the current shader to determine
> which samplers/views are actually used (which might be a subset of what was
> specified by the state tracker).  But that's extra work that all drivers
> would have to implement.  It seems much more economical to take care of this
> in the state trackers.

ok.. I'll have a go later today at re-working this patch to just use
SAMP[0..n] rather than hard-coding SAMP[0] to src and SAMP[1] to mask.
 That seems like the easiest way to fix this.

I don't suppose you tested just the other 3 patches?  If those are ok
for vmware, I think we could go ahead and push 2/4 thru 4/4.

BR,
-R

> -Brian


More information about the mesa-dev mailing list