summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/python/tests/data.py
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-14 22:27:40 +0900
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2008-07-14 22:27:40 +0900
commit64979d618a24e8378d95944d5f1d1b5847880a48 (patch)
tree34a0a9aa3c71207bbe37d2ec33e019bdc637138e /src/gallium/state_trackers/python/tests/data.py
parent3aea28b9b1e9100be6836d4f88444e3cdfe5c4be (diff)
python: Basic test case for 2d texture.
Diffstat (limited to 'src/gallium/state_trackers/python/tests/data.py')
-rw-r--r--src/gallium/state_trackers/python/tests/data.py274
1 files changed, 274 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/python/tests/data.py b/src/gallium/state_trackers/python/tests/data.py
new file mode 100644
index 0000000000..2287884285
--- /dev/null
+++ b/src/gallium/state_trackers/python/tests/data.py
@@ -0,0 +1,274 @@
+#!/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):
+ pixels, block = blocks[0]
+
+ stride = surface.nblocksx*surface.block.size
+ size = surface.nblocksy*stride
+
+ raw = ByteArray(size)
+ rgba = FloatArray(surface.height*surface.width*4)
+
+ for y in range(0, surface.nblocksx):
+ for x in range(0, surface.nblocksy):
+
+ offset = (y*surface.nblocksx + x)*surface.block.width
+ for i in range(0, surface.block.size):
+ raw[offset + i] = block[i]
+
+ for j in range(0, surface.block.width):
+ for i in range(0, surface.block.height):
+ offset = ((y*surface.block.height + j)*surface.width + x*surface.block.width + i)*4
+ pixel = pixels[j*surface.block.width + i]
+ 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)
+
+ 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)
+
+
+