/** Miscellaneous (always disabled) */
GLboolean Lighting;
GLboolean RasterDiscard;
-#if FEATURE_EXT_transform_feedback
GLboolean TransformFeedbackNeedsResume;
-#endif
};
/**
memset(save, 0, sizeof(*save));
save->SavedState = state;
-#if FEATURE_EXT_transform_feedback
/* Pausing transform feedback needs to be done early, or else we won't be
* able to change other state.
*/
!ctx->TransformFeedback.CurrentObject->Paused;
if (save->TransformFeedbackNeedsResume)
_mesa_PauseTransformFeedback();
-#endif
if (state & MESA_META_ALPHA_TEST) {
save->AlphaEnabled = ctx->Color.AlphaEnabled;
if (save->RasterDiscard) {
_mesa_set_enable(ctx, GL_RASTERIZER_DISCARD, GL_TRUE);
}
-#if FEATURE_EXT_transform_feedback
if (save->TransformFeedbackNeedsResume)
_mesa_ResumeTransformFeedback();
-#endif
ctx->Meta->SaveStackDepth--;
}
}
-#if FEATURE_EXT_transform_feedback
-
GLboolean
_mesa_validate_DrawTransformFeedback(struct gl_context *ctx,
GLenum mode,
return GL_TRUE;
}
-
-#endif
const GLvoid *indices, GLsizei primcount,
GLint basevertex);
-#if FEATURE_EXT_transform_feedback
-
extern GLboolean
_mesa_validate_DrawTransformFeedback(struct gl_context *ctx,
GLenum mode,
GLuint stream,
GLsizei numInstances);
-#endif
#endif
return &ctx->CopyReadBuffer;
case GL_COPY_WRITE_BUFFER:
return &ctx->CopyWriteBuffer;
-#if FEATURE_EXT_transform_feedback
case GL_TRANSFORM_FEEDBACK_BUFFER:
if (ctx->Extensions.EXT_transform_feedback) {
return &ctx->TransformFeedback.CurrentBuffer;
}
break;
-#endif
case GL_TEXTURE_BUFFER:
if (_mesa_is_desktop_gl(ctx)
&& ctx->Extensions.ARB_texture_buffer_object) {
#include "varray.h"
#include "arbprogram.h"
#include "nvprogram.h"
-#if FEATURE_EXT_transform_feedback
#include "transformfeedback.h"
-#endif
#include "math/m_matrix.h"
(void) save_Uniform4uiv;
#endif
-#if FEATURE_EXT_transform_feedback
/* These are not compiled into display lists: */
SET_BindBufferBaseEXT(table, _mesa_BindBufferBase);
SET_BindBufferOffsetEXT(table, _mesa_BindBufferOffsetEXT);
save_DrawTransformFeedbackStreamInstanced);
SET_BeginQueryIndexed(table, save_BeginQueryIndexed);
SET_EndQueryIndexed(table, save_EndQueryIndexed);
-#endif
/* GL_ARB_instanced_arrays */
SET_VertexAttribDivisorARB(table, save_VertexAttribDivisor);
}
break;
-#if FEATURE_EXT_transform_feedback
case GL_RASTERIZER_DISCARD:
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
goto invalid_enum_error;
ctx->RasterDiscard = state;
}
break;
-#endif
/* GL 3.1 primitive restart. Note: this enum is different from
* GL_PRIMITIVE_RESTART_NV (which is client state).
CHECK_EXTENSION(ARB_seamless_cube_map);
return ctx->Texture.CubeMapSeamless;
-#if FEATURE_EXT_transform_feedback
case GL_RASTERIZER_DISCARD:
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
goto invalid_enum_error;
CHECK_EXTENSION(EXT_transform_feedback);
return ctx->RasterDiscard;
-#endif
/* GL_NV_primitive_restart */
case GL_PRIMITIVE_RESTART_NV:
ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE;
ctx->Extensions.EXT_texture_swizzle = GL_TRUE;
-#if FEATURE_EXT_transform_feedback
/*ctx->Extensions.EXT_transform_feedback = GL_TRUE;*/
-#endif
ctx->Extensions.EXT_vertex_array_bgra = GL_TRUE;
/*ctx->Extensions.IBM_multimode_draw_arrays = GL_TRUE;*/
ctx->Extensions.MESA_pack_invert = GL_TRUE;
#define FEATURE_remap_table 0
#endif
-#define FEATURE_EXT_transform_feedback FEATURE_GL
-
#define FEATURE_APPLE_object_purgeable FEATURE_GL
#define FEATURE_ATI_fragment_shader FEATURE_GL
return &ctx->Query.CurrentTimerObject;
else
return NULL;
-#if FEATURE_EXT_transform_feedback
case GL_PRIMITIVES_GENERATED:
if (ctx->Extensions.EXT_transform_feedback)
return &ctx->Query.PrimitivesGenerated;
return &ctx->Query.PrimitivesWritten;
else
return NULL;
-#endif
default:
return NULL;
}
struct gl_shader_program *shProg
= _mesa_lookup_shader_program(ctx, program);
-#if FEATURE_EXT_transform_feedback
/* Is transform feedback available in this context?
*/
const bool has_xfb =
(ctx->API == API_OPENGL && ctx->Extensions.EXT_transform_feedback)
|| ctx->API == API_OPENGL_CORE
|| _mesa_is_gles3(ctx);
-#endif
/* Are geometry shaders available in this context?
*/
*params = max_len;
return;
}
-#if FEATURE_EXT_transform_feedback
case GL_TRANSFORM_FEEDBACK_VARYINGS:
if (!has_xfb)
break;
break;
*params = shProg->TransformFeedback.BufferMode;
return;
-#endif
case GL_GEOMETRY_VERTICES_OUT_ARB:
if (!has_gs)
break;
#include "program/prog_parameter.h"
-#if FEATURE_EXT_transform_feedback
-
-
/**
* Do reference counting of transform feedback buffers.
*/
}
-#else /* FEATURE_EXT_transform_feedback */
-
-/* forward declarations */
-static struct gl_transform_feedback_object *
-new_transform_feedback(struct gl_context *ctx, GLuint name);
-
-static void
-delete_transform_feedback(struct gl_context *ctx,
- struct gl_transform_feedback_object *obj);
-
-/* dummy per-context init/clean-up for transform feedback */
-void
-_mesa_init_transform_feedback(struct gl_context *ctx)
-{
- ctx->TransformFeedback.DefaultObject = new_transform_feedback(ctx, 0);
- ctx->TransformFeedback.CurrentObject = ctx->TransformFeedback.DefaultObject;
- _mesa_reference_buffer_object(ctx,
- &ctx->TransformFeedback.CurrentBuffer,
- ctx->Shared->NullBufferObj);
-}
-
-void
-_mesa_free_transform_feedback(struct gl_context *ctx)
-{
- _mesa_reference_buffer_object(ctx,
- &ctx->TransformFeedback.CurrentBuffer,
- NULL);
- ctx->TransformFeedback.CurrentObject = NULL;
- delete_transform_feedback(ctx, ctx->TransformFeedback.DefaultObject);
-}
-
-#endif /* FEATURE_EXT_transform_feedback */
-
-
/** Default fallback for ctx->Driver.NewTransformFeedback() */
static struct gl_transform_feedback_object *
new_transform_feedback(struct gl_context *ctx, GLuint name)
}
-#if FEATURE_EXT_transform_feedback
-
-
/** Default fallback for ctx->Driver.BeginTransformFeedback() */
static void
begin_transform_feedback(struct gl_context *ctx, GLenum mode,
assert(ctx->Driver.ResumeTransformFeedback);
ctx->Driver.ResumeTransformFeedback(ctx, obj);
}
-
-#endif /* FEATURE_EXT_transform_feedback */
extern void
_mesa_free_transform_feedback(struct gl_context *ctx);
-#if FEATURE_EXT_transform_feedback
-
extern GLboolean
_mesa_validate_transform_feedback_buffers(struct gl_context *ctx);
extern void GLAPIENTRY
_mesa_ResumeTransformFeedback(void);
-#else /* FEATURE_EXT_transform_feedback */
-
-static inline GLboolean
-_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode)
-{
- return GL_TRUE;
-}
-
-static inline GLboolean
-_mesa_validate_transform_feedback_buffers(struct gl_context *ctx)
-{
- return GL_TRUE;
-}
-
-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 */
const GLvoid *indices,
GLint basevertex);
-#if FEATURE_EXT_transform_feedback
-
extern void GLAPIENTRY
_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
-#endif
-
extern void GLAPIENTRY
_mesa_PrimitiveRestartIndex(GLuint index);
#include "util/u_inlines.h"
#include "cso_cache/cso_context.h"
-#if FEATURE_EXT_transform_feedback
-
struct st_transform_feedback_object {
struct gl_transform_feedback_object base;
functions->PauseTransformFeedback = st_pause_transform_feedback;
functions->ResumeTransformFeedback = st_resume_transform_feedback;
}
-
-#endif /* FEATURE_EXT_transform_feedback */
struct gl_transform_feedback_object;
struct pipe_draw_info;
-#if FEATURE_EXT_transform_feedback
-
extern void
st_init_xformfb_functions(struct dd_function_table *functions);
st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
struct pipe_draw_info *out);
-#else
-
-static INLINE void
-st_init_xformfb_functions(struct dd_function_table *functions)
-{
-}
-
-static INLINE void
-st_transform_feedback_draw_init(struct gl_transform_feedback_object *obj,
- struct pipe_draw_info *out)
-{
-}
-
-#endif /* FEATURE_EXT_transform_feedback */
#endif /* ST_CB_XFORMFB_H */
basevertex);
}
-#if FEATURE_EXT_transform_feedback
-
static void
vbo_draw_transform_feedback(struct gl_context *ctx, GLenum mode,
struct gl_transform_feedback_object *obj,
vbo_draw_transform_feedback(ctx, mode, obj, stream, primcount);
}
-#endif
-
/**
* Plug in the immediate-mode vertex array drawing commands into the
* givven vbo_exec_context object.
exec->vtxfmt.DrawElementsInstancedBaseInstance = vbo_exec_DrawElementsInstancedBaseInstance;
exec->vtxfmt.DrawElementsInstancedBaseVertex = vbo_exec_DrawElementsInstancedBaseVertex;
exec->vtxfmt.DrawElementsInstancedBaseVertexBaseInstance = vbo_exec_DrawElementsInstancedBaseVertexBaseInstance;
-#if FEATURE_EXT_transform_feedback
exec->vtxfmt.DrawTransformFeedback = vbo_exec_DrawTransformFeedback;
exec->vtxfmt.DrawTransformFeedbackStream =
vbo_exec_DrawTransformFeedbackStream;
vbo_exec_DrawTransformFeedbackInstanced;
exec->vtxfmt.DrawTransformFeedbackStreamInstanced =
vbo_exec_DrawTransformFeedbackStreamInstanced;
-#endif
}
primcount, basevertex);
}
-#if FEATURE_EXT_transform_feedback
-
void GLAPIENTRY
_mesa_DrawTransformFeedback(GLenum mode, GLuint name)
{
vbo_exec_DrawTransformFeedback(mode, name);
}
-
-#endif