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

Brian Paul brianp at vmware.com
Fri May 15 07:06:15 PDT 2015


Let's play it safe.  Update your patch series and re-post it to the list 
for a final review, please.

-Brian

On 05/14/2015 06:01 PM, Alexander von Gluck IV wrote:
>
> Good evening Brian,
>
> Thanks, these were fixed.
>
> I just realized that I can drop os_thread.h from our C++ code as we no
> longer depend on it and not do the extern "C" there. (tested working)
>
> You ok with this changeset with the change above?
> (I'd hate to commit it, then undo it)
>
> Thanks!
>
>   -- Alex
>
>
>
> On , Brian Paul wrote:
>> In the past, you used the prefix "target/haiku-softpipe:" on changes
>> to this code.  I'd suggest using that again here.
>>
>> With these changes,
>> Reviewed-by: Brian Paul <brianp at vmware.com>
>>
>> On 05/14/2015 04:39 PM, 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;
>>>   };
>>> -
>>> +
>>>
>>>   #endif /* GALLIUMCONTEXT_H */
>>>
>



More information about the mesa-dev mailing list