[Mesa-dev] [PATCH 5/5] gallium/targets: Move api init into st code

Emil Velikov emil.l.velikov at gmail.com
Fri May 15 08:45:58 PDT 2015


On 14/05/15 22:39, Alexander von Gluck IV wrote:
> We also reduce the amount of need-to-know information about st_api
> to require one less extern "C" in st_manager.h
> ---
>  .../targets/haiku-softpipe/GalliumContext.cpp      |   23 +++++++------------
>  .../targets/haiku-softpipe/GalliumContext.h        |    5 +---
>  2 files changed, 10 insertions(+), 18 deletions(-)
> 
> diff --git a/src/gallium/targets/haiku-softpipe/GalliumContext.cpp b/src/gallium/targets/haiku-softpipe/GalliumContext.cpp
> index b24aef7..1e3874b 100644
> --- a/src/gallium/targets/haiku-softpipe/GalliumContext.cpp
> +++ b/src/gallium/targets/haiku-softpipe/GalliumContext.cpp
> @@ -15,14 +15,13 @@
>  #include "GLView.h"
>  
>  #include "bitmap_wrapper.h"
> -extern "C" {
> +
>  #include "glapi/glapi.h"
>  #include "pipe/p_format.h"
> -#include "state_tracker/st_cb_fbo.h"
> -#include "state_tracker/st_cb_flush.h"
> +//#include "state_tracker/st_cb_fbo.h"
> +//#include "state_tracker/st_cb_flush.h"
>  #include "state_tracker/st_context.h"
>  #include "state_tracker/st_gl_api.h"
> -#include "state_tracker/st_manager.h"
>  #include "state_tracker/sw_winsys.h"
>  #include "sw/hgl/hgl_sw_winsys.h"
>  #include "util/u_atomic.h"
> @@ -30,7 +29,6 @@ extern "C" {
>  
>  #include "target-helpers/inline_sw_helper.h"
>  #include "target-helpers/inline_debug_helper.h"
> -}
>  
>  
>  #ifdef DEBUG
> @@ -127,7 +125,8 @@ GalliumContext::CreateContext(Bitmap *bitmap)
>  	context->read = NULL;
>  	context->st = NULL;
>  
> -	context->api = st_gl_api_create();
> +	// Create st_gl_api
> +	context->api = hgl_create_st_api();
>  	if (!context->api) {
>  		ERROR("%s: Couldn't obtain Mesa state tracker API!\n", __func__);
>  		return -1;
> @@ -159,12 +158,10 @@ GalliumContext::CreateContext(Bitmap *bitmap)
>  	attribs.minor = 0;
>  	//attribs.flags |= ST_CONTEXT_FLAG_DEBUG;
>  
> -	struct st_api* api = context->api;
> -
>  	// Create context using state tracker api call
>  	enum st_context_error result;
> -	context->st = api->create_context(api, context->manager, &attribs,
> -		&result, context->st);
> +	context->st = context->api->create_context(context->api, context->manager,
> +		&attribs, &result, context->st);
>  
>  	if (!context->st) {
>  		ERROR("%s: Couldn't create mesa state tracker context!\n",
> @@ -289,10 +286,8 @@ GalliumContext::SetCurrentContext(Bitmap *bitmap, context_id contextID)
>  		return B_ERROR;
>  	}
>  
> -	struct st_api* api = context->api;
> -
>  	if (!bitmap) {
> -		api->make_current(context->api, NULL, NULL, NULL);
> +		context->api->make_current(context->api, NULL, NULL, NULL);
>  		return B_OK;
>  	}
>  
> @@ -305,7 +300,7 @@ GalliumContext::SetCurrentContext(Bitmap *bitmap, context_id contextID)
>  	}
>  
>  	// We need to lock and unlock framebuffers before accessing them
> -	api->make_current(context->api, context->st, context->draw->stfbi,
> +	context->api->make_current(context->api, context->st, context->draw->stfbi,
>  		context->read->stfbi);
>  
>  	//if (context->textures[ST_ATTACHMENT_BACK_LEFT]
> diff --git a/src/gallium/targets/haiku-softpipe/GalliumContext.h b/src/gallium/targets/haiku-softpipe/GalliumContext.h
> index b50d528..a13c4ce 100644
> --- a/src/gallium/targets/haiku-softpipe/GalliumContext.h
> +++ b/src/gallium/targets/haiku-softpipe/GalliumContext.h
> @@ -12,14 +12,11 @@
>  #include <stddef.h>
>  #include <kernel/image.h>
>  
> -extern "C" {
> -//#include "state_tracker/st_api.h"
>  #include "pipe/p_compiler.h"
>  #include "pipe/p_screen.h"
>  #include "postprocess/filters.h"
>  #include "os/os_thread.h"
>  #include "hgl_context.h"
> -}
>  
>  #include "bitmap_wrapper.h"
>  
> @@ -56,6 +53,6 @@ private:
>  		context_id			fCurrentContext;
>  		pipe_mutex			fMutex;
>  };
> -	
> +
>  
This commit does a bit too many thing (comparing to other changes in mesa)
 - Whitespace cleanups
 - Removing commented out headers/commenting out new ones.
 - Using function introduced with earlier patch.
 - Removes a couple of temporary variables.
 - Drops the extern "C" guard around the header inclusion.

At the end of the day you're the one that reads/maintains this code, but
splitting it into 2+ patches seems like a reasonable thing imho.

Cheers,
Emil



More information about the mesa-dev mailing list