mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 01:38:06 +02:00
i965: Create a new brw_transform_feedback_object subclass.
This adds the basic driver hooks to allocate/free the brw variant.
It doesn't contain any additional information yet, but it will soon.
v2: Use the new _mesa_init_transform_feedback_object helper function
(requested by Eric and Ian).
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
be6227d29d
commit
0d7033c394
3 changed files with 40 additions and 0 deletions
|
|
@ -250,6 +250,8 @@ brw_init_driver_functions(struct brw_context *brw,
|
|||
|
||||
functions->QuerySamplesForFormat = brw_query_samples_for_format;
|
||||
|
||||
functions->NewTransformFeedback = brw_new_transform_feedback;
|
||||
functions->DeleteTransformFeedback = brw_delete_transform_feedback;
|
||||
if (brw->gen >= 7) {
|
||||
functions->BeginTransformFeedback = gen7_begin_transform_feedback;
|
||||
functions->EndTransformFeedback = gen7_end_transform_feedback;
|
||||
|
|
|
|||
|
|
@ -887,6 +887,10 @@ struct intel_batchbuffer {
|
|||
} saved;
|
||||
};
|
||||
|
||||
struct brw_transform_feedback_object {
|
||||
struct gl_transform_feedback_object base;
|
||||
};
|
||||
|
||||
/**
|
||||
* Data shared between each programmable stage in the pipeline (vs, gs, and
|
||||
* wm).
|
||||
|
|
@ -1574,6 +1578,11 @@ extern int intel_translate_logic_op(GLenum opcode);
|
|||
void intel_init_syncobj_functions(struct dd_function_table *functions);
|
||||
|
||||
/* gen6_sol.c */
|
||||
struct gl_transform_feedback_object *
|
||||
brw_new_transform_feedback(struct gl_context *ctx, GLuint name);
|
||||
void
|
||||
brw_delete_transform_feedback(struct gl_context *ctx,
|
||||
struct gl_transform_feedback_object *obj);
|
||||
void
|
||||
brw_begin_transform_feedback(struct gl_context *ctx, GLenum mode,
|
||||
struct gl_transform_feedback_object *obj);
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
* Code to initialize the binding table entries used by transform feedback.
|
||||
*/
|
||||
|
||||
#include "main/bufferobj.h"
|
||||
#include "main/macros.h"
|
||||
#include "brw_context.h"
|
||||
#include "intel_batchbuffer.h"
|
||||
|
|
@ -132,6 +133,34 @@ const struct brw_tracked_state gen6_gs_binding_table = {
|
|||
.emit = brw_gs_upload_binding_table,
|
||||
};
|
||||
|
||||
struct gl_transform_feedback_object *
|
||||
brw_new_transform_feedback(struct gl_context *ctx, GLuint name)
|
||||
{
|
||||
struct brw_context *brw = brw_context(ctx);
|
||||
struct brw_transform_feedback_object *brw_obj =
|
||||
CALLOC_STRUCT(brw_transform_feedback_object);
|
||||
if (!brw_obj)
|
||||
return NULL;
|
||||
|
||||
_mesa_init_transform_feedback_object(&brw_obj->base, name);
|
||||
|
||||
return &brw_obj->base;
|
||||
}
|
||||
|
||||
void
|
||||
brw_delete_transform_feedback(struct gl_context *ctx,
|
||||
struct gl_transform_feedback_object *obj)
|
||||
{
|
||||
struct brw_transform_feedback_object *brw_obj =
|
||||
(struct brw_transform_feedback_object *) obj;
|
||||
|
||||
for (unsigned i = 0; i < Elements(obj->Buffers); i++) {
|
||||
_mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
|
||||
}
|
||||
|
||||
free(brw_obj);
|
||||
}
|
||||
|
||||
void
|
||||
brw_begin_transform_feedback(struct gl_context *ctx, GLenum mode,
|
||||
struct gl_transform_feedback_object *obj)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue