[Mesa-dev] [PATCH 1/4] xa: handle solid-fill src/mask
Brian Paul
brianp at vmware.com
Thu Apr 3 07:53:07 PDT 2014
On 04/03/2014 08:41 AM, Brian Paul 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.
Though, with the DX10-level SAMPLE instructions, samplers and sampler
views really are independent so the number could be different there.
But with TEX instructions, the numbers should be the same.
-Brian
More information about the mesa-dev
mailing list