00001
00002
00003 This file is subject to the terms and conditions of the GNU Lesser
00004 General Public License Version 2.1. See the file "COPYING" in the
00005 main directory of this archive for more details. */
00006
00007 #include "GL/ps2gl.h"
00008
00009 #include "ps2s/gsmem.h"
00010
00016 static bool GsMemInitted = false;
00017
00023
00024
00040 void
00041 pglPrintGsMemAllocation()
00042 {
00043 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00044 mm.PrintAllocation();
00045 }
00046
00051 int
00052 pglHasGsMemBeenInitted()
00053 {
00054 return GsMemInitted;
00055 }
00056
00057
00058
00120 pgl_slot_handle_t
00121 pglAddGsMemSlot( int startingPage, int pageLength, unsigned int pixelMode )
00122 {
00123 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00124 GS::CMemSlot *newSlot = mm.AddSlot( startingPage, pageLength, (GS::tPSM)pixelMode );
00125
00126 GsMemInitted = true;
00127
00128 return reinterpret_cast<pgl_slot_handle_t>( newSlot );
00129 }
00130
00135 void
00136 pglLockGsMemSlot( pgl_slot_handle_t slot_handle )
00137 {
00138 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(slot_handle);
00139 slot->Lock();
00140 }
00141
00146 void
00147 pglUnlockGsMemSlot( pgl_slot_handle_t slot_handle )
00148 {
00149 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(slot_handle);
00150 slot->Unlock();
00151 }
00152
00156 void
00157 pglRemoveAllGsMemSlots()
00158 {
00159 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00160 mm.RemoveAllSlots();
00161 }
00162
00164
00165
00166
00190 pgl_area_handle_t
00191 pglCreateGsMemArea( int width, int height, unsigned int pix_format )
00192 {
00193 GS::CMemArea *newArea = new GS::CMemArea( width, height, (GS::tPSM)pix_format );
00194 return reinterpret_cast<pgl_area_handle_t>(newArea);
00195 }
00196
00200 void
00201 pglDestroyGsMemArea( pgl_area_handle_t mem_area )
00202 {
00203 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00204 delete area;
00205 }
00206
00217 void
00218 pglAllocGsMemArea( pgl_area_handle_t mem_area )
00219 {
00220 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00221 area->Alloc();
00222 }
00223
00228 void
00229 pglFreeGsMemArea( pgl_area_handle_t mem_area )
00230 {
00231 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00232 area->Free();
00233 }
00234
00240 void
00241 pglSetGsMemAreaWordAddr( pgl_area_handle_t mem_area, unsigned int addr )
00242 {
00243 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00244 area->SetWordAddr(addr);
00245 }
00246
00251 void
00252 pglBindGsMemAreaToSlot( pgl_area_handle_t mem_area, pgl_slot_handle_t mem_slot )
00253 {
00254 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00255 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(mem_slot);
00256 slot->Bind( *area, 0 );
00257 }
00258
00262 void
00263 pglUnbindGsMemArea( pgl_area_handle_t mem_area )
00264 {
00265 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00266 area->Unbind();
00267 }
00268
00273 void
00274 pglLockGsMemArea( pgl_area_handle_t mem_area )
00275 {
00276 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00277 area->Lock();
00278 }
00282 void
00283 pglUnlockGsMemArea( pgl_area_handle_t mem_area )
00284 {
00285 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00286 area->Unlock();
00287 }
00291 int
00292 pglGsMemAreaIsAllocated( pgl_area_handle_t mem_area )
00293 {
00294 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00295 return (int)area->IsAllocated();
00296 }
00300 unsigned int
00301 pglGetGsMemAreaWordAddr( pgl_area_handle_t mem_area )
00302 {
00303 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00304 return area->GetWordAddr();
00305 }
00306
00308
00310