X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Ftransformfeedback.h;h=87f4080e022d2ab1c17667e748c8af75e7a979b8;hb=23dcbf623f55fedb92d232b2b3e196834c8a1f2e;hp=85f4cbc77ee7b9cf5812fc0b1c06e4fee97ac300;hpb=b82c47215689d1243d1aa810bff7f06d8288d686;p=mesa.git diff --git a/src/mesa/main/transformfeedback.h b/src/mesa/main/transformfeedback.h index 85f4cbc77ee..87f4080e022 100644 --- a/src/mesa/main/transformfeedback.h +++ b/src/mesa/main/transformfeedback.h @@ -16,18 +16,21 @@ * 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 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. + * 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. */ #ifndef TRANSFORM_FEEDBACK_H #define TRANSFORM_FEEDBACK_H +#include +#include "bufferobj.h" #include "compiler.h" #include "glheader.h" -#include "mfeatures.h" +#include "mtypes.h" struct _glapi_table; struct dd_function_table; @@ -39,8 +42,6 @@ _mesa_init_transform_feedback(struct gl_context *ctx); 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); @@ -48,8 +49,10 @@ _mesa_validate_transform_feedback_buffers(struct gl_context *ctx); extern void _mesa_init_transform_feedback_functions(struct dd_function_table *driver); -extern void -_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp); +extern unsigned +_mesa_compute_max_transform_feedback_vertices( + const struct gl_transform_feedback_object *obj, + const struct gl_transform_feedback_info *info); /*** GL_EXT_transform_feedback ***/ @@ -78,7 +81,8 @@ _mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, extern void GLAPIENTRY _mesa_TransformFeedbackVaryings(GLuint program, GLsizei count, - const GLchar **varyings, GLenum bufferMode); + const GLchar * const *varyings, + GLenum bufferMode); extern void GLAPIENTRY _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index, @@ -88,6 +92,9 @@ _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index, /*** GL_ARB_transform_feedback2 ***/ +extern void +_mesa_init_transform_feedback_object(struct gl_transform_feedback_object *obj, + GLuint name); struct gl_transform_feedback_object * _mesa_lookup_transform_feedback_object(struct gl_context *ctx, GLuint name); @@ -110,30 +117,28 @@ _mesa_PauseTransformFeedback(void); extern void GLAPIENTRY _mesa_ResumeTransformFeedback(void); -#else /* FEATURE_EXT_transform_feedback */ - -static inline GLboolean -_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode) +static inline bool +_mesa_is_xfb_active_and_unpaused(const struct gl_context *ctx) { - return GL_TRUE; + return ctx->TransformFeedback.CurrentObject->Active && + !ctx->TransformFeedback.CurrentObject->Paused; } -static inline GLboolean -_mesa_validate_transform_feedback_buffers(struct gl_context *ctx) -{ - return GL_TRUE; -} +extern bool +_mesa_transform_feedback_is_using_program(struct gl_context *ctx, + struct gl_shader_program *shProg); static inline void -_mesa_init_transform_feedback_functions(struct dd_function_table *driver) +_mesa_set_transform_feedback_binding(struct gl_context *ctx, + struct gl_transform_feedback_object *tfObj, GLuint index, + struct gl_buffer_object *bufObj, + GLintptr offset, GLsizeiptr size) { -} + _mesa_reference_buffer_object(ctx, &tfObj->Buffers[index], bufObj); -static inline void -_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp) -{ + tfObj->BufferNames[index] = bufObj->Name; + tfObj->Offset[index] = offset; + tfObj->RequestedSize[index] = size; } -#endif /* FEATURE_EXT_transform_feedback */ - #endif /* TRANSFORM_FEEDBACK_H */