mesa: Make FEATURE_EXT_transform_feedback more modular.

This allows transformfeedback.h and st_cb_xformfb.h to be included and
used without knowing if FEATURE_EXT_transform_feedback is enabled.  Fix
build of ES overlay.
This commit is contained in:
Chia-I Wu 2010-05-11 13:20:40 +08:00
parent 903986ca12
commit b093016bd0
6 changed files with 75 additions and 14 deletions

View File

@ -523,15 +523,7 @@ _mesa_create_exec_table(void)
SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT);
/* 352. GL_EXT_transform_feedback */
#if _HAVE_FULL_GL
SET_BeginTransformFeedbackEXT(exec, _mesa_BeginTransformFeedback);
SET_EndTransformFeedbackEXT(exec, _mesa_EndTransformFeedback);
SET_BindBufferRangeEXT(exec, _mesa_BindBufferRange);
SET_BindBufferBaseEXT(exec, _mesa_BindBufferBase);
SET_BindBufferOffsetEXT(exec, _mesa_BindBufferOffsetEXT);
SET_TransformFeedbackVaryingsEXT(exec, _mesa_TransformFeedbackVaryings);
SET_GetTransformFeedbackVaryingEXT(exec, _mesa_GetTransformFeedbackVarying);
#endif
_mesa_init_transform_feedback_dispatch(exec);
/* 364. GL_EXT_provoking_vertex */
SET_ProvokingVertexEXT(exec, _mesa_ProvokingVertexEXT);

View File

@ -35,11 +35,15 @@
#include "context.h"
#include "hash.h"
#include "transformfeedback.h"
#include "main/dispatch.h"
#include "shader/prog_parameter.h"
#include "shader/shader_api.h"
#if FEATURE_EXT_transform_feedback
/**
* Do reference counting of transform feedback buffers.
*/
@ -281,6 +285,18 @@ _mesa_init_transform_feedback_functions(struct dd_function_table *driver)
}
void
_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
{
SET_BeginTransformFeedbackEXT(disp, _mesa_BeginTransformFeedback);
SET_EndTransformFeedbackEXT(disp, _mesa_EndTransformFeedback);
SET_BindBufferRangeEXT(disp, _mesa_BindBufferRange);
SET_BindBufferBaseEXT(disp, _mesa_BindBufferBase);
SET_BindBufferOffsetEXT(disp, _mesa_BindBufferOffsetEXT);
SET_TransformFeedbackVaryingsEXT(disp, _mesa_TransformFeedbackVaryings);
SET_GetTransformFeedbackVaryingEXT(disp, _mesa_GetTransformFeedbackVarying);
}
/**
** Begin API functions
@ -879,3 +895,6 @@ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED
GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE
GL_TRANSFORM_FEEDBACK_BINDING
*/
#endif /* FEATURE_EXT_transform_feedback */

View File

@ -25,9 +25,11 @@
#ifndef TRANSFORM_FEEDBACK_H
#define TRANSFORM_FEEDBACK_H
#include "glheader.h"
#include "main/mtypes.h"
#if FEATURE_EXT_transform_feedback
extern GLboolean
_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode);
@ -44,6 +46,9 @@ _mesa_free_transform_feedback(GLcontext *ctx);
extern void
_mesa_init_transform_feedback_functions(struct dd_function_table *driver);
extern void
_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp);
/*** GL_EXT_transform_feedback ***/
@ -98,5 +103,40 @@ _mesa_ResumeTransformFeedback(void);
extern void GLAPIENTRY
_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
#else /* FEATURE_EXT_transform_feedback */
static INLINE GLboolean
_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode)
{
return GL_TRUE;
}
static INLINE GLboolean
_mesa_validate_transform_feedback_buffers(GLcontext *ctx)
{
return GL_TRUE;
}
static INLINE void
_mesa_init_transform_feedback(GLcontext *ctx)
{
}
static INLINE void
_mesa_free_transform_feedback(GLcontext *ctx)
{
}
static INLINE void
_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
{
}
static INLINE void
_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
{
}
#endif /* FEATURE_EXT_transform_feedback */
#endif /* TRANSFORM_FEEDBACK_H */

View File

@ -40,6 +40,8 @@
#include "st_cb_xformfb.h"
#if FEATURE_EXT_transform_feedback
#if 0
static struct gl_transform_feedback_object *
st_new_transform_feedback(GLcontext *ctx, GLuint name)
@ -127,3 +129,5 @@ st_init_xformfb_functions(struct dd_function_table *functions)
functions->ResumeTransformFeedback = st_resume_transform_feedback;
functions->DrawTransformFeedback = st_draw_transform_feedback;
}
#endif /* FEATURE_EXT_transform_feedback */

View File

@ -29,8 +29,18 @@
#define ST_CB_XFORMFB_H
#if FEATURE_EXT_transform_feedback
extern void
st_init_xformfb_functions(struct dd_function_table *functions);
#else
static INLINE void
st_init_xformfb_functions(struct dd_function_table *functions)
{
}
#endif /* FEATURE_EXT_transform_feedback */
#endif /* ST_CB_XFORMFB_H */

View File

@ -54,9 +54,7 @@
#include "st_cb_queryobj.h"
#include "st_cb_readpixels.h"
#include "st_cb_texture.h"
#if FEATURE_EXT_transform_feedback
#include "st_cb_xformfb.h"
#endif
#include "st_cb_flush.h"
#include "st_cb_strings.h"
#include "st_atom.h"
@ -338,9 +336,7 @@ void st_init_driver_functions(struct dd_function_table *functions)
st_init_flush_functions(functions);
st_init_string_functions(functions);
#if FEATURE_EXT_transform_feedback
st_init_xformfb_functions(functions);
#endif
functions->UpdateState = st_invalidate_state;
}