[Mesa-dev] [PATCH 2/3] noop: set missing functions
Ilia Mirkin
imirkin at alum.mit.edu
Mon Aug 29 15:55:10 UTC 2016
On Mon, Aug 29, 2016 at 11:49 AM, Marek Olšák <maraeo at gmail.com> wrote:
> On Mon, Aug 29, 2016 at 5:43 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> On Mon, Aug 29, 2016 at 11:29 AM, Marek Olšák <maraeo at gmail.com> wrote:
>>> From: Marek Olšák <marek.olsak at 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
More information about the mesa-dev
mailing list