1bf215546Sopenharmony_ci/* 2bf215546Sopenharmony_ci * Copyright © Microsoft Corporation 3bf215546Sopenharmony_ci * 4bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 5bf215546Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 6bf215546Sopenharmony_ci * to deal in the Software without restriction, including without limitation 7bf215546Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8bf215546Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 9bf215546Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 10bf215546Sopenharmony_ci * 11bf215546Sopenharmony_ci * The above copyright notice and this permission notice (including the next 12bf215546Sopenharmony_ci * paragraph) shall be included in all copies or substantial portions of the 13bf215546Sopenharmony_ci * Software. 14bf215546Sopenharmony_ci * 15bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16bf215546Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18bf215546Sopenharmony_ci * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19bf215546Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20bf215546Sopenharmony_ci * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21bf215546Sopenharmony_ci * IN THE SOFTWARE. 22bf215546Sopenharmony_ci */ 23bf215546Sopenharmony_ci 24bf215546Sopenharmony_ci#ifndef D3D12_FORMATS_H 25bf215546Sopenharmony_ci#define D3D12_FORMATS_H 26bf215546Sopenharmony_ci 27bf215546Sopenharmony_ci#include "d3d12_common.h" 28bf215546Sopenharmony_ci 29bf215546Sopenharmony_ci#include <directx/dxgiformat.h> 30bf215546Sopenharmony_ci#include <directx/dxgicommon.h> 31bf215546Sopenharmony_ci 32bf215546Sopenharmony_ci#include "pipe/p_format.h" 33bf215546Sopenharmony_ci#include "pipe/p_defines.h" 34bf215546Sopenharmony_ci#include "pipe/p_video_enums.h" 35bf215546Sopenharmony_ci 36bf215546Sopenharmony_ci#ifdef __cplusplus 37bf215546Sopenharmony_ciextern "C" { 38bf215546Sopenharmony_ci#endif 39bf215546Sopenharmony_ci 40bf215546Sopenharmony_ciDXGI_FORMAT 41bf215546Sopenharmony_cid3d12_get_format(enum pipe_format format); 42bf215546Sopenharmony_ci 43bf215546Sopenharmony_ciDXGI_FORMAT 44bf215546Sopenharmony_cid3d12_get_typeless_format(enum pipe_format format); 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_ci/* These two are only used for importing external resources without a provided template */ 47bf215546Sopenharmony_cienum pipe_format 48bf215546Sopenharmony_cid3d12_get_pipe_format(DXGI_FORMAT format); 49bf215546Sopenharmony_ci 50bf215546Sopenharmony_cienum pipe_format 51bf215546Sopenharmony_cid3d12_get_default_pipe_format(DXGI_FORMAT format); 52bf215546Sopenharmony_ci 53bf215546Sopenharmony_ciDXGI_FORMAT 54bf215546Sopenharmony_cid3d12_get_resource_srv_format(enum pipe_format f, enum pipe_texture_target target); 55bf215546Sopenharmony_ci 56bf215546Sopenharmony_ciDXGI_FORMAT 57bf215546Sopenharmony_cid3d12_get_resource_rt_format(enum pipe_format f); 58bf215546Sopenharmony_ci 59bf215546Sopenharmony_ciunsigned 60bf215546Sopenharmony_cid3d12_non_opaque_plane_count(DXGI_FORMAT f); 61bf215546Sopenharmony_ci 62bf215546Sopenharmony_cistruct d3d12_format_info { 63bf215546Sopenharmony_ci const enum pipe_swizzle *swizzle; 64bf215546Sopenharmony_ci int plane_slice; 65bf215546Sopenharmony_ci}; 66bf215546Sopenharmony_ci 67bf215546Sopenharmony_cistruct d3d12_format_info 68bf215546Sopenharmony_cid3d12_get_format_info(enum pipe_format resource_format, enum pipe_format format, enum pipe_texture_target); 69bf215546Sopenharmony_ci 70bf215546Sopenharmony_cienum pipe_format 71bf215546Sopenharmony_cid3d12_emulated_vtx_format(enum pipe_format fmt); 72bf215546Sopenharmony_ci 73bf215546Sopenharmony_ciunsigned 74bf215546Sopenharmony_cid3d12_get_format_start_plane(enum pipe_format fmt); 75bf215546Sopenharmony_ci 76bf215546Sopenharmony_ciunsigned 77bf215546Sopenharmony_cid3d12_get_format_num_planes(enum pipe_format fmt); 78bf215546Sopenharmony_ci 79bf215546Sopenharmony_ciDXGI_FORMAT 80bf215546Sopenharmony_cid3d12_convert_pipe_video_profile_to_dxgi_format(enum pipe_video_profile profile); 81bf215546Sopenharmony_ci 82bf215546Sopenharmony_ciDXGI_COLOR_SPACE_TYPE 83bf215546Sopenharmony_cid3d12_convert_from_legacy_color_space(bool rgb, uint32_t bits_per_element, bool studio_rgb, bool p709, bool studio_yuv); 84bf215546Sopenharmony_ci 85bf215546Sopenharmony_ci#ifdef __cplusplus 86bf215546Sopenharmony_ci} 87bf215546Sopenharmony_ci#endif 88bf215546Sopenharmony_ci 89bf215546Sopenharmony_ci#endif 90