On Mon, Aug 29, 2016 at 5:43 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > 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...
I have no idea what you're talking about. BTW I did test all of these patches quite extensively. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev