[Mesa-dev] [PATCH] st/mesa: add ARB_shadow_ambient support

Brian Paul brianp at vmware.com
Fri Mar 11 08:17:09 PST 2011


I'm on the fence about this one too.  I don't think it's used by many 
applications.

-Brian

On 03/11/2011 08:44 AM, Roland Scheidegger wrote:
> I believe the reason it wasn't implemented in gallium was that it's an
> extension which isn't widely used (some of the IHVs don't support it).
> So if the hw needs to implement it in the shader anyway, it's probably
> not worth it because any app wanting to use it will just be able to use
> a shader itself instead.
> It is a simple extension though, so I'm not really against it in principle.
>
> Roland
>
>
> Am 11.03.2011 05:35, schrieb Marek Olšák:
>> It's not nice to see this implemented for r300 and not enable it.
>> I guess this is something the other drivers needn't care about.
>> ---
>>   src/gallium/include/pipe/p_defines.h     |    1 +
>>   src/gallium/include/pipe/p_state.h       |    1 +
>>   src/mesa/state_tracker/st_atom_sampler.c |    1 +
>>   src/mesa/state_tracker/st_extensions.c   |    4 ++++
>>   4 files changed, 7 insertions(+), 0 deletions(-)
>>
>> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
>> index bac3300..67ffd83 100644
>> --- a/src/gallium/include/pipe/p_defines.h
>> +++ b/src/gallium/include/pipe/p_defines.h
>> @@ -463,6 +463,7 @@ enum pipe_cap {
>>      PIPE_CAP_SHADER_STENCIL_EXPORT,
>>      PIPE_CAP_TGSI_INSTANCEID,
>>      PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR,
>> +   PIPE_CAP_SHADOW_COMPARE_FAIL_VALUE,
>>   };
>>
>>   /* Shader caps not specific to any single stage */
>> diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
>> index cf6c5b5..6e36a18 100644
>> --- a/src/gallium/include/pipe/p_state.h
>> +++ b/src/gallium/include/pipe/p_state.h
>> @@ -268,6 +268,7 @@ struct pipe_sampler_state
>>      float lod_bias;               /**<  LOD/lambda bias */
>>      float min_lod, max_lod;       /**<  LOD clamp range, after bias */
>>      float border_color[4];
>> +   float compare_fail_value;
>>   };
>>
>>
>> diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
>> index 474cbd5..066f43e 100644
>> --- a/src/mesa/state_tracker/st_atom_sampler.c
>> +++ b/src/mesa/state_tracker/st_atom_sampler.c
>> @@ -192,6 +192,7 @@ update_samplers(struct st_context *st)
>>               sampler->compare_mode = PIPE_TEX_COMPARE_R_TO_TEXTURE;
>>               sampler->compare_func
>>                  = st_compare_func_to_pipe(texobj->CompareFunc);
>> +            sampler->compare_fail_value = texobj->CompareFailValue;
>>            }
>>
>>            st->state.num_samplers = su + 1;
>> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
>> index e34f90f..a83e5db 100644
>> --- a/src/mesa/state_tracker/st_extensions.c
>> +++ b/src/mesa/state_tracker/st_extensions.c
>> @@ -519,6 +519,10 @@ void st_init_extensions(struct st_context *st)
>>         ctx->Extensions.ARB_instanced_arrays = GL_TRUE;
>>      }
>>
>> +   if (screen->get_param(screen, PIPE_CAP_SHADOW_COMPARE_FAIL_VALUE)) {
>> +      ctx->Extensions.ARB_shadow_ambient = GL_TRUE;
>> +   }
>> +
>>      if (screen->fence_finish) {
>>         ctx->Extensions.ARB_sync = GL_TRUE;
>>      }
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> .
>



More information about the mesa-dev mailing list