summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/python/tests
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-18 01:08:06 +0900
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-18 01:20:44 +0900
commite74f94b39ac47a319ee21c526315fb6fbc1513de (patch)
tree1bfca5c69ac288172f200a8ea026bb8f874bf9ee /src/gallium/state_trackers/python/tests
parent174c6912d68a954ff5eddf8b953b813e2eac3deb (diff)
python: Reimplement the generation of random texture samples in C.
Diffstat (limited to 'src/gallium/state_trackers/python/tests')
-rw-r--r--src/gallium/state_trackers/python/tests/data.py285
-rw-r--r--src/gallium/state_trackers/python/tests/texture.py29
2 files changed, 4 insertions, 310 deletions
diff --git a/src/gallium/state_trackers/python/tests/data.py b/src/gallium/state_trackers/python/tests/data.py
deleted file mode 100644
index 3c1cda59d7..0000000000
--- a/src/gallium/state_trackers/python/tests/data.py
+++ /dev/null
@@ -1,285 +0,0 @@
-#!/usr/bin/env python
-##########################################################################
-#
-# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sub license, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice (including the
-# next paragraph) shall be included in all copies or substantial portions
-# of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
-# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-##########################################################################
-
-"""Texture data generation for use in testing."""
-
-
-import random
-
-from gallium import *
-
-
-dxt1_rgb_data = [
- (
- [
- [0x99, 0xb0, 0x8e, 0xff],
- [0x5d, 0x62, 0x89, 0xff],
- [0x99, 0xb0, 0x8e, 0xff],
- [0x99, 0xb0, 0x8e, 0xff],
- [0xd6, 0xff, 0x94, 0xff],
- [0x5d, 0x62, 0x89, 0xff],
- [0x99, 0xb0, 0x8e, 0xff],
- [0xd6, 0xff, 0x94, 0xff],
- [0x5d, 0x62, 0x89, 0xff],
- [0x5d, 0x62, 0x89, 0xff],
- [0x99, 0xb0, 0x8e, 0xff],
- [0x21, 0x14, 0x84, 0xff],
- [0x5d, 0x62, 0x89, 0xff],
- [0x21, 0x14, 0x84, 0xff],
- [0x21, 0x14, 0x84, 0xff],
- [0x99, 0xb0, 0x8e, 0xff],
- ],
- [0xf2, 0xd7, 0xb0, 0x20, 0xae, 0x2c, 0x6f, 0x97],
- ),
- (
- [
- [0xb5, 0xcf, 0x9c, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0x21, 0x08, 0x6b, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0x52, 0x4a, 0x7b, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0xb5, 0xcf, 0x9c, 0xff],
- [0x21, 0x08, 0x6b, 0xff],
- [0xb5, 0xcf, 0x9c, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0x52, 0x4a, 0x7b, 0xff],
- [0xb5, 0xcf, 0x9c, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- [0x52, 0x4a, 0x7b, 0xff],
- [0x83, 0x8c, 0x8b, 0xff],
- ],
- [0x73, 0xb6, 0x4d, 0x20, 0x98, 0x2b, 0xe1, 0xb8],
- ),
- (
- [
- [0x00, 0x2c, 0xff, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- [0x4a, 0x5c, 0xbd, 0xff],
- [0x4a, 0x5c, 0xbd, 0xff],
- [0x4a, 0x5c, 0xbd, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0xde, 0xbe, 0x39, 0xff],
- [0x94, 0x8d, 0x7b, 0xff],
- ],
- [0xe7, 0xdd, 0x7f, 0x01, 0xf9, 0xab, 0x08, 0x80],
- ),
- (
- [
- [0x6b, 0x24, 0x21, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x8b, 0x7a, 0x99, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x6b, 0x24, 0x21, 0xff],
- [0x8b, 0x7a, 0x99, 0xff],
- [0x9c, 0xa6, 0xd6, 0xff],
- [0x6b, 0x24, 0x21, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x8b, 0x7a, 0x99, 0xff],
- [0x6b, 0x24, 0x21, 0xff],
- [0x8b, 0x7a, 0x99, 0xff],
- [0x7b, 0x4f, 0x5d, 0xff],
- [0x9c, 0xa6, 0xd6, 0xff],
- ],
- [0x3a, 0x9d, 0x24, 0x69, 0xbd, 0x9f, 0xb4, 0x39],
- ),
-]
-
-dxt1_rgba = [
- (
- [
- [0x00, 0x00, 0x00, 0x00],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x29, 0xff, 0xff, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x73, 0x55, 0x21, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x4e, 0xaa, 0x90, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x4e, 0xaa, 0x90, 0xff],
- ],
- [0xff, 0x2f, 0xa4, 0x72, 0xeb, 0xb2, 0xbd, 0xbe],
- ),
- (
- [
- [0xb5, 0xe3, 0x63, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x6b, 0x24, 0x84, 0xff],
- [0xb5, 0xe3, 0x63, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0xb5, 0xe3, 0x63, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x6b, 0x24, 0x84, 0xff],
- [0x6b, 0x24, 0x84, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0xb5, 0xe3, 0x63, 0xff],
- [0x90, 0x83, 0x73, 0xff],
- [0xb5, 0xe3, 0x63, 0xff],
- ],
- [0x30, 0x69, 0x0c, 0xb7, 0x4d, 0xf7, 0x0f, 0x67],
- ),
- (
- [
- [0x00, 0x00, 0x00, 0x00],
- [0xc6, 0x86, 0x8c, 0xff],
- [0xc6, 0x86, 0x8c, 0xff],
- [0x21, 0x65, 0x42, 0xff],
- [0x21, 0x65, 0x42, 0xff],
- [0x21, 0x65, 0x42, 0xff],
- [0x21, 0x65, 0x42, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x21, 0x65, 0x42, 0xff],
- [0xc6, 0x86, 0x8c, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0xc6, 0x86, 0x8c, 0xff],
- ],
- [0x28, 0x23, 0x31, 0xc4, 0x17, 0xc0, 0xd3, 0x7f],
- ),
- (
- [
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0xc6, 0xe3, 0x9c, 0xff],
- [0x7b, 0x1c, 0x52, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x00, 0x00, 0x00, 0x00],
- [0x7b, 0x1c, 0x52, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0x7b, 0x1c, 0x52, 0xff],
- [0xa0, 0x7f, 0x77, 0xff],
- [0xc6, 0xe3, 0x9c, 0xff],
- [0x00, 0x00, 0x00, 0x00],
- [0xa0, 0x7f, 0x77, 0xff],
- ],
- [0xea, 0x78, 0x13, 0xc7, 0x7f, 0xfc, 0x33, 0xb6],
- ),
-]
-
-
-
-def generate_data_compressed(surface, blocks):
-
- stride = surface.nblocksx*surface.block.size
- size = surface.nblocksy*stride
-
- raw = ByteArray(size)
- rgba = FloatArray(surface.height*surface.width*4)
-
- for yj in range(0, surface.nblocksy):
- for xj in range(0, surface.nblocksx):
- pixels, block = blocks[random.randint(0, len(blocks) - 1)]
-
- offset = (yj*surface.nblocksx + xj)*surface.block.size
- for i in range(0, surface.block.size):
- raw[offset + i] = block[i]
-
- for yi in range(0, surface.block.height):
- for xi in range(0, surface.block.width):
- y = yj*surface.block.height + yi
- x = xj*surface.block.width + xi
- if y < surface.height and x < surface.width:
- offset = (y*surface.width + x)*4
- pixel = pixels[yi*surface.block.width + xi]
- for ch in range(0, 4):
- rgba[offset + ch] = float(pixel[ch])/255.0
-
- surface.put_tile_raw(0, 0, surface.width, surface.height, raw, stride)
-
- return rgba
-
-
-def generate_data_simple(surface):
- stride = surface.nblocksx*surface.block.size
- size = surface.nblocksy*stride
-
- raw = ByteArray(size)
- rgba = FloatArray(surface.height*surface.width*4)
-
- for i in range(0, size):
- raw[i] = random.randint(0, 255)
-
- surface.put_tile_raw(0, 0, surface.width, surface.height, raw, stride)
-
- surface.get_tile_rgba(0, 0, surface.width, surface.height, rgba)
-
- if surface.format in (PIPE_FORMAT_YCBCR, PIPE_FORMAT_YCBCR_REV):
- # normalize
- for y in range(0, surface.height):
- for x in range(0, surface.width):
- for ch in range(4):
- offset = (y*surface.width + x)*4 + ch
- rgba[offset] = min(max(rgba[offset], 0.0), 1.0)
-
- return rgba
-
-
-def generate_data(surface):
- width = surface.width
- height = surface.height
-
- if surface.format == PIPE_FORMAT_DXT1_RGB:
- return generate_data_compressed(surface, dxt1_rgb_data)
- if surface.format == PIPE_FORMAT_DXT1_RGBA:
- return generate_data_compressed(surface, dxt1_rgba_data)
- if surface.format == PIPE_FORMAT_DXT3_RGBA:
- assert 0
- if surface.format == PIPE_FORMAT_DXT5_RGBA:
- assert 0
-
- return generate_data_simple(surface)
-
-
-
diff --git a/src/gallium/state_trackers/python/tests/texture.py b/src/gallium/state_trackers/python/tests/texture.py
index 3d76953126..2c9231349f 100644
--- a/src/gallium/state_trackers/python/tests/texture.py
+++ b/src/gallium/state_trackers/python/tests/texture.py
@@ -30,29 +30,6 @@
import sys
from gallium import *
from base import *
-from data import generate_data
-
-
-def compare_rgba(width, height, rgba1, rgba2, tol=4.0/256, ratio=0.85):
- errors = 0
- for y in range(0, height):
- for x in range(0, width):
- differs = 0
- for ch in range(4):
- offset = (y*width + x)*4 + ch
- v1 = rgba1[offset]
- v2 = rgba2[offset]
- if abs(v1 - v2) > tol:
- if errors == 0:
- sys.stderr.write("x=%u, y=%u, ch=%u differ: %f vs %f\n" % (x, y, ch, v1, v2))
- if errors == 1 and ch == 0:
- sys.stderr.write("...\n")
- differs = 1
- errors += differs
- total = height*width
- if errors:
- sys.stderr.write("%u out of %u pixels differ\n" % (errors, total))
- return float(total - errors)/float(total) >= ratio
def lods(*dims):
@@ -214,10 +191,12 @@ class TextureTest(TestCase):
height=height,
last_level = last_level)
- expected_rgba = generate_data(texture.get_surface(
+ expected_rgba = FloatArray(height*width*4)
+ texture.get_surface(
usage = PIPE_BUFFER_USAGE_CPU_READ|PIPE_BUFFER_USAGE_CPU_WRITE,
face = face,
- level = level))
+ level = level,
+ ).sample_rgba(expected_rgba)
ctx.set_sampler_texture(0, texture)