Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

gsmemory.cpp

Go to the documentation of this file.
00001 /*           Copyright (C) 2001 Sony Computer Entertainment America
00002                               All Rights Reserved
00003                                SCEA Confidential                                */
00004 
00005 #include "GL/ps2gl.h"
00006 
00007 #include "ps2s/gsmem.h"
00008 
00014 static bool GsMemInitted = false;
00015 
00021 // gs mem
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 // slots
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  // gs_mem_slots
00162 
00163 // mem area operations
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 ); // FIXME: current frame number
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  // gs_mem_areas
00305  // gs_mem
00307  // pgl_api

ps2gl version 0.2