# HG changeset patch # User Matt Plumtree # Date 1288690831 0 # Node ID 243bbc1d70dbfba6868b37fc515a0dae2ebe57c8 # Parent 08233365fef649f0ca2a324d17eab3884bc459a1 Expose wrapper C interface for Syborg from KhronosAPIWrapper. Needs update to QEMU! Make KhronosAPIWrapper buildable using GCC. diff -r 08233365fef6 -r 243bbc1d70db CMakeLists.txt --- a/CMakeLists.txt Mon Nov 01 18:11:59 2010 +0000 +++ b/CMakeLists.txt Tue Nov 02 09:40:31 2010 +0000 @@ -72,8 +72,7 @@ if (SIMULATOR_EXTENSIONS) add_subdirectory(vghwinterface/vghwapiwrapper) # Simulator serialization (host) add_dependencies(KhronosAPIWrapper libEGL libGLESv1 libGLESv2) - add_dependencies(syborg-graphicswrapper libEGL libGLESv1 libGLESv2) - set(ALL_TARGETS libEGL libOpenVG libGLESv1 libGLESv2 KhronosAPIWrapper syborg-graphicswrapper) + set(ALL_TARGETS libEGL libOpenVG libGLESv1 libGLESv2 KhronosAPIWrapper) else(SIMULATOR_EXTENSIONS) set(ALL_TARGETS libEGL libOpenVG libGLESv1 libGLESv2) endif(SIMULATOR_EXTENSIONS) diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/CMakeLists.txt --- a/vghwinterface/vghwapiwrapper/CMakeLists.txt Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/CMakeLists.txt Tue Nov 02 09:40:31 2010 +0000 @@ -38,7 +38,7 @@ ${WRAPPER_INC_DIR}/openvgapiwrapper.h ${WRAPPER_INC_DIR}/driverapiwrapper.h ${WRAPPER_INC_DIR}/opengles11apiwrapper.h - ${WRAPPER_INC_DIR}/syborg-graphicswrapper.h + ${WRAPPER_INC_DIR}/simulator_graphicswrapper.h ${WRAPPER_INC_DIR}/hostthreadadapter.h ${WRAPPER_INC_DIR}/platformthreading.h ${WRAPPER_INC_DIR}/platformtypes.h @@ -56,7 +56,7 @@ ${WRAPPER_SRC_DIR}/openvgapiwrapper.cpp ${WRAPPER_SRC_DIR}/driverapiwrapper.cpp ${WRAPPER_SRC_DIR}/opengles11apiwrapper.cpp - ${WRAPPER_SRC_DIR}/syborg-graphicswrapper.cpp + ${WRAPPER_SRC_DIR}/simulator_graphicswrapper.cpp ${WRAPPER_SRC_DIR}/platformthreading.cpp ${SERIALIZER_SRC_DIR}/eglrfc.cpp @@ -77,10 +77,8 @@ link_directories(${GLOBAL_LIB_DIR}) -add_definitions(-DKHRONOSAPIWRAPPER_EXPORTS -DSYBORG_GRAPHICSWRAPPER_EXPORTS) +add_definitions(-DKHRONOSAPIWRAPPER_EXPORTS -DSIMULATOR_GRAPHICSWRAPPER_EXPORTS) add_library(KhronosAPIWrapper SHARED ${WRAPPER_SRC_FILES}) -add_library(syborg-graphicswrapper SHARED ${WRAPPER_SRC_FILES}) target_link_libraries(KhronosAPIWrapper ${WRAPPER_PLATFORM_LINK_LIBRARIES}) -target_link_libraries(syborg-graphicswrapper ${WRAPPER_PLATFORM_LINK_LIBRARIES}) diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/group/bld.inf --- a/vghwinterface/vghwapiwrapper/group/bld.inf Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/group/bld.inf Tue Nov 02 09:40:31 2010 +0000 @@ -0,0 +1,50 @@ +/* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and /or associated documentation files + * (the "Materials "), to deal in the Materials without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Materials, + * and to permit persons to whom the Materials are furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Materials. + * + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR + * THE USE OR OTHER DEALINGS IN THE MATERIALS. + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: + * Build information for host wrapper + */ + +PRJ_PLATFORMS +TOOLS2 + +PRJ_EXTENSIONS + +// Dynamic library. +start extension graphics_simulator/hostbuild +option TARGET_NAME KhronosAPIWrapper +option TARGET_TYPE dll +option SOURCE_DIRS ../src +option SOURCE_FOLDER ../../vghwserialiser/src +option SOURCE eglrfc.cpp remotefunctioncall.cpp serializedfunctioncall.cpp driverrfc.cpp opengles11rfc.cpp openvgrfc.cpp +option INCLUDES ../inc ../../inc ../../../inc ../../vghwserialiser/inc +option SYS_INCLUDES OS_LAYER_PUBLIC_EXPORT_PATH(tools) +option MACROS KHRONOSAPIWRAPPER_EXPORTS SIMULATOR_GRAPHICSWRAPPER_EXPORTS +option COMPILE_OPTIONS -msse2 -mfpmath=sse -march=pentium4 +option NO_STD_INCLUDE ON +option SHARED_LIBS libEGL libGLESv1 libOpenVG +//option SHARED_LIBS libGLESv2 (when ready) +end diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/inc/KhronosAPIWrapper.h --- a/vghwinterface/vghwapiwrapper/inc/KhronosAPIWrapper.h Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/inc/KhronosAPIWrapper.h Tue Nov 02 09:40:31 2010 +0000 @@ -54,7 +54,7 @@ KhronosAPIWrapper( MGraphicsVHWCallback* aServiceIf, void* surfacebuffer, void* inputdata, void* outputdata ); - ~KhronosAPIWrapper(); + virtual ~KhronosAPIWrapper(); void WorkerThread(); diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/inc/platformtypes.h --- a/vghwinterface/vghwapiwrapper/inc/platformtypes.h Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/inc/platformtypes.h Tue Nov 02 09:40:31 2010 +0000 @@ -26,7 +26,7 @@ #endif -#ifdef WIN32 +#if defined(WIN32) && !defined(__GNUG__) #if !defined(__STDC_CONSTANT_MACROS) && !defined(HAVE_STDINT_H) #define __STDC_CONSTANT_MACROS diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/inc/simulator_graphicswrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vghwinterface/vghwapiwrapper/inc/simulator_graphicswrapper.h Tue Nov 02 09:40:31 2010 +0000 @@ -0,0 +1,47 @@ +#ifndef _SIMULATOR_GRAPHICSWRAPPER_H +#define _SIMULATOR_GRAPHICSWRAPPER_H + +#pragma once + +#ifdef WIN32 +#ifdef SIMULATOR_GRAPHICSWRAPPER_EXPORTS +#define SIMULATOR_GRAPHICSWRAPPER_API __declspec(dllexport) +#else +#define SIMULATOR_GRAPHICSWRAPPER_API __declspec(dllimport) +#endif +#else +#define SIMULATOR_GRAPHICSWRAPPER_API +#endif + +Psu::PLATFORM_SEMAPHORE_T m_outputBufferSemaphore; +int (*m_pythonCallBack)(int); +KhronosAPIWrapper* m_wrapper; + + +// Derived from GraphicsVirtualHW.lisa +static const int VVHW_BUFFER (0x3000000); +static const int VVHW_INPUT_BUFFER (0x1000000); +static const int VVHW_INPUT_BASE(0x0); +static const int VVHW_OUTPUT_BUFFER (0x1000000); +static const int VVHW_OUTPUT_BASE(0x1000000); +static const int VVHW_FRAME_BUFFER (0x1000000); +static const int VVHW_FRAME_BASE(0x2000000); + +class SimulatorGraphicsWrapper : public MGraphicsVHWCallback + { + public: + + SimulatorGraphicsWrapper(); + ~SimulatorGraphicsWrapper(); + + int Reset( uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ); + + virtual void LockOutputBuffer(); + virtual void ReleaseOutputBuffer(); + virtual void ProcessingDone(int i); + + private: + }; + + +#endif // _SIMULATOR_GRAPHICSWRAPPER_H diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/inc/syborg-graphicswrapper.h --- a/vghwinterface/vghwapiwrapper/inc/syborg-graphicswrapper.h Mon Nov 01 18:11:59 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -#ifndef _SYBORG_GRAPHICSWRAPPER_H -#define _SYBORG_GRAPHICSWRAPPER_H - -#pragma once - -#ifdef WIN32 -#ifdef SYBORG_GRAPHICSWRAPPER_EXPORTS -#define SYBORG_GRAPHICSWRAPPER_API __declspec(dllexport) -#else -#define SYBORG_GRAPHICSWRAPPER_API __declspec(dllimport) -#endif -#else -#define SYBORG_GRAPHICSWRAPPER_API -#endif - -Psu::PLATFORM_SEMAPHORE_T m_outputBufferSemaphore; -int (*m_pythonCallBack)(int); -KhronosAPIWrapper* m_wrapper; - - -// Derived from GraphicsVirtualHW.lisa -static const int VVHW_BUFFER (0x3000000); -static const int VVHW_INPUT_BUFFER (0x1000000); -static const int VVHW_INPUT_BASE(0x0); -static const int VVHW_OUTPUT_BUFFER (0x1000000); -static const int VVHW_OUTPUT_BASE(0x1000000); -static const int VVHW_FRAME_BUFFER (0x1000000); -static const int VVHW_FRAME_BASE(0x2000000); - -class SyborgGraphicsWrapper : public MGraphicsVHWCallback - { - public: - - SyborgGraphicsWrapper(); - ~SyborgGraphicsWrapper(); - - int Reset( uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ); - - virtual void LockOutputBuffer(); - virtual void ReleaseOutputBuffer(); - virtual void ProcessingDone(int i); - - private: - }; - - -#endif // _SYBORG_GRAPHICSWRAPPER_H \ No newline at end of file diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/driverapiwrapper.cpp --- a/vghwinterface/vghwapiwrapper/src/driverapiwrapper.cpp Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/src/driverapiwrapper.cpp Tue Nov 02 09:40:31 2010 +0000 @@ -245,13 +245,6 @@ ::eglMakeCurrent( m_Dpy, m_DudSurface, m_DudSurface, m_PoolContext ); - //eglCreatePbufferSurface - EGLint pbuffer_surface_attribs[] = - { - EGL_WIDTH, w, - EGL_HEIGHT, h, - EGL_NONE - }; VGImageFormat format = getVGColorFormat( pixelformat ); img = ::vgCreateImage(format, w, h, VG_IMAGE_QUALITY_NONANTIALIASED);//todo: quality; how to decide (TSgImageInfo only provides w,h, pixelformat)? if( img != VG_INVALID_HANDLE ) diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/eglapiwrapper.cpp --- a/vghwinterface/vghwapiwrapper/src/eglapiwrapper.cpp Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/src/eglapiwrapper.cpp Tue Nov 02 09:40:31 2010 +0000 @@ -61,7 +61,9 @@ { TRACE("EGLAPIWrapper::WriteReply()\n"); #ifdef LOG_ERROR +#ifdef PRINT_TRACES int operationid = (int)m_currentFunctionCall.Data().Header().iOpCode; +#endif int eglerror = ::eglSimulatorGetError(); if ( m_lastEglError != eglerror ) { @@ -573,7 +575,6 @@ EGLDisplay dpy; EGLConfig config; EGLContext share_context; - EGLBoolean sgSupporting(EGL_FALSE); m_currentFunctionCall.GetEGLDisplay( dpy, 0 ); m_currentFunctionCall.GetEGLConfig( config, 1 ); @@ -926,7 +927,6 @@ //For storing all the configs EGLConfig* allConfigs = 0; - EGLint allConfigsSize = 0;//size of the array EGLint allConfigsCnt = 0;//Number of actually received configurations //Allocate temporary storage for the attributes for each config diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/opengles11apiwrapper.cpp --- a/vghwinterface/vghwapiwrapper/src/opengles11apiwrapper.cpp Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/src/opengles11apiwrapper.cpp Tue Nov 02 09:40:31 2010 +0000 @@ -526,7 +526,9 @@ int OGLES11Wrapper::WriteReply() { #ifdef LOG_ERROR +#ifdef PRINT_TRACES int operationid = (int)m_currentFunctionCall.Data().Header().iOpCode; +#endif int glerror = ::glGetError(); if ( m_lastGlError != glerror ) diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/openvgapiwrapper.cpp --- a/vghwinterface/vghwapiwrapper/src/openvgapiwrapper.cpp Mon Nov 01 18:11:59 2010 +0000 +++ b/vghwinterface/vghwapiwrapper/src/openvgapiwrapper.cpp Tue Nov 02 09:40:31 2010 +0000 @@ -2170,4 +2170,4 @@ break; } return ret; -} \ No newline at end of file +} diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/simulator_graphicswrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vghwinterface/vghwapiwrapper/src/simulator_graphicswrapper.cpp Tue Nov 02 09:40:31 2010 +0000 @@ -0,0 +1,150 @@ +// This is the main DLL file. + +#include "platformtypes.h" +#include +#include //Registers and enums +#include //mutex +#include +#include "simulator_graphicswrapper.h" + +SimulatorGraphicsWrapper::SimulatorGraphicsWrapper() + { + } + +SimulatorGraphicsWrapper::~SimulatorGraphicsWrapper() + { + delete m_wrapper; + m_wrapper = 0; + + Psu::platform_release_semaphore(m_outputBufferSemaphore); + } + +int SimulatorGraphicsWrapper::Reset( uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ) + { + int ret = -1; + if ( m_wrapper ) + { + delete m_wrapper; + } + m_wrapper = NULL; + + uint8_t *cmd_buffer = (uint8_t *)aCommandMemBase; + uint8_t *frame_buffer = (uint8_t *)aGraphicsMemBase; + if( (cmd_buffer != NULL) && (frame_buffer != NULL) ) + { + m_wrapper = new KhronosAPIWrapper( (MGraphicsVHWCallback*)this, + frame_buffer, &cmd_buffer[VVHW_INPUT_BASE], &cmd_buffer[VVHW_OUTPUT_BASE] ); + //Reset synchronisation mechanisms + Psu::platform_release_semaphore(m_outputBufferSemaphore); + Psu::platform_create_semaphore(m_outputBufferSemaphore, 1, 1); + ret = 0; + } + else + { + ret = -1; + } + return ret; + } + +void SimulatorGraphicsWrapper::LockOutputBuffer() + { + #ifdef KHRONOS_API_W_MULTITHREAD + Psu::platform_wait_for_signal(m_outputBufferSemaphore); + #endif + } + +void SimulatorGraphicsWrapper::ReleaseOutputBuffer(){} + +void SimulatorGraphicsWrapper::ProcessingDone(int i) + { + m_pythonCallBack( i ); + } + +extern "C" + { + SIMULATOR_GRAPHICSWRAPPER_API SimulatorGraphicsWrapper* create_SimulatorGraphicsWrapper() + { + return new SimulatorGraphicsWrapper(); + } + SIMULATOR_GRAPHICSWRAPPER_API int initialize_SimulatorGraphicsWrapper( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + Psu::platform_create_semaphore(m_outputBufferSemaphore, 1, 1); + // Change to proper error handling + return 0; + } + + SIMULATOR_GRAPHICSWRAPPER_API int set_GraphicsCallBack( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, int (*aGraphicsCallBack) (int) ) + { + m_pythonCallBack = aGraphicsCallBack; + // Change to proper error handling + return 0; + } + + SIMULATOR_GRAPHICSWRAPPER_API int reset_SimulatorGraphicsWrapper( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ) + { + return aSimulatorGraphicsWrapper->Reset( aGraphicsMemBase, aCommandMemBase ); + } + + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_InputBufferTail( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->InputBufferTail(); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_InputBufferHead( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->InputBufferHead( ); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_InputBufferReadCount( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->InputBufferReadCount( ); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_InputBufferWriteCount( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->InputBufferWriteCount( ); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_InputMaxTailIndex( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->InputMaxTailIndex( ); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_cmd_memsize( void ) + { + return (VVI_PARAMETERS_INPUT_MEMORY_SIZE + + VVI_PARAMETERS_OUTPUT_MEMORY_SIZE); + } + SIMULATOR_GRAPHICSWRAPPER_API uint32_t get_framebuffer_memsize( void ) + { + return VVI_SURFACEBUFFER_BASE_ADDRESS; + } + + + SIMULATOR_GRAPHICSWRAPPER_API unsigned int execute_command( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + return m_wrapper->Execute( ); + } + SIMULATOR_GRAPHICSWRAPPER_API void set_InputBufferTail( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t aVal ) + { + m_wrapper->SetInputBufferTail( aVal ); + } + SIMULATOR_GRAPHICSWRAPPER_API void set_InputBufferHead( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t aVal ) + { + m_wrapper->SetInputBufferHead( aVal ); + } + SIMULATOR_GRAPHICSWRAPPER_API void set_InputBufferReadCount( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t aVal ) + { + m_wrapper->SetInputBufferReadCount( aVal ); + } + SIMULATOR_GRAPHICSWRAPPER_API void set_InputBufferWriteCount( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t aVal ) + { + m_wrapper->SetInputBufferWriteCount( aVal ); + } + SIMULATOR_GRAPHICSWRAPPER_API void set_InputMaxTailIndex( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper, uint32_t aVal ) + { + m_wrapper->SetInputMaxTailIndex( aVal ); + } + SIMULATOR_GRAPHICSWRAPPER_API void signal_outputbuffer_semafore( SimulatorGraphicsWrapper* aSimulatorGraphicsWrapper ) + { + #ifdef KHRONOS_API_W_MULTITHREAD + Psu::platform_signal_semaphore(m_outputBufferSemaphore); + #endif + } + + } diff -r 08233365fef6 -r 243bbc1d70db vghwinterface/vghwapiwrapper/src/syborg-graphicswrapper.cpp --- a/vghwinterface/vghwapiwrapper/src/syborg-graphicswrapper.cpp Mon Nov 01 18:11:59 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -// This is the main DLL file. - -#include "platformtypes.h" -#include -#include //Registers and enums -#include //mutex -#include -#include "syborg-graphicswrapper.h" - -SyborgGraphicsWrapper::SyborgGraphicsWrapper() - { - } - -SyborgGraphicsWrapper::~SyborgGraphicsWrapper() - { - delete m_wrapper; - m_wrapper = 0; - - Psu::platform_release_semaphore(m_outputBufferSemaphore); - } - -int SyborgGraphicsWrapper::Reset( uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ) - { - int ret = -1; - if ( m_wrapper ) - { - delete m_wrapper; - } - m_wrapper = NULL; - - uint8_t *cmd_buffer = (uint8_t *)aCommandMemBase; - uint8_t *frame_buffer = (uint8_t *)aGraphicsMemBase; - if( (cmd_buffer != NULL) && (frame_buffer != NULL) ) - { - m_wrapper = new KhronosAPIWrapper( (MGraphicsVHWCallback*)this, - frame_buffer, &cmd_buffer[VVHW_INPUT_BASE], &cmd_buffer[VVHW_OUTPUT_BASE] ); - //Reset synchronisation mechanisms - Psu::platform_release_semaphore(m_outputBufferSemaphore); - Psu::platform_create_semaphore(m_outputBufferSemaphore, 1, 1); - ret = 0; - } - else - { - ret = -1; - } - return ret; - } - -void SyborgGraphicsWrapper::LockOutputBuffer() - { - #ifdef KHRONOS_API_W_MULTITHREAD - Psu::platform_wait_for_signal(m_outputBufferSemaphore); - #endif - } - -void SyborgGraphicsWrapper::ReleaseOutputBuffer(){} - -void SyborgGraphicsWrapper::ProcessingDone(int i) - { - m_pythonCallBack( i ); - } - -extern "C" - { - SYBORG_GRAPHICSWRAPPER_API SyborgGraphicsWrapper* create_SyborgGraphicsWrapper() - { - return new SyborgGraphicsWrapper(); - } - SYBORG_GRAPHICSWRAPPER_API int initialize_SyborgGraphicsWrapper( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - Psu::platform_create_semaphore(m_outputBufferSemaphore, 1, 1); - // Change to proper error handling - return 0; - } - - SYBORG_GRAPHICSWRAPPER_API int set_GraphicsCallBack( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, int (*aGraphicsCallBack) (int) ) - { - m_pythonCallBack = aGraphicsCallBack; - // Change to proper error handling - return 0; - } - - SYBORG_GRAPHICSWRAPPER_API int reset_SyborgGraphicsWrapper( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t *aGraphicsMemBase, uint32_t *aCommandMemBase ) - { - return aSyborgGraphicsWrapper->Reset( aGraphicsMemBase, aCommandMemBase ); - } - - SYBORG_GRAPHICSWRAPPER_API uint32_t get_InputBufferTail( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->InputBufferTail(); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_InputBufferHead( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->InputBufferHead( ); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_InputBufferReadCount( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->InputBufferReadCount( ); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_InputBufferWriteCount( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->InputBufferWriteCount( ); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_InputMaxTailIndex( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->InputMaxTailIndex( ); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_cmd_memsize( void ) - { - return (VVI_PARAMETERS_INPUT_MEMORY_SIZE + - VVI_PARAMETERS_OUTPUT_MEMORY_SIZE); - } - SYBORG_GRAPHICSWRAPPER_API uint32_t get_framebuffer_memsize( void ) - { - return VVI_SURFACEBUFFER_BASE_ADDRESS; - } - - - SYBORG_GRAPHICSWRAPPER_API unsigned int execute_command( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - return m_wrapper->Execute( ); - } - SYBORG_GRAPHICSWRAPPER_API void set_InputBufferTail( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t aVal ) - { - m_wrapper->SetInputBufferTail( aVal ); - } - SYBORG_GRAPHICSWRAPPER_API void set_InputBufferHead( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t aVal ) - { - m_wrapper->SetInputBufferHead( aVal ); - } - SYBORG_GRAPHICSWRAPPER_API void set_InputBufferReadCount( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t aVal ) - { - m_wrapper->SetInputBufferReadCount( aVal ); - } - SYBORG_GRAPHICSWRAPPER_API void set_InputBufferWriteCount( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t aVal ) - { - m_wrapper->SetInputBufferWriteCount( aVal ); - } - SYBORG_GRAPHICSWRAPPER_API void set_InputMaxTailIndex( SyborgGraphicsWrapper* aSyborgGraphicsWrapper, uint32_t aVal ) - { - m_wrapper->SetInputMaxTailIndex( aVal ); - } - SYBORG_GRAPHICSWRAPPER_API void signal_outputbuffer_semafore( SyborgGraphicsWrapper* aSyborgGraphicsWrapper ) - { - #ifdef KHRONOS_API_W_MULTITHREAD - Psu::platform_signal_semaphore(m_outputBufferSemaphore); - #endif - } - - }