On Mon, Aug 29, 2016 at 11:49 AM, Marek Olšák <mar...@gmail.com> wrote: > 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.
I haven't had coffee is what I'm talking about, apparently. I read that as an infinite loop. But screen != pscreen, so this is all good. Sorry. -ilia _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev