mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 17:50:11 +01:00
isl: Generate isl_format_layout.c
Generate an array of struct isl_format_layout, using
isl_format_layout.csv as input.
Each entry follows the patten:
[ISL_FORMAT_R32G32B32A32_FLOAT] = {
ISL_FORMAT_R32G32B32A32_FLOAT,
.bs = 16, .bpb = 128,
.bw = 1, .bh = 1, .bd = 1,
.channels = {
.r = { ISL_SFLOAT, 32 },
.g = { ISL_SFLOAT, 32 },
.b = { ISL_SFLOAT, 32 },
.a = { ISL_SFLOAT, 32 },
.l = {},
.i = {},
.p = {},
},
.colorspace = ISL_COLORSPACE_LINEAR,
.txc = ISL_TXC_NONE,
},
This commit is contained in:
parent
7986efc644
commit
bfb022a235
4 changed files with 209 additions and 3 deletions
3
src/vulkan/.gitignore
vendored
3
src/vulkan/.gitignore
vendored
|
|
@ -4,4 +4,5 @@
|
|||
/anv_entrypoints.h
|
||||
/wayland-drm-protocol.c
|
||||
/wayland-drm-client-protocol.h
|
||||
/anv_icd.json
|
||||
/anv_icd.json
|
||||
/isl_format_layout.c
|
||||
|
|
|
|||
|
|
@ -83,11 +83,13 @@ VULKAN_SOURCES = \
|
|||
gen8_pipeline.c \
|
||||
gen7_state.c \
|
||||
gen7_cmd_buffer.c \
|
||||
gen7_pipeline.c
|
||||
gen7_pipeline.c \
|
||||
isl_format_layout.c
|
||||
|
||||
BUILT_SOURCES = \
|
||||
anv_entrypoints.h \
|
||||
anv_entrypoints.c
|
||||
anv_entrypoints.c \
|
||||
isl_format_layout.c
|
||||
|
||||
if HAVE_EGL_PLATFORM_WAYLAND
|
||||
BUILT_SOURCES += \
|
||||
|
|
@ -117,6 +119,11 @@ anv_entrypoints.h : anv_entrypoints_gen.py $(vulkan_include_HEADERS)
|
|||
anv_entrypoints.c : anv_entrypoints_gen.py $(vulkan_include_HEADERS)
|
||||
$(AM_V_GEN)cat $(vulkan_include_HEADERS) | $(PYTHON2) $< code > $@
|
||||
|
||||
isl_format_layout.c: isl_format_layout_gen.bash \
|
||||
isl_format_layout.csv
|
||||
$(AM_V_GEN)$(srcdir)/isl_format_layout_gen.bash \
|
||||
<$(srcdir)/isl_format_layout.csv >$@
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
libvulkan_la_LIBADD = $(WAYLAND_LIBS) -lxcb -lxcb-dri3 \
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
|
@ -265,6 +267,74 @@ enum isl_format {
|
|||
ISL_FORMAT_UNSUPPORTED = UINT16_MAX,
|
||||
};
|
||||
|
||||
enum isl_base_type {
|
||||
ISL_VOID,
|
||||
ISL_RAW,
|
||||
ISL_UNORM,
|
||||
ISL_SNORM,
|
||||
ISL_UFLOAT,
|
||||
ISL_SFLOAT,
|
||||
ISL_UFIXED,
|
||||
ISL_SFIXED,
|
||||
ISL_UINT,
|
||||
ISL_SINT,
|
||||
ISL_USCALED,
|
||||
ISL_SSCALED,
|
||||
};
|
||||
|
||||
enum isl_colorspace {
|
||||
ISL_COLORSPACE_NONE = 0,
|
||||
ISL_COLORSPACE_LINEAR,
|
||||
ISL_COLORSPACE_SRGB,
|
||||
ISL_COLORSPACE_YUV,
|
||||
};
|
||||
|
||||
/**
|
||||
* Texture compression mode
|
||||
*/
|
||||
enum isl_txc {
|
||||
ISL_TXC_NONE = 0,
|
||||
ISL_TXC_DXT1,
|
||||
ISL_TXC_DXT3,
|
||||
ISL_TXC_DXT5,
|
||||
ISL_TXC_FXT1,
|
||||
ISL_TXC_RGTC1,
|
||||
ISL_TXC_RGTC2,
|
||||
ISL_TXC_BPTC,
|
||||
ISL_TXC_ETC1,
|
||||
ISL_TXC_ETC2,
|
||||
};
|
||||
|
||||
struct isl_channel_layout {
|
||||
enum isl_base_type type;
|
||||
uint8_t bits; /**< Size in bits */
|
||||
};
|
||||
|
||||
struct isl_format_layout {
|
||||
enum isl_format format;
|
||||
|
||||
uint16_t bpb; /**< Bits per block */
|
||||
uint8_t bs; /**< Block size, in bytes, rounded towards 0 */
|
||||
uint8_t bw; /**< Block width, in pixels */
|
||||
uint8_t bh; /**< Block height, in pixels */
|
||||
uint8_t bd; /**< Block depth, in pixels */
|
||||
|
||||
struct {
|
||||
struct isl_channel_layout r; /**< Red channel */
|
||||
struct isl_channel_layout g; /**< Green channel */
|
||||
struct isl_channel_layout b; /**< Blue channel */
|
||||
struct isl_channel_layout a; /**< Alpha channel */
|
||||
struct isl_channel_layout l; /**< Luminance channel */
|
||||
struct isl_channel_layout i; /**< Intensity channel */
|
||||
struct isl_channel_layout p; /**< Palette channel */
|
||||
} channels;
|
||||
|
||||
enum isl_colorspace colorspace;
|
||||
enum isl_txc txc;
|
||||
};
|
||||
|
||||
extern const struct isl_format_layout isl_format_layouts[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
128
src/vulkan/isl_format_layout_gen.bash
Executable file
128
src/vulkan/isl_format_layout_gen.bash
Executable file
|
|
@ -0,0 +1,128 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright 2015 Intel Corporation
|
||||
#
|
||||
# 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, sublicense,
|
||||
# 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
cat <<'EOF'
|
||||
/*
|
||||
* Copyright 2015 Intel Corporation
|
||||
*
|
||||
* 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, sublicense,
|
||||
* 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 NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||
*/
|
||||
|
||||
#include "isl.h"
|
||||
|
||||
const struct isl_format_layout
|
||||
isl_format_layouts[] = {
|
||||
EOF
|
||||
|
||||
sed -r '
|
||||
# Delete comment lines and empty lines
|
||||
/^[[:space:]]*#/d
|
||||
/^[[:space:]]*$/d
|
||||
|
||||
# Delete spaces
|
||||
s/[[:space:]]//g
|
||||
|
||||
# Translate formats
|
||||
s/^([A-Za-z0-9_]+),*/ISL_FORMAT_\1,/
|
||||
|
||||
# Translate data type of channels
|
||||
s/\<x([0-9]+),/ISL_VOID@\1,/g
|
||||
s/\<r([0-9]+),/ISL_RAW@\1,/g
|
||||
s/\<un([0-9]+),/ISL_UNORM@\1,/g
|
||||
s/\<sn([0-9]+),/ISL_SNORM@\1,/g
|
||||
s/\<uf([0-9]+),/ISL_UFLOAT@\1,/g
|
||||
s/\<sf([0-9]+),/ISL_SFLOAT@\1,/g
|
||||
s/\<ux([0-9]+),/ISL_UFIXED@\1,/g
|
||||
s/\<sx([0-9]+),/ISL_SFIXED@\1,/g
|
||||
s/\<ui([0-9]+),/ISL_UINT@\1,/g
|
||||
s/\<si([0-9]+),/ISL_SINT@\1,/g
|
||||
s/\<us([0-9]+),/ISL_USCALED@\1,/g
|
||||
s/\<ss([0-9]+),/ISL_SSCALED@\1,/g
|
||||
|
||||
# Translate colorspaces
|
||||
# Interpret alpha-only formats as having no colorspace.
|
||||
s/\<(linear|srgb|yuv)\>/ISL_COLORSPACE_\1/
|
||||
s/\<alpha\>//
|
||||
|
||||
# Translate texture compression
|
||||
s/\<(dxt|fxt|rgtc|bptc|etc)([0-9]*)\>/ISL_TXC_\1\2/
|
||||
' |
|
||||
tr 'a-z' 'A-Z' | # Convert to uppersace
|
||||
while IFS=, read -r format bpb bw bh bd \
|
||||
red green blue alpha \
|
||||
luminance intensity palette \
|
||||
colorspace txc
|
||||
do
|
||||
: ${colorspace:=ISL_COLORSPACE_NONE}
|
||||
: ${txc:=ISL_TXC_NONE}
|
||||
|
||||
cat <<EOF
|
||||
[$format] = {
|
||||
$format,
|
||||
.bs = $((bpb/8)), .bpb = $bpb,
|
||||
.bw = $bw, .bh = $bh, .bd = $bd,
|
||||
.channels = {
|
||||
.r = { $red },
|
||||
.g = { $green },
|
||||
.b = { $blue },
|
||||
.a = { $alpha },
|
||||
.l = { $luminance },
|
||||
.i = { $intensity },
|
||||
.p = { $palette },
|
||||
},
|
||||
.colorspace = $colorspace,
|
||||
.txc = $txc,
|
||||
},
|
||||
|
||||
EOF
|
||||
done |
|
||||
sed -r '
|
||||
# Collapse empty channels
|
||||
s/\{ \}/{}/
|
||||
|
||||
# Split non-empty channels into two members: base type and bit size
|
||||
s/@/, /
|
||||
'
|
||||
|
||||
# Terminate the table
|
||||
printf '};\n'
|
||||
Loading…
Add table
Reference in a new issue