[Mesa-dev] gallium-bind-sampler-states branch

Brian Paul brianp at vmware.com
Mon Sep 16 09:18:42 PDT 2013


On 09/16/2013 08:56 AM, Roland Scheidegger wrote:
> Am 14.09.2013 18:24, schrieb Brian Paul:
>> On 09/12/2013 09:06 PM, Chia-I Wu wrote:
>>> Hi Brian,
>>>
>>> On Fri, Sep 13, 2013 at 8:46 AM, Brian Paul <brianp at vmware.com> wrote:
>>>>
>>>> I just pushed a gallium-bind-sampler-states branch to my git repo at
>>>> git://people.freedesktop.org/~brianp/mesa
>>>>
>>>> It replaces the four
>>>> pipe_context::bind_fragment/vertex/geometry/compute_sampler_states()
>>>> functions with a single bind_sampler_states() function:
>>>>
>>>>    void (*bind_sampler_states)(struct pipe_context *,
>>>>                                unsigned shader, unsigned start_slot,
>>>>                                unsigned num_samplers, void **samplers);
>>>>
>>>> At this point start_slot is always zero (at least for non-compute
>>>> shaders).
>>>> And as the updated gallium docs explain, at some point calls to
>>>> bind_sampler_states() will be used to updated sub-ranges, but that never
>>>> happens currently.
>>>>
>>>> I've updated all the drivers, state trackers, utils, etc.
>>>>
>>>> I've tested the svga, llvmpipe and softpipe drivers.  'make check' and a
>>>> texture subset of piglit pass w/out regressions.  I'd appreciate it
>>>> if other
>>>> driver developers would test their favorite driver.
>>> For ilo, the new code does not follow the doc and unbinds samplers not
>>> in range.
>>
>> I think that's OK.  The CSO module (used by the state tracker) currently
>> always calls pipe_context::bind_sampler_states() with start=0 and count
>> such that it sets/replaces all samplers, never a sub-range.  That
>> could/should change in the future.
>>
>> See single_sampler_done() in cso_context.c.
>
> Not all state trackers use cso though.

AFAICT, all src/gallium/state_trackers/ use CSO, except for clover (and 
I did miss a function call change there).  I didn't look at any 
out-of-tree state trackers.


 > While this can be fixed later, I
 > think I'd prefer if the docs would state this isn't really meant to be
 > that way and should be changed in the future in cso and certainly fixed
 > in the drivers.

As I mentioned earlier, I updated the docs to explain how things current 
work and how it should work in the future:

"""
* :ref:`Sampler`: Texture sampler states are bound separately for fragment,
   vertex, geometry and compute shaders with the ``bind_sampler_states``
   function.  The ``start`` and ``num_samplers`` parameters indicate a range
   of samplers to change.  NOTE: at this time, start is always zero and
   the CSO module will always replace all samplers at once (no sub-ranges).
   This may change in the future.
"""

Is that what you mean?

-Brian



More information about the mesa-dev mailing list