windows phone 8.1 gfx memory

Monkey Targets Forums/Windows 8/windows phone 8.1 gfx memory

pantson(Posted 2014) [#1]
Hi
After my initial app crashing 'for no reason' when loading images. I decided to write a test app.
Strict

#test=1

Import mojo

Function Main:Int()
	New Test()
	Return 0
End Function

Class Test Extends App
	Const FPS:=30
	Field timer:DeltaTimer
	
	Const game_width:=600
	Field scale:Float
	Field game_height:Float
	Field counter:Int=0
	Field img_counter:Int=0
	
	Field img:Image[101]
		
	Method OnCreate:Int()
		Local i:Int
		
	    SetUpdateRate(FPS)

#If test=1
		i=0
		While i<60
			Print i
			img[i]=LoadImage("circle.png")
			i=i+1
		Wend
#End

		scale=DeviceWidth()/Float(game_width)
		game_height=DeviceHeight()*scale
				
		counter = 0
		
		Print "init end"
		
	    Return True
	End Method

	Method OnUpdate:Int()
		Local t:Int
		Print "update start"
		
		Print "update end"
		Return True
	End Method
  
	Method OnRender:Int()
		Local i:Int
		
		Print "render start"
		
	    PushMatrix()
	    Cls()
		Scale scale,scale
		
#If test=2		
		counter = counter + 1
		If counter Mod 5=0
		If img_counter<100
			Print img_counter
			img[img_counter] = LoadImage("circle.png")
			img_counter=img_counter+1
		End
		End
#End
		
		i=0
		While i<100
			If img[i]<>Null
				Print "drawing image "+i
				DrawImage img[i],i*5,i*5
			End
			i=i+1
		Wend
				
	    PopMatrix()
	
		Print "render end"
	    Return True
	End Method

End Class

There are 2 tests...

Test 1
---------
Loads images during OnCreate only. At about 80 images, my phone decides to crash inbetween Oncreate() and OnUpdate(). You can tell as the output says "end init" but doesnt display any "start" message.

Test 2
---------
This loads images during OnRender(). The more it loads eventually the app will crash with a GC error.

Can people please test on their 8.0 and 8.1 devices please and display the results?
I don't seem to get these memory issues on Android,XNA or HTML, and just wondering if
a) its my set up
b) it Windows 8.1 and Monkey
c) its just crap coding by me ;-)

ta!

EDIT
------
removed my pantson lib being imported. it wasnt required in the above example
Also the circle.png is a 200*200 simple image with a circle in. Please create this image or something like lit.
Larger images make it crash quicker, that leads me towards gfx memory


navyRod(Posted 2014) [#2]
Should you be loading an image in OnRender ?


pantson(Posted 2014) [#3]
I've had no issues on other OS's and it allows loader bars and in game level loading.


SLotman(Posted 2014) [#4]
I'd say check your code. Load images on OnUpdate (not OnCreate, or OnRender), and check what you're doing:

I'm not using Win 8.1, but on 8.0 it works without problems (at least on version 77b, I didn't upgrade it yet)


pantson(Posted 2014) [#5]
Thanks SLotman
Does Windows 8.0 every run out of mem or randomly crash on 8.0 on TEST 1?
which hardware are you using?


navyRod(Posted 2014) [#6]
Slotman -- I am very new but shouldn't loading images be handled in the OnCreate method and not the OnUpdate or OnRender

Seems like if you did it there you would constantly be doing loadImage at what ever the SetUpdate rate was set to ?

Just trying to make sure I have a correct understanding how mojo works.

Thanks
Rod


pantson(Posted 2014) [#7]
slightly off topic but...
images can be loaded during onRender() and onUpdate() and yes they would load every loop.
in my usual code library (not the example above), my onRender and onUpdate has a game_state case inside that will perform different things depending on wether game_state is game_play, game_title, game_loading.
This way i can have a loader bar at the start in game_loading, once finished set game_state to game_title, when press play set game_state to game_play