[waffle] [PATCH] gbm: Use EGLConfig to select the correct gbm format
Chad Versace
chad.versace at intel.com
Thu Feb 26 13:07:51 PST 2015
By the way, I wrote a little Python script to ease the debugging
of GBM formats. You may find it useful too. Here's the example
usage:
$ gbm-format GBM_FORMAT_BGRA1010102
0x30334142
$ gbm-format 0x30334142
GBM_FORMAT_BGRA1010102
$ gbm-format B A 3 0
GBM_FORMAT_BGRA1010102
---- -8<- ---- file: ~/bin/gbm-format
#!/usr/bin/env python3
import os
import os.path
import re
import sys
PROGNAME = os.path.basename(sys.argv[0])
def print_usage(file=None):
print('usage: ', file=file)
print(' {0} GBM_FORMAT_XXXX'.format(PROGNAME), file=file)
print(' {0} 0xabcd1234'.format(PROGNAME), file=file)
print(' {0} a b c d'.format(PROGNAME), file=file)
def usage_error():
print_usage(sys.stderr)
sys.exit(1)
def atoi(c):
assert(len(c) == 1)
return c.encode()[0]
def gbm_fourcc_code(a, b, c, d):
return (a) | (b << 8) | (c << 16) | (d << 24)
def gbm_iter_header():
regex = re.compile("#define\s+(GBM_FORMAT_\w+)\s+__gbm_fourcc_code\('(.)', '(.)', '(.)', '(.)'\)")
with open('/usr/include/gbm.h') as f:
for line in f:
m = regex.match(line)
if m is None:
continue
test_name = m.group(1)
test_code = gbm_fourcc_code(*map(atoi, m.group(2, 3, 4, 5)))
yield test_name, test_code
def gbm_fourcc_code_to_name(code):
for hname, hcode in gbm_iter_header():
if hcode == code:
return hname
def gbm_fourcc_name_to_code(name):
for hname, hcode in gbm_iter_header():
if hname == name:
return hcode
def cmd_find_name(code):
name = gbm_fourcc_code_to_name(code)
if name is None:
die('failed to find name of fourcc code 0x{:x}'.format(code))
print(name)
def cmd_find_code(name):
code = gbm_fourcc_name_to_code(name)
if code is None:
die('failed to find fourcc code for {}'.format(name))
print('0x{:x}'.format(code))
def main():
if len(sys.argv) == 2:
if sys.argv[1].startswith('GBM_FORMAT_'):
name = sys.argv[1]
cmd_find_code(name)
elif sys.argv[1].startswith('0x') or sys.argv[1].startswith('0X'):
code = int(sys.argv[1], 16)
cmd_find_name(code)
else:
usage_error()
elif len(sys.argv) == 5:
code = gbm_fourcc_code(*map(atoi, sys.argv[1:5]))
cmd_find_name(code)
else:
usage_error()
if __name__ == '__main__':
main()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 884 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/waffle/attachments/20150226/bd8d64ae/attachment.sig>
More information about the waffle
mailing list