From 867f9b07d42c2b49ddb9e5bb17f0ac5c4a80d8ac Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Tue, 8 Mar 2011 11:29:20 +0100 Subject: mesa: add NV_texture_barrier --- src/mapi/glapi/gen/Makefile | 1 + src/mapi/glapi/gen/NV_texture_barrier.xml | 13 ++++++++ src/mapi/glapi/gen/gl_API.xml | 2 ++ src/mesa/SConscript | 1 + src/mesa/drivers/common/driverfuncs.c | 3 ++ src/mesa/main/api_exec.c | 4 +++ src/mesa/main/dd.h | 5 +++ src/mesa/main/extensions.c | 1 + src/mesa/main/mtypes.h | 1 + src/mesa/main/texturebarrier.c | 54 +++++++++++++++++++++++++++++++ src/mesa/main/texturebarrier.h | 44 +++++++++++++++++++++++++ src/mesa/sources.mak | 1 + 12 files changed, 130 insertions(+) create mode 100644 src/mapi/glapi/gen/NV_texture_barrier.xml create mode 100644 src/mesa/main/texturebarrier.c create mode 100644 src/mesa/main/texturebarrier.h (limited to 'src') diff --git a/src/mapi/glapi/gen/Makefile b/src/mapi/glapi/gen/Makefile index 51eaf7e930..1f4642af55 100644 --- a/src/mapi/glapi/gen/Makefile +++ b/src/mapi/glapi/gen/Makefile @@ -98,6 +98,7 @@ API_XML = \ EXT_transform_feedback.xml \ NV_conditional_render.xml \ NV_primitive_restart.xml \ + NV_texture_barrier.xml \ OES_EGL_image.xml \ GL3x.xml diff --git a/src/mapi/glapi/gen/NV_texture_barrier.xml b/src/mapi/glapi/gen/NV_texture_barrier.xml new file mode 100644 index 0000000000..52b1a3c08d --- /dev/null +++ b/src/mapi/glapi/gen/NV_texture_barrier.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 834b6d6403..56c0ec71b3 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -7971,6 +7971,8 @@ + + diff --git a/src/mesa/SConscript b/src/mesa/SConscript index 49637d0ff1..dc9090fb73 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -123,6 +123,7 @@ main_sources = [ 'main/texrender.c', 'main/texstate.c', 'main/texstore.c', + 'main/texturebarrier.c' 'main/transformfeedback.c', 'main/uniforms.c', 'main/varray.c', diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 5389a50011..854dea9450 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -42,6 +42,7 @@ #include "main/fbobject.h" #include "main/texrender.h" #include "main/syncobj.h" +#include "main/texturebarrier.h" #include "main/transformfeedback.h" #include "program/program.h" @@ -188,6 +189,8 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->BlitFramebuffer = _swrast_BlitFramebuffer; + _mesa_init_texture_barrier_functions(driver); + /* APPLE_vertex_array_object */ driver->NewArrayObject = _mesa_new_array_object; driver->DeleteArrayObject = _mesa_delete_array_object; diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 546cdd6198..4da4893648 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -87,6 +87,7 @@ #include "texobj.h" #include "texparam.h" #include "texstate.h" +#include "texturebarrier.h" #include "transformfeedback.h" #include "mtypes.h" #include "varray.h" @@ -719,6 +720,9 @@ _mesa_create_exec_table(void) SET_BlendFuncSeparateiARB(exec, _mesa_BlendFuncSeparatei); SET_BlendEquationiARB(exec, _mesa_BlendEquationi); SET_BlendEquationSeparateiARB(exec, _mesa_BlendEquationSeparatei); + + /* GL_NV_texture_barrier */ + SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV); return exec; } diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 749c30a4cc..0947672a08 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1025,6 +1025,11 @@ struct dd_function_table { struct gl_transform_feedback_object *obj); void (*DrawTransformFeedback)(struct gl_context *ctx, GLenum mode, struct gl_transform_feedback_object *obj); + + /** + * \name GL_NV_texture_barrier interface + */ + void (*TextureBarrier)(struct gl_context *ctx); }; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 68740e24cc..1f39ec92df 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -283,6 +283,7 @@ static const struct extension extension_table[] = { { "GL_NV_point_sprite", o(NV_point_sprite), GL }, { "GL_NV_primitive_restart", o(NV_primitive_restart), GL }, { "GL_NV_texgen_reflection", o(NV_texgen_reflection), GL }, + { "GL_NV_texture_barrier", o(NV_texture_barrier), GL }, { "GL_NV_texture_env_combine4", o(NV_texture_env_combine4), GL }, { "GL_NV_texture_rectangle", o(NV_texture_rectangle), GL }, { "GL_NV_vertex_program1_1", o(NV_vertex_program1_1), GL }, diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 4f83e2e55c..5409abaf1a 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2848,6 +2848,7 @@ struct gl_extensions GLboolean NV_light_max_exponent; GLboolean NV_point_sprite; GLboolean NV_primitive_restart; + GLboolean NV_texture_barrier; GLboolean NV_texgen_reflection; GLboolean NV_texture_env_combine4; GLboolean NV_texture_rectangle; diff --git a/src/mesa/main/texturebarrier.c b/src/mesa/main/texturebarrier.c new file mode 100644 index 0000000000..56cc8718ca --- /dev/null +++ b/src/mesa/main/texturebarrier.c @@ -0,0 +1,54 @@ +/* + * Copyright © 2011 Marek Olšák + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file texturebarrier.c + * Implementation of glTextureBarrierNV. + * + * \author Marek Olšák + */ + +#include "context.h" +#include "texturebarrier.h" + + +static void +_mesa_texture_barrier(struct gl_context *ctx) +{ + /* no-op */ +} + +void +_mesa_init_texture_barrier_functions(struct dd_function_table *driver) +{ + driver->TextureBarrier = _mesa_texture_barrier; +} + +void GLAPIENTRY +_mesa_TextureBarrierNV(void) +{ + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END(ctx); + + ctx->Driver.TextureBarrier(ctx); +} diff --git a/src/mesa/main/texturebarrier.h b/src/mesa/main/texturebarrier.h new file mode 100644 index 0000000000..a84a85b217 --- /dev/null +++ b/src/mesa/main/texturebarrier.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2011 Marek Olšák + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file texturebarrier.h + * GL_NV_texture_barrier + * + * \author Marek Olšák + */ + +#ifndef TEXTUREBARRIER_H +#define TEXTUREBARRIER_H + +#include "glheader.h" + +struct dd_function_table; + +extern void +_mesa_init_texture_barrier_functions(struct dd_function_table *driver); + +extern void GLAPIENTRY +_mesa_TextureBarrierNV(void); + +#endif /* TEXTUREBARRIER_H */ diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index 21e08ed5f3..59782cbd05 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -94,6 +94,7 @@ MAIN_SOURCES = \ main/texrender.c \ main/texstate.c \ main/texstore.c \ + main/texturebarrier.c \ main/transformfeedback.c \ main/uniforms.c \ main/varray.c \ -- cgit v1.2.3