+++ /dev/null
-//
-// File: mantle.h
-//
-// Copyright 2014 ADVANCED MICRO DEVICES, INC. All Rights Reserved.
-//
-// AMD is granting you permission to use this software for reference
-// purposes only and not for use in any software product.
-//
-// You agree that you will not reverse engineer or decompile the Materials,
-// in whole or in part, except as allowed by applicable law.
-//
-// WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY,
-// INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE
-// WILL RUN UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF
-// TRADE OR COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE
-// SOFTWARE IS ASSUMED BY YOU.
-// Some jurisdictions do not allow the exclusion of implied warranties, so
-// the above exclusion may not apply to You.
-//
-// LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL
-// NOT, UNDER ANY CIRCUMSTANCES BE LIABLE TO YOU FOR ANY PUNITIVE, DIRECT,
-// INCIDENTAL, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF
-// THE SOFTWARE OR THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-// In no event shall AMD's total liability to You for all damages, losses,
-// and causes of action (whether in contract, tort (including negligence) or
-// otherwise) exceed the amount of $100 USD. You agree to defend, indemnify
-// and hold harmless AMD and its licensors, and any of their directors,
-// officers, employees, affiliates or agents from and against any and all
-// loss, damage, liability and other expenses (including reasonable attorneys'
-// fees), resulting from Your use of the Software or violation of the terms and
-// conditions of this Agreement.
-//
-// U.S. GOVERNMENT RESTRICTED RIGHTS: The Materials are provided with "RESTRICTED
-// RIGHTS." Use, duplication, or disclosure by the Government is subject to the
-// restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
-// its successor. Use of the Materials by the Government constitutes
-// acknowledgement of AMD's proprietary rights in them.
-//
-// EXPORT RESTRICTIONS: The Materials may be subject to export restrictions as
-// stated in the Software License Agreement.
-//
-
-#ifndef __MANTLE_H__
-#define __MANTLE_H__
-
-#define GR_MAKE_VERSION(major, minor, patch) \
- ((major << 22) | (minor << 12) | patch)
-
-#include "mantlePlatform.h"
-
-// Mantle API version supported by this file
-#define GR_API_VERSION GR_MAKE_VERSION(0, 21, 0)
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif // __cplusplus
-
-/*
-***************************************************************************************************
-* Core Mantle API
-***************************************************************************************************
-*/
-
-#ifdef __cplusplus
- #define GR_DEFINE_HANDLE(_obj) struct _obj##_T {}; typedef _obj##_T* _obj;
- #define GR_DEFINE_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj;
-#else // __cplusplus
- #define GR_DEFINE_HANDLE(_obj) typedef void* _obj;
- #define GR_DEFINE_SUBCLASS_HANDLE(_obj, _base) typedef void* _obj;
-#endif // __cplusplus
-
-GR_DEFINE_HANDLE(GR_PHYSICAL_GPU)
-GR_DEFINE_HANDLE(GR_BASE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_DEVICE, GR_BASE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_QUEUE, GR_BASE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_GPU_MEMORY, GR_BASE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_OBJECT, GR_BASE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_IMAGE, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_IMAGE_VIEW, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_COLOR_TARGET_VIEW, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_DEPTH_STENCIL_VIEW, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_SHADER, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_PIPELINE, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_SAMPLER, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_DESCRIPTOR_SET, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_STATE_OBJECT, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_VIEWPORT_STATE_OBJECT, GR_STATE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_RASTER_STATE_OBJECT, GR_STATE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_MSAA_STATE_OBJECT, GR_STATE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_COLOR_BLEND_STATE_OBJECT, GR_STATE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_DEPTH_STENCIL_STATE_OBJECT, GR_STATE_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_CMD_BUFFER, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_FENCE, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_QUEUE_SEMAPHORE, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_EVENT, GR_OBJECT)
-GR_DEFINE_SUBCLASS_HANDLE(GR_QUERY_POOL, GR_OBJECT)
-
-#define GR_MAX_PHYSICAL_GPUS 16
-#define GR_MAX_PHYSICAL_GPU_NAME 256
-#define GR_MAX_MEMORY_HEAPS 8
-#define GR_MAX_DESCRIPTOR_SETS 2
-#define GR_MAX_VIEWPORTS 16
-#define GR_MAX_COLOR_TARGETS 8
-
-#define GR_LOD_CLAMP_NONE MAX_FLOAT
-#define GR_LAST_MIP_OR_SLICE 0xffffffff
-
-#define GR_TRUE 1
-#define GR_FALSE 0
-
-#define GR_NULL_HANDLE 0
-
-// ------------------------------------------------------------------------------------------------
-// GR_ENUM values
-
-typedef enum _GR_QUEUE_TYPE
-{
- GR_QUEUE_UNIVERSAL = 0x1000,
- GR_QUEUE_COMPUTE_ONLY = 0x1001,
-
- GR_QUEUE_TYPE_BEGIN_RANGE = GR_QUEUE_UNIVERSAL,
- GR_QUEUE_TYPE_END_RANGE = GR_QUEUE_COMPUTE_ONLY,
- GR_NUM_QUEUE_TYPE = (GR_QUEUE_TYPE_END_RANGE - GR_QUEUE_TYPE_BEGIN_RANGE + 1),
-} GR_QUEUE_TYPE;
-
-typedef enum _GR_MEMORY_PRIORITY
-{
- GR_MEMORY_PRIORITY_NORMAL = 0x1100,
- GR_MEMORY_PRIORITY_HIGH = 0x1101,
- GR_MEMORY_PRIORITY_LOW = 0x1102,
- GR_MEMORY_PRIORITY_UNUSED = 0x1103,
- GR_MEMORY_PRIORITY_VERY_HIGH = 0x1104,
- GR_MEMORY_PRIORITY_VERY_LOW = 0x1105,
-
- GR_MEMORY_PRIORITY_BEGIN_RANGE = GR_MEMORY_PRIORITY_NORMAL,
- GR_MEMORY_PRIORITY_END_RANGE = GR_MEMORY_PRIORITY_VERY_LOW,
- GR_NUM_MEMORY_PRIORITY = (GR_MEMORY_PRIORITY_END_RANGE - GR_MEMORY_PRIORITY_BEGIN_RANGE + 1),
-} GR_MEMORY_PRIORITY;
-
-typedef enum _GR_MEMORY_STATE
-{
- GR_MEMORY_STATE_DATA_TRANSFER = 0x1200,
- GR_MEMORY_STATE_GRAPHICS_SHADER_READ_ONLY = 0x1201,
- GR_MEMORY_STATE_GRAPHICS_SHADER_WRITE_ONLY = 0x1202,
- GR_MEMORY_STATE_GRAPHICS_SHADER_READ_WRITE = 0x1203,
- GR_MEMORY_STATE_COMPUTE_SHADER_READ_ONLY = 0x1204,
- GR_MEMORY_STATE_COMPUTE_SHADER_WRITE_ONLY = 0x1205,
- GR_MEMORY_STATE_COMPUTE_SHADER_READ_WRITE = 0x1206,
- GR_MEMORY_STATE_MULTI_SHADER_READ_ONLY = 0x1207,
- GR_MEMORY_STATE_INDEX_DATA = 0x1208,
- GR_MEMORY_STATE_INDIRECT_ARG = 0x1209,
- GR_MEMORY_STATE_WRITE_TIMESTAMP = 0x120a,
- GR_MEMORY_STATE_QUEUE_ATOMIC = 0x120b,
-
- GR_MEMORY_STATE_BEGIN_RANGE = GR_MEMORY_STATE_DATA_TRANSFER,
- GR_MEMORY_STATE_END_RANGE = GR_MEMORY_STATE_QUEUE_ATOMIC,
- GR_NUM_MEMORY_STATE = (GR_MEMORY_STATE_END_RANGE - GR_MEMORY_STATE_BEGIN_RANGE + 1),
-} GR_MEMORY_STATE;
-
-typedef enum _GR_IMAGE_STATE
-{
- GR_IMAGE_STATE_DATA_TRANSFER = 0x1300,
- GR_IMAGE_STATE_GRAPHICS_SHADER_READ_ONLY = 0x1301,
- GR_IMAGE_STATE_GRAPHICS_SHADER_WRITE_ONLY = 0x1302,
- GR_IMAGE_STATE_GRAPHICS_SHADER_READ_WRITE = 0x1303,
- GR_IMAGE_STATE_COMPUTE_SHADER_READ_ONLY = 0x1304,
- GR_IMAGE_STATE_COMPUTE_SHADER_WRITE_ONLY = 0x1305,
- GR_IMAGE_STATE_COMPUTE_SHADER_READ_WRITE = 0x1306,
- GR_IMAGE_STATE_MULTI_SHADER_READ_ONLY = 0x1307,
- GR_IMAGE_STATE_TARGET_AND_SHADER_READ_ONLY = 0x1308,
- GR_IMAGE_STATE_UNINITIALIZED_TARGET = 0x1309,
- GR_IMAGE_STATE_TARGET_RENDER_ACCESS_OPTIMAL = 0x130a,
- GR_IMAGE_STATE_TARGET_SHADER_ACCESS_OPTIMAL = 0x130b,
- GR_IMAGE_STATE_CLEAR = 0x130c,
- GR_IMAGE_STATE_RESOLVE_SOURCE = 0x130d,
- GR_IMAGE_STATE_RESOLVE_DESTINATION = 0x130e,
-
- GR_IMAGE_STATE_BEGIN_RANGE = GR_IMAGE_STATE_DATA_TRANSFER,
- GR_IMAGE_STATE_END_RANGE = GR_IMAGE_STATE_RESOLVE_DESTINATION,
- GR_NUM_IMAGE_STATE = (GR_IMAGE_STATE_END_RANGE - GR_IMAGE_STATE_BEGIN_RANGE + 1),
-} GR_IMAGE_STATE;
-
-typedef enum _GR_IMAGE_TYPE
-{
- GR_IMAGE_1D = 0x1400,
- GR_IMAGE_2D = 0x1401,
- GR_IMAGE_3D = 0x1402,
-
- GR_IMAGE_TYPE_BEGIN_RANGE = GR_IMAGE_1D,
- GR_IMAGE_TYPE_END_RANGE = GR_IMAGE_3D,
- GR_NUM_IMAGE_TYPE = (GR_IMAGE_TYPE_END_RANGE - GR_IMAGE_TYPE_BEGIN_RANGE + 1),
-} GR_IMAGE_TYPE;
-
-typedef enum _GR_IMAGE_TILING
-{
- GR_LINEAR_TILING = 0x1500,
- GR_OPTIMAL_TILING = 0x1501,
-
- GR_IMAGE_TILING_BEGIN_RANGE = GR_LINEAR_TILING,
- GR_IMAGE_TILING_END_RANGE = GR_OPTIMAL_TILING,
- GR_NUM_IMAGE_TILING = (GR_IMAGE_TILING_END_RANGE - GR_IMAGE_TILING_BEGIN_RANGE + 1),
-} GR_IMAGE_TILING;
-
-typedef enum _GR_IMAGE_VIEW_TYPE
-{
- GR_IMAGE_VIEW_1D = 0x1600,
- GR_IMAGE_VIEW_2D = 0x1601,
- GR_IMAGE_VIEW_3D = 0x1602,
- GR_IMAGE_VIEW_CUBE = 0x1603,
-
- GR_IMAGE_VIEW_TYPE_BEGIN_RANGE = GR_IMAGE_VIEW_1D,
- GR_IMAGE_VIEW_TYPE_END_RANGE = GR_IMAGE_VIEW_CUBE,
- GR_NUM_IMAGE_VIEW_TYPE = (GR_IMAGE_VIEW_TYPE_END_RANGE - GR_IMAGE_VIEW_TYPE_BEGIN_RANGE + 1),
-} GR_IMAGE_VIEW_TYPE;
-
-typedef enum _GR_IMAGE_ASPECT
-{
- GR_IMAGE_ASPECT_COLOR = 0x1700,
- GR_IMAGE_ASPECT_DEPTH = 0x1701,
- GR_IMAGE_ASPECT_STENCIL = 0x1702,
-
- GR_IMAGE_ASPECT_BEGIN_RANGE = GR_IMAGE_ASPECT_COLOR,
- GR_IMAGE_ASPECT_END_RANGE = GR_IMAGE_ASPECT_STENCIL,
- GR_NUM_IMAGE_ASPECT = (GR_IMAGE_ASPECT_END_RANGE - GR_IMAGE_ASPECT_BEGIN_RANGE + 1),
-} GR_IMAGE_ASPECT;
-
-typedef enum _GR_CHANNEL_SWIZZLE
-{
- GR_CHANNEL_SWIZZLE_ZERO = 0x1800,
- GR_CHANNEL_SWIZZLE_ONE = 0x1801,
- GR_CHANNEL_SWIZZLE_R = 0x1802,
- GR_CHANNEL_SWIZZLE_G = 0x1803,
- GR_CHANNEL_SWIZZLE_B = 0x1804,
- GR_CHANNEL_SWIZZLE_A = 0x1805,
-
- GR_CHANNEL_SWIZZLE_BEGIN_RANGE = GR_CHANNEL_SWIZZLE_ZERO,
- GR_CHANNEL_SWIZZLE_END_RANGE = GR_CHANNEL_SWIZZLE_A,
- GR_NUM_CHANNEL_SWIZZLE = (GR_CHANNEL_SWIZZLE_END_RANGE - GR_CHANNEL_SWIZZLE_BEGIN_RANGE + 1),
-} GR_CHANNEL_SWIZZLE;
-
-typedef enum _GR_DESCRIPTOR_SET_SLOT_TYPE
-{
- GR_SLOT_UNUSED = 0x1900,
- GR_SLOT_SHADER_RESOURCE = 0x1901,
- GR_SLOT_SHADER_UAV = 0x1902,
- GR_SLOT_SHADER_SAMPLER = 0x1903,
- GR_SLOT_NEXT_DESCRIPTOR_SET = 0x1904,
-
- GR_DESCRIPTOR_SET_SLOT_TYPE_BEGIN_RANGE = GR_SLOT_UNUSED,
- GR_DESCRIPTOR_SET_SLOT_TYPE_END_RANGE = GR_SLOT_NEXT_DESCRIPTOR_SET,
- GR_NUM_DESCRIPTOR_SET_SLOT_TYPE = (GR_DESCRIPTOR_SET_SLOT_TYPE_END_RANGE - GR_DESCRIPTOR_SET_SLOT_TYPE_BEGIN_RANGE + 1),
-} GR_DESCRIPTOR_SET_SLOT_TYPE;
-
-typedef enum _GR_QUERY_TYPE
-{
- GR_QUERY_OCCLUSION = 0x1a00,
- GR_QUERY_PIPELINE_STATISTICS = 0x1a01,
-
- GR_QUERY_TYPE_BEGIN_RANGE = GR_QUERY_OCCLUSION,
- GR_QUERY_TYPE_END_RANGE = GR_QUERY_PIPELINE_STATISTICS,
- GR_NUM_QUERY_TYPE = (GR_QUERY_TYPE_END_RANGE - GR_QUERY_TYPE_BEGIN_RANGE + 1),
-} GR_QUERY_TYPE;
-
-typedef enum _GR_TIMESTAMP_TYPE
-{
- GR_TIMESTAMP_TOP = 0x1b00,
- GR_TIMESTAMP_BOTTOM = 0x1b01,
-
- GR_TIMESTAMP_TYPE_BEGIN_RANGE = GR_TIMESTAMP_TOP,
- GR_TIMESTAMP_TYPE_END_RANGE = GR_TIMESTAMP_BOTTOM,
- GR_NUM_TIMESTAMP_TYPE = (GR_TIMESTAMP_TYPE_END_RANGE - GR_TIMESTAMP_TYPE_BEGIN_RANGE + 1),
-} GR_TIMESTAMP_TYPE;
-
-typedef enum _GR_BORDER_COLOR_TYPE
-{
- GR_BORDER_COLOR_WHITE = 0x1c00,
- GR_BORDER_COLOR_TRANSPARENT_BLACK = 0x1c01,
- GR_BORDER_COLOR_OPAQUE_BLACK = 0x1c02,
-
- GR_BORDER_COLOR_TYPE_BEGIN_RANGE = GR_BORDER_COLOR_WHITE,
- GR_BORDER_COLOR_TYPE_END_RANGE = GR_BORDER_COLOR_OPAQUE_BLACK,
- GR_NUM_BORDER_COLOR_TYPE = (GR_BORDER_COLOR_TYPE_END_RANGE - GR_BORDER_COLOR_TYPE_BEGIN_RANGE + 1),
-} GR_BORDER_COLOR_TYPE;
-
-typedef enum _GR_PIPELINE_BIND_POINT
-{
- GR_PIPELINE_BIND_POINT_COMPUTE = 0x1e00,
- GR_PIPELINE_BIND_POINT_GRAPHICS = 0x1e01,
-
- GR_PIPELINE_BIND_POINT_BEGIN_RANGE = GR_PIPELINE_BIND_POINT_COMPUTE,
- GR_PIPELINE_BIND_POINT_END_RANGE = GR_PIPELINE_BIND_POINT_GRAPHICS,
- GR_NUM_PIPELINE_BIND_POINT = (GR_PIPELINE_BIND_POINT_END_RANGE - GR_PIPELINE_BIND_POINT_BEGIN_RANGE + 1),
-} GR_PIPELINE_BIND_POINT;
-
-typedef enum _GR_STATE_BIND_POINT
-{
- GR_STATE_BIND_VIEWPORT = 0x1f00,
- GR_STATE_BIND_RASTER = 0x1f01,
- GR_STATE_BIND_DEPTH_STENCIL = 0x1f02,
- GR_STATE_BIND_COLOR_BLEND = 0x1f03,
- GR_STATE_BIND_MSAA = 0x1f04,
-
- GR_STATE_BIND_POINT_BEGIN_RANGE = GR_STATE_BIND_VIEWPORT,
- GR_STATE_BIND_POINT_END_RANGE = GR_STATE_BIND_MSAA,
- GR_NUM_STATE_BIND_POINT = (GR_STATE_BIND_POINT_END_RANGE - GR_STATE_BIND_POINT_BEGIN_RANGE + 1),
-} GR_STATE_BIND_POINT;
-
-typedef enum _GR_PRIMITIVE_TOPOLOGY
-{
- GR_TOPOLOGY_POINT_LIST = 0x2000,
- GR_TOPOLOGY_LINE_LIST = 0x2001,
- GR_TOPOLOGY_LINE_STRIP = 0x2002,
- GR_TOPOLOGY_TRIANGLE_LIST = 0x2003,
- GR_TOPOLOGY_TRIANGLE_STRIP = 0x2004,
- GR_TOPOLOGY_RECT_LIST = 0x2005,
- GR_TOPOLOGY_QUAD_LIST = 0x2006,
- GR_TOPOLOGY_QUAD_STRIP = 0x2007,
- GR_TOPOLOGY_LINE_LIST_ADJ = 0x2008,
- GR_TOPOLOGY_LINE_STRIP_ADJ = 0x2009,
- GR_TOPOLOGY_TRIANGLE_LIST_ADJ = 0x200a,
- GR_TOPOLOGY_TRIANGLE_STRIP_ADJ = 0x200b,
- GR_TOPOLOGY_PATCH = 0x200c,
-
- GR_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = GR_TOPOLOGY_POINT_LIST,
- GR_PRIMITIVE_TOPOLOGY_END_RANGE = GR_TOPOLOGY_PATCH,
- GR_NUM_PRIMITIVE_TOPOLOGY = (GR_PRIMITIVE_TOPOLOGY_END_RANGE - GR_PRIMITIVE_TOPOLOGY_BEGIN_RANGE + 1),
-} GR_PRIMITIVE_TOPOLOGY;
-
-typedef enum _GR_INDEX_TYPE
-{
- GR_INDEX_16 = 0x2100,
- GR_INDEX_32 = 0x2101,
-
- GR_INDEX_TYPE_BEGIN_RANGE = GR_INDEX_16,
- GR_INDEX_TYPE_END_RANGE = GR_INDEX_32,
- GR_NUM_INDEX_TYPE = (GR_INDEX_TYPE_END_RANGE - GR_INDEX_TYPE_BEGIN_RANGE + 1),
-} GR_INDEX_TYPE;
-
-typedef enum _GR_TEX_FILTER
-{
- GR_TEX_FILTER_BEGIN_RANGE = 0x2300,
- GR_TEX_FILTER_END_RANGE = 0x23ff,
-
- GR_TEX_FILTER_MAG_POINT_MIN_POINT_MIP_POINT = GR_TEX_FILTER_BEGIN_RANGE + 0x40,
- GR_TEX_FILTER_MAG_LINEAR_MIN_POINT_MIP_POINT = GR_TEX_FILTER_BEGIN_RANGE + 0x41,
- GR_TEX_FILTER_MAG_POINT_MIN_LINEAR_MIP_POINT = GR_TEX_FILTER_BEGIN_RANGE + 0x44,
- GR_TEX_FILTER_MAG_LINEAR_MIN_LINEAR_MIP_POINT = GR_TEX_FILTER_BEGIN_RANGE + 0x45,
- GR_TEX_FILTER_MAG_POINT_MIN_POINT_MIP_LINEAR = GR_TEX_FILTER_BEGIN_RANGE + 0x80,
- GR_TEX_FILTER_MAG_LINEAR_MIN_POINT_MIP_LINEAR = GR_TEX_FILTER_BEGIN_RANGE + 0x81,
- GR_TEX_FILTER_MAG_POINT_MIN_LINEAR_MIP_LINEAR = GR_TEX_FILTER_BEGIN_RANGE + 0x84,
- GR_TEX_FILTER_MAG_LINEAR_MIN_LINEAR_MIP_LINEAR = GR_TEX_FILTER_BEGIN_RANGE + 0x85,
- GR_TEX_FILTER_ANISOTROPIC = GR_TEX_FILTER_BEGIN_RANGE + 0x8f,
- GR_NUM_TEX_FILTER = (GR_TEX_FILTER_END_RANGE - GR_TEX_FILTER_BEGIN_RANGE + 1),
-} GR_TEX_FILTER;
-
-typedef enum _GR_TEX_ADDRESS
-{
- GR_TEX_ADDRESS_WRAP = 0x2400,
- GR_TEX_ADDRESS_MIRROR = 0x2401,
- GR_TEX_ADDRESS_CLAMP = 0x2402,
- GR_TEX_ADDRESS_MIRROR_ONCE = 0x2403,
- GR_TEX_ADDRESS_CLAMP_BORDER = 0x2404,
-
- GR_TEX_ADDRESS_BEGIN_RANGE = GR_TEX_ADDRESS_WRAP,
- GR_TEX_ADDRESS_END_RANGE = GR_TEX_ADDRESS_CLAMP_BORDER,
- GR_NUM_TEX_ADDRESS = (GR_TEX_ADDRESS_END_RANGE - GR_TEX_ADDRESS_BEGIN_RANGE + 1),
-} GR_TEX_ADDRESS;
-
-typedef enum _GR_COMPARE_FUNC
-{
- GR_COMPARE_NEVER = 0x2500,
- GR_COMPARE_LESS = 0x2501,
- GR_COMPARE_EQUAL = 0x2502,
- GR_COMPARE_LESS_EQUAL = 0x2503,
- GR_COMPARE_GREATER = 0x2504,
- GR_COMPARE_NOT_EQUAL = 0x2505,
- GR_COMPARE_GREATER_EQUAL = 0x2506,
- GR_COMPARE_ALWAYS = 0x2507,
-
- GR_COMPARE_FUNC_BEGIN_RANGE = GR_COMPARE_NEVER,
- GR_COMPARE_FUNC_END_RANGE = GR_COMPARE_ALWAYS,
- GR_NUM_COMPARE_FUNC = (GR_COMPARE_FUNC_END_RANGE - GR_COMPARE_FUNC_BEGIN_RANGE + 1),
-} GR_COMPARE_FUNC;
-
-typedef enum _GR_FILL_MODE
-{
- GR_FILL_SOLID = 0x2600,
- GR_FILL_WIREFRAME = 0x2601,
-
- GR_FILL_MODE_BEGIN_RANGE = GR_FILL_SOLID,
- GR_FILL_MODE_END_RANGE = GR_FILL_WIREFRAME,
- GR_NUM_FILL_MODE = (GR_FILL_MODE_END_RANGE - GR_FILL_MODE_BEGIN_RANGE + 1),
-} GR_FILL_MODE;
-
-typedef enum _GR_CULL_MODE
-{
- GR_CULL_NONE = 0x2700,
- GR_CULL_FRONT = 0x2701,
- GR_CULL_BACK = 0x2702,
-
- GR_CULL_MODE_BEGIN_RANGE = GR_CULL_NONE,
- GR_CULL_MODE_END_RANGE = GR_CULL_BACK,
- GR_NUM_CULL_MODE = (GR_CULL_MODE_END_RANGE - GR_CULL_MODE_BEGIN_RANGE + 1),
-} GR_CULL_MODE;
-
-typedef enum _GR_FACE_ORIENTATION
-{
- GR_FRONT_FACE_CCW = 0x2800,
- GR_FRONT_FACE_CW = 0x2801,
-
- GR_FACE_ORIENTATION_BEGIN_RANGE = GR_FRONT_FACE_CCW,
- GR_FACE_ORIENTATION_END_RANGE = GR_FRONT_FACE_CW,
- GR_NUM_FACE_ORIENTATION = (GR_FACE_ORIENTATION_END_RANGE - GR_FACE_ORIENTATION_BEGIN_RANGE + 1),
-} GR_FACE_ORIENTATION;
-
-typedef enum _GR_BLEND
-{
- GR_BLEND_ZERO = 0x2900,
- GR_BLEND_ONE = 0x2901,
- GR_BLEND_SRC_COLOR = 0x2902,
- GR_BLEND_ONE_MINUS_SRC_COLOR = 0x2903,
- GR_BLEND_DEST_COLOR = 0x2904,
- GR_BLEND_ONE_MINUS_DEST_COLOR = 0x2905,
- GR_BLEND_SRC_ALPHA = 0x2906,
- GR_BLEND_ONE_MINUS_SRC_ALPHA = 0x2907,
- GR_BLEND_DEST_ALPHA = 0x2908,
- GR_BLEND_ONE_MINUS_DEST_ALPHA = 0x2909,
- GR_BLEND_CONSTANT_COLOR = 0x290a,
- GR_BLEND_ONE_MINUS_CONSTANT_COLOR = 0x290b,
- GR_BLEND_CONSTANT_ALPHA = 0x290c,
- GR_BLEND_ONE_MINUS_CONSTANT_ALPHA = 0x290d,
- GR_BLEND_SRC_ALPHA_SATURATE = 0x290e,
- GR_BLEND_SRC1_COLOR = 0x290f,
- GR_BLEND_ONE_MINUS_SRC1_COLOR = 0x2910,
- GR_BLEND_SRC1_ALPHA = 0x2911,
- GR_BLEND_ONE_MINUS_SRC1_ALPHA = 0x2912,
-
- GR_BLEND_BEGIN_RANGE = GR_BLEND_ZERO,
- GR_BLEND_END_RANGE = GR_BLEND_ONE_MINUS_SRC1_ALPHA,
- GR_NUM_BLEND = (GR_BLEND_END_RANGE - GR_BLEND_BEGIN_RANGE + 1),
-} GR_BLEND;
-
-typedef enum _GR_BLEND_FUNC
-{
- GR_BLEND_FUNC_ADD = 0x2a00,
- GR_BLEND_FUNC_SUBTRACT = 0x2a01,
- GR_BLEND_FUNC_REVERSE_SUBTRACT = 0x2a02,
- GR_BLEND_FUNC_MIN = 0x2a03,
- GR_BLEND_FUNC_MAX = 0x2a04,
-
- GR_BLEND_FUNC_BEGIN_RANGE = GR_BLEND_FUNC_ADD,
- GR_BLEND_FUNC_END_RANGE = GR_BLEND_FUNC_MAX,
- GR_NUM_BLEND_FUNC = (GR_BLEND_FUNC_END_RANGE - GR_BLEND_FUNC_BEGIN_RANGE + 1),
-} GR_BLEND_FUNC;
-
-typedef enum _GR_STENCIL_OP
-{
- GR_STENCIL_OP_KEEP = 0x2b00,
- GR_STENCIL_OP_ZERO = 0x2b01,
- GR_STENCIL_OP_REPLACE = 0x2b02,
- GR_STENCIL_OP_INC_CLAMP = 0x2b03,
- GR_STENCIL_OP_DEC_CLAMP = 0x2b04,
- GR_STENCIL_OP_INVERT = 0x2b05,
- GR_STENCIL_OP_INC_WRAP = 0x2b06,
- GR_STENCIL_OP_DEC_WRAP = 0x2b07,
-
- GR_STENCIL_OP_BEGIN_RANGE = GR_STENCIL_OP_KEEP,
- GR_STENCIL_OP_END_RANGE = GR_STENCIL_OP_DEC_WRAP,
- GR_NUM_STENCIL_OP = (GR_STENCIL_OP_END_RANGE - GR_STENCIL_OP_BEGIN_RANGE + 1),
-} GR_STENCIL_OP;
-
-typedef enum _GR_LOGIC_OP
-{
- GR_LOGIC_OP_COPY = 0x2c00,
- GR_LOGIC_OP_CLEAR = 0x2c01,
- GR_LOGIC_OP_AND = 0x2c02,
- GR_LOGIC_OP_AND_REVERSE = 0x2c03,
- GR_LOGIC_OP_AND_INVERTED = 0x2c04,
- GR_LOGIC_OP_NOOP = 0x2c05,
- GR_LOGIC_OP_XOR = 0x2c06,
- GR_LOGIC_OP_OR = 0x2c07,
- GR_LOGIC_OP_NOR = 0x2c08,
- GR_LOGIC_OP_EQUIV = 0x2c09,
- GR_LOGIC_OP_INVERT = 0x2c0a,
- GR_LOGIC_OP_OR_REVERSE = 0x2c0b,
- GR_LOGIC_OP_COPY_INVERTED = 0x2c0c,
- GR_LOGIC_OP_OR_INVERTED = 0x2c0d,
- GR_LOGIC_OP_NAND = 0x2c0e,
- GR_LOGIC_OP_SET = 0x2c0f,
-
- GR_LOGIC_OP_BEGIN_RANGE = GR_LOGIC_OP_COPY,
- GR_LOGIC_OP_END_RANGE = GR_LOGIC_OP_SET,
- GR_NUM_LOGIC_OP = (GR_LOGIC_OP_END_RANGE - GR_LOGIC_OP_BEGIN_RANGE + 1),
-} GR_LOGIC_OP;
-
-typedef enum _GR_ATOMIC_OP
-{
- GR_ATOMIC_ADD_INT32 = 0x2d00,
- GR_ATOMIC_SUB_INT32 = 0x2d01,
- GR_ATOMIC_MIN_UINT32 = 0x2d02,
- GR_ATOMIC_MAX_UINT32 = 0x2d03,
- GR_ATOMIC_MIN_SINT32 = 0x2d04,
- GR_ATOMIC_MAX_SINT32 = 0x2d05,
- GR_ATOMIC_AND_INT32 = 0x2d06,
- GR_ATOMIC_OR_INT32 = 0x2d07,
- GR_ATOMIC_XOR_INT32 = 0x2d08,
- GR_ATOMIC_INC_UINT32 = 0x2d09,
- GR_ATOMIC_DEC_UINT32 = 0x2d0a,
- GR_ATOMIC_ADD_INT64 = 0x2d0b,
- GR_ATOMIC_SUB_INT64 = 0x2d0c,
- GR_ATOMIC_MIN_UINT64 = 0x2d0d,
- GR_ATOMIC_MAX_UINT64 = 0x2d0e,
- GR_ATOMIC_MIN_SINT64 = 0x2d0f,
- GR_ATOMIC_MAX_SINT64 = 0x2d10,
- GR_ATOMIC_AND_INT64 = 0x2d11,
- GR_ATOMIC_OR_INT64 = 0x2d12,
- GR_ATOMIC_XOR_INT64 = 0x2d13,
- GR_ATOMIC_INC_UINT64 = 0x2d14,
- GR_ATOMIC_DEC_UINT64 = 0x2d15,
-
- GR_ATOMIC_OP_BEGIN_RANGE = GR_ATOMIC_ADD_INT32,
- GR_ATOMIC_OP_END_RANGE = GR_ATOMIC_DEC_UINT64,
- GR_NUM_ATOMIC_OP = (GR_ATOMIC_OP_END_RANGE - GR_ATOMIC_OP_BEGIN_RANGE + 1),
-} GR_ATOMIC_OP;
-
-typedef enum _GR_SYSTEM_ALLOC_TYPE
-{
- GR_SYSTEM_ALLOC_API_OBJECT = 0x2e00,
- GR_SYSTEM_ALLOC_INTERNAL = 0x2e01,
- GR_SYSTEM_ALLOC_INTERNAL_TEMP = 0x2e02,
- GR_SYSTEM_ALLOC_INTERNAL_SHADER = 0x2e03,
- GR_SYSTEM_ALLOC_DEBUG = 0x2e04,
-
- GR_SYSTEM_ALLOC_BEGIN_RANGE = GR_SYSTEM_ALLOC_API_OBJECT,
- GR_SYSTEM_ALLOC_END_RANGE = GR_SYSTEM_ALLOC_DEBUG,
- GR_NUM_SYSTEM_ALLOC_TYPE = (GR_SYSTEM_ALLOC_END_RANGE - GR_SYSTEM_ALLOC_BEGIN_RANGE + 1),
-} GR_SYSTEM_ALLOC_TYPE;
-
-typedef enum _GR_HEAP_MEMORY_TYPE
-{
- GR_HEAP_MEMORY_OTHER = 0x2f00,
- GR_HEAP_MEMORY_LOCAL = 0x2f01,
- GR_HEAP_MEMORY_REMOTE = 0x2f02,
- GR_HEAP_MEMORY_EMBEDDED = 0x2f03,
-
- GR_HEAP_MEMORY_BEGIN_RANGE = GR_HEAP_MEMORY_OTHER,
- GR_HEAP_MEMORY_END_RANGE = GR_HEAP_MEMORY_EMBEDDED,
- GR_NUM_HEAP_MEMORY_TYPE = (GR_HEAP_MEMORY_END_RANGE - GR_HEAP_MEMORY_BEGIN_RANGE + 1),
-} GR_HEAP_MEMORY_TYPE;
-
-typedef enum _GR_PHYSICAL_GPU_TYPE
-{
- GR_GPU_TYPE_OTHER = 0x3000,
- GR_GPU_TYPE_INTEGRATED = 0x3001,
- GR_GPU_TYPE_DISCRETE = 0x3002,
- GR_GPU_TYPE_VIRTUAL = 0x3003,
-
- GR_PHYSICAL_GPU_TYPE_BEGIN_RANGE = GR_GPU_TYPE_OTHER,
- GR_PHYSICAL_GPU_TYPE_END_RANGE = GR_GPU_TYPE_VIRTUAL,
- GR_NUM_PHYSICAL_GPU_TYPE = (GR_PHYSICAL_GPU_TYPE_END_RANGE - GR_PHYSICAL_GPU_TYPE_BEGIN_RANGE + 1),
-} GR_PHYSICAL_GPU_TYPE;
-
-typedef enum _GR_INFO_TYPE
-{
- // Info type for grGetGpuInfo()
- GR_INFO_TYPE_PHYSICAL_GPU_PROPERTIES = 0x6100,
- GR_INFO_TYPE_PHYSICAL_GPU_PERFORMANCE = 0x6101,
- GR_INFO_TYPE_PHYSICAL_GPU_QUEUE_PROPERTIES = 0x6102,
- GR_INFO_TYPE_PHYSICAL_GPU_MEMORY_PROPERTIES = 0x6103,
- // Info type for grGetMemoryHeapInfo()
- GR_INFO_TYPE_MEMORY_HEAP_PROPERTIES = 0x6200,
- // Info type for grGetFormatInfo()
- GR_INFO_TYPE_FORMAT_PROPERTIES = 0x6300,
- // Info type for grGetImageSubresourceInfo()
- GR_INFO_TYPE_SUBRESOURCE_LAYOUT = 0x6400,
- // Info type for grGetObjectInfo()
- GR_INFO_TYPE_MEMORY_REQUIREMENTS = 0x6800,
-} GR_INFO_TYPE;
-
-typedef enum _GR_VALIDATION_LEVEL
-{
- GR_VALIDATION_LEVEL_0 = 0x8000,
- GR_VALIDATION_LEVEL_1 = 0x8001,
- GR_VALIDATION_LEVEL_2 = 0x8002,
- GR_VALIDATION_LEVEL_3 = 0x8003,
- GR_VALIDATION_LEVEL_4 = 0x8004,
-
- GR_VALIDATION_LEVEL_BEGIN_RANGE = GR_VALIDATION_LEVEL_0,
- GR_VALIDATION_LEVEL_END_RANGE = GR_VALIDATION_LEVEL_4,
- GR_NUM_VALIDATION_LEVEL = (GR_VALIDATION_LEVEL_END_RANGE - GR_VALIDATION_LEVEL_BEGIN_RANGE + 1),
-} GR_VALIDATION_LEVEL;
-
-// ------------------------------------------------------------------------------------------------
-// Error and return codes
-
-typedef enum _GR_RESULT_CODE
-{
- // Return codes for successful operation execution
- GR_SUCCESS = 0x10000,
- GR_UNSUPPORTED = 0x10001,
- GR_NOT_READY = 0x10002,
- GR_TIMEOUT = 0x10003,
- GR_EVENT_SET = 0x10004,
- GR_EVENT_RESET = 0x10005,
- // Error codes
- GR_ERROR_UNKNOWN = 0x11000,
- GR_ERROR_UNAVAILABLE = 0x11001,
- GR_ERROR_INITIALIZATION_FAILED = 0x11002,
- GR_ERROR_OUT_OF_MEMORY = 0x11003,
- GR_ERROR_OUT_OF_GPU_MEMORY = 0x11004,
- GR_ERROR_DEVICE_ALREADY_CREATED = 0x11005,
- GR_ERROR_DEVICE_LOST = 0x11006,
- GR_ERROR_INVALID_POINTER = 0x11007,
- GR_ERROR_INVALID_VALUE = 0x11008,
- GR_ERROR_INVALID_HANDLE = 0x11009,
- GR_ERROR_INVALID_ORDINAL = 0x1100a,
- GR_ERROR_INVALID_MEMORY_SIZE = 0x1100b,
- GR_ERROR_INVALID_EXTENSION = 0x1100c,
- GR_ERROR_INVALID_FLAGS = 0x1100d,
- GR_ERROR_INVALID_ALIGNMENT = 0x1100e,
- GR_ERROR_INVALID_FORMAT = 0x1100f,
- GR_ERROR_INVALID_IMAGE = 0x11010,
- GR_ERROR_INVALID_DESCRIPTOR_SET_DATA = 0x11011,
- GR_ERROR_INVALID_QUEUE_TYPE = 0x11012,
- GR_ERROR_INVALID_OBJECT_TYPE = 0x11013,
- GR_ERROR_UNSUPPORTED_SHADER_IL_VERSION = 0x11014,
- GR_ERROR_BAD_SHADER_CODE = 0x11015,
- GR_ERROR_BAD_PIPELINE_DATA = 0x11016,
- GR_ERROR_TOO_MANY_MEMORY_REFERENCES = 0x11017,
- GR_ERROR_NOT_MAPPABLE = 0x11018,
- GR_ERROR_MEMORY_MAP_FAILED = 0x11019,
- GR_ERROR_MEMORY_UNMAP_FAILED = 0x1101a,
- GR_ERROR_INCOMPATIBLE_DEVICE = 0x1101b,
- GR_ERROR_INCOMPATIBLE_DRIVER = 0x1101c,
- GR_ERROR_INCOMPLETE_COMMAND_BUFFER = 0x1101d,
- GR_ERROR_BUILDING_COMMAND_BUFFER = 0x1101e,
- GR_ERROR_MEMORY_NOT_BOUND = 0x1101f,
- GR_ERROR_INCOMPATIBLE_QUEUE = 0x11020,
- GR_ERROR_NOT_SHAREABLE = 0x11021,
-} GR_RESULT_CODE;
-
-// ------------------------------------------------------------------------------------------------
-// Mantle format definition
-
-typedef enum _GR_CHANNEL_FORMAT
-{
- GR_CH_FMT_UNDEFINED = 0,
- GR_CH_FMT_R4G4 = 1,
- GR_CH_FMT_R4G4B4A4 = 2,
- GR_CH_FMT_R5G6B5 = 3,
- GR_CH_FMT_B5G6R5 = 4,
- GR_CH_FMT_R5G5B5A1 = 5,
- GR_CH_FMT_R8 = 6,
- GR_CH_FMT_R8G8 = 7,
- GR_CH_FMT_R8G8B8A8 = 8,
- GR_CH_FMT_B8G8R8A8 = 9,
- GR_CH_FMT_R10G11B11 = 10,
- GR_CH_FMT_R11G11B10 = 11,
- GR_CH_FMT_R10G10B10A2 = 12,
- GR_CH_FMT_R16 = 13,
- GR_CH_FMT_R16G16 = 14,
- GR_CH_FMT_R16G16B16A16 = 15,
- GR_CH_FMT_R32 = 16,
- GR_CH_FMT_R32G32 = 17,
- GR_CH_FMT_R32G32B32 = 18,
- GR_CH_FMT_R32G32B32A32 = 19,
- GR_CH_FMT_R16G8 = 20,
- GR_CH_FMT_R32G8 = 21,
- GR_CH_FMT_R9G9B9E5 = 22,
- GR_CH_FMT_BC1 = 23,
- GR_CH_FMT_BC2 = 24,
- GR_CH_FMT_BC3 = 25,
- GR_CH_FMT_BC4 = 26,
- GR_CH_FMT_BC5 = 27,
- GR_CH_FMT_BC6U = 28,
- GR_CH_FMT_BC6S = 29,
- GR_CH_FMT_BC7 = 30,
- GR_MAX_CH_FMT = GR_CH_FMT_BC7,
-} GR_CHANNEL_FORMAT;
-
-typedef enum _GR_NUM_FORMAT
-{
- GR_NUM_FMT_UNDEFINED = 0,
- GR_NUM_FMT_UNORM = 1,
- GR_NUM_FMT_SNORM = 2,
- GR_NUM_FMT_UINT = 3,
- GR_NUM_FMT_SINT = 4,
- GR_NUM_FMT_FLOAT = 5,
- GR_NUM_FMT_SRGB = 6,
- GR_NUM_FMT_DS = 7,
- GR_MAX_NUM_FMT = GR_NUM_FMT_DS,
-} GR_NUM_FORMAT;
-
-typedef struct _GR_FORMAT
-{
- GR_UINT32 channelFormat : 16; // GR_CHANNEL_FORMAT
- GR_UINT32 numericFormat : 16; // GR_NUM_FORMAT
-} GR_FORMAT;
-
-// ------------------------------------------------------------------------------------------------
-// Flags
-
-// Device creation flags
-typedef enum _GR_DEVICE_CREATE_FLAGS
-{
- GR_DEVICE_CREATE_VALIDATION = 0x00000001,
- GR_DEVICE_CREATE_MGPU_IQ_MATCH = 0x00000002,
-} GR_DEVICE_CREATE_FLAGS;
-
-// Memory heap properties
-typedef enum _GR_MEMORY_HEAP_FLAGS
-{
- GR_MEMORY_HEAP_CPU_VISIBLE = 0x00000001,
- GR_MEMORY_HEAP_CPU_GPU_COHERENT = 0x00000002,
- GR_MEMORY_HEAP_CPU_UNCACHED = 0x00000004,
- GR_MEMORY_HEAP_CPU_WRITE_COMBINED = 0x00000008,
- GR_MEMORY_HEAP_HOLDS_PINNED = 0x00000010,
- GR_MEMORY_HEAP_SHAREABLE = 0x00000020,
-} GR_MEMORY_HEAP_FLAGS;
-
-// Memory allocation flags
-typedef enum _GR_MEMORY_ALLOC_FLAGS
-{
- GR_MEMORY_ALLOC_VIRTUAL = 0x00000001,
- GR_MEMORY_ALLOC_SHAREABLE = 0x00000002,
-} GR_MEMORY_ALLOC_FLAGS;
-
-// Image usage flags
-typedef enum _GR_IMAGE_USAGE_FLAGS
-{
- GR_IMAGE_USAGE_SHADER_ACCESS_READ = 0x00000001,
- GR_IMAGE_USAGE_SHADER_ACCESS_WRITE = 0x00000002,
- GR_IMAGE_USAGE_COLOR_TARGET = 0x00000004,
- GR_IMAGE_USAGE_DEPTH_STENCIL = 0x00000008,
-} GR_IMAGE_USAGE_FLAGS;
-
-// Image flags
-typedef enum _GR_IMAGE_CREATE_FLAGS
-{
- GR_IMAGE_CREATE_INVARIANT_DATA = 0x00000001,
- GR_IMAGE_CREATE_CLONEABLE = 0x00000002,
- GR_IMAGE_CREATE_SHAREABLE = 0x00000004,
-} GR_IMAGE_CREATE_FLAGS;
-
-// Depth-stencil view creation flags
-typedef enum _GR_DEPTH_STENCIL_VIEW_CREATE_FLAGS
-{
- GR_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH = 0x00000001,
- GR_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL = 0x00000002,
-} GR_DEPTH_STENCIL_VIEW_CREATE_FLAGS;
-
-// Pipeline creation flags
-typedef enum _GR_PIPELINE_CREATE_FLAGS
-{
- GR_PIPELINE_CREATE_DISABLE_OPTIMIZATION = 0x00000001,
-} GR_PIPELINE_CREATE_FLAGS;
-
-// Semaphore creation flags
-typedef enum _GR_SEMAPHORE_CREATE_FLAGS
-{
- GR_SEMAPHORE_CREATE_SHAREABLE = 0x00000001,
-} GR_SEMAPHORE_CREATE_FLAGS;
-
-// Memory reference flags
-typedef enum _GR_MEMORY_REF_FLAGS
-{
- GR_MEMORY_REF_READ_ONLY = 0x00000001,
-} GR_MEMORY_REF_FLAGS;
-
-// Format capability flags
-typedef enum _GR_FORMAT_FEATURE_FLAGS
-{
- GR_FORMAT_IMAGE_SHADER_READ = 0x00000001,
- GR_FORMAT_IMAGE_SHADER_WRITE = 0x00000002,
- GR_FORMAT_IMAGE_COPY = 0x00000004,
- GR_FORMAT_MEMORY_SHADER_ACCESS = 0x00000008,
- GR_FORMAT_COLOR_TARGET_WRITE = 0x00000010,
- GR_FORMAT_COLOR_TARGET_BLEND = 0x00000020,
- GR_FORMAT_DEPTH_TARGET = 0x00000040,
- GR_FORMAT_STENCIL_TARGET = 0x00000080,
- GR_FORMAT_MSAA_TARGET = 0x00000100,
- GR_FORMAT_CONVERSION = 0x00000200,
-} GR_FORMAT_FEATURE_FLAGS;
-
-// Query flags
-typedef enum _GR_QUERY_CONTROL_FLAGS
-{
- GR_QUERY_IMPRECISE_DATA = 0x00000001,
-} GR_QUERY_CONTROL_FLAGS;
-
-// GPU compatibility flags
-typedef enum _GR_GPU_COMPATIBILITY_FLAGS
-{
- GR_GPU_COMPAT_ASIC_FEATURES = 0x00000001,
- GR_GPU_COMPAT_IQ_MATCH = 0x00000002,
- GR_GPU_COMPAT_PEER_TRANSFER = 0x00000004,
- GR_GPU_COMPAT_SHARED_MEMORY = 0x00000008,
- GR_GPU_COMPAT_SHARED_SYNC = 0x00000010,
- GR_GPU_COMPAT_SHARED_GPU0_DISPLAY = 0x00000020,
- GR_GPU_COMPAT_SHARED_GPU1_DISPLAY = 0x00000040,
-} GR_GPU_COMPATIBILITY_FLAGS;
-
-// Command buffer building flags
-typedef enum _GR_CMD_BUFFER_BUILD_FLAGS
-{
- GR_CMD_BUFFER_OPTIMIZE_GPU_SMALL_BATCH = 0x00000001,
- GR_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH = 0x00000002,
- GR_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT = 0x00000004,
- GR_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH = 0x00000008,
-} GR_CMD_BUFFER_BUILD_FLAGS;
-
-// ------------------------------------------------------------------------------------------------
-// Mantle structures
-
-typedef struct _GR_OFFSET2D
-{
- GR_INT x;
- GR_INT y;
-} GR_OFFSET2D;
-
-typedef struct _GR_OFFSET3D
-{
- GR_INT x;
- GR_INT y;
- GR_INT z;
-} GR_OFFSET3D;
-
-typedef struct _GR_EXTENT2D
-{
- GR_INT width;
- GR_INT height;
-} GR_EXTENT2D;
-
-typedef struct _GR_EXTENT3D
-{
- GR_INT width;
- GR_INT height;
- GR_INT depth;
-} GR_EXTENT3D;
-
-typedef struct _GR_VIEWPORT
-{
- GR_FLOAT originX;
- GR_FLOAT originY;
- GR_FLOAT width;
- GR_FLOAT height;
- GR_FLOAT minDepth;
- GR_FLOAT maxDepth;
-} GR_VIEWPORT;
-
-typedef struct _GR_RECT
-{
- GR_OFFSET2D offset;
- GR_EXTENT2D extent;
-} GR_RECT;
-
-typedef struct _GR_PHYSICAL_GPU_PROPERTIES
-{
- GR_UINT32 apiVersion;
- GR_UINT32 driverVersion;
- GR_UINT32 vendorId;
- GR_UINT32 deviceId;
- GR_ENUM gpuType; // GR_PHYSICAL_GPU_TYPE
- GR_CHAR gpuName[GR_MAX_PHYSICAL_GPU_NAME];
- GR_UINT maxMemRefsPerSubmission;
- GR_GPU_SIZE virtualMemPageSize;
- GR_GPU_SIZE maxInlineMemoryUpdateSize;
- GR_UINT maxBoundDescriptorSets;
- GR_UINT maxThreadGroupSize;
- GR_UINT64 timestampFrequency;
- GR_BOOL multiColorTargetClears;
-} GR_PHYSICAL_GPU_PROPERTIES;
-
-typedef struct _GR_PHYSICAL_GPU_PERFORMANCE
-{
- GR_FLOAT maxGpuClock;
- GR_FLOAT aluPerClock;
- GR_FLOAT texPerClock;
- GR_FLOAT primsPerClock;
- GR_FLOAT pixelsPerClock;
-} GR_PHYSICAL_GPU_PERFORMANCE;
-
-typedef struct _GR_GPU_COMPATIBILITY_INFO
-{
- GR_FLAGS compatibilityFlags; // GR_GPU_COMPATIBILITY_FLAGS
-} GR_GPU_COMPATIBILITY_INFO;
-
-typedef struct _GR_APPLICATION_INFO
-{
- const GR_CHAR* pAppName;
- GR_UINT32 appVersion;
- const GR_CHAR* pEngineName;
- GR_UINT32 engineVersion;
- GR_UINT32 apiVersion;
-} GR_APPLICATION_INFO;
-
-typedef GR_VOID* (GR_STDCALL *GR_ALLOC_FUNCTION)(
- GR_SIZE size,
- GR_SIZE alignment,
- GR_ENUM allocType); // GR_SYSTEM_ALLOC_TYPE
-
-typedef GR_VOID (GR_STDCALL *GR_FREE_FUNCTION)(
- GR_VOID* pMem);
-
-typedef struct _GR_ALLOC_CALLBACKS
-{
- GR_ALLOC_FUNCTION pfnAlloc;
- GR_FREE_FUNCTION pfnFree;
-} GR_ALLOC_CALLBACKS;
-
-typedef struct _GR_DEVICE_QUEUE_CREATE_INFO
-{
- GR_ENUM queueType; // GR_QUEUE_TYPE
- GR_UINT queueCount;
-} GR_DEVICE_QUEUE_CREATE_INFO;
-
-typedef struct _GR_DEVICE_CREATE_INFO
-{
- GR_UINT queueRecordCount;
- const GR_DEVICE_QUEUE_CREATE_INFO* pRequestedQueues;
- GR_UINT extensionCount;
- const GR_CHAR*const* ppEnabledExtensionNames;
- GR_ENUM maxValidationLevel; // GR_VALIDATION_LEVEL
- GR_FLAGS flags; // GR_DEVICE_CREATE_FLAGS
-} GR_DEVICE_CREATE_INFO;
-
-typedef struct _GR_PHYSICAL_GPU_QUEUE_PROPERTIES
-{
- GR_ENUM queueType; // GR_QUEUE_TYPE
- GR_UINT queueCount;
- GR_UINT maxAtomicCounters;
- GR_BOOL supportsTimestamps;
-} GR_PHYSICAL_GPU_QUEUE_PROPERTIES;
-
-typedef struct _GR_PHYSICAL_GPU_MEMORY_PROPERTIES
-{
- GR_BOOL supportsMigration;
- GR_BOOL supportsVirtualMemoryRemapping;
- GR_BOOL supportsPinning;
-} GR_PHYSICAL_GPU_MEMORY_PROPERTIES;
-
-typedef struct _GR_MEMORY_HEAP_PROPERTIES
-{
- GR_ENUM heapMemoryType; // GR_HEAP_MEMORY_TYPE
- GR_GPU_SIZE heapSize; // Specified in bytes
- GR_GPU_SIZE pageSize; // Specified in bytes
- GR_FLAGS flags; // GR_MEMORY_HEAP_FLAGS
- GR_FLOAT gpuReadPerfRating;
- GR_FLOAT gpuWritePerfRating;
- GR_FLOAT cpuReadPerfRating;
- GR_FLOAT cpuWritePerfRating;
-} GR_MEMORY_HEAP_PROPERTIES;
-
-typedef struct _GR_MEMORY_ALLOC_INFO
-{
- GR_GPU_SIZE size;
- GR_GPU_SIZE alignment;
- GR_FLAGS flags; // GR_MEMORY_ALLOC_FLAGS
- GR_UINT heapCount;
- GR_UINT heaps[GR_MAX_MEMORY_HEAPS];
- GR_ENUM memPriority; // GR_MEMORY_PRIORITY
-} GR_MEMORY_ALLOC_INFO;
-
-typedef struct _GR_MEMORY_OPEN_INFO
-{
- GR_GPU_MEMORY sharedMem;
-} GR_MEMORY_OPEN_INFO;
-
-typedef struct _GR_PEER_MEMORY_OPEN_INFO
-{
- GR_GPU_MEMORY originalMem;
-} GR_PEER_MEMORY_OPEN_INFO;
-
-typedef struct _GR_VIRTUAL_MEMORY_REMAP_RANGE
-{
- GR_GPU_MEMORY virtualMem;
- GR_GPU_SIZE virtualStartPage;
- GR_GPU_MEMORY realMem;
- GR_GPU_SIZE realStartPage;
- GR_GPU_SIZE pageCount;
-} GR_VIRTUAL_MEMORY_REMAP_RANGE;
-
-typedef struct _GR_MEMORY_REQUIREMENTS
-{
- GR_GPU_SIZE size; // Specified in bytes
- GR_GPU_SIZE alignment; // Specified in bytes
- GR_UINT heapCount;
- GR_UINT heaps[GR_MAX_MEMORY_HEAPS];
-} GR_MEMORY_REQUIREMENTS;
-
-typedef struct _GR_FORMAT_PROPERTIES
-{
- GR_FLAGS linearTilingFeatures; // GR_FORMAT_FEATURE_FLAGS
- GR_FLAGS optimalTilingFeatures; // GR_FORMAT_FEATURE_FLAGS
-} GR_FORMAT_PROPERTIES;
-
-typedef struct _GR_MEMORY_VIEW_ATTACH_INFO
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
- GR_GPU_SIZE range;
- GR_GPU_SIZE stride;
- GR_FORMAT format;
- GR_ENUM state; // GR_MEMORY_STATE
-} GR_MEMORY_VIEW_ATTACH_INFO;
-
-typedef struct _GR_IMAGE_VIEW_ATTACH_INFO
-{
- GR_IMAGE_VIEW view;
- GR_ENUM state; // GR_IMAGE_STATE
-} GR_IMAGE_VIEW_ATTACH_INFO;
-
-typedef struct _GR_MEMORY_STATE_TRANSITION
-{
- GR_GPU_MEMORY mem;
- GR_ENUM oldState; // GR_MEMORY_STATE
- GR_ENUM newState; // GR_MEMORY_STATE
- GR_GPU_SIZE offset;
- GR_GPU_SIZE regionSize;
-} GR_MEMORY_STATE_TRANSITION;
-
-typedef struct _GR_IMAGE_SUBRESOURCE
-{
- GR_ENUM aspect; // GR_IMAGE_ASPECT
- GR_UINT mipLevel;
- GR_UINT arraySlice;
-} GR_IMAGE_SUBRESOURCE;
-
-typedef struct _GR_IMAGE_SUBRESOURCE_RANGE
-{
- GR_ENUM aspect; // GR_IMAGE_ASPECT
- GR_UINT baseMipLevel;
- GR_UINT mipLevels;
- GR_UINT baseArraySlice;
- GR_UINT arraySize;
-} GR_IMAGE_SUBRESOURCE_RANGE;
-
-typedef struct _GR_IMAGE_STATE_TRANSITION
-{
- GR_IMAGE image;
- GR_ENUM oldState; // GR_IMAGE_STATE
- GR_ENUM newState; // GR_IMAGE_STATE
- GR_IMAGE_SUBRESOURCE_RANGE subresourceRange;
-} GR_IMAGE_STATE_TRANSITION;
-
-typedef struct _GR_IMAGE_CREATE_INFO
-{
- GR_ENUM imageType; // GR_IMAGE_TYPE
- GR_FORMAT format;
- GR_EXTENT3D extent;
- GR_UINT mipLevels;
- GR_UINT arraySize;
- GR_UINT samples;
- GR_ENUM tiling; // GR_IMAGE_TILING
- GR_FLAGS usage; // GR_IMAGE_USAGE_FLAGS
- GR_FLAGS flags; // GR_IMAGE_CREATE_FLAGS
-} GR_IMAGE_CREATE_INFO;
-
-typedef struct _GR_PEER_IMAGE_OPEN_INFO
-{
- GR_IMAGE originalImage;
-} GR_PEER_IMAGE_OPEN_INFO;
-
-typedef struct _GR_SUBRESOURCE_LAYOUT
-{
- GR_GPU_SIZE offset; // Specified in bytes
- GR_GPU_SIZE size; // Specified in bytes
- GR_GPU_SIZE rowPitch; // Specified in bytes
- GR_GPU_SIZE depthPitch; // Specified in bytes
-} GR_SUBRESOURCE_LAYOUT;
-
-typedef struct _GR_CHANNEL_MAPPING
-{
- GR_ENUM r; // GR_CHANNEL_SWIZZLE
- GR_ENUM g; // GR_CHANNEL_SWIZZLE
- GR_ENUM b; // GR_CHANNEL_SWIZZLE
- GR_ENUM a; // GR_CHANNEL_SWIZZLE
-} GR_CHANNEL_MAPPING;
-
-typedef struct _GR_IMAGE_VIEW_CREATE_INFO
-{
- GR_IMAGE image;
- GR_ENUM viewType; // GR_IMAGE_VIEW_TYPE
- GR_FORMAT format;
- GR_CHANNEL_MAPPING channels;
- GR_IMAGE_SUBRESOURCE_RANGE subresourceRange;
- GR_FLOAT minLod;
-} GR_IMAGE_VIEW_CREATE_INFO;
-
-typedef struct _GR_COLOR_TARGET_VIEW_CREATE_INFO
-{
- GR_IMAGE image;
- GR_FORMAT format;
- GR_UINT mipLevel;
- GR_UINT baseArraySlice;
- GR_UINT arraySize;
-} GR_COLOR_TARGET_VIEW_CREATE_INFO;
-
-typedef struct _GR_DEPTH_STENCIL_VIEW_CREATE_INFO
-{
- GR_IMAGE image;
- GR_UINT mipLevel;
- GR_UINT baseArraySlice;
- GR_UINT arraySize;
- GR_FLAGS flags; // GR_DEPTH_STENCIL_VIEW_CREATE_FLAGS
-} GR_DEPTH_STENCIL_VIEW_CREATE_INFO;
-
-typedef struct _GR_COLOR_TARGET_BIND_INFO
-{
- GR_COLOR_TARGET_VIEW view;
- GR_ENUM colorTargetState; // GR_IMAGE_STATE
-} GR_COLOR_TARGET_BIND_INFO;
-
-typedef struct _GR_DEPTH_STENCIL_BIND_INFO
-{
- GR_DEPTH_STENCIL_VIEW view;
- GR_ENUM depthState; // GR_IMAGE_STATE
- GR_ENUM stencilState; // GR_IMAGE_STATE
-} GR_DEPTH_STENCIL_BIND_INFO;
-
-typedef struct _GR_MEMORY_COPY
-{
- GR_GPU_SIZE srcOffset; // Specified in bytes
- GR_GPU_SIZE destOffset; // Specified in bytes
- GR_GPU_SIZE copySize; // Specified in bytes
-} GR_MEMORY_COPY;
-
-typedef struct _GR_IMAGE_COPY
-{
- GR_IMAGE_SUBRESOURCE srcSubresource;
- GR_OFFSET3D srcOffset;
- GR_IMAGE_SUBRESOURCE destSubresource;
- GR_OFFSET3D destOffset;
- GR_EXTENT3D extent;
-} GR_IMAGE_COPY;
-
-typedef struct _GR_MEMORY_IMAGE_COPY
-{
- GR_GPU_SIZE memOffset; // Specified in bytes
- GR_IMAGE_SUBRESOURCE imageSubresource;
- GR_OFFSET3D imageOffset;
- GR_EXTENT3D imageExtent;
-} GR_MEMORY_IMAGE_COPY;
-
-typedef struct _GR_IMAGE_RESOLVE
-{
- GR_IMAGE_SUBRESOURCE srcSubresource;
- GR_OFFSET2D srcOffset;
- GR_IMAGE_SUBRESOURCE destSubresource;
- GR_OFFSET2D destOffset;
- GR_EXTENT2D extent;
-} GR_IMAGE_RESOLVE;
-
-typedef struct _GR_SHADER_CREATE_INFO
-{
- GR_SIZE codeSize; // Specified in bytes
- const GR_VOID* pCode;
- GR_FLAGS flags; // Reserved
-} GR_SHADER_CREATE_INFO;
-
-struct _GR_DESCRIPTOR_SET_MAPPING;
-
-typedef struct _GR_DESCRIPTOR_SLOT_INFO
-{
- GR_ENUM slotObjectType; // GR_DESCRIPTOR_SET_SLOT_TYPE
- union
- {
- GR_UINT shaderEntityIndex;// Shader IL slot index for given entity type
- const struct _GR_DESCRIPTOR_SET_MAPPING* pNextLevelSet; // Pointer to next descriptor set level
- };
-} GR_DESCRIPTOR_SLOT_INFO;
-
-typedef struct _GR_DESCRIPTOR_SET_MAPPING
-{
- GR_UINT descriptorCount;
- const GR_DESCRIPTOR_SLOT_INFO* pDescriptorInfo;
-} GR_DESCRIPTOR_SET_MAPPING;
-
-typedef struct _GR_LINK_CONST_BUFFER
-{
- GR_UINT bufferId;
- GR_SIZE bufferSize;
- const GR_VOID* pBufferData;
-} GR_LINK_CONST_BUFFER;
-
-typedef struct _GR_DYNAMIC_MEMORY_VIEW_SLOT_INFO
-{
- GR_ENUM slotObjectType; // GR_DESCRIPTOR_SET_SLOT_TYPE
- GR_UINT shaderEntityIndex;
-} GR_DYNAMIC_MEMORY_VIEW_SLOT_INFO;
-
-typedef struct _GR_PIPELINE_SHADER
-{
- GR_SHADER shader;
- GR_DESCRIPTOR_SET_MAPPING descriptorSetMapping[GR_MAX_DESCRIPTOR_SETS];
- GR_UINT linkConstBufferCount;
- const GR_LINK_CONST_BUFFER* pLinkConstBufferInfo;
- GR_DYNAMIC_MEMORY_VIEW_SLOT_INFO dynamicMemoryViewMapping;
-} GR_PIPELINE_SHADER;
-
-typedef struct _GR_COMPUTE_PIPELINE_CREATE_INFO
-{
- GR_PIPELINE_SHADER cs;
- GR_FLAGS flags; // GR_PIPELINE_CREATE_FLAGS
-} GR_COMPUTE_PIPELINE_CREATE_INFO;
-
-typedef struct _GR_PIPELINE_IA_STATE
-{
- GR_ENUM topology; // GR_PRIMITIVE_TOPOLOGY
- GR_BOOL disableVertexReuse;
-} GR_PIPELINE_IA_STATE;
-
-typedef struct _GR_PIPELINE_TESS_STATE
-{
- GR_UINT patchControlPoints;
- GR_FLOAT optimalTessFactor;
-} GR_PIPELINE_TESS_STATE;
-
-typedef struct _GR_PIPELINE_RS_STATE
-{
- GR_BOOL depthClipEnable;
-} GR_PIPELINE_RS_STATE;
-
-typedef struct _GR_PIPELINE_CB_TARGET_STATE
-{
- GR_BOOL blendEnable;
- GR_FORMAT format;
- GR_UINT8 channelWriteMask;
-} GR_PIPELINE_CB_TARGET_STATE;
-
-typedef struct _GR_PIPELINE_CB_STATE
-{
- GR_BOOL alphaToCoverageEnable;
- GR_BOOL dualSourceBlendEnable;
- GR_ENUM logicOp; // GR_LOGIC_OP
- GR_PIPELINE_CB_TARGET_STATE target[GR_MAX_COLOR_TARGETS];
-} GR_PIPELINE_CB_STATE;
-
-typedef struct _GR_PIPELINE_DB_STATE
-{
- GR_FORMAT format;
-} GR_PIPELINE_DB_STATE;
-
-typedef struct _GR_GRAPHICS_PIPELINE_CREATE_INFO
-{
- GR_PIPELINE_SHADER vs;
- GR_PIPELINE_SHADER hs;
- GR_PIPELINE_SHADER ds;
- GR_PIPELINE_SHADER gs;
- GR_PIPELINE_SHADER ps;
- GR_PIPELINE_IA_STATE iaState;
- GR_PIPELINE_TESS_STATE tessState;
- GR_PIPELINE_RS_STATE rsState;
- GR_PIPELINE_CB_STATE cbState;
- GR_PIPELINE_DB_STATE dbState;
- GR_FLAGS flags; // GR_PIPELINE_CREATE_FLAGS
-} GR_GRAPHICS_PIPELINE_CREATE_INFO;
-
-typedef struct _GR_SAMPLER_CREATE_INFO
-{
- GR_ENUM filter; // GR_TEX_FILTER
- GR_ENUM addressU; // GR_TEX_ADDRESS
- GR_ENUM addressV; // GR_TEX_ADDRESS
- GR_ENUM addressW; // GR_TEX_ADDRESS
- GR_FLOAT mipLodBias;
- GR_UINT maxAnisotropy;
- GR_ENUM compareFunc; // GR_COMPARE_FUNC
- GR_FLOAT minLod;
- GR_FLOAT maxLod;
- GR_ENUM borderColor; // GR_BORDER_COLOR_TYPE
-} GR_SAMPLER_CREATE_INFO;
-
-typedef struct _GR_DESCRIPTOR_SET_CREATE_INFO
-{
- GR_UINT slots;
-} GR_DESCRIPTOR_SET_CREATE_INFO;
-
-typedef struct _GR_DESCRIPTOR_SET_ATTACH_INFO
-{
- GR_DESCRIPTOR_SET descriptorSet;
- GR_UINT slotOffset;
-} GR_DESCRIPTOR_SET_ATTACH_INFO;
-
-typedef struct _GR_VIEWPORT_STATE_CREATE_INFO
-{
- GR_UINT viewportCount;
- GR_BOOL scissorEnable;
- GR_VIEWPORT viewports[GR_MAX_VIEWPORTS];
- GR_RECT scissors[GR_MAX_VIEWPORTS];
-} GR_VIEWPORT_STATE_CREATE_INFO;
-
-typedef struct _GR_RASTER_STATE_CREATE_INFO
-{
- GR_ENUM fillMode; // GR_FILL_MODE
- GR_ENUM cullMode; // GR_CULL_MODE
- GR_ENUM frontFace; // GR_FACE_ORIENTATION
- GR_INT depthBias;
- GR_FLOAT depthBiasClamp;
- GR_FLOAT slopeScaledDepthBias;
-} GR_RASTER_STATE_CREATE_INFO;
-
-typedef struct _GR_MSAA_STATE_CREATE_INFO
-{
- GR_UINT samples;
- GR_SAMPLE_MASK sampleMask;
-} GR_MSAA_STATE_CREATE_INFO;
-
-typedef struct _GR_COLOR_TARGET_BLEND_STATE
-{
- GR_BOOL blendEnable;
- GR_ENUM srcBlendColor; // GR_BLEND
- GR_ENUM destBlendColor; // GR_BLEND
- GR_ENUM blendFuncColor; // GR_BLEND_FUNC
- GR_ENUM srcBlendAlpha; // GR_BLEND
- GR_ENUM destBlendAlpha; // GR_BLEND
- GR_ENUM blendFuncAlpha; // GR_BLEND_FUNC
-} GR_COLOR_TARGET_BLEND_STATE;
-
-typedef struct _GR_COLOR_BLEND_STATE_CREATE_INFO
-{
- GR_COLOR_TARGET_BLEND_STATE target[GR_MAX_COLOR_TARGETS];
- GR_FLOAT blendConst[4];
-} GR_COLOR_BLEND_STATE_CREATE_INFO;
-
-typedef struct _GR_DEPTH_STENCIL_OP
-{
- GR_ENUM stencilFailOp; // GR_STENCIL_OP
- GR_ENUM stencilPassOp; // GR_STENCIL_OP
- GR_ENUM stencilDepthFailOp; // GR_STENCIL_OP
- GR_ENUM stencilFunc; // GR_COMPARE_FUNC
- GR_UINT8 stencilRef;
-} GR_DEPTH_STENCIL_OP;
-
-typedef struct _GR_DEPTH_STENCIL_STATE_CREATE_INFO
-{
- GR_BOOL depthEnable;
- GR_BOOL depthWriteEnable;
- GR_ENUM depthFunc; // GR_COMPARE_FUNC
- GR_BOOL depthBoundsEnable;
- GR_FLOAT minDepth;
- GR_FLOAT maxDepth;
- GR_BOOL stencilEnable;
- GR_UINT8 stencilReadMask;
- GR_UINT8 stencilWriteMask;
- GR_DEPTH_STENCIL_OP front;
- GR_DEPTH_STENCIL_OP back;
-} GR_DEPTH_STENCIL_STATE_CREATE_INFO;
-
-typedef struct _GR_CMD_BUFFER_CREATE_INFO
-{
- GR_ENUM queueType; // GR_QUEUE_TYPE
- GR_FLAGS flags; // Reserved
-} GR_CMD_BUFFER_CREATE_INFO;
-
-typedef struct _GR_MEMORY_REF
-{
- GR_GPU_MEMORY mem;
- GR_FLAGS flags; // GR_MEMORY_REF_FLAGS
-} GR_MEMORY_REF;
-
-typedef struct _GR_EVENT_CREATE_INFO
-{
- GR_FLAGS flags; // Reserved
-} GR_EVENT_CREATE_INFO;
-
-typedef struct _GR_FENCE_CREATE_INFO
-{
- GR_FLAGS flags; // Reserved
-} GR_FENCE_CREATE_INFO;
-
-typedef struct _GR_QUEUE_SEMAPHORE_CREATE_INFO
-{
- GR_UINT initialCount;
- GR_FLAGS flags; // GR_SEMAPHORE_CREATE_FLAGS
-} GR_QUEUE_SEMAPHORE_CREATE_INFO;
-
-typedef struct _GR_QUEUE_SEMAPHORE_OPEN_INFO
-{
- GR_QUEUE_SEMAPHORE sharedSemaphore;
-} GR_QUEUE_SEMAPHORE_OPEN_INFO;
-
-typedef struct _GR_PIPELINE_STATISTICS_DATA
-{
- GR_UINT64 psInvocations; // Pixel shader invocations
- GR_UINT64 cPrimitives; // Clipper primitives
- GR_UINT64 cInvocations; // Clipper invocations
- GR_UINT64 vsInvocations; // Vertex shader invocations
- GR_UINT64 gsInvocations; // Geometry shader invocations
- GR_UINT64 gsPrimitives; // Geometry shader primitives
- GR_UINT64 iaPrimitives; // Input primitives
- GR_UINT64 iaVertices; // Input vertices
- GR_UINT64 hsInvocations; // Hull shader invocations
- GR_UINT64 dsInvocations; // Domain shader invocations
- GR_UINT64 csInvocations; // Compute shader invocations
-} GR_PIPELINE_STATISTICS_DATA;
-
-typedef struct _GR_QUERY_POOL_CREATE_INFO
-{
- GR_ENUM queryType; // GR_QUERY_TYPE
- GR_UINT slots;
-} GR_QUERY_POOL_CREATE_INFO;
-
-typedef struct _GR_DRAW_INDIRECT_ARG
-{
- GR_UINT32 vertexCount;
- GR_UINT32 instanceCount;
- GR_UINT32 firstVertex;
- GR_UINT32 firstInstance;
-} GR_DRAW_INDIRECT_ARG;
-
-typedef struct _GR_DRAW_INDEXED_INDIRECT_ARG
-{
- GR_UINT32 indexCount;
- GR_UINT32 instanceCount;
- GR_UINT32 firstIndex;
- GR_INT32 vertexOffset;
- GR_UINT32 firstInstance;
-} GR_DRAW_INDEXED_INDIRECT_ARG;
-
-typedef struct _GR_DISPATCH_INDIRECT_ARG
-{
- GR_UINT32 x;
- GR_UINT32 y;
- GR_UINT32 z;
-} GR_DISPATCH_INDIRECT_ARG;
-
-// ------------------------------------------------------------------------------------------------
-// API functions
-
-// GPU initialization
-
-GR_RESULT GR_STDCALL grInitAndEnumerateGpus(
- const GR_APPLICATION_INFO* pAppInfo,
- const GR_ALLOC_CALLBACKS* pAllocCb,
- GR_UINT* pGpuCount,
- GR_PHYSICAL_GPU gpus[GR_MAX_PHYSICAL_GPUS]);
-
-GR_RESULT GR_STDCALL grGetGpuInfo(
- GR_PHYSICAL_GPU gpu,
- GR_ENUM infoType, // GR_INFO_TYPE
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-// Device functions
-
-GR_RESULT GR_STDCALL grCreateDevice(
- GR_PHYSICAL_GPU gpu,
- const GR_DEVICE_CREATE_INFO* pCreateInfo,
- GR_DEVICE* pDevice);
-
-GR_RESULT GR_STDCALL grDestroyDevice(
- GR_DEVICE device);
-
-// Extension discovery functions
-
-GR_RESULT GR_STDCALL grGetExtensionSupport(
- GR_PHYSICAL_GPU gpu,
- const GR_CHAR* pExtName);
-
-// Queue functions
-
-GR_RESULT GR_STDCALL grGetDeviceQueue(
- GR_DEVICE device,
- GR_ENUM queueType, // GR_QUEUE_TYPE
- GR_UINT queueIndex,
- GR_QUEUE* pQueue);
-
-GR_RESULT GR_STDCALL grQueueSubmit(
- GR_QUEUE queue,
- GR_UINT cmdBufferCount,
- const GR_CMD_BUFFER* pCmdBuffers,
- GR_UINT memRefCount,
- const GR_MEMORY_REF* pMemRefs,
- GR_FENCE fence);
-
-GR_RESULT GR_STDCALL grQueueSetGlobalMemReferences(
- GR_QUEUE queue,
- GR_UINT memRefCount,
- const GR_MEMORY_REF* pMemRefs);
-
-GR_RESULT GR_STDCALL grQueueWaitIdle(
- GR_QUEUE queue);
-
-GR_RESULT GR_STDCALL grDeviceWaitIdle(
- GR_DEVICE device);
-
-// Memory functions
-
-GR_RESULT GR_STDCALL grGetMemoryHeapCount(
- GR_DEVICE device,
- GR_UINT* pCount);
-
-GR_RESULT GR_STDCALL grGetMemoryHeapInfo(
- GR_DEVICE device,
- GR_UINT heapId,
- GR_ENUM infoType, // GR_INFO_TYPE
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-GR_RESULT GR_STDCALL grAllocMemory(
- GR_DEVICE device,
- const GR_MEMORY_ALLOC_INFO* pAllocInfo,
- GR_GPU_MEMORY* pMem);
-
-GR_RESULT GR_STDCALL grFreeMemory(
- GR_GPU_MEMORY mem);
-
-GR_RESULT GR_STDCALL grSetMemoryPriority(
- GR_GPU_MEMORY mem,
- GR_ENUM priority); // GR_MEMORY_PRIORITY
-
-GR_RESULT GR_STDCALL grMapMemory(
- GR_GPU_MEMORY mem,
- GR_FLAGS flags, // Reserved
- GR_VOID** ppData);
-
-GR_RESULT GR_STDCALL grUnmapMemory(
- GR_GPU_MEMORY mem);
-
-GR_RESULT GR_STDCALL grPinSystemMemory(
- GR_DEVICE device,
- const GR_VOID* pSysMem,
- GR_SIZE memSize,
- GR_GPU_MEMORY* pMem);
-
-GR_RESULT GR_STDCALL grRemapVirtualMemoryPages(
- GR_DEVICE device,
- GR_UINT rangeCount,
- const GR_VIRTUAL_MEMORY_REMAP_RANGE* pRanges,
- GR_UINT preWaitSemaphoreCount,
- const GR_QUEUE_SEMAPHORE* pPreWaitSemaphores,
- GR_UINT postSignalSemaphoreCount,
- const GR_QUEUE_SEMAPHORE* pPostSignalSemaphores);
-
-// Multi-device functions
-
-GR_RESULT GR_STDCALL grGetMultiGpuCompatibility(
- GR_PHYSICAL_GPU gpu0,
- GR_PHYSICAL_GPU gpu1,
- GR_GPU_COMPATIBILITY_INFO* pInfo);
-
-GR_RESULT GR_STDCALL grOpenSharedMemory(
- GR_DEVICE device,
- const GR_MEMORY_OPEN_INFO* pOpenInfo,
- GR_GPU_MEMORY* pMem);
-
-GR_RESULT GR_STDCALL grOpenSharedQueueSemaphore(
- GR_DEVICE device,
- const GR_QUEUE_SEMAPHORE_OPEN_INFO* pOpenInfo,
- GR_QUEUE_SEMAPHORE* pSemaphore);
-
-GR_RESULT GR_STDCALL grOpenPeerMemory(
- GR_DEVICE device,
- const GR_PEER_MEMORY_OPEN_INFO* pOpenInfo,
- GR_GPU_MEMORY* pMem);
-
-GR_RESULT GR_STDCALL grOpenPeerImage(
- GR_DEVICE device,
- const GR_PEER_IMAGE_OPEN_INFO* pOpenInfo,
- GR_IMAGE* pImage,
- GR_GPU_MEMORY* pMem);
-
-// Generic API object functions
-
-GR_RESULT GR_STDCALL grDestroyObject(
- GR_OBJECT object);
-
-GR_RESULT GR_STDCALL grGetObjectInfo(
- GR_BASE_OBJECT object,
- GR_ENUM infoType, // GR_INFO_TYPE
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-GR_RESULT GR_STDCALL grBindObjectMemory(
- GR_OBJECT object,
- GR_GPU_MEMORY mem,
- GR_GPU_SIZE offset);
-
-// Fence functions
-
-GR_RESULT GR_STDCALL grCreateFence(
- GR_DEVICE device,
- const GR_FENCE_CREATE_INFO* pCreateInfo,
- GR_FENCE* pFence);
-
-GR_RESULT GR_STDCALL grGetFenceStatus(
- GR_FENCE fence);
-
-GR_RESULT GR_STDCALL grWaitForFences(
- GR_DEVICE device,
- GR_UINT fenceCount,
- const GR_FENCE* pFences,
- GR_BOOL waitAll,
- GR_FLOAT timeout);
-
-// Queue semaphore functions
-
-GR_RESULT GR_STDCALL grCreateQueueSemaphore(
- GR_DEVICE device,
- const GR_QUEUE_SEMAPHORE_CREATE_INFO* pCreateInfo,
- GR_QUEUE_SEMAPHORE* pSemaphore);
-
-GR_RESULT GR_STDCALL grSignalQueueSemaphore(
- GR_QUEUE queue,
- GR_QUEUE_SEMAPHORE semaphore);
-
-GR_RESULT GR_STDCALL grWaitQueueSemaphore(
- GR_QUEUE queue,
- GR_QUEUE_SEMAPHORE semaphore);
-
-// Event functions
-
-GR_RESULT GR_STDCALL grCreateEvent(
- GR_DEVICE device,
- const GR_EVENT_CREATE_INFO* pCreateInfo,
- GR_EVENT* pEvent);
-
-GR_RESULT GR_STDCALL grGetEventStatus(
- GR_EVENT event);
-
-GR_RESULT GR_STDCALL grSetEvent(
- GR_EVENT event);
-
-GR_RESULT GR_STDCALL grResetEvent(
- GR_EVENT event);
-
-// Query functions
-
-GR_RESULT GR_STDCALL grCreateQueryPool(
- GR_DEVICE device,
- const GR_QUERY_POOL_CREATE_INFO* pCreateInfo,
- GR_QUERY_POOL* pQueryPool);
-
-GR_RESULT GR_STDCALL grGetQueryPoolResults(
- GR_QUERY_POOL queryPool,
- GR_UINT startQuery,
- GR_UINT queryCount,
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-// Format capabilities
-
-GR_RESULT GR_STDCALL grGetFormatInfo(
- GR_DEVICE device,
- GR_FORMAT format,
- GR_ENUM infoType, // GR_INFO_TYPE
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-// Image functions
-
-GR_RESULT GR_STDCALL grCreateImage(
- GR_DEVICE device,
- const GR_IMAGE_CREATE_INFO* pCreateInfo,
- GR_IMAGE* pImage);
-
-GR_RESULT GR_STDCALL grGetImageSubresourceInfo(
- GR_IMAGE image,
- const GR_IMAGE_SUBRESOURCE* pSubresource,
- GR_ENUM infoType, // GR_INFO_TYPE
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-// Image view functions
-
-GR_RESULT GR_STDCALL grCreateImageView(
- GR_DEVICE device,
- const GR_IMAGE_VIEW_CREATE_INFO* pCreateInfo,
- GR_IMAGE_VIEW* pView);
-
-GR_RESULT GR_STDCALL grCreateColorTargetView(
- GR_DEVICE device,
- const GR_COLOR_TARGET_VIEW_CREATE_INFO* pCreateInfo,
- GR_COLOR_TARGET_VIEW* pView);
-
-GR_RESULT GR_STDCALL grCreateDepthStencilView(
- GR_DEVICE device,
- const GR_DEPTH_STENCIL_VIEW_CREATE_INFO* pCreateInfo,
- GR_DEPTH_STENCIL_VIEW* pView);
-
-// Shader functions
-
-GR_RESULT GR_STDCALL grCreateShader(
- GR_DEVICE device,
- const GR_SHADER_CREATE_INFO* pCreateInfo,
- GR_SHADER* pShader);
-
-// Pipeline functions
-
-GR_RESULT GR_STDCALL grCreateGraphicsPipeline(
- GR_DEVICE device,
- const GR_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo,
- GR_PIPELINE* pPipeline);
-
-GR_RESULT GR_STDCALL grCreateComputePipeline(
- GR_DEVICE device,
- const GR_COMPUTE_PIPELINE_CREATE_INFO* pCreateInfo,
- GR_PIPELINE* pPipeline);
-
-GR_RESULT GR_STDCALL grStorePipeline(
- GR_PIPELINE pipeline,
- GR_SIZE* pDataSize,
- GR_VOID* pData);
-
-GR_RESULT GR_STDCALL grLoadPipeline(
- GR_DEVICE device,
- GR_SIZE dataSize,
- const GR_VOID* pData,
- GR_PIPELINE* pPipeline);
-
-// Sampler functions
-
-GR_RESULT GR_STDCALL grCreateSampler(
- GR_DEVICE device,
- const GR_SAMPLER_CREATE_INFO* pCreateInfo,
- GR_SAMPLER* pSampler);
-
-// Descriptor set functions
-
-GR_RESULT GR_STDCALL grCreateDescriptorSet(
- GR_DEVICE device,
- const GR_DESCRIPTOR_SET_CREATE_INFO* pCreateInfo,
- GR_DESCRIPTOR_SET* pDescriptorSet);
-
-GR_VOID GR_STDCALL grBeginDescriptorSetUpdate(
- GR_DESCRIPTOR_SET descriptorSet);
-
-GR_VOID GR_STDCALL grEndDescriptorSetUpdate(
- GR_DESCRIPTOR_SET descriptorSet);
-
-GR_VOID GR_STDCALL grAttachSamplerDescriptors(
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT startSlot,
- GR_UINT slotCount,
- const GR_SAMPLER* pSamplers);
-
-GR_VOID GR_STDCALL grAttachImageViewDescriptors(
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT startSlot,
- GR_UINT slotCount,
- const GR_IMAGE_VIEW_ATTACH_INFO* pImageViews);
-
-GR_VOID GR_STDCALL grAttachMemoryViewDescriptors(
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT startSlot,
- GR_UINT slotCount,
- const GR_MEMORY_VIEW_ATTACH_INFO* pMemViews);
-
-GR_VOID GR_STDCALL grAttachNestedDescriptors(
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT startSlot,
- GR_UINT slotCount,
- const GR_DESCRIPTOR_SET_ATTACH_INFO* pNestedDescriptorSets);
-
-GR_VOID GR_STDCALL grClearDescriptorSetSlots(
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT startSlot,
- GR_UINT slotCount);
-
-// State object functions
-
-GR_RESULT GR_STDCALL grCreateViewportState(
- GR_DEVICE device,
- const GR_VIEWPORT_STATE_CREATE_INFO* pCreateInfo,
- GR_VIEWPORT_STATE_OBJECT* pState);
-
-GR_RESULT GR_STDCALL grCreateRasterState(
- GR_DEVICE device,
- const GR_RASTER_STATE_CREATE_INFO* pCreateInfo,
- GR_RASTER_STATE_OBJECT* pState);
-
-GR_RESULT GR_STDCALL grCreateMsaaState(
- GR_DEVICE device,
- const GR_MSAA_STATE_CREATE_INFO* pCreateInfo,
- GR_MSAA_STATE_OBJECT* pState);
-
-GR_RESULT GR_STDCALL grCreateColorBlendState(
- GR_DEVICE device,
- const GR_COLOR_BLEND_STATE_CREATE_INFO* pCreateInfo,
- GR_COLOR_BLEND_STATE_OBJECT* pState);
-
-GR_RESULT GR_STDCALL grCreateDepthStencilState(
- GR_DEVICE device,
- const GR_DEPTH_STENCIL_STATE_CREATE_INFO* pCreateInfo,
- GR_DEPTH_STENCIL_STATE_OBJECT* pState);
-
-// Command buffer functions
-
-GR_RESULT GR_STDCALL grCreateCommandBuffer(
- GR_DEVICE device,
- const GR_CMD_BUFFER_CREATE_INFO* pCreateInfo,
- GR_CMD_BUFFER* pCmdBuffer);
-
-GR_RESULT GR_STDCALL grBeginCommandBuffer(
- GR_CMD_BUFFER cmdBuffer,
- GR_FLAGS flags); // GR_CMD_BUFFER_BUILD_FLAGS
-
-GR_RESULT GR_STDCALL grEndCommandBuffer(
- GR_CMD_BUFFER cmdBuffer);
-
-GR_RESULT GR_STDCALL grResetCommandBuffer(
- GR_CMD_BUFFER cmdBuffer);
-
-// Command buffer building functions
-
-GR_VOID GR_STDCALL grCmdBindPipeline(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- GR_PIPELINE pipeline);
-
-GR_VOID GR_STDCALL grCmdBindStateObject(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM stateBindPoint, // GR_STATE_BIND_POINT
- GR_STATE_OBJECT state);
-
-GR_VOID GR_STDCALL grCmdBindDescriptorSet(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- GR_UINT index,
- GR_DESCRIPTOR_SET descriptorSet,
- GR_UINT slotOffset);
-
-GR_VOID GR_STDCALL grCmdBindDynamicMemoryView(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- const GR_MEMORY_VIEW_ATTACH_INFO* pMemView);
-
-GR_VOID GR_STDCALL grCmdBindIndexData(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY mem,
- GR_GPU_SIZE offset,
- GR_ENUM indexType); // GR_INDEX_TYPE
-
-GR_VOID GR_STDCALL grCmdBindTargets(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT colorTargetCount,
- const GR_COLOR_TARGET_BIND_INFO* pColorTargets,
- const GR_DEPTH_STENCIL_BIND_INFO* pDepthTarget);
-
-GR_VOID GR_STDCALL grCmdPrepareMemoryRegions(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT transitionCount,
- const GR_MEMORY_STATE_TRANSITION* pStateTransitions);
-
-GR_VOID GR_STDCALL grCmdPrepareImages(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT transitionCount,
- const GR_IMAGE_STATE_TRANSITION* pStateTransitions);
-
-GR_VOID GR_STDCALL grCmdDraw(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT firstVertex,
- GR_UINT vertexCount,
- GR_UINT firstInstance,
- GR_UINT instanceCount);
-
-GR_VOID GR_STDCALL grCmdDrawIndexed(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT firstIndex,
- GR_UINT indexCount,
- GR_INT vertexOffset,
- GR_UINT firstInstance,
- GR_UINT instanceCount);
-
-GR_VOID GR_STDCALL grCmdDrawIndirect(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY mem,
- GR_GPU_SIZE offset);
-
-GR_VOID GR_STDCALL grCmdDrawIndexedIndirect(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY mem,
- GR_GPU_SIZE offset);
-
-GR_VOID GR_STDCALL grCmdDispatch(
- GR_CMD_BUFFER cmdBuffer,
- GR_UINT x,
- GR_UINT y,
- GR_UINT z);
-
-GR_VOID GR_STDCALL grCmdDispatchIndirect(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY mem,
- GR_GPU_SIZE offset);
-
-GR_VOID GR_STDCALL grCmdCopyMemory(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY srcMem,
- GR_GPU_MEMORY destMem,
- GR_UINT regionCount,
- const GR_MEMORY_COPY* pRegions);
-
-GR_VOID GR_STDCALL grCmdCopyImage(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE srcImage,
- GR_IMAGE destImage,
- GR_UINT regionCount,
- const GR_IMAGE_COPY* pRegions);
-
-GR_VOID GR_STDCALL grCmdCopyMemoryToImage(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY srcMem,
- GR_IMAGE destImage,
- GR_UINT regionCount,
- const GR_MEMORY_IMAGE_COPY* pRegions);
-
-GR_VOID GR_STDCALL grCmdCopyImageToMemory(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE srcImage,
- GR_GPU_MEMORY destMem,
- GR_UINT regionCount,
- const GR_MEMORY_IMAGE_COPY* pRegions);
-
-GR_VOID GR_STDCALL grCmdCloneImageData(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE srcImage,
- GR_ENUM srcImageState, // GR_IMAGE_STATE
- GR_IMAGE destImage,
- GR_ENUM destImageState); // GR_IMAGE_STATE
-
-GR_VOID GR_STDCALL grCmdUpdateMemory(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY destMem,
- GR_GPU_SIZE destOffset,
- GR_GPU_SIZE dataSize,
- const GR_UINT32* pData);
-
-GR_VOID GR_STDCALL grCmdFillMemory(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY destMem,
- GR_GPU_SIZE destOffset,
- GR_GPU_SIZE fillSize,
- GR_UINT32 data);
-
-GR_VOID GR_STDCALL grCmdClearColorImage(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE image,
- const GR_FLOAT color[4],
- GR_UINT rangeCount,
- const GR_IMAGE_SUBRESOURCE_RANGE* pRanges);
-
-GR_VOID GR_STDCALL grCmdClearColorImageRaw(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE image,
- const GR_UINT32 color[4],
- GR_UINT rangeCount,
- const GR_IMAGE_SUBRESOURCE_RANGE* pRanges);
-
-GR_VOID GR_STDCALL grCmdClearDepthStencil(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE image,
- GR_FLOAT depth,
- GR_UINT8 stencil,
- GR_UINT rangeCount,
- const GR_IMAGE_SUBRESOURCE_RANGE* pRanges);
-
-GR_VOID GR_STDCALL grCmdResolveImage(
- GR_CMD_BUFFER cmdBuffer,
- GR_IMAGE srcImage,
- GR_IMAGE destImage,
- GR_UINT rectCount,
- const GR_IMAGE_RESOLVE* pRects);
-
-GR_VOID GR_STDCALL grCmdSetEvent(
- GR_CMD_BUFFER cmdBuffer,
- GR_EVENT event);
-
-GR_VOID GR_STDCALL grCmdResetEvent(
- GR_CMD_BUFFER cmdBuffer,
- GR_EVENT event);
-
-GR_VOID GR_STDCALL grCmdMemoryAtomic(
- GR_CMD_BUFFER cmdBuffer,
- GR_GPU_MEMORY destMem,
- GR_GPU_SIZE destOffset,
- GR_UINT64 srcData,
- GR_ENUM atomicOp); // GR_ATOMIC_OP
-
-GR_VOID GR_STDCALL grCmdBeginQuery(
- GR_CMD_BUFFER cmdBuffer,
- GR_QUERY_POOL queryPool,
- GR_UINT slot,
- GR_FLAGS flags); // GR_QUERY_CONTROL_FLAGS
-
-GR_VOID GR_STDCALL grCmdEndQuery(
- GR_CMD_BUFFER cmdBuffer,
- GR_QUERY_POOL queryPool,
- GR_UINT slot);
-
-GR_VOID GR_STDCALL grCmdResetQueryPool(
- GR_CMD_BUFFER cmdBuffer,
- GR_QUERY_POOL queryPool,
- GR_UINT startQuery,
- GR_UINT queryCount);
-
-GR_VOID GR_STDCALL grCmdWriteTimestamp(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM timestampType, // GR_TIMESTAMP_TYPE
- GR_GPU_MEMORY destMem,
- GR_GPU_SIZE destOffset);
-
-GR_VOID GR_STDCALL grCmdInitAtomicCounters(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter,
- GR_UINT counterCount,
- const GR_UINT32* pData);
-
-GR_VOID GR_STDCALL grCmdLoadAtomicCounters(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter,
- GR_UINT counterCount,
- GR_GPU_MEMORY srcMem,
- GR_GPU_SIZE srcOffset);
-
-GR_VOID GR_STDCALL grCmdSaveAtomicCounters(
- GR_CMD_BUFFER cmdBuffer,
- GR_ENUM pipelineBindPoint, // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter,
- GR_UINT counterCount,
- GR_GPU_MEMORY destMem,
- GR_GPU_SIZE destOffset);
-
-#ifdef __cplusplus
-}; // extern "C"
-#endif // __cplusplus
-
-#endif // __MANTLE_H__
+++ /dev/null
-//
-// File: mantleDbg.h
-//
-// Copyright 2014 ADVANCED MICRO DEVICES, INC. All Rights Reserved.
-//
-// AMD is granting you permission to use this software for reference
-// purposes only and not for use in any software product.
-//
-// You agree that you will not reverse engineer or decompile the Materials,
-// in whole or in part, except as allowed by applicable law.
-//
-// WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF
-// ANY KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY,
-// INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE
-// WILL RUN UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF
-// TRADE OR COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE
-// SOFTWARE IS ASSUMED BY YOU.
-// Some jurisdictions do not allow the exclusion of implied warranties, so
-// the above exclusion may not apply to You.
-//
-// LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL
-// NOT, UNDER ANY CIRCUMSTANCES BE LIABLE TO YOU FOR ANY PUNITIVE, DIRECT,
-// INCIDENTAL, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF
-// THE SOFTWARE OR THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-// In no event shall AMD's total liability to You for all damages, losses,
-// and causes of action (whether in contract, tort (including negligence) or
-// otherwise) exceed the amount of $100 USD. You agree to defend, indemnify
-// and hold harmless AMD and its licensors, and any of their directors,
-// officers, employees, affiliates or agents from and against any and all
-// loss, damage, liability and other expenses (including reasonable attorneys'
-// fees), resulting from Your use of the Software or violation of the terms and
-// conditions of this Agreement.
-//
-// U.S. GOVERNMENT RESTRICTED RIGHTS: The Materials are provided with "RESTRICTED
-// RIGHTS." Use, duplication, or disclosure by the Government is subject to the
-// restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
-// its successor. Use of the Materials by the Government constitutes
-// acknowledgement of AMD's proprietary rights in them.
-//
-// EXPORT RESTRICTIONS: The Materials may be subject to export restrictions as
-// stated in the Software License Agreement.
-//
-
-#ifndef __MANTLEDBG_H__
-#define __MANTLEDBG_H__
-
-#include "mantle.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif // __cplusplus
-
-/*
-***************************************************************************************************
-* Mantle debug and validation features
-***************************************************************************************************
-*/
-
-typedef enum _GR_DBG_MSG_TYPE
-{
- GR_DBG_MSG_UNKNOWN = 0x00020000,
- GR_DBG_MSG_ERROR = 0x00020001,
- GR_DBG_MSG_WARNING = 0x00020002,
- GR_DBG_MSG_PERF_WARNING = 0x00020003,
-
- GR_DBG_MSG_TYPE_BEGIN_RANGE = GR_DBG_MSG_UNKNOWN,
- GR_DBG_MSG_TYPE_END_RANGE = GR_DBG_MSG_PERF_WARNING,
- GR_NUM_DBG_MSG_TYPE = (GR_DBG_MSG_TYPE_END_RANGE - GR_DBG_MSG_TYPE_BEGIN_RANGE + 1),
-} GR_DBG_MSG_TYPE;
-
-typedef enum _GR_DBG_GLOBAL_OPTION
-{
- GR_DBG_OPTION_DEBUG_ECHO_ENABLE = 0x00020100,
- GR_DBG_OPTION_BREAK_ON_ERROR = 0x00020101,
- GR_DBG_OPTION_BREAK_ON_WARNING = 0x00020102,
-
- GR_DBG_GLOBAL_OPTION_BEGIN_RANGE = GR_DBG_OPTION_DEBUG_ECHO_ENABLE,
- GR_DBG_GLOBAL_OPTION_END_RANGE = GR_DBG_OPTION_BREAK_ON_WARNING,
- GR_NUM_DBG_GLOBAL_OPTION = (GR_DBG_GLOBAL_OPTION_END_RANGE - GR_DBG_GLOBAL_OPTION_BEGIN_RANGE + 1),
-} GR_DBG_GLOBAL_OPTION;
-
-typedef enum _GR_DBG_DEVICE_OPTION
-{
- GR_DBG_OPTION_DISABLE_PIPELINE_LOADS = 0x00020400,
- GR_DBG_OPTION_FORCE_OBJECT_MEMORY_REQS = 0x00020401,
- GR_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT = 0x00020402,
-
- GR_DBG_DEVICE_OPTION_BEGIN_RANGE = GR_DBG_OPTION_DISABLE_PIPELINE_LOADS,
- GR_DBG_DEVICE_OPTION_END_RANGE = GR_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT,
- GR_NUM_DBG_DEVICE_OPTION = (GR_DBG_DEVICE_OPTION_END_RANGE - GR_DBG_DEVICE_OPTION_BEGIN_RANGE + 1),
-} GR_DBG_DEVICE_OPTION;
-
-typedef enum _GR_DBG_MSG_FILTER
-{
- GR_DBG_MSG_FILTER_NONE = 0x00020800,
- GR_DBG_MSG_FILTER_REPEATED = 0x00020801,
- GR_DBG_MSG_FILTER_ALL = 0x00020802,
-
- GR_DBG_MSG_FILTER_BEGIN_RANGE = GR_DBG_MSG_FILTER_NONE,
- GR_DBG_MSG_FILTER_END_RANGE = GR_DBG_MSG_FILTER_ALL,
- GR_NUM_DBG_MSG_FILTER = (GR_DBG_MSG_FILTER_END_RANGE - GR_DBG_MSG_FILTER_BEGIN_RANGE + 1),
-} GR_DBG_MSG_FILTER;
-
-typedef enum _GR_DBG_DATA_TYPE
-{
- // Common object debug data
- GR_DBG_DATA_OBJECT_TYPE = 0x00020a00,
- GR_DBG_DATA_OBJECT_CREATE_INFO = 0x00020a01,
- GR_DBG_DATA_OBJECT_TAG = 0x00020a02,
- // Command buffer specific debug data
- GR_DBG_DATA_CMD_BUFFER_API_TRACE = 0x00020b00,
- // Memory object specific debug data
- GR_DBG_DATA_MEMORY_OBJECT_LAYOUT = 0x00020c00,
- GR_DBG_DATA_MEMORY_OBJECT_STATE = 0x00020c01,
-} GR_DBG_DATA_TYPE;
-
-typedef enum _GR_DBG_OBJECT_TYPE
-{
- GR_DBG_OBJECT_UNKNOWN = 0x00020900,
- GR_DBG_OBJECT_DEVICE = 0x00020901,
- GR_DBG_OBJECT_QUEUE = 0x00020902,
- GR_DBG_OBJECT_GPU_MEMORY = 0x00020903,
- GR_DBG_OBJECT_IMAGE = 0x00020904,
- GR_DBG_OBJECT_IMAGE_VIEW = 0x00020905,
- GR_DBG_OBJECT_COLOR_TARGET_VIEW = 0x00020906,
- GR_DBG_OBJECT_DEPTH_STENCIL_VIEW = 0x00020907,
- GR_DBG_OBJECT_SHADER = 0x00020908,
- GR_DBG_OBJECT_GRAPHICS_PIPELINE = 0x00020909,
- GR_DBG_OBJECT_COMPUTE_PIPELINE = 0x0002090a,
- GR_DBG_OBJECT_SAMPLER = 0x0002090b,
- GR_DBG_OBJECT_DESCRIPTOR_SET = 0x0002090c,
- GR_DBG_OBJECT_VIEWPORT_STATE = 0x0002090d,
- GR_DBG_OBJECT_RASTER_STATE = 0x0002090e,
- GR_DBG_OBJECT_MSAA_STATE = 0x0002090f,
- GR_DBG_OBJECT_COLOR_BLEND_STATE = 0x00020910,
- GR_DBG_OBJECT_DEPTH_STENCIL_STATE = 0x00020911,
- GR_DBG_OBJECT_CMD_BUFFER = 0x00020912,
- GR_DBG_OBJECT_FENCE = 0x00020913,
- GR_DBG_OBJECT_QUEUE_SEMAPHORE = 0x00020914,
- GR_DBG_OBJECT_EVENT = 0x00020915,
- GR_DBG_OBJECT_QUERY_POOL = 0x00020916,
- GR_DBG_OBJECT_SHARED_GPU_MEMORY = 0x00020917,
- GR_DBG_OBJECT_SHARED_QUEUE_SEMAPHORE = 0x00020918,
- GR_DBG_OBJECT_PEER_GPU_MEMORY = 0x00020919,
- GR_DBG_OBJECT_PEER_IMAGE = 0x0002091a,
- GR_DBG_OBJECT_PINNED_GPU_MEMORY = 0x0002091b,
- GR_DBG_OBJECT_INTERNAL_GPU_MEMORY = 0x0002091c,
-
- GR_DBG_OBJECT_TYPE_BEGIN_RANGE = GR_DBG_OBJECT_UNKNOWN,
- GR_DBG_OBJECT_TYPE_END_RANGE = GR_DBG_OBJECT_INTERNAL_GPU_MEMORY,
- GR_NUM_DBG_OBJECT_TYPE = (GR_DBG_OBJECT_TYPE_END_RANGE - GR_DBG_OBJECT_TYPE_BEGIN_RANGE + 1),
-} GR_DBG_OBJECT_TYPE;
-
-// ------------------------------------------------------------------------------------------------
-// Memory object layout reflection
-
-typedef struct _GR_DBG_MEMORY_OBJECT_LAYOUT_REGION
-{
- GR_GPU_SIZE offset;
- GR_GPU_SIZE regionSize;
- GR_OBJECT boundObject;
-} GR_DBG_MEMORY_OBJECT_LAYOUT_REGION;
-
-typedef struct _GR_DBG_MEMORY_OBJECT_LAYOUT
-{
- GR_UINT regionCount;
- GR_DBG_MEMORY_OBJECT_LAYOUT_REGION regions[1];
- // (regionCount-1) more GR_DBG_MEMORY_OBJECT_LAYOUT_REGION structures to follow...
-} GR_DBG_MEMORY_OBJECT_LAYOUT;
-
-typedef struct _GR_DBG_MEMORY_OBJECT_STATE_REGION
-{
- GR_GPU_SIZE offset;
- GR_GPU_SIZE regionSize;
- GR_ENUM state; // GR_MEMORY_STATE
-} GR_DBG_MEMORY_OBJECT_STATE_REGION;
-
-typedef struct _GR_DBG_MEMORY_OBJECT_STATE
-{
- GR_UINT regionCount;
- GR_DBG_MEMORY_OBJECT_STATE_REGION regions[1];
- // (regionCount-1) more GR_DBG_MEMORY_OBJECT_STATE_REGION structures to follow...
-} GR_DBG_MEMORY_OBJECT_STATE;
-
-// ------------------------------------------------------------------------------------------------
-// Command buffer packet reflection
-
-// Command buffer packet opcodes
-typedef enum _GR_DBG_CMD_BUFFER_OPCODE
-{
- GR_DBG_OP_CMD_BUFFER_END = 0x00028000,
- GR_DBG_OP_CMD_BIND_PIPELINE = 0x00028001,
- GR_DBG_OP_CMD_BIND_STATE_OBJECT = 0x00028002,
- GR_DBG_OP_CMD_BIND_DESCRIPTOR_SET = 0x00028003,
- GR_DBG_OP_CMD_BIND_DYNAMIC_MEMORY_VIEW = 0x00028004,
- GR_DBG_OP_CMD_BIND_INDEX_DATA = 0x00028005,
- GR_DBG_OP_CMD_BIND_TARGETS = 0x00028006,
- GR_DBG_OP_CMD_PREPARE_MEMORY_REGIONS = 0x00028007,
- GR_DBG_OP_CMD_PREPARE_IMAGES = 0x00028008,
- GR_DBG_OP_CMD_DRAW = 0x00028009,
- GR_DBG_OP_CMD_DRAW_INDEXED = 0x0002800a,
- GR_DBG_OP_CMD_DRAW_INDIRECT = 0x0002800b,
- GR_DBG_OP_CMD_DRAW_INDEXED_INDIRECT = 0x0002800c,
- GR_DBG_OP_CMD_DISPATCH = 0x0002800d,
- GR_DBG_OP_CMD_DISPATCH_INDIRECT = 0x0002800e,
- GR_DBG_OP_CMD_COPY_MEMORY = 0x0002800f,
- GR_DBG_OP_CMD_COPY_IMAGE = 0x00028010,
- GR_DBG_OP_CMD_COPY_MEMORY_TO_IMAGE = 0x00028011,
- GR_DBG_OP_CMD_COPY_IMAGE_TO_MEMORY = 0x00028012,
- GR_DBG_OP_CMD_CLONE_IMAGE_DATA = 0x00028013,
- GR_DBG_OP_CMD_FILL_MEMORY = 0x00028014,
- GR_DBG_OP_CMD_UPDATE_MEMORY = 0x00028015,
- GR_DBG_OP_CMD_CLEAR_COLOR_IMAGE = 0x00028016,
- GR_DBG_OP_CMD_CLEAR_COLOR_IMAGE_RAW = 0x00028017,
- GR_DBG_OP_CMD_CLEAR_DEPTH_STENCIL = 0x00028018,
- GR_DBG_OP_CMD_RESOLVE_IMAGE = 0x00028019,
- GR_DBG_OP_CMD_SET_EVENT = 0x0002801a,
- GR_DBG_OP_CMD_RESET_EVENT = 0x0002801b,
- GR_DBG_OP_CMD_MEMORY_ATOMIC = 0x0002801c,
- GR_DBG_OP_CMD_BEGIN_QUERY = 0x0002801d,
- GR_DBG_OP_CMD_END_QUERY = 0x0002801e,
- GR_DBG_OP_CMD_RESET_QUERY_POOL = 0x0002801f,
- GR_DBG_OP_CMD_WRITE_TIMESTAMP = 0x00028020,
- GR_DBG_OP_CMD_INIT_ATOMIC_COUNTERS = 0x00028021,
- GR_DBG_OP_CMD_LOAD_ATOMIC_COUNTERS = 0x00028022,
- GR_DBG_OP_CMD_SAVE_ATOMIC_COUNTERS = 0x00028023,
- GR_DBG_OP_CMD_DBG_MARKER_BEGIN = 0x00028024,
- GR_DBG_OP_CMD_DBG_MARKER_END = 0x00028025,
-
- GR_DBG_CMD_BUFFER_OPCODE_BEGIN_RANGE = GR_DBG_OP_CMD_BUFFER_END,
- GR_DBG_CMD_BUFFER_OPCODE_END_RANGE = GR_DBG_OP_CMD_DBG_MARKER_END,
- GR_NUM_DBG_CMD_BUFFER_OPCODE = (GR_DBG_CMD_BUFFER_OPCODE_END_RANGE - GR_DBG_CMD_BUFFER_OPCODE_BEGIN_RANGE + 1),
-} GR_DBG_CMD_BUFFER_OPCODE;
-
-// Command buffer packet header
-typedef struct _GR_DBG_OP_HEADER
-{
- GR_UINT recordSize;
- GR_ENUM opCode; // GR_DBG_CMD_BUFFER_OPCODE
- // Op-specific variable size data follows...
-} GR_DBG_OP_HEADER;
-
-// Memory binding reference for image objects at the time of command buffer recording
-typedef struct _GR_DBG_BOUND_MEMORY_REF
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
-} GR_DBG_BOUND_MEMORY_REF;
-
-typedef struct _GR_DBG_OBJECT_REF
-{
- GR_OBJECT object;
- GR_DBG_BOUND_MEMORY_REF memoryRef;
-} GR_DBG_OBJECT_REF;
-
-typedef struct _GR_DBG_VIEW_REF
-{
- GR_DBG_OBJECT_REF view;
- // Memory reference for image of the color target view
- GR_DBG_BOUND_MEMORY_REF imageMemoryRef;
-} GR_DBG_VIEW_REF;
-
-// Command buffer payload packets
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_PIPELINE
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_DBG_OBJECT_REF pipeline;
-} GR_DBG_OP_DATA_CMD_BIND_PIPELINE;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_STATE_OBJECT
-{
- GR_ENUM stateBindPoint; // GR_STATE_BIND_POINT
- GR_DBG_OBJECT_REF state;
-} GR_DBG_OP_DATA_CMD_BIND_STATE_OBJECT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_DESCRIPTOR_SET
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_UINT index;
- GR_DBG_OBJECT_REF descriptorSet;
- GR_UINT slotOffset;
-} GR_DBG_OP_DATA_CMD_BIND_DESCRIPTOR_SET;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_DYNAMIC_MEMORY_VIEW
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_MEMORY_VIEW_ATTACH_INFO view;
-} GR_DBG_OP_DATA_CMD_BIND_DYNAMIC_MEMORY_VIEW;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_INDEX_DATA
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
- GR_ENUM indexType; // GR_INDEX_TYPE
-} GR_DBG_OP_DATA_CMD_BIND_INDEX_DATA;
-
-typedef struct _GR_DBG_COLOR_TARGET_BIND_INFO
-{
- GR_DBG_VIEW_REF view;
- GR_ENUM colorTargetState; // GR_IMAGE_STATE
-} GR_DBG_COLOR_TARGET_BIND_INFO;
-
-typedef struct _GR_DBG_DEPTH_STENCIL_BIND_INFO
-{
- GR_DBG_VIEW_REF view;
- GR_ENUM depthState; // GR_IMAGE_STATE
- GR_ENUM stencilState; // GR_IMAGE_STATE
-} GR_DBG_DEPTH_STENCIL_BIND_INFO;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BIND_TARGETS
-{
- GR_UINT colorTargetCount;
- GR_DBG_COLOR_TARGET_BIND_INFO colorTargetData[GR_MAX_COLOR_TARGETS];
- GR_DBG_DEPTH_STENCIL_BIND_INFO depthTargetData;
-} GR_DBG_OP_DATA_CMD_BIND_TARGETS;
-
-typedef struct _GR_DBG_OP_DATA_CMD_PREPARE_MEMORY_REGIONS
-{
- GR_UINT transitionCount;
- GR_MEMORY_STATE_TRANSITION stateTransitions[1];
- // (transitionCount-1) more GR_MEMORY_STATE_TRANSITION structures to follow...
-} GR_DBG_OP_DATA_CMD_PREPARE_MEMORY_REGIONS;
-
-typedef struct _GR_DBG_IMAGE_STATE_TRANSITION
-{
- GR_DBG_OBJECT_REF image;
- GR_ENUM oldState; // GR_IMAGE_STATE
- GR_ENUM newState; // GR_IMAGE_STATE
- GR_IMAGE_SUBRESOURCE_RANGE subresourceRange;
-} GR_DBG_IMAGE_STATE_TRANSITION;
-
-typedef struct _GR_DBG_OP_DATA_CMD_PREPARE_IMAGES
-{
- GR_UINT transitionCount;
- GR_DBG_IMAGE_STATE_TRANSITION stateTransitions[1];
- // (transitionCount-1) more GR_DBG_IMAGE_STATE_TRANSITION_DATA structures to follow...
-} GR_DBG_OP_DATA_CMD_PREPARE_IMAGES;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DRAW
-{
- GR_UINT firstVertex;
- GR_UINT vertexCount;
- GR_UINT firstInstance;
- GR_UINT instanceCount;
-} GR_DBG_OP_DATA_CMD_DRAW;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DRAW_INDEXED
-{
- GR_UINT firstIndex;
- GR_UINT indexCount;
- GR_INT vertexOffset;
- GR_UINT firstInstance;
- GR_UINT instanceCount;
-} GR_DBG_OP_DATA_CMD_DRAW_INDEXED;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DRAW_INDIRECT
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
-} GR_DBG_OP_DATA_CMD_DRAW_INDIRECT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DRAW_INDEXED_INDIRECT
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
-} GR_DBG_OP_DATA_CMD_DRAW_INDEXED_INDIRECT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DISPATCH
-{
- GR_UINT x;
- GR_UINT y;
- GR_UINT z;
-} GR_DBG_OP_DATA_CMD_DISPATCH;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DISPATCH_INDIRECT
-{
- GR_GPU_MEMORY mem;
- GR_GPU_SIZE offset;
-} GR_DBG_OP_DATA_CMD_DISPATCH_INDIRECT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_COPY_MEMORY
-{
- GR_GPU_MEMORY srcMem;
- GR_GPU_MEMORY destMem;
- GR_UINT regionCount;
- GR_MEMORY_COPY regions[1];
- // (regionCount-1) more GR_MEMORY_COPY structures to follow...
-} GR_DBG_OP_DATA_CMD_COPY_MEMORY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_COPY_IMAGE
-{
- GR_DBG_OBJECT_REF srcImage;
- GR_DBG_OBJECT_REF destImage;
- GR_UINT regionCount;
- GR_IMAGE_COPY regions[1];
- // (regionCount-1) more GR_IMAGE_COPY structures to follow...
-} GR_DBG_OP_DATA_CMD_COPY_IMAGE;
-
-typedef struct _GR_DBG_OP_DATA_CMD_COPY_MEMORY_TO_IMAGE
-{
- GR_GPU_MEMORY srcMem;
- GR_DBG_OBJECT_REF destImage;
- GR_UINT regionCount;
- GR_MEMORY_IMAGE_COPY regions[1];
- // (regionCount-1) more GR_MEMORY_IMAGE_COPY structures to follow...
-} GR_DBG_OP_DATA_CMD_COPY_MEMORY_TO_IMAGE;
-
-typedef struct _GR_DBG_OP_DATA_CMD_COPY_IMAGE_TO_MEMORY
-{
- GR_DBG_OBJECT_REF srcImage;
- GR_GPU_MEMORY destMem;
- GR_UINT regionCount;
- GR_MEMORY_IMAGE_COPY regions[1];
- // (regionCount-1) more GR_MEMORY_IMAGE_COPY structures to follow...
-} GR_DBG_OP_DATA_CMD_COPY_IMAGE_TO_MEMORY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_CLONE_IMAGE_DATA
-{
- GR_DBG_OBJECT_REF srcImage;
- GR_ENUM srcImageState; // GR_IMAGE_STATE
- GR_DBG_OBJECT_REF destImage;
- GR_ENUM destImageState; // GR_IMAGE_STATE
-} GR_DBG_OP_DATA_CMD_CLONE_IMAGE_DATA;
-
-typedef struct _GR_DBG_OP_DATA_CMD_UPDATE_MEMORY
-{
- GR_GPU_MEMORY destMem;
- GR_GPU_SIZE destOffset;
- GR_GPU_SIZE dataSize;
- GR_UINT32 data[1];
- // (dataSize-4) more bytes of data to follow...
-} GR_DBG_OP_DATA_CMD_UPDATE_MEMORY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_FILL_MEMORY
-{
- GR_GPU_MEMORY destMem;
- GR_GPU_SIZE destOffset;
- GR_GPU_SIZE fillSize;
- GR_UINT32 data;
-} GR_DBG_OP_DATA_CMD_FILL_MEMORY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_CLEAR_COLOR_IMAGE
-{
- GR_DBG_OBJECT_REF image;
- GR_FLOAT color[4];
- GR_UINT rangeCount;
- GR_IMAGE_SUBRESOURCE_RANGE ranges[1];
- // (rangeCount-1) more GR_IMAGE_SUBRESOURCE_RANGE structures to follow...
-} GR_DBG_OP_DATA_CMD_CLEAR_COLOR_IMAGE;
-
-typedef struct _GR_DBG_OP_DATA_CMD_CLEAR_COLOR_IMAGE_RAW
-{
- GR_DBG_OBJECT_REF image;
- GR_UINT32 color[4];
- GR_UINT rangeCount;
- GR_IMAGE_SUBRESOURCE_RANGE ranges[1];
- // (rangeCount-1) more GR_IMAGE_SUBRESOURCE_RANGE structures to follow...
-} GR_DBG_OP_DATA_CMD_CLEAR_COLOR_IMAGE_RAW;
-
-typedef struct _GR_DBG_OP_DATA_CMD_CLEAR_DEPTH_STENCIL
-{
- GR_DBG_OBJECT_REF image;
- GR_FLOAT depth;
- GR_UINT8 stencil;
- GR_UINT rangeCount;
- GR_IMAGE_SUBRESOURCE_RANGE ranges[1];
- // (rangeCount-1) more GR_IMAGE_SUBRESOURCE_RANGE structures to follow...
-} GR_DBG_OP_DATA_CMD_CLEAR_DEPTH_STENCIL;
-
-typedef struct _GR_DBG_OP_DATA_CMD_RESOLVE_IMAGE
-{
- GR_DBG_OBJECT_REF srcImage;
- GR_DBG_OBJECT_REF destImage;
- GR_UINT rectCount;
- GR_IMAGE_RESOLVE rects[1];
- // (rectCount-1) more GR_IMAGE_RESOLVE structures to follow...
-} GR_DBG_OP_DATA_CMD_RESOLVE_IMAGE;
-
-typedef struct _GR_DBG_OP_DATA_CMD_SET_EVENT
-{
- GR_DBG_OBJECT_REF event;
-} GR_DBG_OP_DATA_CMD_SET_EVENT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_RESET_EVENT
-{
- GR_DBG_OBJECT_REF event;
-} GR_DBG_OP_DATA_CMD_RESET_EVENT;
-
-typedef struct _GR_DBG_OP_DATA_CMD_MEMORY_ATOMIC
-{
- GR_GPU_MEMORY destMem;
- GR_GPU_SIZE destOffset;
- GR_UINT64 srcData;
- GR_ENUM atomicOp; // GR_ATOMIC_OP
-} GR_DBG_OP_DATA_CMD_MEMORY_ATOMIC;
-
-typedef struct _GR_DBG_OP_DATA_CMD_BEGIN_QUERY
-{
- GR_DBG_OBJECT_REF queryPool;
- GR_UINT slot;
- GR_FLAGS flags;
-} GR_DBG_OP_DATA_CMD_BEGIN_QUERY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_END_QUERY
-{
- GR_DBG_OBJECT_REF queryPool;
- GR_UINT slot;
-} GR_DBG_OP_DATA_CMD_END_QUERY;
-
-typedef struct _GR_DBG_OP_DATA_CMD_RESET_QUERY_POOL
-{
- GR_DBG_OBJECT_REF queryPool;
- GR_UINT startQuery;
- GR_UINT queryCount;
-} GR_DBG_OP_DATA_CMD_RESET_QUERY_POOL;
-
-typedef struct _GR_DBG_OP_DATA_CMD_WRITE_TIMESTAMP
-{
- GR_ENUM timestampType; // GR_TIMESTAMP_TYPE
- GR_GPU_MEMORY destMem;
- GR_GPU_SIZE destOffset;
-} GR_DBG_OP_DATA_CMD_WRITE_TIMESTAMP;
-
-typedef struct _GR_DBG_OP_DATA_CMD_INIT_ATOMIC_COUNTERS
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter;
- GR_UINT counterCount;
- GR_UINT32 data[1];
- // (counterCount-1) more DWORDs of data to follow...
-} GR_DBG_OP_DATA_CMD_INIT_ATOMIC_COUNTERS;
-
-typedef struct _GR_DBG_OP_DATA_CMD_LOAD_ATOMIC_COUNTERS
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter;
- GR_UINT counterCount;
- GR_GPU_MEMORY srcMem;
- GR_GPU_SIZE srcOffset;
-} GR_DBG_OP_DATA_CMD_LOAD_ATOMIC_COUNTERS;
-
-typedef struct _GR_DBG_OP_DATA_CMD_SAVE_ATOMIC_COUNTERS
-{
- GR_ENUM pipelineBindPoint; // GR_PIPELINE_BIND_POINT
- GR_UINT startCounter;
- GR_UINT counterCount;
- GR_GPU_MEMORY destMem;
- GR_GPU_SIZE destOffset;
-} GR_DBG_OP_DATA_CMD_SAVE_ATOMIC_COUNTERS;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DBG_MARKER_BEGIN
-{
- GR_CHAR marker[1];
- // The rest of null terminated string follows, up to the size of the packet...
-} GR_DBG_OP_DATA_CMD_DBG_MARKER_BEGIN;
-
-typedef struct _GR_DBG_OP_DATA_CMD_DBG_MARKER_END
-{
- GR_UINT _reserved;
-} GR_DBG_OP_DATA_CMD_DBG_MARKER_END;
-
-// ------------------------------------------------------------------------------------------------
-// Debug message callback
-
-typedef GR_VOID (GR_STDCALL *GR_DBG_MSG_CALLBACK_FUNCTION)(
- GR_ENUM msgType, // GR_DBG_MSG_TYPE
- GR_ENUM validationLevel, // GR_VALIDATION_LEVEL
- GR_BASE_OBJECT srcObject,
- GR_SIZE location,
- GR_ENUM msgCode, // GR_DBG_MSG_CODE
- const GR_CHAR* pMsg,
- GR_VOID* pUserData);
-
-// ------------------------------------------------------------------------------------------------
-// Debug functions
-
-GR_RESULT GR_STDCALL grDbgSetValidationLevel(
- GR_DEVICE device,
- GR_ENUM validationLevel); // GR_VALIDATION_LEVEL
-
-GR_RESULT GR_STDCALL grDbgRegisterMsgCallback(
- GR_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
- GR_VOID* pUserData);
-
-GR_RESULT GR_STDCALL grDbgUnregisterMsgCallback(
- GR_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
-
-GR_RESULT GR_STDCALL grDbgSetMessageFilter(
- GR_DEVICE device,
- GR_ENUM msgCode, // GR_DBG_MSG_CODE
- GR_ENUM filter); // GR_DBG_MSG_FILTER
-
-GR_RESULT GR_STDCALL grDbgSetObjectTag(
- GR_BASE_OBJECT object,
- GR_SIZE tagSize,
- const GR_VOID* pTag);
-
-GR_RESULT GR_STDCALL grDbgSetGlobalOption(
- GR_ENUM dbgOption, // GR_DBG_GLOBAL_OPTION
- GR_SIZE dataSize,
- const GR_VOID* pData);
-
-GR_RESULT GR_STDCALL grDbgSetDeviceOption(
- GR_DEVICE device,
- GR_ENUM dbgOption, // GR_DBG_DEVICE_OPTION
- GR_SIZE dataSize,
- const GR_VOID* pData);
-
-GR_VOID GR_STDCALL grCmdDbgMarkerBegin(
- GR_CMD_BUFFER cmdBuffer,
- const GR_CHAR* pMarker);
-
-GR_VOID GR_STDCALL grCmdDbgMarkerEnd(
- GR_CMD_BUFFER cmdBuffer);
-
-#ifdef __cplusplus
-}; // extern "C"
-#endif // __cplusplus
-
-#endif // __MANTLEDBG_H__