mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-23 07:20:37 +02:00
virgl: wrap vertex element state in a struct
This just has one member for now; the handle. But this is about to change. Signed-off-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de> Tested-By: Gert Wollny <gert.wollny@collabora.com>
This commit is contained in:
parent
b702ff5378
commit
8447b64238
2 changed files with 21 additions and 9 deletions
|
|
@ -48,6 +48,10 @@
|
|||
#include "virgl_resource.h"
|
||||
#include "virgl_screen.h"
|
||||
|
||||
struct virgl_vertex_elements_state {
|
||||
uint32_t handle;
|
||||
};
|
||||
|
||||
static uint32_t next_handle;
|
||||
uint32_t virgl_object_assign_handle(void)
|
||||
{
|
||||
|
|
@ -387,28 +391,34 @@ static void *virgl_create_vertex_elements_state(struct pipe_context *ctx,
|
|||
const struct pipe_vertex_element *elements)
|
||||
{
|
||||
struct virgl_context *vctx = virgl_context(ctx);
|
||||
uint32_t handle = virgl_object_assign_handle();
|
||||
virgl_encoder_create_vertex_elements(vctx, handle,
|
||||
num_elements, elements);
|
||||
return (void*)(unsigned long)handle;
|
||||
struct virgl_vertex_elements_state *state =
|
||||
CALLOC_STRUCT(virgl_vertex_elements_state);
|
||||
|
||||
state->handle = virgl_object_assign_handle();
|
||||
virgl_encoder_create_vertex_elements(vctx, state->handle,
|
||||
num_elements, elements);
|
||||
return state;
|
||||
}
|
||||
|
||||
static void virgl_delete_vertex_elements_state(struct pipe_context *ctx,
|
||||
void *ve)
|
||||
{
|
||||
struct virgl_context *vctx = virgl_context(ctx);
|
||||
uint32_t handle = (unsigned long)ve;
|
||||
|
||||
virgl_encode_delete_object(vctx, handle, VIRGL_OBJECT_VERTEX_ELEMENTS);
|
||||
struct virgl_vertex_elements_state *state =
|
||||
(struct virgl_vertex_elements_state *)ve;
|
||||
virgl_encode_delete_object(vctx, state->handle, VIRGL_OBJECT_VERTEX_ELEMENTS);
|
||||
FREE(state);
|
||||
}
|
||||
|
||||
static void virgl_bind_vertex_elements_state(struct pipe_context *ctx,
|
||||
void *ve)
|
||||
{
|
||||
struct virgl_context *vctx = virgl_context(ctx);
|
||||
uint32_t handle = (unsigned long)ve;
|
||||
virgl_encode_bind_object(vctx, handle, VIRGL_OBJECT_VERTEX_ELEMENTS);
|
||||
struct virgl_vertex_elements_state *state =
|
||||
(struct virgl_vertex_elements_state *)ve;
|
||||
vctx->vertex_elements = state;
|
||||
virgl_encode_bind_object(vctx, state ? state->handle : 0,
|
||||
VIRGL_OBJECT_VERTEX_ELEMENTS);
|
||||
}
|
||||
|
||||
static void virgl_set_vertex_buffers(struct pipe_context *ctx,
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ struct pipe_screen;
|
|||
struct tgsi_token;
|
||||
struct u_upload_mgr;
|
||||
struct virgl_cmd_buf;
|
||||
struct virgl_vertex_elements_state;
|
||||
|
||||
struct virgl_sampler_view {
|
||||
struct pipe_sampler_view base;
|
||||
|
|
@ -53,6 +54,7 @@ struct virgl_context {
|
|||
struct virgl_cmd_buf *cbuf;
|
||||
|
||||
struct virgl_textures_info samplers[PIPE_SHADER_TYPES];
|
||||
struct virgl_vertex_elements_state *vertex_elements;
|
||||
|
||||
struct pipe_framebuffer_state framebuffer;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue