[Mesa-dev] [PATCH 2/3] noop: set missing functions

Marek Olšák maraeo at gmail.com
Mon Aug 29 15:49:01 UTC 2016


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.

Marek


More information about the mesa-dev mailing list