On Mon, Aug 29, 2016 at 11:29 AM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > --- > src/gallium/drivers/noop/noop_pipe.c | 51 > +++++++++++++++++++++++++++++++++++ > src/gallium/drivers/noop/noop_state.c | 24 +++++++++++++++++ > 2 files changed, 75 insertions(+) > > diff --git a/src/gallium/drivers/noop/noop_pipe.c > b/src/gallium/drivers/noop/noop_pipe.c > index b3e2a3e..25e0c1f 100644 > --- a/src/gallium/drivers/noop/noop_pipe.c > +++ b/src/gallium/drivers/noop/noop_pipe.c > @@ -264,42 +264,56 @@ noop_flush_resource(struct pipe_context *ctx, > } > > > /* > * context > */ > static void noop_flush(struct pipe_context *ctx, > struct pipe_fence_handle **fence, > unsigned flags) > { > + if (fence) > + *fence = NULL; > } > > static void noop_destroy_context(struct pipe_context *ctx) > { > FREE(ctx); > } > > +static boolean noop_generate_mipmap(struct pipe_context *ctx, > + struct pipe_resource *resource, > + enum pipe_format format, > + unsigned base_level, > + unsigned last_level, > + unsigned first_layer, > + unsigned last_layer) > +{ > + return true; > +} > + > static struct pipe_context *noop_create_context(struct pipe_screen *screen, > void *priv, unsigned flags) > { > struct pipe_context *ctx = CALLOC_STRUCT(pipe_context); > > if (!ctx) > return NULL; > ctx->screen = screen; > ctx->priv = priv; > ctx->destroy = noop_destroy_context; > ctx->flush = noop_flush; > ctx->clear = noop_clear; > ctx->clear_render_target = noop_clear_render_target; > ctx->clear_depth_stencil = noop_clear_depth_stencil; > ctx->resource_copy_region = noop_resource_copy_region; > + ctx->generate_mipmap = noop_generate_mipmap; > ctx->blit = noop_blit; > ctx->flush_resource = noop_flush_resource; > ctx->create_query = noop_create_query; > ctx->destroy_query = noop_destroy_query; > ctx->begin_query = noop_begin_query; > ctx->end_query = noop_end_query; > ctx->get_query_result = noop_get_query_result; > ctx->set_active_query_state = noop_set_active_query_state; > ctx->transfer_map = noop_transfer_map; > ctx->transfer_flush_region = noop_transfer_flush_region; > @@ -352,20 +366,30 @@ static float noop_get_paramf(struct pipe_screen* > pscreen, > return screen->get_paramf(screen, param); > } > > static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned > shader, enum pipe_shader_cap param) > { > struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen; > > return screen->get_shader_param(screen, shader, param); > } > > +static int noop_get_compute_param(struct pipe_screen *pscreen, > + enum pipe_shader_ir ir_type, > + enum pipe_compute_cap param, > + void *ret) > +{ > + struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen; > + > + return screen->get_compute_param(screen, ir_type, param, ret); > +} > + > static boolean noop_is_format_supported(struct pipe_screen* pscreen, > enum pipe_format format, > enum pipe_texture_target target, > unsigned sample_count, > unsigned usage) > { > struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen; > > return screen->is_format_supported(screen, format, target, sample_count, > usage); > } > @@ -377,20 +401,43 @@ static uint64_t noop_get_timestamp(struct pipe_screen > *pscreen) > > static void noop_destroy_screen(struct pipe_screen *screen) > { > struct noop_pipe_screen *noop_screen = (struct noop_pipe_screen*)screen; > struct pipe_screen *oscreen = noop_screen->oscreen; > > oscreen->destroy(oscreen); > FREE(screen); > } > > +static void noop_fence_reference(struct pipe_screen *screen, > + struct pipe_fence_handle **ptr, > + struct pipe_fence_handle *fence) > +{ > +} > + > +static boolean noop_fence_finish(struct pipe_screen *screen, > + struct pipe_context *ctx, > + struct pipe_fence_handle *fence, > + uint64_t timeout) > +{ > + return true; > +} > + > +static void noop_query_memory_info(struct pipe_screen *pscreen, > + struct pipe_memory_info *info) > +{ > + struct noop_pipe_screen *noop_screen = (struct noop_pipe_screen*)pscreen; > + struct pipe_screen *screen = noop_screen->oscreen; > + > + screen->query_memory_info(screen, info);
That could end up taking a while to complete... > +} > + > struct pipe_screen *noop_screen_create(struct pipe_screen *oscreen) > { > struct noop_pipe_screen *noop_screen; > struct pipe_screen *screen; > > if (!debug_get_option_noop()) { > return oscreen; > } > > noop_screen = CALLOC_STRUCT(noop_pipe_screen); > @@ -399,22 +446,26 @@ struct pipe_screen *noop_screen_create(struct > pipe_screen *oscreen) > } > noop_screen->oscreen = oscreen; > screen = &noop_screen->pscreen; > > screen->destroy = noop_destroy_screen; > screen->get_name = noop_get_name; > screen->get_vendor = noop_get_vendor; > screen->get_device_vendor = noop_get_device_vendor; > screen->get_param = noop_get_param; > screen->get_shader_param = noop_get_shader_param; > + screen->get_compute_param = noop_get_compute_param; > screen->get_paramf = noop_get_paramf; > screen->is_format_supported = noop_is_format_supported; > screen->context_create = noop_create_context; > screen->resource_create = noop_resource_create; > screen->resource_from_handle = noop_resource_from_handle; > screen->resource_get_handle = noop_resource_get_handle; > screen->resource_destroy = noop_resource_destroy; > screen->flush_frontbuffer = noop_flush_frontbuffer; > screen->get_timestamp = noop_get_timestamp; > + screen->fence_reference = noop_fence_reference; > + screen->fence_finish = noop_fence_finish; > + screen->query_memory_info = noop_query_memory_info; > > return screen; > } > diff --git a/src/gallium/drivers/noop/noop_state.c > b/src/gallium/drivers/noop/noop_state.c > index 01538bfe27..5cbb2fd 100644 > --- a/src/gallium/drivers/noop/noop_state.c > +++ b/src/gallium/drivers/noop/noop_state.c > @@ -27,20 +27,25 @@ > #include "pipe/p_context.h" > #include "pipe/p_screen.h" > #include "util/u_memory.h" > #include "util/u_inlines.h" > #include "util/u_transfer.h" > > static void noop_draw_vbo(struct pipe_context *ctx, const struct > pipe_draw_info *info) > { > } > > +static void noop_launch_grid(struct pipe_context *ctx, > + const struct pipe_grid_info *info) > +{ > +} > + > static void noop_set_blend_color(struct pipe_context *ctx, > const struct pipe_blend_color *state) > { > } > > static void *noop_create_blend_state(struct pipe_context *ctx, > const struct pipe_blend_state *state) > { > return malloc(1); > } > @@ -198,20 +203,26 @@ static void *noop_create_vertex_elements(struct > pipe_context *ctx, > { > return malloc(1); > } > > static void *noop_create_shader_state(struct pipe_context *ctx, > const struct pipe_shader_state *state) > { > return malloc(1); > } > > +static void *noop_create_compute_state(struct pipe_context *ctx, > + const struct pipe_compute_state > *state) > +{ > + return malloc(1); > +} > + > static struct pipe_stream_output_target *noop_create_stream_output_target( > struct pipe_context *ctx, > struct pipe_resource *res, > unsigned buffer_offset, > unsigned buffer_size) > { > struct pipe_stream_output_target *t = > CALLOC_STRUCT(pipe_stream_output_target); > if (!t) > return NULL; > > @@ -241,44 +252,57 @@ void noop_init_state_functions(struct pipe_context > *ctx); > void noop_init_state_functions(struct pipe_context *ctx) > { > ctx->create_blend_state = noop_create_blend_state; > ctx->create_depth_stencil_alpha_state = noop_create_dsa_state; > ctx->create_fs_state = noop_create_shader_state; > ctx->create_rasterizer_state = noop_create_rs_state; > ctx->create_sampler_state = noop_create_sampler_state; > ctx->create_sampler_view = noop_create_sampler_view; > ctx->create_surface = noop_create_surface; > ctx->create_vertex_elements_state = noop_create_vertex_elements; > + ctx->create_compute_state = noop_create_compute_state; > + ctx->create_tcs_state = noop_create_shader_state; > + ctx->create_tes_state = noop_create_shader_state; > + ctx->create_gs_state = noop_create_shader_state; > ctx->create_vs_state = noop_create_shader_state; > ctx->bind_blend_state = noop_bind_state; > ctx->bind_depth_stencil_alpha_state = noop_bind_state; > ctx->bind_sampler_states = noop_bind_sampler_states; > ctx->bind_fs_state = noop_bind_state; > ctx->bind_rasterizer_state = noop_bind_state; > ctx->bind_vertex_elements_state = noop_bind_state; > + ctx->bind_compute_state = noop_bind_state; > + ctx->bind_tcs_state = noop_bind_state; > + ctx->bind_tes_state = noop_bind_state; > + ctx->bind_gs_state = noop_bind_state; > ctx->bind_vs_state = noop_bind_state; > ctx->delete_blend_state = noop_delete_state; > ctx->delete_depth_stencil_alpha_state = noop_delete_state; > ctx->delete_fs_state = noop_delete_state; > ctx->delete_rasterizer_state = noop_delete_state; > ctx->delete_sampler_state = noop_delete_state; > ctx->delete_vertex_elements_state = noop_delete_state; > + ctx->delete_compute_state = noop_delete_state; > + ctx->delete_tcs_state = noop_delete_state; > + ctx->delete_tes_state = noop_delete_state; > + ctx->delete_gs_state = noop_delete_state; > ctx->delete_vs_state = noop_delete_state; > ctx->set_blend_color = noop_set_blend_color; > ctx->set_clip_state = noop_set_clip_state; > ctx->set_constant_buffer = noop_set_constant_buffer; > ctx->set_sampler_views = noop_set_sampler_views; > ctx->set_framebuffer_state = noop_set_framebuffer_state; > ctx->set_polygon_stipple = noop_set_polygon_stipple; > ctx->set_sample_mask = noop_set_sample_mask; > ctx->set_scissor_states = noop_set_scissor_states; > ctx->set_stencil_ref = noop_set_stencil_ref; > ctx->set_vertex_buffers = noop_set_vertex_buffers; > ctx->set_index_buffer = noop_set_index_buffer; > ctx->set_viewport_states = noop_set_viewport_states; > ctx->sampler_view_destroy = noop_sampler_view_destroy; > ctx->surface_destroy = noop_surface_destroy; > ctx->draw_vbo = noop_draw_vbo; > + ctx->launch_grid = noop_launch_grid; > ctx->create_stream_output_target = noop_create_stream_output_target; > ctx->stream_output_target_destroy = noop_stream_output_target_destroy; > ctx->set_stream_output_targets = noop_set_stream_output_targets; > } > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev