python/tests: Get the tests running again.

This commit is contained in:
José Fonseca
2010-03-31 12:28:49 +01:00
parent 52b4691518
commit fceee46022
5 changed files with 97 additions and 32 deletions

View File

@@ -128,6 +128,7 @@ def test(dev):
scissor.maxy = height scissor.maxy = height
ctx.set_scissor(scissor) ctx.set_scissor(scissor)
# clip
clip = Clip() clip = Clip()
clip.nr = 0 clip.nr = 0
ctx.set_clip(clip) ctx.set_clip(clip)

View File

@@ -127,16 +127,16 @@ class Test:
self._run(result) self._run(result)
result.summary() result.summary()
def assert_rgba(self, surface, x, y, w, h, expected_rgba, pixel_tol=4.0/256, surface_tol=0.85): def assert_rgba(self, ctx, surface, x, y, w, h, expected_rgba, pixel_tol=4.0/256, surface_tol=0.85):
total = h*w total = h*w
different = surface.compare_tile_rgba(x, y, w, h, expected_rgba, tol=pixel_tol) different = ctx.surface_compare_rgba(surface, x, y, w, h, expected_rgba, tol=pixel_tol)
if different: if different:
sys.stderr.write("%u out of %u pixels differ\n" % (different, total)) sys.stderr.write("%u out of %u pixels differ\n" % (different, total))
if float(total - different)/float(total) < surface_tol: if float(total - different)/float(total) < surface_tol:
if 0: if 0:
rgba = FloatArray(h*w*4) rgba = FloatArray(h*w*4)
surface.get_tile_rgba(x, y, w, h, rgba) ctx.surface_read_rgba(surface, x, y, w, h, rgba)
show_image(w, h, Result=rgba, Expected=expected_rgba) show_image(w, h, Result=rgba, Expected=expected_rgba)
save_image(w, h, rgba, "result.png") save_image(w, h, rgba, "result.png")
save_image(w, h, expected_rgba, "expected.png") save_image(w, h, expected_rgba, "expected.png")

View File

@@ -99,21 +99,18 @@ class TextureTest(TestCase):
w = dst_surface.width w = dst_surface.width
h = dst_surface.height h = dst_surface.height
# ??? stride = util_format_get_stride(format, w)
stride = pf_get_stride(texture->format, w) size = util_format_get_nblocksy(format, h) * stride
size = pf_get_nblocksy(texture->format) * stride
src_raw = os.urandom(size) src_raw = os.urandom(size)
src_surface.put_tile_raw(0, 0, w, h, src_raw, stride)
ctx = self.dev.context_create() ctx = self.dev.context_create()
ctx.surface_write_raw(src_surface, 0, 0, w, h, src_raw, stride)
ctx.surface_copy(dst_surface, 0, 0, ctx.surface_copy(dst_surface, 0, 0,
src_surface, 0, 0, w, h) src_surface, 0, 0, w, h)
ctx.flush() dst_raw = ctx.surface_read_raw(dst_surface, 0, 0, w, h)
dst_raw = dst_surface.get_tile_raw(0, 0, w, h)
if dst_raw != src_raw: if dst_raw != src_raw:
raise TestFailure raise TestFailure

View File

