Re: [Mesa-dev] [PATCH 2/5] mesa: Make validate_texbuffer_format function available externally
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()
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) ? > +