Khronos Data Format Specification

Similar documents
Khronos Data Format Specification

PVRTC & Texture Compression. User Guide

Khronos Data Format Specification

PVRTC Specification and User Guide

PVR File Format. Specification

Texture Compression. Jacob Ström, Ericsson Research

BMP file format - Wikipedia

The OpenVX User Data Object Extension

Mention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards

Texture Mapping 1/34

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer

E.Order of Operations

UNIT - V DHARANI KUMAR.S/AP/MECH

Unix Device Memory. James Jones XDC 2016

FRACTAL COMPRESSION USAGE FOR I FRAMES IN MPEG4 I MPEG4

Texture Mapping 1/34

Neural Network Exchange Format

The OpenVX Buffer Aliasing Extension

Hardware-driven visibility culling

BMP file format. Contents. Pixel storage. The BMP file format, sometimes called bitmap. or DIB file format (for device-independent

CS 130 Final. Fall 2015

CROMWELLSTUDIOS. Content Management System Instruction Manual V1. Content Management System. V1

[MS-WDHCE]: Intellectual Property Rights Notice for Open Specifications Documentation

Lecture 6: Texturing Part II: Texture Compression and GPU Latency Hiding Mechanisms. Visual Computing Systems CMU , Fall 2014

Lecture 07: Buffers and Textures

Solid State Graphics (SSG) SDK Setup and Raw Video Player Guide

Render-To-Texture Caching. D. Sim Dietrich Jr.

POWERVR MBX. Technology Overview

[MS-WDHCE-Diff]: Intellectual Property Rights Notice for Open Specifications Documentation

CP SC 4040/6040 Computer Graphics Images. Joshua Levine

Going to cover; - Why we have SPIR-V - Brief history of SPIR-V - Some of the core required features we wanted - How OpenCL will use SPIR-V - How

Integrating DMA Into the Generic Device Model

Universal Serial Bus - USB 2.0

TriMedia Motion JPEG Decoder (VdecMjpeg) API 1

Working with Metal Overview

GUERRILLA DEVELOP CONFERENCE JULY 07 BRIGHTON

OpenGL BOF Siggraph 2011

Exporting Images from Lightroom

Module Introduction. Content 15 pages 2 questions. Learning Time 25 minutes

[MS-RDPNSC]: Remote Desktop Protocol: NSCodec Extension. Intellectual Property Rights Notice for Open Specifications Documentation

Mobile HW and Bandwidth

PVRTexTool. User Manual

Rendering Grass with Instancing in DirectX* 10

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Simpler Soft Shadow Mapping Lee Salzman September 20, 2007

3D Graphics in Future Mobile Devices. Steve Steele, ARM

TriMedia Motion JPEG Encoder (VencMjpeg) API 1

Copyright Khronos Group 2012 Page 1. OpenCL 1.2. August 2012

Could you make the XNA functions yourself?

Introduction to the Graphics Module Framework

H.264 Decoding. University of Central Florida

S U N G - E U I YO O N, K A I S T R E N D E R I N G F R E E LY A VA I L A B L E O N T H E I N T E R N E T

You will have the entire period (until 9:00pm) to complete the exam, although the exam is designed to take less time.

Version 2 Users Manual

BCOCA Frequently Asked Questions. Implementation Tips for Producing Bar Codes with the Bar Code Object Content Architecture

The Rendering Pipeline (1)

'UYVY' 4:2:2 Compression Four 8-bit unsigned components (CCIR 601) are packed into one 32-bit little-endian word.

FILE SYSTEMS. CS124 Operating Systems Winter , Lecture 23

MPEG Video Decoder (VdecMpeg) API 2

Copyright Khronos Group, Page 1. OpenCL. GDC, March 2010

Optimizing Mobile Games with ARM. Solo Chang Staff Applications Engineer, ARM

An Introduction to Video Compression in C/C++ Fore June

Frequency Tutor Users Guide

SIGGRAPH Briefing August 2014

Functional Programming in Haskell Prof. Madhavan Mukund and S. P. Suresh Chennai Mathematical Institute

ASTC Does It. Eason Tang Staff Applications Engineer, ARM

2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT

CSE 167: Lecture #4: Vertex Transformation. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2012

Live2D Cubism Native Core API Reference. Version r3 Last Update 2018/07/20

Sign up for crits! Announcments

Guidelines for development of ISO conformant devices

Discussion 3. PPM loading Texture rendering in OpenGL

Copyright Khronos Group 2012 Page 1. Teaching GL. Dave Shreiner Director, Graphics and GPU Computing, ARM 1 December 2012

11/3/71 SYS MOUNT (II) sys mount; special; name / mount = 21.; not in assembler

Matrox MuraControl for Windows

Intermediate Microsoft Word 2010

Design of the Utah RLE Format

Recent developments in ICC color management. International Color Consortium

MarkMagic 6 Bar Code Labels, RFID Tags, and Electronic Forms Software for IBM System i

Rationale for Non-Programmable Additions to OpenGL 2.0

Introduction to Modern Fortran

Comments on responses to objections provided in N2661

Optimizing DirectX Graphics. Richard Huddy European Developer Relations Manager

Digital Imaging and Communications in Medicine (DICOM) Supplement 174: RESTful Rendering

Today. Rendering pipeline. Rendering pipeline. Object vs. Image order. Rendering engine Rendering engine (jtrt) Computergrafik. Rendering pipeline

1. Introduction to the Common Language Infrastructure

CS 111. Operating Systems Peter Reiher

Texture Mapping. Michael Kazhdan ( /467) HB Ch. 14.8,14.9 FvDFH Ch. 16.3, , 16.6

Creating a basic GUI application with Synergy and GUIX SK-S7G2

CinemaDNG Workflow. Using the CinemaDNG File Format in Cinema Workflows. Goals and Benefits TECHNICAL PAPER

XP: Backup Your Important Files for Safety

OpenGL R ES 1.1 Extension Pack Specification

How to import text transcription

CS450/550. Pipeline Architecture. Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012

Dissecting Files. Endianness. So Many Bytes. Big Endian vs. Little Endian. Example Number. The "proper" order of things. Week 6

Channel Packer - version 0.90

INTRODUCTION TO COMPUTER GRAPHICS. cs123. It looks like a matrix Sort of. Viewing III. Projection in Practice 1 / 52

Advanced High Graphics

GStreamer Conference 2013, Edinburgh 22 October Sebastian Dröge Centricular Ltd

MpegRepair Software Encoding and Repair Utility

Transcription:

Copyright Khronos Group 2015 - Page 1 Khronos Data Format Specification 1.0 release, July 2015 Andrew Garrard Spec editor Senior Software Engineer, Samsung Electronics

Copyright Khronos Group 2015 - Page 2 There are many ways of encoding pixel data Bit 0 8bpp monochrome 0 1 2 3 4 5 6 7 32bpp red, green, blue, alpha 8888 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 16bpp red, green, blue 565 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 16bpp red, green, blue, alpha 4444 32bpp blue, green, red, alpha 8888 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Bit 31 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3

Copyright Khronos Group 2015 - Page 3 Some representations are quite complex Color representation 3D31_200.png Bayer sampling YUV 4:2:0 UV line interleaved (8bpp layout) YUV 4:2:0 UV pixel interleaved (8bpp layout) and there is a multitude of compressed texture formats Non-color values (such as vectors) are also stored in textures and similar data can be encoded in a linear buffer or many dimensions (hence data format, not pixel format )

Copyright Khronos Group 2015 - Page 4 There are many ways to describe the format Each standard that supports more than one format needs a mechanism to select - And each has its own In Khronos, we have - OpenGL: GL_RGBA8 - OpenCL: CL_RGBA + CL_UNORM_INT8 - OpenVX: VX_DF_IMAGE_RGBX (no alpha support) DirectX has its own - D3DFMT_A8B8G8R8 (note backwards from GL!) FourCC is used in AVI files (and elsewhere), and has yet another way - BI_RGB + 32bpp All these format schemes are enumerative - Code either understands a format or it doesn t - It is impossible to write generic or future-proof code for multiple formats - They rely on human-readable descriptions of the formats (of varying quality)

Extra information also affects the content Encoded for NTSC displays (wrong colors) Increased gamut (source treated as encoding reduced range) may clip Reduced gamut (target treated as receiving reduced range) looks dull Linear transfer function (gamma) incorrect midtones Also whether alpha is premultiplied, whether samples are co-sited or interpolated, etc. All these determine how to interpret a value just as much as bit patterns Typically none of this data is recorded Copyright Khronos Group 2015 - Page 5

Lost in translation An API may not care about some details of the format - Some APIs just work on numbers and leave the interpretation to the user - Some APIs assume a standard internal representation and don t care about bit layouts APIs often start out without support for a detail, then add it retrospectively - This can lead to metadata being stored separately, and may be ignored during interoperation - Some data gets retrospective definitions when this happens (as in FourCC BT.709) This is particularly a problem when APIs are chained together - Or when an application is communicating via an uninformed intermediate layer API 1 Understands color spaces Image with color space data API 2 Doesn t understand color spaces Image without color space data API 3 Understands color spaces Image without color space data Copyright Khronos Group 2015 - Page 6

Copyright Khronos Group 2015 - Page 7 Not everything is part of the format The format defines how to interpret elements in the data - The location of the elements is not part of the format Image-specific characteristics are separate - Width, height, stride, aspect ratio are all nothing to do with the format - Resizing an image does not change the format To access data, you need at least: - A pointer/reference to the start of the data for each separately-stored plane - If the data is multidimensional, some size and stride information This information is typically already application-specific - It is common for hardware to use tiling rather than treating the data as linear - APIs may have implementation-specific requirements for alignment Data that has a variable size is not representable in this specification - UTF-8 text, compressed file formats, etc. are not suitable - During processing, most data is fixed-size to allow fast random access

The Khronos data format descriptor The descriptor is an array of values containing one or more descriptor blocks Format descriptor Descriptor block (basic) Descriptor block (extension) Descriptor block (vendor extension) : one of which offers a standard way to describe most formats Basic descriptor Texel block description First sample description Second sample description : Texel block description Color model Primaries Xfer func Flags Dimensions Sample description Channel/ flags Bits occupied 4D position Range Copyright Khronos Group 2015 - Page 8

Copyright Khronos Group 2015 - Page 9 Future proofing Applications and vendors can add private descriptor blocks - The size of the descriptor is stored at the start, so the descriptor can be trivially copied around without needing to understand it - Descriptor blocks have an identifier and a size, so unknown blocks can be skipped Khronos defines one basic descriptor block - This is versioned, so future variants can be distinguished - Most common metadata is representable - The size of the block varies according to the complexity of the format - More complex formats require more samples - Any content which does not fit in the standard block can be represented in an extension block The basic descriptor block allows fast, intelligent comparisons - Most applications don t care if two formats are identical - It is more useful to tell whether the same channels are present, the byte size of the format, whether color spaces match, etc. not check everything

Copyright Khronos Group 2015 - Page 10 Mapping to APIs The data format descriptors are typically tens to hundreds of bytes - The basic descriptor block is designed for speed of interpretation by generic code - The mechanism is descriptive, meaning that large lists of enumerations are unnecessary Most APIs are expected to use internal enumerated formats and have a mapping to a standard descriptor for external communication - A descriptor is small enough for fast processing, but still quite large to use on every entry point - APIs might have an array to which the user can add formats, and use indices in most entry points The basic descriptor is simple enough that it is easy to interpret by humans - Having a standard format description scheme offers the promise of making documentation simpler, more complete and less ambiguous

Copyright Khronos Group 2015 - Page 11 Summary The Khronos Data Format Specification offers a standard, portable and flexible way to describe bulk data, such as pixel content Existing means of doing this are proprietary, inextensible and incomplete This standard representation described in this specification simplifies software, increases future-proofing, improves interoperability and facilitates documentation More Information - www.khronos.org/dataformat