python: Cleanup.
This commit is contained in:
@@ -143,24 +143,16 @@ def test(dev):
|
|||||||
cbuf = dev.texture_create(PIPE_FORMAT_X8R8G8B8_UNORM,
|
cbuf = dev.texture_create(PIPE_FORMAT_X8R8G8B8_UNORM,
|
||||||
width, height,
|
width, height,
|
||||||
usage=PIPE_TEXTURE_USAGE_DISPLAY_TARGET)
|
usage=PIPE_TEXTURE_USAGE_DISPLAY_TARGET)
|
||||||
zbuf = dev.texture_create(PIPE_FORMAT_X8Z24_UNORM,
|
|
||||||
width, height,
|
|
||||||
usage=PIPE_TEXTURE_USAGE_DEPTH_STENCIL)
|
|
||||||
_cbuf = cbuf.get_surface(usage = PIPE_BUFFER_USAGE_GPU_READ|PIPE_BUFFER_USAGE_GPU_WRITE)
|
_cbuf = cbuf.get_surface(usage = PIPE_BUFFER_USAGE_GPU_READ|PIPE_BUFFER_USAGE_GPU_WRITE)
|
||||||
_zsbuf = zbuf.get_surface(usage = PIPE_BUFFER_USAGE_GPU_READ|PIPE_BUFFER_USAGE_GPU_WRITE)
|
|
||||||
fb = Framebuffer()
|
fb = Framebuffer()
|
||||||
fb.width = width
|
fb.width = width
|
||||||
fb.height = height
|
fb.height = height
|
||||||
fb.num_cbufs = 1
|
fb.num_cbufs = 1
|
||||||
fb.set_cbuf(0, _cbuf)
|
fb.set_cbuf(0, _cbuf)
|
||||||
fb.set_zsbuf(_zsbuf)
|
|
||||||
ctx.set_framebuffer(fb)
|
ctx.set_framebuffer(fb)
|
||||||
_cbuf.clear_value = 0x00000000
|
_cbuf.clear_value = 0x00000000
|
||||||
_zsbuf.clear_value = 0x00ffffff
|
|
||||||
ctx.surface_clear(_cbuf, _cbuf.clear_value)
|
ctx.surface_clear(_cbuf, _cbuf.clear_value)
|
||||||
ctx.surface_clear(_zsbuf, _zsbuf.clear_value)
|
|
||||||
del _cbuf
|
del _cbuf
|
||||||
del _zsbuf
|
|
||||||
|
|
||||||
# vertex shader
|
# vertex shader
|
||||||
vs = Shader('''
|
vs = Shader('''
|
||||||
|
@@ -37,28 +37,25 @@ for name, value in globals().items():
|
|||||||
formats[value] = name
|
formats[value] = name
|
||||||
|
|
||||||
|
|
||||||
def make_image(surface):
|
def make_image(width, height, rgba):
|
||||||
pixels = FloatArray(surface.height*surface.width*4)
|
|
||||||
surface.get_tile_rgba(0, 0, surface.width, surface.height, pixels)
|
|
||||||
|
|
||||||
import Image
|
import Image
|
||||||
outimage = Image.new(
|
outimage = Image.new(
|
||||||
mode='RGB',
|
mode='RGB',
|
||||||
size=(surface.width, surface.height),
|
size=(width, height),
|
||||||
color=(0,0,0))
|
color=(0,0,0))
|
||||||
outpixels = outimage.load()
|
outpixels = outimage.load()
|
||||||
for y in range(0, surface.height):
|
for y in range(0, height):
|
||||||
for x in range(0, surface.width):
|
for x in range(0, width):
|
||||||
offset = (y*surface.width + x)*4
|
offset = (y*width + x)*4
|
||||||
r, g, b, a = [int(pixels[offset + ch]*255) for ch in range(4)]
|
r, g, b, a = [int(rgba[offset + ch]*255) for ch in range(4)]
|
||||||
outpixels[x, y] = r, g, b
|
outpixels[x, y] = r, g, b
|
||||||
return outimage
|
return outimage
|
||||||
|
|
||||||
def save_image(filename, surface):
|
def save_image(width, height, rgba, filename):
|
||||||
outimage = make_image(surface)
|
outimage = make_image(width, height, rgba)
|
||||||
outimage.save(filename, "PNG")
|
outimage.save(filename, "PNG")
|
||||||
|
|
||||||
def show_image(*surfaces):
|
def show_image(width, height, **rgbas):
|
||||||
import Tkinter as tk
|
import Tkinter as tk
|
||||||
from PIL import Image, ImageTk
|
from PIL import Image, ImageTk
|
||||||
|
|
||||||
@@ -67,15 +64,17 @@ def show_image(*surfaces):
|
|||||||
x = 64
|
x = 64
|
||||||
y = 64
|
y = 64
|
||||||
|
|
||||||
for i in range(len(surfaces)):
|
labels = rgbas.keys()
|
||||||
surface = surfaces[i]
|
labels.sort()
|
||||||
outimage = make_image(surface)
|
for i in range(len(labels)):
|
||||||
|
label = labels[i]
|
||||||
|
outimage = make_image(width, height, rgbas[label])
|
||||||
|
|
||||||
if i:
|
if i:
|
||||||
window = tk.Toplevel(root)
|
window = tk.Toplevel(root)
|
||||||
else:
|
else:
|
||||||
window = root
|
window = root
|
||||||
window.title('Image %u' % (i+1))
|
window.title(label)
|
||||||
image1 = ImageTk.PhotoImage(outimage)
|
image1 = ImageTk.PhotoImage(outimage)
|
||||||
w = image1.width()
|
w = image1.width()
|
||||||
h = image1.height()
|
h = image1.height()
|
||||||
|
@@ -61,8 +61,8 @@ class TextureTest(Test):
|
|||||||
def run(self):
|
def run(self):
|
||||||
dev = self.dev
|
dev = self.dev
|
||||||
|
|
||||||
format = PIPE_FORMAT_A8R8G8B8_UNORM
|
#format = PIPE_FORMAT_A8R8G8B8_UNORM
|
||||||
#format = PIPE_FORMAT_DXT1_RGB
|
format = PIPE_FORMAT_DXT1_RGB
|
||||||
|
|
||||||
if not dev.is_format_supported(format, PIPE_TEXTURE):
|
if not dev.is_format_supported(format, PIPE_TEXTURE):
|
||||||
pass
|
pass
|
||||||
@@ -130,20 +130,21 @@ class TextureTest(Test):
|
|||||||
|
|
||||||
expected_rgba = generate_data(texture.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ|PIPE_BUFFER_USAGE_CPU_WRITE))
|
expected_rgba = generate_data(texture.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ|PIPE_BUFFER_USAGE_CPU_WRITE))
|
||||||
|
|
||||||
|
# framebuffer
|
||||||
cbuf_tex = dev.texture_create(PIPE_FORMAT_A8R8G8B8_UNORM,
|
cbuf_tex = dev.texture_create(PIPE_FORMAT_A8R8G8B8_UNORM,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
usage = PIPE_TEXTURE_USAGE_RENDER_TARGET)
|
usage = PIPE_TEXTURE_USAGE_RENDER_TARGET)
|
||||||
|
|
||||||
# drawing dest
|
|
||||||
cbuf = cbuf_tex.get_surface(usage = PIPE_BUFFER_USAGE_GPU_WRITE|PIPE_BUFFER_USAGE_GPU_READ)
|
cbuf = cbuf_tex.get_surface(usage = PIPE_BUFFER_USAGE_GPU_WRITE|PIPE_BUFFER_USAGE_GPU_READ)
|
||||||
fb = Framebuffer()
|
fb = Framebuffer()
|
||||||
fb.width = width
|
fb.width = width
|
||||||
fb.height = height
|
fb.height = height
|
||||||
fb.num_cbufs = 1
|
fb.num_cbufs = 1
|
||||||
fb.set_cbuf(0, cbuf)
|
fb.set_cbuf(0, cbuf)
|
||||||
ctx.surface_clear(cbuf, 0x00000000)
|
|
||||||
ctx.set_framebuffer(fb)
|
ctx.set_framebuffer(fb)
|
||||||
|
ctx.surface_clear(cbuf, 0x00000000)
|
||||||
|
del fb
|
||||||
|
|
||||||
# vertex shader
|
# vertex shader
|
||||||
vs = Shader('''
|
vs = Shader('''
|
||||||
@@ -220,14 +221,15 @@ class TextureTest(Test):
|
|||||||
|
|
||||||
ctx.flush()
|
ctx.flush()
|
||||||
|
|
||||||
|
del ctx
|
||||||
|
|
||||||
rgba = FloatArray(height*width*4)
|
rgba = FloatArray(height*width*4)
|
||||||
|
|
||||||
cbuf_tex.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ).get_tile_rgba(x, y, w, h, rgba)
|
cbuf_tex.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ).get_tile_rgba(x, y, w, h, rgba)
|
||||||
|
|
||||||
compare_rgba(width, height, rgba, expected_rgba)
|
compare_rgba(width, height, rgba, expected_rgba)
|
||||||
|
|
||||||
show_image(texture.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ),
|
show_image(width, height, Result=rgba, Expected=expected_rgba)
|
||||||
cbuf_tex.get_surface(usage = PIPE_BUFFER_USAGE_CPU_READ))
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
Reference in New Issue
Block a user