Code archives/3D Graphics - Misc/Bit 256 Check

This code has been declared by its author to be Public Domain code.

Download source code

Bit 256 Check by jfk EO-111102003
Bit Flag 256 is used to allow faster Texture Manipulation.
Some Cards do not fully support this Texture Flag. Mine eg. can only draw to the Texture, but when I use Copyrect then it fails. Use the following two Functions to check what the users hardware supports.
Graphics3D 640,480,16,2
SetBuffer BackBuffer()

; This App will check if the Hardware supports the Texture Flag Bit 256
; (used for faster Texture Manipulations)

; you only need these Globals when you want to display the results...
Global tdif1,tdif2,checksum1,checksum2
If SupportsBit256("space.jpg")
 Color 255,255,255
 Print "Your Machine seems to support VRam resident Texture Operations properly"
 Print "if CopyRect from Backbuffer to that Texturebuffer is used as well"
Else
 Color 255,255,255
 Print "Your Machine don't support VRam resident Texture Ops properly"
 Print "if CopyRect from Backbuffer to that Texturebuffer is used as well"
EndIf
Print
Print "Time without Bit256: "+tdif1+" ms"
Print "Time with Bit256: "+tdif2+" ms"
Print "Checksum without: "+checksum1
Print "Checksum with: "+checksum2
Print "Press any key to continue"
WaitKey()

;__________________________________________________________________________________
Cls
Flip
Cls

If SupportsBit256noBackBuffer("space.jpg")
 Color 255,255,255
 Print "Your Machine seems to support VRam resident Texture Operations properly"
 Print "if CopyRect from Backbuffer to that Texturebuffer is NOT used!"
Else
 Color 255,255,255
 Print "Your Machine don't support VRam resident Texture Ops properly"
 Print "if CopyRect from Backbuffer to that Texturebuffer is NOT used!"
EndIf
Print
Print "Time without Bit256: "+tdif1+" ms"
Print "Time with Bit256: "+tdif2+" ms"
Print "Checksum without: "+checksum1
Print "Checksum with: "+checksum2
Print "Press any key to exit"
WaitKey()

End

;__________________________________________________________________________________

Function SupportsBit256(test$)
 Color 25,25,0
 Text 0,0,"Testing Vram"
 tex1=LoadTexture(test$)
 If tex1=0 Then RuntimeError "Bit256 Test-Texture "+test$+" not found!"
 w=TextureWidth(tex1)
 h=TextureHeight(tex1)
 tex2=CreateTexture(w,h)
 CopyRect 0,0,w,h,0,0,TextureBuffer(tex1),TextureBuffer(tex2)
 FreeTexture tex1
 tex3=LoadTexture(test$,256)
 Color 255,0,255
 SetBuffer TextureBuffer(tex2)
   Text 0,0,"Howdy"
   tt1=MilliSecs()
   For i=0 To 100
    CopyRect 0,0,w,h,0,0,BackBuffer(),TextureBuffer(tex2)
    Text 0,0,"Howdy"
   Next
   tt2=MilliSecs()
   LockBuffer()
   checksum1=0
   For j=0 To h-1
    For i=0 To w-1
     checksum1=(checksum1+(ReadPixelFast(i,j)And $FFFFFF))And $FFFFFFF
    Next
   Next
   UnlockBuffer()
 SetBuffer BackBuffer()
 tdif1=tt2-tt1
 SetBuffer TextureBuffer(tex3)
   tt1=MilliSecs()
   For i=0 To 100
    CopyRect 0,0,w,h,0,0,BackBuffer(),TextureBuffer(tex3)
    Text 0,0,"Howdy"
   Next
   tt2=MilliSecs()
   LockBuffer()
   checksum2=0
   For j=0 To h-1
    For i=0 To w-1
     checksum2=(checksum2+(ReadPixelFast(i,j)And $FFFFFF))And $FFFFFFF
    Next
   Next
   UnlockBuffer()
 SetBuffer BackBuffer()
 tdif2=tt2-tt1
 FreeTexture tex2
 FreeTexture tex3
 If (tdif2>tdif1) Or (checksum2<>checksum1)
  Return False
 Else
  Return True
 EndIf
End Function


;__________________________________________________________________________________


Function SupportsBit256noBackBuffer(test$)
 Color 25,25,0
 Text 0,0,"Testing Vram"
 tex1=LoadTexture(test$)
 If tex1=0 Then RuntimeError "Bit256 Test-Texture "+test$+" not found!"
 w=TextureWidth(tex1)
 h=TextureHeight(tex1)
 tex2=CreateTexture(w,h)
 CopyRect 0,0,w,h,0,0,TextureBuffer(tex1),TextureBuffer(tex2)
 FreeTexture tex1
 tex3=LoadTexture(test$,256)
 Color 255,0,255
 SetBuffer TextureBuffer(tex2)
   Text 0,0,"Howdy"
   tt1=MilliSecs()
   For i=0 To 1000
    Text 0,0,"Howdy"
   Next
   tt2=MilliSecs()
   LockBuffer()
   checksum1=0
   For j=0 To h-1
    For i=0 To w-1
     checksum1=(checksum1+(ReadPixelFast(i,j)And $FFFFFF))And $FFFFFFF
    Next
   Next
   UnlockBuffer()
 SetBuffer BackBuffer()
 tdif1=tt2-tt1
 SetBuffer TextureBuffer(tex3)
   tt1=MilliSecs()
   For i=0 To 1000
    Text 0,0,"Howdy"
   Next
   tt2=MilliSecs()
   LockBuffer()
   checksum2=0
   For j=0 To h-1
    For i=0 To w-1
     checksum2=(checksum2+(ReadPixelFast(i,j)And $FFFFFF))And $FFFFFFF
    Next
   Next
   UnlockBuffer()
 SetBuffer BackBuffer()
 tdif2=tt2-tt1
 FreeTexture tex2
 FreeTexture tex3
 If (tdif2>tdif1) Or (checksum2<>checksum1)
  Return False
 Else
  Return True
 EndIf
End Function

Comments

None.

Code Archives Forum