00001
00002
00003
00004
00005 #include "GL/ps2gl.h"
00006
00007 #include "ps2s/gsmem.h"
00008
00014 static bool GsMemInitted = false;
00015
00021
00022
00038 void
00039 pglPrintGsMemAllocation()
00040 {
00041 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00042 mm.PrintAllocation();
00043 }
00044
00049 int
00050 pglHasGsMemBeenInitted()
00051 {
00052 return GsMemInitted;
00053 }
00054
00055
00056
00118 pgl_slot_handle_t
00119 pglAddGsMemSlot( int startingPage, int pageLength, unsigned int pixelMode )
00120 {
00121 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00122 GS::CMemSlot *newSlot = mm.AddSlot( startingPage, pageLength, (GS::tPSM)pixelMode );
00123
00124 GsMemInitted = true;
00125
00126 return reinterpret_cast<pgl_slot_handle_t>( newSlot );
00127 }
00128
00133 void
00134 pglLockGsMemSlot( pgl_slot_handle_t slot_handle )
00135 {
00136 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(slot_handle);
00137 slot->Lock();
00138 }
00139
00144 void
00145 pglUnlockGsMemSlot( pgl_slot_handle_t slot_handle )
00146 {
00147 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(slot_handle);
00148 slot->Unlock();
00149 }
00150
00154 void
00155 pglRemoveAllGsMemSlots()
00156 {
00157 GS::CMemManager &mm = GS::CMemArea::GetMemManager();
00158 mm.RemoveAllSlots();
00159 }
00160
00162
00163
00164
00188 pgl_area_handle_t
00189 pglCreateGsMemArea( int width, int height, unsigned int pix_format )
00190 {
00191 GS::CMemArea *newArea = new GS::CMemArea( width, height, (GS::tPSM)pix_format );
00192 return reinterpret_cast<pgl_area_handle_t>(newArea);
00193 }
00194
00198 void
00199 pglDestroyGsMemArea( pgl_area_handle_t mem_area )
00200 {
00201 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00202 delete area;
00203 }
00204
00215 void
00216 pglAllocGsMemArea( pgl_area_handle_t mem_area )
00217 {
00218 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00219 area->Alloc();
00220 }
00221
00226 void
00227 pglFreeGsMemArea( pgl_area_handle_t mem_area )
00228 {
00229 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00230 area->Free();
00231 }
00232
00238 void
00239 pglSetGsMemAreaWordAddr( pgl_area_handle_t mem_area, unsigned int addr )
00240 {
00241 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00242 area->SetWordAddr(addr);
00243 }
00244
00249 void
00250 pglBindGsMemAreaToSlot( pgl_area_handle_t mem_area, pgl_slot_handle_t mem_slot )
00251 {
00252 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00253 GS::CMemSlot *slot = reinterpret_cast<GS::CMemSlot*>(mem_slot);
00254 slot->Bind( *area, 0 );
00255 }
00259 void
00260 pglUnbindGsMemArea( pgl_area_handle_t mem_area )
00261 {
00262 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00263 area->Unbind();
00264 }
00265
00270 void
00271 pglLockGsMemArea( pgl_area_handle_t mem_area )
00272 {
00273 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00274 area->Lock();
00275 }
00279 void
00280 pglUnlockGsMemArea( pgl_area_handle_t mem_area )
00281 {
00282 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00283 area->Unlock();
00284 }
00288 int
00289 pglGsMemAreaIsAllocated( pgl_area_handle_t mem_area )
00290 {
00291 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00292 return (int)area->IsAllocated();
00293 }
00297 unsigned int
00298 pglGetGsMemAreaWordAddr( pgl_area_handle_t mem_area )
00299 {
00300 GS::CMemArea *area = reinterpret_cast<GS::CMemArea*>(mem_area);
00301 return area->GetWordAddr();
00302 }
00303
00305
00307