@@ -115,6 +115,7 @@ class TextureColorSampleTest(TestCase):
def test(self): def test(self):
dev = self.dev dev = self.dev
ctx = self.ctx
target = self.target target = self.target
format = self.format format = self.format
@@ -125,6 +126,8 @@ class TextureColorSampleTest(TestCase):
face = self.face face = self.face
level = self.level level = self.level
zslice = self.zslice zslice = self.zslice
minz = 0.0
maxz = 1.0
tex_usage = PIPE_TEXTURE_USAGE_SAMPLER tex_usage = PIPE_TEXTURE_USAGE_SAMPLER
geom_flags = 0 geom_flags = 0
@@ -136,8 +139,6 @@ class TextureColorSampleTest(TestCase):
if not dev.is_format_supported(format, target, tex_usage, geom_flags): if not dev.is_format_supported(format, target, tex_usage, geom_flags):
raise TestSkip raise TestSkip
ctx = self.dev.context_create()
# disabled blending/masking # disabled blending/masking
blend = Blend() blend = Blend()
blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE
@@ -155,7 +156,6 @@ class TextureColorSampleTest(TestCase):
rasterizer = Rasterizer() rasterizer = Rasterizer()
rasterizer.front_winding = PIPE_WINDING_CW rasterizer.front_winding = PIPE_WINDING_CW
rasterizer.cull_mode = PIPE_WINDING_NONE rasterizer.cull_mode = PIPE_WINDING_NONE
rasterizer.bypass_vs_clip_and_viewport = 1
ctx.set_rasterizer(rasterizer) ctx.set_rasterizer(rasterizer)
# samplers # samplers
@@ -183,14 +183,45 @@ class TextureColorSampleTest(TestCase):
) )
expected_rgba = FloatArray(height*width*4) expected_rgba = FloatArray(height*width*4)
texture.get_surface( surface = texture.get_surface(
face = face, face = face,
level = level, level = level,
zslice = zslice, zslice = zslice,
).sample_rgba(expected_rgba) )
ctx.surface_sample_rgba(surface, expected_rgba)
ctx.set_fragment_sampler_texture(0, texture) ctx.set_fragment_sampler_texture(0, texture)
# viewport
viewport = Viewport()
scale = FloatArray(4)
scale[0] = width
scale[1] = height
scale[2] = (maxz - minz) / 2.0
scale[3] = 1.0
viewport.scale = scale
translate = FloatArray(4)
translate[0] = 0.0
translate[1] = 0.0
translate[2] = (maxz - minz) / 2.0
translate[3] = 0.0
viewport.translate = translate
ctx.set_viewport(viewport)
# scissor
scissor = Scissor()
scissor.minx = 0
scissor.miny = 0
scissor.maxx = width
scissor.maxy = height
ctx.set_scissor(scissor)
# clip
clip = Clip()
clip.nr = 0
ctx.set_clip(clip)
# framebuffer # framebuffer
cbuf_tex = dev.texture_create( cbuf_tex = dev.texture_create(
PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM,
@@ -265,8 +296,8 @@ class TextureColorSampleTest(TestCase):
for i in range(0, 4): for i in range(0, 4):
j = 8*i j = 8*i
verts[j + 0] = pos[i][0] # x verts[j + 0] = pos[i][0]/float(width) # x
verts[j + 1] = pos[i][1] # y verts[j + 1] = pos[i][1]/float(height) # y
verts[j + 2] = 0.0 # z verts[j + 2] = 0.0 # z
verts[j + 3] = 1.0 # w verts[j + 3] = 1.0 # w
verts[j + 4] = tex[i][0] # s verts[j + 4] = tex[i][0] # s
@@ -283,7 +314,7 @@ class TextureColorSampleTest(TestCase):
cbuf = cbuf_tex.get_surface() cbuf = cbuf_tex.get_surface()
self.assert_rgba(cbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85) self.assert_rgba(ctx, cbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85)
class TextureDepthSampleTest(TestCase): class TextureDepthSampleTest(TestCase):
@@ -302,6 +333,7 @@ class TextureDepthSampleTest(TestCase):
def test(self): def test(self):
dev = self.dev dev = self.dev
ctx = self.ctx
target = self.target target = self.target
format = self.format format = self.format
@@ -312,6 +344,8 @@ class TextureDepthSampleTest(TestCase):
face = self.face face = self.face
level = self.level level = self.level
zslice = self.zslice zslice = self.zslice
minz = 0.0
maxz = 1.0
tex_usage = PIPE_TEXTURE_USAGE_SAMPLER tex_usage = PIPE_TEXTURE_USAGE_SAMPLER
geom_flags = 0 geom_flags = 0
@@ -323,8 +357,6 @@ class TextureDepthSampleTest(TestCase):
if not dev.is_format_supported(format, target, tex_usage, geom_flags): if not dev.is_format_supported(format, target, tex_usage, geom_flags):
raise TestSkip raise TestSkip
ctx = self.dev.context_create()
# disabled blending/masking # disabled blending/masking
blend = Blend() blend = Blend()
blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE
@@ -345,9 +377,24 @@ class TextureDepthSampleTest(TestCase):
rasterizer = Rasterizer() rasterizer = Rasterizer()
rasterizer.front_winding = PIPE_WINDING_CW rasterizer.front_winding = PIPE_WINDING_CW
rasterizer.cull_mode = PIPE_WINDING_NONE rasterizer.cull_mode = PIPE_WINDING_NONE
rasterizer.bypass_vs_clip_and_viewport = 1
ctx.set_rasterizer(rasterizer) ctx.set_rasterizer(rasterizer)
# viewport
viewport = Viewport()
scale = FloatArray(4)
scale[0] = width
scale[1] = height
scale[2] = (maxz - minz) / 2.0
scale[3] = 1.0
viewport.scale = scale
translate = FloatArray(4)
translate[0] = 0.0
translate[1] = 0.0
translate[2] = (maxz - minz) / 2.0
translate[3] = 0.0
viewport.translate = translate
ctx.set_viewport(viewport)
# samplers # samplers
sampler = Sampler() sampler = Sampler()
sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE
@@ -373,14 +420,29 @@ class TextureDepthSampleTest(TestCase):
) )
expected_rgba = FloatArray(height*width*4) expected_rgba = FloatArray(height*width*4)
texture.get_surface( surface = texture.get_surface(
face = face, face = face,
level = level, level = level,
zslice = zslice, zslice = zslice,
).sample_rgba(expected_rgba) )
ctx.surface_sample_rgba(surface, expected_rgba)
ctx.set_fragment_sampler_texture(0, texture) ctx.set_fragment_sampler_texture(0, texture)
# scissor
scissor = Scissor()
scissor.minx = 0
scissor.miny = 0
scissor.maxx = width
scissor.maxy = height
ctx.set_scissor(scissor)
# clip
clip = Clip()
clip.nr = 0
ctx.set_clip(clip)
# framebuffer # framebuffer
cbuf_tex = dev.texture_create( cbuf_tex = dev.texture_create(
PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_B8G8R8A8_UNORM,
@@ -464,8 +526,8 @@ class TextureDepthSampleTest(TestCase):
for i in range(0, 4): for i in range(0, 4):
j = 8*i j = 8*i
verts[j + 0] = pos[i][0] # x verts[j + 0] = pos[i][0]/float(width) # x
verts[j + 1] = pos[i][1] # y verts[j + 1] = pos[i][1]/float(height) # y
verts[j + 2] = 0.0 # z verts[j + 2] = 0.0 # z
verts[j + 3] = 1.0 # w verts[j + 3] = 1.0 # w
verts[j + 4] = tex[i][0] # s verts[j + 4] = tex[i][0] # s
@@ -482,7 +544,7 @@ class TextureDepthSampleTest(TestCase):
zsbuf = zsbuf_tex.get_surface() zsbuf = zsbuf_tex.get_surface()
self.assert_rgba(zsbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85) self.assert_rgba(ctx, zsbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85)
@@ -534,6 +596,8 @@ def main():
PIPE_TEX_FACE_NEG_Z, PIPE_TEX_FACE_NEG_Z,
] ]
ctx = dev.context_create()
for format in color_formats: for format in color_formats:
for target in targets: for target in targets:
for size in sizes: for size in sizes:
@@ -551,6 +615,7 @@ def main():
while zslice < depth >> level: while zslice < depth >> level:
test = TextureColorSampleTest( test = TextureColorSampleTest(
dev = dev, dev = dev,
ctx = ctx,
target = target, target = target,
format = format, format = format,
width = size, width = size,
@@ -573,6 +638,7 @@ def main():
for size in sizes: for size in sizes:
test = TextureDepthSampleTest( test = TextureDepthSampleTest(
dev = dev, dev = dev,
ctx = ctx,
target = target, target = target,
format = format, format = format,
width = size, width = size,

View File

@@ -86,15 +86,16 @@ class TextureTest(TestCase):
surface = texture.get_surface(face, level, zslice) surface = texture.get_surface(face, level, zslice)
# ??? stride = util_format_get_stride(format, width)
stride = pf_get_stride(texture->format, w) size = util_format_get_nblocksy(format, height) * stride
size = pf_get_nblocksy(texture->format) * stride
in_raw = os.urandom(size) in_raw = os.urandom(size)
surface.put_tile_raw(0, 0, surface.width, surface.height, in_raw, stride) ctx = self.dev.context_create()
out_raw = surface.get_tile_raw(0, 0, surface.width, surface.height) ctx.surface_write_raw(surface, 0, 0, surface.width, surface.height, in_raw, stride)
out_raw = ctx.surface_read_raw(surface, 0, 0, surface.width, surface.height)
if in_raw != out_raw: if in_raw != out_raw:
raise TestFailure raise TestFailure