[Mesa-dev] [PATCH v5 56/70] mesa: Add queries for GL_SHADER_STORAGE_BUFFER

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Sep 15 03:38:21 PDT 2015



On 15/09/15 12:20, Tapani Pälli wrote:
> As what Ilia said .. please move the extension checks first and then
> check for the value. There is no reason to repeat mistakes done in the
> past, also there are already getters with correct behavior with
> image_load_store and shader_atomic_counters in this same function.
> 

OK, I will fix it.

> Otherwise looks good to me;
> Reviewed-by: Tapani Pälli <tapani.palli at intel.com>
> 

Thanks!

Sam

> On 09/10/2015 04:36 PM, Iago Toral Quiroga wrote:
>> These handle querying the buffer name attached to a giving binding point
>> as well as the start offset and size of that buffer.
>> ---
>>   src/mesa/main/get.c | 31 +++++++++++++++++++++++++++++++
>>   1 file changed, 31 insertions(+)
>>
>> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
>> index d5df530..24442f3 100644
>> --- a/src/mesa/main/get.c
>> +++ b/src/mesa/main/get.c
>> @@ -1001,6 +1001,10 @@ find_custom_value(struct gl_context *ctx, const
>> struct value_desc *d, union valu
>>      case GL_UNIFORM_BUFFER_BINDING:
>>         v->value_int = ctx->UniformBuffer->Name;
>>         break;
>> +   /* GL_ARB_shader_storage_buffer_object */
>> +   case GL_SHADER_STORAGE_BUFFER_BINDING:
>> +      v->value_int = ctx->ShaderStorageBuffer->Name;
>> +      break;
>>      /* GL_ARB_timer_query */
>>      case GL_TIMESTAMP:
>>         if (ctx->Driver.GetTimestamp) {
>> @@ -1935,6 +1939,33 @@ find_value_indexed(const char *func, GLenum
>> pname, GLuint index, union value *v)
>>         v->value_int = ctx->UniformBufferBindings[index].Size;
>>         return TYPE_INT;
>>
>> +   /* ARB_shader_storage_buffer_object */
>> +   case GL_SHADER_STORAGE_BUFFER_BINDING:
>> +      if (index >= ctx->Const.MaxShaderStorageBufferBindings)
>> +         goto invalid_value;
>> +      if (!ctx->Extensions.ARB_shader_storage_buffer_object)
>> +         goto invalid_enum;
>> +      v->value_int =
>> ctx->ShaderStorageBufferBindings[index].BufferObject->Name;
>> +      return TYPE_INT;
>> +
>> +   case GL_SHADER_STORAGE_BUFFER_START:
>> +      if (index >= ctx->Const.MaxShaderStorageBufferBindings)
>> +         goto invalid_value;
>> +      if (!ctx->Extensions.ARB_shader_storage_buffer_object)
>> +         goto invalid_enum;
>> +      v->value_int = ctx->ShaderStorageBufferBindings[index].Offset <
>> 0 ? 0 :
>> +                     ctx->ShaderStorageBufferBindings[index].Offset;
>> +      return TYPE_INT;
>> +
>> +   case GL_SHADER_STORAGE_BUFFER_SIZE:
>> +      if (index >= ctx->Const.MaxShaderStorageBufferBindings)
>> +         goto invalid_value;
>> +      if (!ctx->Extensions.ARB_shader_storage_buffer_object)
>> +         goto invalid_enum;
>> +      v->value_int = ctx->ShaderStorageBufferBindings[index].Size < 0
>> ? 0 :
>> +                     ctx->ShaderStorageBufferBindings[index].Size;
>> +      return TYPE_INT;
>> +
>>      /* ARB_texture_multisample / GL3.2 */
>>      case GL_SAMPLE_MASK_VALUE:
>>         if (index != 0)
>>
> _______________________________________________
> 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