Re: [Mesa-dev] [PATCH 2/5] mesa: Make validate_texbuffer_format function available externally

2013-12-10 Thread servuswiegehtz


On 10.12.2013 17:23, Brian Paul wrote:
> On 12/10/2013 06:13 AM, Pi Tabred wrote:
>>   - change storage class from static to extern
>>   - rename validate_texbuffer_format to _mesa_validate_texbuffer_format
>> ---
>>   src/mesa/main/teximage.c | 398
>> ---
>>   src/mesa/main/teximage.h |   4 +
>>   2 files changed, 206 insertions(+), 196 deletions(-)
>>
>> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
>> index 7ec3e20..6e04ba5 100644
>> --- a/src/mesa/main/teximage.c
>> +++ b/src/mesa/main/teximage.c
>> @@ -1519,6 +1519,207 @@ _mesa_legal_texture_dimensions(struct
>> gl_context *ctx, GLenum target,
>>   }
>>
>>
>> +static gl_format
>> +get_texbuffer_format(const struct gl_context *ctx, GLenum
>> internalFormat)
>> +{
>> +   switch (internalFormat) {
>> +   case GL_ALPHA8:
>> +  return MESA_FORMAT_A8;
>> +   case GL_ALPHA16:
>> +  return MESA_FORMAT_A16;
>> +   case GL_ALPHA16F_ARB:
>> +  return MESA_FORMAT_ALPHA_FLOAT16;
>> +   case GL_ALPHA32F_ARB:
>> +  return MESA_FORMAT_ALPHA_FLOAT32;
>> +   case GL_ALPHA8I_EXT:
>> +  return MESA_FORMAT_ALPHA_INT8;
>> +   case GL_ALPHA16I_EXT:
>> +  return MESA_FORMAT_ALPHA_INT16;
>> +   case GL_ALPHA32I_EXT:
>> +  return MESA_FORMAT_ALPHA_INT32;
>> +   case GL_ALPHA8UI_EXT:
>> +  return MESA_FORMAT_ALPHA_UINT8;
>> +   case GL_ALPHA16UI_EXT:
>> +  return MESA_FORMAT_ALPHA_UINT16;
>> +   case GL_ALPHA32UI_EXT:
>> +  return MESA_FORMAT_ALPHA_UINT32;
>> +   case GL_LUMINANCE8:
>> +  return MESA_FORMAT_L8;
>> +   case GL_LUMINANCE16:
>> +  return MESA_FORMAT_L16;
>> +   case GL_LUMINANCE16F_ARB:
>> +  return MESA_FORMAT_LUMINANCE_FLOAT16;
>> +   case GL_LUMINANCE32F_ARB:
>> +  return MESA_FORMAT_LUMINANCE_FLOAT32;
>> +   case GL_LUMINANCE8I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_INT8;
>> +   case GL_LUMINANCE16I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_INT16;
>> +   case GL_LUMINANCE32I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_INT32;
>> +   case GL_LUMINANCE8UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_UINT8;
>> +   case GL_LUMINANCE16UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_UINT16;
>> +   case GL_LUMINANCE32UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_UINT32;
>> +   case GL_LUMINANCE8_ALPHA8:
>> +  return MESA_FORMAT_AL88;
>> +   case GL_LUMINANCE16_ALPHA16:
>> +  return MESA_FORMAT_AL1616;
>> +   case GL_LUMINANCE_ALPHA16F_ARB:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16;
>> +   case GL_LUMINANCE_ALPHA32F_ARB:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32;
>> +   case GL_LUMINANCE_ALPHA8I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
>> +   case GL_LUMINANCE_ALPHA16I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
>> +   case GL_LUMINANCE_ALPHA32I_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_INT16;
>> +   case GL_LUMINANCE_ALPHA8UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_UINT8;
>> +   case GL_LUMINANCE_ALPHA16UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_UINT16;
>> +   case GL_LUMINANCE_ALPHA32UI_EXT:
>> +  return MESA_FORMAT_LUMINANCE_ALPHA_UINT32;
>> +   case GL_INTENSITY8:
>> +  return MESA_FORMAT_I8;
>> +   case GL_INTENSITY16:
>> +  return MESA_FORMAT_I16;
>> +   case GL_INTENSITY16F_ARB:
>> +  return MESA_FORMAT_INTENSITY_FLOAT16;
>> +   case GL_INTENSITY32F_ARB:
>> +  return MESA_FORMAT_INTENSITY_FLOAT32;
>> +   case GL_INTENSITY8I_EXT:
>> +  return MESA_FORMAT_INTENSITY_INT8;
>> +   case GL_INTENSITY16I_EXT:
>> +  return MESA_FORMAT_INTENSITY_INT16;
>> +   case GL_INTENSITY32I_EXT:
>> +  return MESA_FORMAT_INTENSITY_INT32;
>> +   case GL_INTENSITY8UI_EXT:
>> +  return MESA_FORMAT_INTENSITY_UINT8;
>> +   case GL_INTENSITY16UI_EXT:
>> +  return MESA_FORMAT_INTENSITY_UINT16;
>> +   case GL_INTENSITY32UI_EXT:
>> +  return MESA_FORMAT_INTENSITY_UINT32;
>> +   case GL_RGBA8:
>> +  return MESA_FORMAT_RGBA_REV;
>> +   case GL_RGBA16:
>> +  return MESA_FORMAT_RGBA_16;
>> +   case GL_RGBA16F_ARB:
>> +  return MESA_FORMAT_RGBA_FLOAT16;
>> +   case GL_RGBA32F_ARB:
>> +  return MESA_FORMAT_RGBA_FLOAT32;
>> +   case GL_RGBA8I_EXT:
>> +  return MESA_FORMAT_RGBA_INT8;
>> +   case GL_RGBA16I_EXT:
>> +  return MESA_FORMAT_RGBA_INT16;
>> +   case GL_RGBA32I_EXT:
>> +  return MESA_FORMAT_RGBA_INT32;
>> +   case GL_RGBA8UI_EXT:
>> +  return MESA_FORMAT_RGBA_UINT8;
>> +   case GL_RGBA16UI_EXT:
>> +  return MESA_FORMAT_RGBA_UINT16;
>> +   case GL_RGBA32UI_EXT:
>> +  return MESA_FORMAT_RGBA_UINT32;
>> +
>> +   case GL_RG8:
>> +  return MESA_FORMAT_GR88;
>> +   case GL_RG16:
>> +  return MESA_FORMAT_GR1616;
>> +   case GL_RG16F:
>> +  return MESA_FORMAT_RG_FLOAT16;
>> +   case GL_RG32F:
>> +  return MESA_FORMAT_RG_FLOAT32;
>> +   case GL_RG8I:
>> +  return MESA_FORMAT_RG_INT8;
>> +   case GL_RG16I:
>> +  return MESA_FORMAT_RG_INT16;
>> +   case GL_RG32I:
>> +  return MESA

Re: [Mesa-dev] [PATCH 1/7] mesa: implement glBindBuffersBase() and gl BindBuffersRange()

2014-01-03 Thread servuswiegehtz
when you create the patches with git, you can add --cover-letter to the
command line. then you get a PATCH 0/X file with an overview over all
changes and a central place where you can describe what you've done in
general/which extension etc.

On 03.01.2014 01:27, Maxence Le Doré wrote:
> ---
>  src/mesa/main/bufferobj.c | 158 
> ++
>  src/mesa/main/bufferobj.h |   9 ++-
>  2 files changed, 165 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index a3d8f24..bad8f90 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -2706,3 +2706,161 @@ _mesa_InvalidateBufferData(GLuint buffer)
>  */
> return;
>  }
> +
> +void GLAPIENTRY
> +_mesa_BindBuffersBase(GLenum target, GLuint first, GLsizei count,
> +  const GLuint *buffers)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   int i = 0;
> +   GLboolean exceedMaxBindings = GL_FALSE;
> +
> +   switch(target) {
> + case GL_TRANSFORM_FEEDBACK_BUFFER:
> +   first + count > ctx->Const.MaxTransformFeedbackBuffers ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;

all of these are maybe more concise like this:
   exceedMaxBindings = first + count >
   ctx->Const.MaxTransformFeedbackBuffers ?
   GL_TRUE : GL_FALSE;

> + case GL_UNIFORM_BUFFER:
> +   first + count > ctx->Const.MaxUniformBufferBindings ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;
> + case GL_ATOMIC_COUNTER_BUFFER:
> +   first + count > ctx->Const.MaxAtomicBufferBindings ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;
> + default:
> +   _mesa_error(ctx, GL_INVALID_ENUM,
> +   "glBindBuffersBase(invalid target)");
> +   return;
> +   }
> +
> +   if(exceedMaxBindings) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> +   "glBindBuffersBase(first+count)");
> +   return;
> +   }
> +
> +   for(i = 0 ; i < count ; i++) {
> +  GLuint buffer;
> +  struct gl_buffer_object *bufferObj;
> +
> +  if(buffers == NULL)
> +buffer = 0;
> +  else
> +buffer = buffers[i];
> +
> +  if(buffer != 0) {
> +bufferObj = _mesa_lookup_bufferobj(ctx, buffer);
> +if(bufferObj) {
> +  _mesa_BindBufferBase(target, first+i, buffer);
> +}
> +else
> +  _mesa_error(ctx, GL_INVALID_OPERATION,
> +  "glBindBufferBase(buffer[%i] is invalid)", i);
> +  }
> +  else
> +_mesa_BindBufferBase(target, first + i, 0);
> +   }
> +}
> +
> +void GLAPIENTRY
> +_mesa_BindBuffersRange(GLenum target, GLuint first, GLsizei count, 
> +   const GLuint *buffers, const GLintptr *offsets,
> +   const GLsizeiptr *sizes)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   int i = 0;
> +   GLboolean exceedMaxBindings = GL_FALSE;
> +
> +   switch(target) {
> + case GL_TRANSFORM_FEEDBACK_BUFFER:
> +   first + count > ctx->Const.MaxTransformFeedbackBuffers ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;
> + case GL_UNIFORM_BUFFER:
> +   first + count > ctx->Const.MaxUniformBufferBindings ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;
> + case GL_ATOMIC_COUNTER_BUFFER:
> +   first + count > ctx->Const.MaxAtomicBufferBindings ?
> +   exceedMaxBindings = GL_TRUE : exceedMaxBindings = GL_FALSE;
> +   break;
> + default:
> +   _mesa_error(ctx, GL_INVALID_ENUM,
> +   "glBindBuffersRange(invalid target)");
> +   return;
> +   }
> +
> +   if(exceedMaxBindings) {
> + _mesa_error(ctx, GL_INVALID_OPERATION,
> +   "glBindBuffersRange(first+count)");
> +   return;
> +   }
> +
> +   for(i = 0 ; i < count ; i++) {
> +  GLuint buffer;
> +  GLintptr offset;
> +  GLsizeiptr size; 
> +  struct gl_buffer_object *bufferObj;
> +
> +  if(buffers == NULL)
> +buffer = 0;
> +  else {
> +buffer = buffers[i];
> +offset = offsets[i];
> +size = sizes[i];
> +  }
> +
> +  if(buffer != 0) {
> +bufferObj = _mesa_lookup_bufferobj(ctx, buffer);
> +if(bufferObj) {
> +  GLboolean validOffet, validSize;
> +
> +  switch(target) {
> +case GL_TRANSFORM_FEEDBACK_BUFFER:
> +  (offset >= 0) ?
> +  validOffset = GL_TRUE : validOffet = GL_FALSE;
> +  (size >= 0) ?
> +  validSize = GL_TRUE : validSize = GL_FALSE;
> +  /* TODO : add target specific checks */
> +  break;
> +case GL_UNIFORM_BUFFER:
> +  (offset >= 0) ?
> +  validOffset = GL_TRUE : validOffet = GL_FALSE;
> +  (size >= 0) ?
> +