gallium/util: fix GALLIUM_TESTS=1 by using cso_set_vertex_buffers_and_elements
util_draw_user_vertex_buffer no longer works with u_vbuf. Add util_draw_user_vertices that does the right thing and use it. Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25389>
This commit is contained in:
@@ -89,3 +89,21 @@ util_draw_user_vertex_buffer(struct cso_context *cso, void *buffer,
|
||||
cso_set_vertex_buffers(cso, 1, 0, false, &vbuffer);
|
||||
cso_draw_arrays(cso, prim_type, 0, num_verts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a user vertex buffer. This is the correct way.
|
||||
* util_draw_user_vertex_buffer doesn't work with u_vbuf anymore.
|
||||
*/
|
||||
void
|
||||
util_draw_user_vertices(struct cso_context *cso, struct cso_velems_state *ve,
|
||||
void *buffer, enum mesa_prim prim_type,
|
||||
unsigned num_verts)
|
||||
{
|
||||
struct pipe_vertex_buffer vbuffer = {0};
|
||||
|
||||
vbuffer.is_user_buffer = true;
|
||||
vbuffer.buffer.user = buffer;
|
||||
|
||||
cso_set_vertex_buffers_and_elements(cso, ve, 1, 0, false, true, &vbuffer);
|
||||
cso_draw_arrays(cso, prim_type, 0, num_verts);
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ extern "C" {
|
||||
|
||||
struct pipe_resource;
|
||||
struct cso_context;
|
||||
struct cso_velems_state;
|
||||
|
||||
extern void
|
||||
util_draw_vertex_buffer(struct pipe_context *pipe, struct cso_context *cso,
|
||||
@@ -52,6 +53,11 @@ util_draw_user_vertex_buffer(struct cso_context *cso, void *buffer,
|
||||
enum mesa_prim prim_type, unsigned num_verts,
|
||||
unsigned num_attribs);
|
||||
|
||||
void
|
||||
util_draw_user_vertices(struct cso_context *cso, struct cso_velems_state *ve,
|
||||
void *buffer, enum mesa_prim prim_type,
|
||||
unsigned num_verts);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -134,8 +134,8 @@ util_set_max_viewport(struct cso_context *cso, struct pipe_resource *tex)
|
||||
cso_set_viewport(cso, &viewport);
|
||||
}
|
||||
|
||||
static void
|
||||
util_set_interleaved_vertex_elements(struct cso_context *cso,
|
||||
static struct cso_velems_state
|
||||
util_get_interleaved_vertex_elements(struct cso_context *cso,
|
||||
unsigned num_elements)
|
||||
{
|
||||
struct cso_velems_state velem;
|
||||
@@ -149,7 +149,7 @@ util_set_interleaved_vertex_elements(struct cso_context *cso,
|
||||
velem.velems[i].src_stride = num_elements * 4 * sizeof(float);
|
||||
}
|
||||
|
||||
cso_set_vertex_elements(cso, &velem);
|
||||
return velem;
|
||||
}
|
||||
|
||||
static void *
|
||||
@@ -194,8 +194,9 @@ util_draw_fullscreen_quad(struct cso_context *cso)
|
||||
1, 1, 0, 1, 1, 1, 0, 0,
|
||||
1, -1, 0, 1, 1, 0, 0, 0
|
||||
};
|
||||
util_set_interleaved_vertex_elements(cso, 2);
|
||||
util_draw_user_vertex_buffer(cso, vertices, MESA_PRIM_QUADS, 4, 2);
|
||||
struct cso_velems_state ve = util_get_interleaved_vertex_elements(cso, 2);
|
||||
|
||||
util_draw_user_vertices(cso, &ve, vertices, MESA_PRIM_QUADS, 4);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -208,8 +209,9 @@ util_draw_fullscreen_quad_fill(struct cso_context *cso,
|
||||
1, 1, 0, 1, r, g, b, a,
|
||||
1, -1, 0, 1, r, g, b, a,
|
||||
};
|
||||
util_set_interleaved_vertex_elements(cso, 2);
|
||||
util_draw_user_vertex_buffer(cso, vertices, MESA_PRIM_QUADS, 4, 2);
|
||||
struct cso_velems_state ve = util_get_interleaved_vertex_elements(cso, 2);
|
||||
|
||||
util_draw_user_vertices(cso, &ve, vertices, MESA_PRIM_QUADS, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -349,8 +351,9 @@ tgsi_vs_window_space_position(struct pipe_context *ctx)
|
||||
256, 256, 0, 0, 1, 0, 0, 1,
|
||||
256, 0, 0, 0, 1, 0, 0, 1,
|
||||
};
|
||||
util_set_interleaved_vertex_elements(cso, 2);
|
||||
util_draw_user_vertex_buffer(cso, vertices, MESA_PRIM_QUADS, 4, 2);
|
||||
struct cso_velems_state ve = util_get_interleaved_vertex_elements(cso, 2);
|
||||
|
||||
util_draw_user_vertices(cso, &ve, vertices, MESA_PRIM_QUADS, 4);
|
||||
}
|
||||
|
||||
/* Probe pixels. */
|
||||
|
||||
Reference in New Issue
Block a user