[Mesa-dev] [PATCH 08/19] gallium: add set_tess_state to configure default tessellation parameters

Roland Scheidegger sroland at vmware.com
Mon May 4 09:11:25 PDT 2015


AFAIK this isn't possible with d3d11, but if hw can do it it makes sense
indeed.

For the series:
Reviewed-by: Roland Scheidegger <sroland at vmware.com>


Am 04.05.2015 um 15:33 schrieb Marek Olšák:
> Hi Roland,
> 
> It depends on the hardware. On Radeon, the tessellation evaluation
> shader can read vertex shader outputs directly. That means the
> tessellation control shader is not necessary if the tessellation
> levels are fixed. set_tess_state sets the fixed tessellation levels
> for exactly this case.
> 
> Other hardware may need to generate a pass-through tessellation
> control shader and upload these parameters as constants for the shader
> to use them.
> 
> Marek
> 
> On Mon, May 4, 2015 at 1:29 PM, Roland Scheidegger <sroland at vmware.com> wrote:
>> Seems a bit awkward that you have to set such state separately. I don't
>> know much about how this is supposed to work though, some quick grep
>> says these parameters are used when there's no tessellation control
>> shader, so I guess that's why it is separate state.
>> How does that actually work in hw, can you just switch tesselation
>> control shaders off or do you have to provide some kind of a default
>> tesselation ctrl shader?
>>
>> Roland
>>
>> Am 02.05.2015 um 22:16 schrieb Ilia Mirkin:
>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>> ---
>>>  src/gallium/docs/source/context.rst  | 5 +++++
>>>  src/gallium/include/pipe/p_context.h | 4 ++++
>>>  2 files changed, 9 insertions(+)
>>>
>>> diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst
>>> index 5861f46..0908ee7 100644
>>> --- a/src/gallium/docs/source/context.rst
>>> +++ b/src/gallium/docs/source/context.rst
>>> @@ -79,6 +79,11 @@ objects. They all follow simple, one-method binding calls, e.g.
>>>    should be the same as the number of set viewports and can be up to
>>>    PIPE_MAX_VIEWPORTS.
>>>  * ``set_viewport_states``
>>> +* ``set_tess_state`` configures the default tessellation parameters:
>>> +  * ``default_outer_level`` is the default value for the outer tessellation
>>> +    levels. This corresponds to GL's ``PATCH_DEFAULT_OUTER_LEVEL``.
>>> +  * ``default_inner_level`` is the default value for the inner tessellation
>>> +    levels. This corresponds to GL's ``PATCH_DEFAULT_INNER_LEVEL``.
>>>
>>>
>>>  Sampler Views
>>> diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
>>> index 74c2f2f..afc5d7b 100644
>>> --- a/src/gallium/include/pipe/p_context.h
>>> +++ b/src/gallium/include/pipe/p_context.h
>>> @@ -231,6 +231,10 @@ struct pipe_context {
>>>                               unsigned start_slot, unsigned num_views,
>>>                               struct pipe_sampler_view **);
>>>
>>> +   void (*set_tess_state)(struct pipe_context *,
>>> +                          float default_outer_level[4],
>>> +                          float default_inner_level[2]);
>>> +
>>>     /**
>>>      * Bind an array of shader resources that will be used by the
>>>      * graphics pipeline.  Any resources that were previously bound to
>>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=AwIBaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Vjtt0vs_iqoI31UfJxBl7yv9I2FeiaeAYgMTLKRBc_I&m=HzX4eWNBFKn5LqsznbaYEi0lFpm532okt85OoH3eZJI&s=iRWQuZvAY3E-f6Wp5kG0zNIpnmAYKK3H_jjKT3cdgPs&e= 



More information about the mesa-dev mailing list