successfully creating D3D texture with D3D11_RESOURCE_MISC_SHARED_NTHANDLE;
successfully allocating with VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT working copying vulkan texture successfully passing D3D texture back to Flutter chore: Dart/Windows sample project: remove unnnecessary InvalidateRect from update() chore: Dart/Windows sample project: add generated bindings successfully blitting from Vulkan swapchain to D3D texture working Vulkan texture integration with Flutter refactor to allow disposal of resources in destructors handle destroyTexture correctly correctly implement surface resizing/destruction move Windows engine to Vulkan backend and flush after creating swapchain add vulkan + vkshaders to Windows libs update materials with Vulkan move Vulkan implementation to thermion_Dart remove extras folder thermion_flutter plugin updates update build hook to copy .lib file to output directory and use -vulkan lib zip file thermion_flutter cleanup reinstate stereoscopic on Windows add dxgi and d3d11.lib to windows header pragma update cli_windows sample project copy filament/vulkan headers to output directory. This was originally added to facilitate linking on Windows (where thermion_flutter_plugin.cpp needs the Vulkan-related headers), but this doesn't actually solve the problem because there's no way that I've found to get the directory structure correct in the Dart native_assets build directory unless you explicitly address each inidivual file. The current approach is therefore to just keep a permanent copy of the headers in the thermion_filament directory (meaning these will need to be updated manually if the Filament version changes). However, I decided to keep the changes to build.dart because it doesn't have much negative impact and may be helpful in future. disable stereoscopic on Windows and disable handle use after free checks use filament headers for thermion_flutter throw Exception for MSAA on Windows (note that passing msaa:true for setAntiAliasing doesn't actually set MSAA on other platforms, but at least it won't cause the engine to crash) change header include path for Windows/Vulkan change header include path for Windows/Vulkan add filament/vulkan headers for flutter (Windows) ensure destroyTexture platform methods accept an integer rather than a list handle Android/Windows swapchain creation separately
This commit is contained in:
@@ -3,7 +3,6 @@ import 'dart:io';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:ffi/ffi.dart';
|
||||
// import 'package:thermion_dart/thermion_dart/thermion_viewer_ffi.dart';
|
||||
import 'package:thermion_dart/src/utils/src/dart_resources.dart';
|
||||
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_viewer_ffi.dart';
|
||||
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_dart.g.dart';
|
||||
@@ -15,8 +14,6 @@ void main(List<String> arguments) async {
|
||||
var hwnd = create_thermion_window(500, 500, 0, 0);
|
||||
update();
|
||||
|
||||
print("VISIBLE");
|
||||
|
||||
final resourceLoader = calloc<ResourceLoaderWrapper>(1);
|
||||
|
||||
var loadToOut = NativeCallable<
|
||||
@@ -32,7 +29,7 @@ void main(List<String> arguments) async {
|
||||
resourceLoader: resourceLoader.cast<Void>());
|
||||
|
||||
await viewer.initialized;
|
||||
var swapChain = await viewer.createSwapChain(hwnd);
|
||||
var swapChain = await viewer.createHeadlessSwapChain(500,500);
|
||||
var view = await viewer.getViewAt(0);
|
||||
await view.updateViewport(500, 500);
|
||||
var camera = await viewer.getMainCamera();
|
||||
@@ -61,8 +58,8 @@ void main(List<String> arguments) async {
|
||||
var modelMatrix = Matrix4.compose(position, rotation, Vector3.all(1));
|
||||
await viewer.setCameraModelMatrix4(modelMatrix);
|
||||
await viewer.render();
|
||||
await Future.delayed(Duration(milliseconds: 16));
|
||||
update();
|
||||
await Future.delayed(Duration(milliseconds: 17));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,27 +11,25 @@ void main(List<String> args) async {
|
||||
..onRecord.listen((record) => print(
|
||||
record.message + "\n"));
|
||||
|
||||
|
||||
|
||||
await build(args, (config, output) async {
|
||||
|
||||
final cbuilder = CBuilder.library(
|
||||
name: "thermion_window",
|
||||
language: Language.cpp,
|
||||
assetName: 'thermion_window.dart',
|
||||
sources: ['native/thermion_window.cpp'],
|
||||
includes: ['native'],
|
||||
includes: ['native', '../../../thermion_dart/native/include'],
|
||||
defines: {"UNICODE":"1"},
|
||||
flags:[],
|
||||
dartBuildFiles: ['hook/build.dart'],
|
||||
);
|
||||
|
||||
|
||||
|
||||
await cbuilder.run(
|
||||
buildConfig: config,
|
||||
buildOutput: output,
|
||||
logger: logger,
|
||||
);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
// AUTO GENERATED FILE, DO NOT EDIT.
|
||||
//
|
||||
// Generated by `package:ffigen`.
|
||||
// ignore_for_file: type=lint
|
||||
@ffi.DefaultAsset('package:cli_windows/thermion_window.dart')
|
||||
library;
|
||||
|
||||
import 'dart:ffi' as ffi;
|
||||
|
||||
@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int, ffi.Int, ffi.Int)>(isLeaf: true)
|
||||
external int create_thermion_window(
|
||||
int width,
|
||||
int height,
|
||||
int left,
|
||||
int top,
|
||||
);
|
||||
|
||||
@ffi.Native<ffi.Void Function()>(isLeaf: true)
|
||||
external void update();
|
||||
@@ -128,8 +128,8 @@ extern "C" {
|
||||
|
||||
// Update function can now be simplified or removed since rendering happens in the thread
|
||||
EMSCRIPTEN_KEEPALIVE void update() {
|
||||
// This could be used to trigger specific updates if needed
|
||||
InvalidateRect(_window->GetHandle(), NULL, FALSE);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Add a cleanup function
|
||||
|
||||
@@ -39,7 +39,7 @@ add_definitions(-DUNICODE -D_UNICODE)
|
||||
# of modifying this function.
|
||||
function(APPLY_STANDARD_SETTINGS TARGET)
|
||||
target_compile_features(${TARGET} PUBLIC cxx_std_17)
|
||||
target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100")
|
||||
target_compile_options(${TARGET} PRIVATE /W4 /wd"4100")
|
||||
target_compile_options(${TARGET} PRIVATE /EHsc)
|
||||
target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
|
||||
target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>")
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
set(PROJECT_NAME "thermion_windows")
|
||||
project(${PROJECT_NAME} LANGUAGES C CXX)
|
||||
|
||||
cmake_policy(VERSION 3.14...3.25)
|
||||
|
||||
add_compile_definitions(WGL_USE_BACKING_WINDOW)
|
||||
add_compile_definitions(UNICODE)
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED
|
||||
"thermion_window.cpp"
|
||||
)
|
||||
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
|
||||
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20)
|
||||
target_include_directories(${PROJECT_NAME} INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||
"${CMAKE_SOURCE_DIR}/../../../../thermion_dart/native/include/filament"
|
||||
"${CMAKE_SOURCE_DIR}/../../../../thermion_dart/native/include"
|
||||
"${CMAKE_SOURCE_DIR}/../../../../thermion_flutter/thermion_flutter/windows"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Shlwapi
|
||||
opengl32
|
||||
dwmapi
|
||||
comctl32
|
||||
)
|
||||
|
||||
@@ -1,244 +0,0 @@
|
||||
#include "thermion_window.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
|
||||
#include <Windows.h>
|
||||
#include <dwmapi.h>
|
||||
#include <ShObjIdl.h>
|
||||
|
||||
#pragma comment(lib, "dwmapi.lib")
|
||||
#pragma comment(lib, "comctl32.lib")
|
||||
|
||||
namespace thermion {
|
||||
|
||||
static constexpr auto kClassName = L"THERMION_WINDOW";
|
||||
static constexpr auto kWindowName = L"thermion_window";
|
||||
static bool was_window_hidden_due_to_minimize_ = false;
|
||||
static WPARAM last_wm_size_wparam_ = SIZE_RESTORED;
|
||||
uint64_t last_thread_time_ = 0;
|
||||
static constexpr auto kNativeViewPositionAndShowDelay = 300;
|
||||
|
||||
typedef enum _WINDOWCOMPOSITIONATTRIB {
|
||||
WCA_UNDEFINED = 0,
|
||||
WCA_NCRENDERING_ENABLED = 1,
|
||||
WCA_NCRENDERING_POLICY = 2,
|
||||
WCA_TRANSITIONS_FORCEDISABLED = 3,
|
||||
WCA_ALLOW_NCPAINT = 4,
|
||||
WCA_CAPTION_BUTTON_BOUNDS = 5,
|
||||
WCA_NONCLIENT_RTL_LAYOUT = 6,
|
||||
WCA_FORCE_ICONIC_REPRESENTATION = 7,
|
||||
WCA_EXTENDED_FRAME_BOUNDS = 8,
|
||||
WCA_HAS_ICONIC_BITMAP = 9,
|
||||
WCA_THEME_ATTRIBUTES = 10,
|
||||
WCA_NCRENDERING_EXILED = 11,
|
||||
WCA_NCADORNMENTINFO = 12,
|
||||
WCA_EXCLUDED_FROM_LIVEPREVIEW = 13,
|
||||
WCA_VIDEO_OVERLAY_ACTIVE = 14,
|
||||
WCA_FORCE_ACTIVEWINDOW_APPEARANCE = 15,
|
||||
WCA_DISALLOW_PEEK = 16,
|
||||
WCA_CLOAK = 17,
|
||||
WCA_CLOAKED = 18,
|
||||
WCA_ACCENT_POLICY = 19,
|
||||
WCA_FREEZE_REPRESENTATION = 20,
|
||||
WCA_EVER_UNCLOAKED = 21,
|
||||
WCA_VISUAL_OWNER = 22,
|
||||
WCA_HOLOGRAPHIC = 23,
|
||||
WCA_EXCLUDED_FROM_DDA = 24,
|
||||
WCA_PASSIVEUPDATEMODE = 25,
|
||||
WCA_USEDARKMODECOLORS = 26,
|
||||
WCA_LAST = 27
|
||||
} WINDOWCOMPOSITIONATTRIB;
|
||||
|
||||
typedef struct _WINDOWCOMPOSITIONATTRIBDATA {
|
||||
WINDOWCOMPOSITIONATTRIB Attrib;
|
||||
PVOID pvData;
|
||||
SIZE_T cbData;
|
||||
} WINDOWCOMPOSITIONATTRIBDATA;
|
||||
|
||||
typedef enum _ACCENT_STATE {
|
||||
ACCENT_DISABLED = 0,
|
||||
ACCENT_ENABLE_GRADIENT = 1,
|
||||
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
|
||||
ACCENT_ENABLE_BLURBEHIND = 3,
|
||||
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
|
||||
ACCENT_ENABLE_HOSTBACKDROP = 5,
|
||||
ACCENT_INVALID_STATE = 6
|
||||
} ACCENT_STATE;
|
||||
|
||||
typedef struct _ACCENT_POLICY {
|
||||
ACCENT_STATE AccentState;
|
||||
DWORD AccentFlags;
|
||||
DWORD GradientColor;
|
||||
DWORD AnimationId;
|
||||
} ACCENT_POLICY;
|
||||
|
||||
typedef BOOL(WINAPI* _GetWindowCompositionAttribute)(
|
||||
HWND, WINDOWCOMPOSITIONATTRIBDATA*);
|
||||
typedef BOOL(WINAPI* _SetWindowCompositionAttribute)(
|
||||
HWND, WINDOWCOMPOSITIONATTRIBDATA*);
|
||||
|
||||
static _SetWindowCompositionAttribute g_set_window_composition_attribute = NULL;
|
||||
static bool g_set_window_composition_attribute_initialized = false;
|
||||
|
||||
typedef LONG NTSTATUS, *PNTSTATUS;
|
||||
#define STATUS_SUCCESS (0x00000000)
|
||||
|
||||
typedef NTSTATUS(WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);
|
||||
|
||||
RTL_OSVERSIONINFOW GetWindowsVersion() {
|
||||
HMODULE hmodule = ::GetModuleHandleW(L"ntdll.dll");
|
||||
if (hmodule) {
|
||||
RtlGetVersionPtr rtl_get_version_ptr =
|
||||
(RtlGetVersionPtr)::GetProcAddress(hmodule, "RtlGetVersion");
|
||||
if (rtl_get_version_ptr != nullptr) {
|
||||
RTL_OSVERSIONINFOW rovi = {0};
|
||||
rovi.dwOSVersionInfoSize = sizeof(rovi);
|
||||
if (STATUS_SUCCESS == rtl_get_version_ptr(&rovi)) {
|
||||
return rovi;
|
||||
}
|
||||
}
|
||||
}
|
||||
RTL_OSVERSIONINFOW rovi = {0};
|
||||
return rovi;
|
||||
}
|
||||
|
||||
void SetWindowComposition(HWND window, int32_t accent_state,
|
||||
int32_t gradient_color) {
|
||||
// TODO: Look for a better available API.
|
||||
if (GetWindowsVersion().dwBuildNumber >= 18362) {
|
||||
if (!g_set_window_composition_attribute_initialized) {
|
||||
auto user32 = ::GetModuleHandleA("user32.dll");
|
||||
if (user32) {
|
||||
g_set_window_composition_attribute =
|
||||
reinterpret_cast<_SetWindowCompositionAttribute>(
|
||||
::GetProcAddress(user32, "SetWindowCompositionAttribute"));
|
||||
if (g_set_window_composition_attribute) {
|
||||
g_set_window_composition_attribute_initialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
ACCENT_POLICY accent = {static_cast<ACCENT_STATE>(accent_state), 2,
|
||||
static_cast<DWORD>(gradient_color), 0};
|
||||
WINDOWCOMPOSITIONATTRIBDATA data;
|
||||
data.Attrib = WCA_ACCENT_POLICY;
|
||||
data.pvData = &accent;
|
||||
data.cbData = sizeof(accent);
|
||||
g_set_window_composition_attribute(window, &data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LRESULT CALLBACK FilamentWindowProc(HWND const window, UINT const message,
|
||||
WPARAM const wparam,
|
||||
LPARAM const lparam) noexcept {
|
||||
switch (message) {
|
||||
std::cout << message <<std::endl;
|
||||
case WM_MOUSEMOVE: {
|
||||
TRACKMOUSEEVENT event;
|
||||
event.cbSize = sizeof(event);
|
||||
event.hwndTrack = window;
|
||||
event.dwFlags = TME_HOVER;
|
||||
event.dwHoverTime = 200;
|
||||
auto user_data = ::GetWindowLongPtr(window, GWLP_USERDATA);
|
||||
if (user_data) {
|
||||
HWND flutterRootWindow = reinterpret_cast<HWND>(user_data);
|
||||
::SetForegroundWindow(flutterRootWindow);
|
||||
LONG ex_style = ::GetWindowLong(flutterRootWindow, GWL_EXSTYLE);
|
||||
ex_style &= ~(WS_EX_TRANSPARENT | WS_EX_LAYERED);
|
||||
::SetWindowLong(flutterRootWindow, GWL_EXSTYLE, ex_style);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_ERASEBKGND: {
|
||||
HDC hdc = (HDC)wparam;
|
||||
RECT rect;
|
||||
GetClientRect(window, &rect);
|
||||
|
||||
// Get the ThermionWindow instance associated with this window
|
||||
ThermionWindow* thermionWindow = reinterpret_cast<ThermionWindow*>(
|
||||
GetWindowLongPtr(window, GWLP_USERDATA));
|
||||
|
||||
if (thermionWindow) {
|
||||
HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
|
||||
FillRect(hdc, &rect, brush);
|
||||
DeleteObject(brush);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case WM_SIZE:
|
||||
break;
|
||||
case WM_MOVE:
|
||||
case WM_MOVING:
|
||||
case WM_ACTIVATE:
|
||||
case WM_WINDOWPOSCHANGED: {
|
||||
// NativeViewCore::GetInstance()->SetHitTestBehavior(0);
|
||||
auto user_data = ::GetWindowLongPtr(window, GWLP_USERDATA);
|
||||
if (user_data) {
|
||||
HWND flutterRootWindow = reinterpret_cast<HWND>(user_data);
|
||||
::SetForegroundWindow(flutterRootWindow);
|
||||
// NativeViewCore::GetInstance()->SetHitTestBehavior(0);
|
||||
LONG ex_style = ::GetWindowLong(flutterRootWindow, GWL_EXSTYLE);
|
||||
ex_style &= ~(WS_EX_TRANSPARENT | WS_EX_LAYERED);
|
||||
::SetWindowLong(flutterRootWindow, GWL_EXSTYLE, ex_style);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ::DefWindowProc(window, message, wparam, lparam);
|
||||
}
|
||||
|
||||
ThermionWindow::ThermionWindow(int width,
|
||||
int height,
|
||||
int left,
|
||||
int top) : _width(width), _height(height), _left(left), _top(top) {
|
||||
// create the HWND for Filament
|
||||
auto window_class = WNDCLASSEX{};
|
||||
::SecureZeroMemory(&window_class, sizeof(window_class));
|
||||
window_class.cbSize = sizeof(window_class);
|
||||
window_class.style = CS_HREDRAW | CS_VREDRAW;
|
||||
window_class.lpfnWndProc = FilamentWindowProc;
|
||||
window_class.hInstance = 0;
|
||||
window_class.lpszClassName = kClassName;
|
||||
window_class.hCursor = ::LoadCursorW(nullptr, IDC_ARROW);
|
||||
window_class.hbrBackground = ::CreateSolidBrush(RGB(0,255,0));
|
||||
::RegisterClassExW(&window_class);
|
||||
_windowHandle = ::CreateWindow(kClassName, kWindowName, WS_OVERLAPPEDWINDOW,
|
||||
0, 0, _width, _height, nullptr,
|
||||
nullptr, GetModuleHandle(nullptr), nullptr);
|
||||
|
||||
// Disable DWM animations
|
||||
auto disable_window_transitions = TRUE;
|
||||
DwmSetWindowAttribute(_windowHandle, DWMWA_TRANSITIONS_FORCEDISABLED,
|
||||
&disable_window_transitions,
|
||||
sizeof(disable_window_transitions));
|
||||
|
||||
auto style = ::GetWindowLong(_windowHandle, GWL_STYLE);
|
||||
style &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX |
|
||||
WS_EX_APPWINDOW);
|
||||
::SetWindowLong(_windowHandle, GWL_STYLE, style);
|
||||
|
||||
// // remove taskbar entry for the window we created
|
||||
// ITaskbarList3* taskbar = nullptr;
|
||||
// ::CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER,
|
||||
// IID_PPV_ARGS(&taskbar));
|
||||
// taskbar->DeleteTab(_windowHandle);
|
||||
// taskbar->Release();
|
||||
::ShowWindow(_windowHandle, SW_SHOW);
|
||||
UpdateWindow(_windowHandle);
|
||||
}
|
||||
|
||||
void ThermionWindow::Resize(int width, int height, int left, int top) {
|
||||
_width = width;
|
||||
_height = height;
|
||||
_left = left;
|
||||
_top = top;
|
||||
}
|
||||
|
||||
HWND ThermionWindow::GetHandle() { return _windowHandle; }
|
||||
} // namespace thermion_flutter
|
||||
@@ -1,57 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef IS_DLL
|
||||
#define EMSCRIPTEN_KEEPALIVE __declspec(dllimport)
|
||||
#else
|
||||
#define EMSCRIPTEN_KEEPALIVE __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <Windows.h>
|
||||
|
||||
namespace thermion {
|
||||
|
||||
///
|
||||
/// Instantiating a ThermionWindow creates a HWND that can be passed
|
||||
/// to Filament to create a swapchain.
|
||||
///
|
||||
///
|
||||
class ThermionWindow {
|
||||
public:
|
||||
ThermionWindow(
|
||||
int width,
|
||||
int height,
|
||||
int left,
|
||||
int top);
|
||||
HWND GetHandle();
|
||||
void Resize(int width, int height, int left, int top);
|
||||
private:
|
||||
HWND _windowHandle;
|
||||
uint32_t _width = 0;
|
||||
uint32_t _height = 0;
|
||||
uint32_t _left = 0;
|
||||
uint32_t _top = 0;
|
||||
};
|
||||
|
||||
static ThermionWindow* _window;
|
||||
|
||||
extern "C" {
|
||||
EMSCRIPTEN_KEEPALIVE intptr_t create_thermion_window(int width, int height, int left, int top) {
|
||||
_window = new ThermionWindow(width, height, left, top);
|
||||
return (intptr_t)_window->GetHandle();
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void update() {
|
||||
MSG msg;
|
||||
if(GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
@@ -7,10 +7,11 @@ import 'package:path/path.dart' as path;
|
||||
|
||||
void main(List<String> args) async {
|
||||
await build(args, (config, output) async {
|
||||
var pkgRootFilePath =
|
||||
config.packageRoot.toFilePath(windows: Platform.isWindows);
|
||||
|
||||
var pkgRootFilePath = config.packageRoot.toFilePath(windows: Platform.isWindows);
|
||||
|
||||
var logPath = path.join(pkgRootFilePath, ".dart_tool", "thermion_dart", "log", "build.log");
|
||||
var logPath = path.join(
|
||||
pkgRootFilePath, ".dart_tool", "thermion_dart", "log", "build.log");
|
||||
var logFile = File(logPath);
|
||||
if (!logFile.parent.existsSync()) {
|
||||
logFile.parent.createSync(recursive: true);
|
||||
@@ -25,8 +26,9 @@ void main(List<String> args) async {
|
||||
|
||||
var platform = config.targetOS.toString().toLowerCase();
|
||||
|
||||
if(!config.dryRun) {
|
||||
logger.info("Building Thermion for ${config.targetOS} in mode ${config.buildMode.name}");
|
||||
if (!config.dryRun) {
|
||||
logger.info(
|
||||
"Building Thermion for ${config.targetOS} in mode ${config.buildMode.name}");
|
||||
}
|
||||
|
||||
// We don't support Linux (yet), so the native/Filament libraries won't be
|
||||
@@ -54,13 +56,20 @@ void main(List<String> args) async {
|
||||
|
||||
final packageName = config.packageName;
|
||||
|
||||
final sources = Directory(path.join(pkgRootFilePath, "native", "src"))
|
||||
var sources = Directory(path.join(pkgRootFilePath, "native", "src"))
|
||||
.listSync(recursive: true)
|
||||
.whereType<File>()
|
||||
.map((f) => f.path)
|
||||
.where((f) => !(f.contains("CMakeLists") || f.contains("main.cpp")))
|
||||
.toList();
|
||||
|
||||
if (config.targetOS != OS.windows) {
|
||||
sources = sources.where((p) => !p.contains("windows")).toList();
|
||||
}
|
||||
|
||||
sources.addAll([
|
||||
path.join(pkgRootFilePath, "native", "include", "material", "unlit_fixed_size.c"),
|
||||
path.join(pkgRootFilePath, "native", "include", "material",
|
||||
"unlit_fixed_size.c"),
|
||||
path.join(pkgRootFilePath, "native", "include", "material", "image.c"),
|
||||
path.join(pkgRootFilePath, "native", "include", "material", "grid.c"),
|
||||
path.join(pkgRootFilePath, "native", "include", "material", "unlit.c"),
|
||||
@@ -95,17 +104,11 @@ void main(List<String> args) async {
|
||||
];
|
||||
|
||||
if (platform == "windows") {
|
||||
libDir = Directory(libDir).uri.toFilePath(windows: config.targetOS == OS.windows);
|
||||
libs = libs.map((lib) => path.join(libDir, "${lib}.lib")).toList();
|
||||
libs.addAll([path.join(libDir,"bluevk.lib"), path.join(libDir,"bluegl.lib")]);
|
||||
libs.addAll([
|
||||
"gdi32.lib",
|
||||
"user32.lib",
|
||||
"shell32.lib",
|
||||
"opengl32.lib",
|
||||
"dwmapi.lib",
|
||||
"comctl32.lib"
|
||||
]);
|
||||
// we just need the libDir and don't need to explicitly link the actual libs
|
||||
// (these are linked via ThermionWin32.h)
|
||||
libDir = Directory(libDir)
|
||||
.uri
|
||||
.toFilePath(windows: config.targetOS == OS.windows);
|
||||
} else {
|
||||
libs.add("stdc++");
|
||||
}
|
||||
@@ -115,21 +118,19 @@ void main(List<String> args) async {
|
||||
|
||||
if (platform != "windows") {
|
||||
flags.addAll(['-std=c++17']);
|
||||
} else if(!config.dryRun) {
|
||||
} else if (!config.dryRun) {
|
||||
defines["WIN32"] = "1";
|
||||
defines["_DLL"] = "1";
|
||||
if(config.buildMode == BuildMode.debug) {
|
||||
if (config.buildMode == BuildMode.debug) {
|
||||
defines["_DEBUG"] = "1";
|
||||
} else {
|
||||
} else {
|
||||
defines["RELEASE"] = "1";
|
||||
defines["NDEBUG"] = "1";
|
||||
}
|
||||
flags.addAll([
|
||||
"/std:c++20",
|
||||
if(config.buildMode == BuildMode.debug)
|
||||
...["/MDd","/Zi"],
|
||||
if(config.buildMode == BuildMode.release)
|
||||
"/MD",
|
||||
if (config.buildMode == BuildMode.debug) ...["/MDd", "/Zi"],
|
||||
if (config.buildMode == BuildMode.release) "/MD",
|
||||
"/VERBOSE",
|
||||
...defines.keys.map((k) => "/D$k=${defines[k]}").toList()
|
||||
]);
|
||||
@@ -173,11 +174,14 @@ void main(List<String> args) async {
|
||||
if (platform == "ios") '-mios-version-min=13.0',
|
||||
...flags,
|
||||
...frameworks,
|
||||
if (platform != "windows") ...libs.map((lib) => "-l$lib"),
|
||||
if (platform != "windows") "-L$libDir",
|
||||
if (platform != "windows") ...[
|
||||
...libs.map((lib) => "-l$lib"),
|
||||
"-L$libDir"
|
||||
],
|
||||
if (platform == "windows") ...[
|
||||
"/I${path.join(pkgRootFilePath, "native", "include")}",
|
||||
"/I${path.join(pkgRootFilePath, "native", "include", "filament")}",
|
||||
"/I${path.join(pkgRootFilePath, "native", "include", "windows", "vulkan")}",
|
||||
...sources,
|
||||
'/link',
|
||||
"/LIBPATH:$libDir",
|
||||
@@ -228,17 +232,46 @@ void main(List<String> args) async {
|
||||
architecture: config.targetArchitecture));
|
||||
}
|
||||
}
|
||||
// do we need this?
|
||||
if (config.targetOS == "windows") {
|
||||
output.addAsset(
|
||||
NativeCodeAsset(
|
||||
|
||||
if (config.targetOS == OS.windows) {
|
||||
var importLib = File(path.join(
|
||||
config.outputDirectory.path.substring(1).replaceAll("/", "\\"),
|
||||
"thermion_dart.lib"));
|
||||
|
||||
output.addAsset(NativeCodeAsset(
|
||||
package: config.packageName,
|
||||
name: "thermion_dart.lib",
|
||||
linkMode: DynamicLoadingBundled(),
|
||||
os: config.targetOS,
|
||||
file: importLib.uri,
|
||||
architecture: config.targetArchitecture));
|
||||
|
||||
for(final dir in ["windows/vulkan"]) { // , "filament/bluevk", "filament/vulkan"
|
||||
final targetSubdir = path
|
||||
.join(config.outputDirectory.path, "include", dir)
|
||||
.substring(1);
|
||||
if (!Directory(targetSubdir).existsSync()) {
|
||||
Directory(targetSubdir).createSync(recursive: true);
|
||||
}
|
||||
|
||||
for (var file in Directory(path.join(
|
||||
pkgRootFilePath, "native", "include", dir))
|
||||
.listSync()) {
|
||||
if (file is File) {
|
||||
final targetPath = path.join(targetSubdir, path.basename(file.path));
|
||||
file.copySync(targetPath);
|
||||
output.addAsset(NativeCodeAsset(
|
||||
package: config.packageName,
|
||||
name: "thermion_dart.dll",
|
||||
name: "include/$dir/${path.basename(file.path)}",
|
||||
linkMode: DynamicLoadingBundled(),
|
||||
os: config.targetOS,
|
||||
file: Uri.file(path.join(pkgRootFilePath, "thermion_dart.dll")),
|
||||
architecture: config.targetArchitecture),
|
||||
linkInPackage: config.packageName);
|
||||
file: file.uri,
|
||||
architecture: config.targetArchitecture));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -266,9 +299,15 @@ Future<Directory> getLibDir(BuildConfig config, Logger logger) async {
|
||||
if (platform == "windows") {
|
||||
mode = config.buildMode == BuildMode.debug ? "debug" : "release";
|
||||
}
|
||||
|
||||
var libDir = Directory(
|
||||
path.join(config.packageRoot.toFilePath(windows:Platform.isWindows), ".dart_tool", "thermion_dart", "lib", _FILAMENT_VERSION, platform, mode));
|
||||
|
||||
var libDir = Directory(path.join(
|
||||
config.packageRoot.toFilePath(windows: Platform.isWindows),
|
||||
".dart_tool",
|
||||
"thermion_dart",
|
||||
"lib",
|
||||
_FILAMENT_VERSION,
|
||||
platform,
|
||||
mode));
|
||||
|
||||
if (platform == "android") {
|
||||
final archExtension = switch (config.targetArchitecture) {
|
||||
@@ -288,14 +327,19 @@ Future<Directory> getLibDir(BuildConfig config, Logger logger) async {
|
||||
|
||||
logger.info("Searching for Filament libraries under ${libDir.path}");
|
||||
|
||||
final url = _getLibraryUrl(platform, mode);
|
||||
var url = _getLibraryUrl(platform, mode);
|
||||
|
||||
if (config.targetOS == OS.windows) {
|
||||
url = url.replaceAll(".zip", "-vulkan.zip");
|
||||
}
|
||||
|
||||
final filename = url.split("/").last;
|
||||
|
||||
// We will write an empty file called success to the unzip directory after successfully downloading/extracting the prebuilt libraries.
|
||||
// If this file already exists, we assume everything has been successfully extracted and skip
|
||||
final unzipDir = platform == "android" ? libDir.parent.path : libDir.path;
|
||||
final successToken = File(path.join(unzipDir, "success"));
|
||||
final successToken = File(path.join(
|
||||
unzipDir, config.targetOS == OS.windows ? "success-vulkan" : "success"));
|
||||
final libraryZip = File(path.join(unzipDir, filename));
|
||||
|
||||
if (!successToken.existsSync()) {
|
||||
@@ -331,4 +375,4 @@ Future<Directory> getLibDir(BuildConfig config, Logger logger) async {
|
||||
successToken.writeAsStringSync("SUCCESS");
|
||||
}
|
||||
return libDir;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
import 'dart:typed_data';
|
||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||
@@ -199,11 +200,11 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
///
|
||||
///
|
||||
///
|
||||
Future destroySwapChain(FFISwapChain swapChain) async {
|
||||
Future destroySwapChain(SwapChain swapChain) async {
|
||||
if (_viewer != null) {
|
||||
await withVoidCallback((callback) {
|
||||
Viewer_destroySwapChainRenderThread(
|
||||
_viewer!, swapChain.swapChain, callback);
|
||||
_viewer!, (swapChain as FFISwapChain).swapChain, callback);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1237,6 +1238,9 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
///
|
||||
@override
|
||||
Future setAntiAliasing(bool msaa, bool fxaa, bool taa) async {
|
||||
if(Platform.isWindows && msaa) {
|
||||
throw Exception("MSAA is not currently supported on Windows");
|
||||
}
|
||||
final view = await getViewAt(0) as FFIView;
|
||||
View_setAntiAliasing(view.view, msaa, fxaa, taa);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#pragma comment(lib, "comctl32.lib")
|
||||
#pragma comment(lib, "filament.lib")
|
||||
#pragma comment(lib, "bluevk.lib")
|
||||
#pragma comment(lib, "vkshaders.lib")
|
||||
#pragma comment(lib, "bluegl.lib")
|
||||
#pragma comment(lib, "backend.lib")
|
||||
#pragma comment(lib, "filamat.lib")
|
||||
@@ -32,4 +33,8 @@
|
||||
#pragma comment(lib, "uberarchive.lib")
|
||||
#pragma comment(lib, "zstd.lib")
|
||||
#pragma comment(lib, "basis_transcoder.lib")
|
||||
#pragma comment(lib, "meshoptimizer.lib")
|
||||
#pragma comment(lib, "meshoptimizer.lib")
|
||||
#pragma comment(lib, "vulkan-1.lib")
|
||||
#pragma comment(lib, "dxgi.lib")
|
||||
#pragma comment(lib, "d3d11.lib")
|
||||
|
||||
|
||||
@@ -0,0 +1,994 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**********************************************************************************************
|
||||
* Generated by bluevk/bluevk-gen.py
|
||||
* DO NOT EDIT
|
||||
**********************************************************************************************/
|
||||
|
||||
|
||||
#ifndef TNT_FILAMENT_BLUEVK_H
|
||||
#define TNT_FILAMENT_BLUEVK_H
|
||||
|
||||
#define VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
// BlueVK dynamically loads all function pointers, so it cannot allow function prototypes, which
|
||||
// would assume static linking for Vulkan entry points.
|
||||
#if defined(VULKAN_H_) && !defined(VK_NO_PROTOTYPES)
|
||||
#error Please do not include vulkan.h when using BlueVK
|
||||
#endif
|
||||
|
||||
// Even though we don't use function prototypes, we still need to include vulkan.h for all Vulkan
|
||||
// types, including the PFN_ types.
|
||||
#ifndef VULKAN_H_
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#define VK_NO_PROTOTYPES
|
||||
#endif
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#define VK_USE_PLATFORM_ANDROID_KHR 1
|
||||
#elif defined(IOS)
|
||||
#define VK_USE_PLATFORM_IOS_MVK 1
|
||||
#elif defined(__linux__)
|
||||
#if defined(FILAMENT_SUPPORTS_XCB)
|
||||
#define VK_USE_PLATFORM_XCB_KHR 1
|
||||
#endif
|
||||
#if defined(FILAMENT_SUPPORTS_XLIB)
|
||||
#define VK_USE_PLATFORM_XLIB_KHR 1
|
||||
#endif
|
||||
#if defined(FILAMENT_SUPPORTS_WAYLAND)
|
||||
#define VK_USE_PLATFORM_WAYLAND_KHR 1
|
||||
#endif
|
||||
#elif defined(__APPLE__)
|
||||
#define VK_USE_PLATFORM_MACOS_MVK 1
|
||||
#elif defined(WIN32)
|
||||
#define VK_USE_PLATFORM_WIN32_KHR 1
|
||||
#endif
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
#endif
|
||||
|
||||
#include <utils/unwindows.h>
|
||||
|
||||
namespace bluevk {
|
||||
|
||||
// Returns false if BlueGL could not find the Vulkan shared library.
|
||||
bool initialize();
|
||||
|
||||
void bindInstance(VkInstance instance);
|
||||
|
||||
#if defined(VK_VERSION_1_0)
|
||||
extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
|
||||
extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
|
||||
extern PFN_vkAllocateMemory vkAllocateMemory;
|
||||
extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
|
||||
extern PFN_vkBindBufferMemory vkBindBufferMemory;
|
||||
extern PFN_vkBindImageMemory vkBindImageMemory;
|
||||
extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
|
||||
extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
|
||||
extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
|
||||
extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
|
||||
extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
|
||||
extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
|
||||
extern PFN_vkCmdBlitImage vkCmdBlitImage;
|
||||
extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
|
||||
extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
|
||||
extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
|
||||
extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
|
||||
extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
|
||||
extern PFN_vkCmdCopyImage vkCmdCopyImage;
|
||||
extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
|
||||
extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
|
||||
extern PFN_vkCmdDispatch vkCmdDispatch;
|
||||
extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
|
||||
extern PFN_vkCmdDraw vkCmdDraw;
|
||||
extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
|
||||
extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
|
||||
extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
|
||||
extern PFN_vkCmdEndQuery vkCmdEndQuery;
|
||||
extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
|
||||
extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
|
||||
extern PFN_vkCmdFillBuffer vkCmdFillBuffer;
|
||||
extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
|
||||
extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
|
||||
extern PFN_vkCmdPushConstants vkCmdPushConstants;
|
||||
extern PFN_vkCmdResetEvent vkCmdResetEvent;
|
||||
extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
|
||||
extern PFN_vkCmdResolveImage vkCmdResolveImage;
|
||||
extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
|
||||
extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
|
||||
extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
|
||||
extern PFN_vkCmdSetEvent vkCmdSetEvent;
|
||||
extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
|
||||
extern PFN_vkCmdSetScissor vkCmdSetScissor;
|
||||
extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
|
||||
extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
|
||||
extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
|
||||
extern PFN_vkCmdSetViewport vkCmdSetViewport;
|
||||
extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
|
||||
extern PFN_vkCmdWaitEvents vkCmdWaitEvents;
|
||||
extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
|
||||
extern PFN_vkCreateBuffer vkCreateBuffer;
|
||||
extern PFN_vkCreateBufferView vkCreateBufferView;
|
||||
extern PFN_vkCreateCommandPool vkCreateCommandPool;
|
||||
extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
|
||||
extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
|
||||
extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
|
||||
extern PFN_vkCreateDevice vkCreateDevice;
|
||||
extern PFN_vkCreateEvent vkCreateEvent;
|
||||
extern PFN_vkCreateFence vkCreateFence;
|
||||
extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
|
||||
extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
|
||||
extern PFN_vkCreateImage vkCreateImage;
|
||||
extern PFN_vkCreateImageView vkCreateImageView;
|
||||
extern PFN_vkCreateInstance vkCreateInstance;
|
||||
extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
|
||||
extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
|
||||
extern PFN_vkCreateQueryPool vkCreateQueryPool;
|
||||
extern PFN_vkCreateRenderPass vkCreateRenderPass;
|
||||
extern PFN_vkCreateSampler vkCreateSampler;
|
||||
extern PFN_vkCreateSemaphore vkCreateSemaphore;
|
||||
extern PFN_vkCreateShaderModule vkCreateShaderModule;
|
||||
extern PFN_vkDestroyBuffer vkDestroyBuffer;
|
||||
extern PFN_vkDestroyBufferView vkDestroyBufferView;
|
||||
extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
|
||||
extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
|
||||
extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
|
||||
extern PFN_vkDestroyDevice vkDestroyDevice;
|
||||
extern PFN_vkDestroyEvent vkDestroyEvent;
|
||||
extern PFN_vkDestroyFence vkDestroyFence;
|
||||
extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
|
||||
extern PFN_vkDestroyImage vkDestroyImage;
|
||||
extern PFN_vkDestroyImageView vkDestroyImageView;
|
||||
extern PFN_vkDestroyInstance vkDestroyInstance;
|
||||
extern PFN_vkDestroyPipeline vkDestroyPipeline;
|
||||
extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
|
||||
extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
|
||||
extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
|
||||
extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
|
||||
extern PFN_vkDestroySampler vkDestroySampler;
|
||||
extern PFN_vkDestroySemaphore vkDestroySemaphore;
|
||||
extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
|
||||
extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
|
||||
extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
|
||||
extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
|
||||
extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
|
||||
extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
|
||||
extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
|
||||
extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
|
||||
extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
|
||||
extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
|
||||
extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
|
||||
extern PFN_vkFreeMemory vkFreeMemory;
|
||||
extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
|
||||
extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
|
||||
extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
|
||||
extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
|
||||
extern PFN_vkGetEventStatus vkGetEventStatus;
|
||||
extern PFN_vkGetFenceStatus vkGetFenceStatus;
|
||||
extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
|
||||
extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
|
||||
extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
|
||||
extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
|
||||
extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
|
||||
extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
|
||||
extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
|
||||
extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
|
||||
extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
|
||||
extern PFN_vkMapMemory vkMapMemory;
|
||||
extern PFN_vkMergePipelineCaches vkMergePipelineCaches;
|
||||
extern PFN_vkQueueBindSparse vkQueueBindSparse;
|
||||
extern PFN_vkQueueSubmit vkQueueSubmit;
|
||||
extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
|
||||
extern PFN_vkResetCommandBuffer vkResetCommandBuffer;
|
||||
extern PFN_vkResetCommandPool vkResetCommandPool;
|
||||
extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
|
||||
extern PFN_vkResetEvent vkResetEvent;
|
||||
extern PFN_vkResetFences vkResetFences;
|
||||
extern PFN_vkSetEvent vkSetEvent;
|
||||
extern PFN_vkUnmapMemory vkUnmapMemory;
|
||||
extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
|
||||
extern PFN_vkWaitForFences vkWaitForFences;
|
||||
#endif // defined(VK_VERSION_1_0)
|
||||
#if defined(VK_VERSION_1_1)
|
||||
extern PFN_vkBindBufferMemory2 vkBindBufferMemory2;
|
||||
extern PFN_vkBindImageMemory2 vkBindImageMemory2;
|
||||
extern PFN_vkCmdDispatchBase vkCmdDispatchBase;
|
||||
extern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;
|
||||
extern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;
|
||||
extern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;
|
||||
extern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;
|
||||
extern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;
|
||||
extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
|
||||
extern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;
|
||||
extern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;
|
||||
extern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;
|
||||
extern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;
|
||||
extern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;
|
||||
extern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;
|
||||
extern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;
|
||||
extern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;
|
||||
extern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;
|
||||
extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;
|
||||
extern PFN_vkTrimCommandPool vkTrimCommandPool;
|
||||
extern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;
|
||||
#endif // defined(VK_VERSION_1_1)
|
||||
#if defined(VK_VERSION_1_2)
|
||||
extern PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2;
|
||||
extern PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount;
|
||||
extern PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount;
|
||||
extern PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2;
|
||||
extern PFN_vkCmdNextSubpass2 vkCmdNextSubpass2;
|
||||
extern PFN_vkCreateRenderPass2 vkCreateRenderPass2;
|
||||
extern PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;
|
||||
extern PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress;
|
||||
extern PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress;
|
||||
extern PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue;
|
||||
extern PFN_vkResetQueryPool vkResetQueryPool;
|
||||
extern PFN_vkSignalSemaphore vkSignalSemaphore;
|
||||
extern PFN_vkWaitSemaphores vkWaitSemaphores;
|
||||
#endif // defined(VK_VERSION_1_2)
|
||||
#if defined(VK_VERSION_1_3)
|
||||
extern PFN_vkCmdBeginRendering vkCmdBeginRendering;
|
||||
extern PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2;
|
||||
extern PFN_vkCmdBlitImage2 vkCmdBlitImage2;
|
||||
extern PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2;
|
||||
extern PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2;
|
||||
extern PFN_vkCmdCopyImage2 vkCmdCopyImage2;
|
||||
extern PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2;
|
||||
extern PFN_vkCmdEndRendering vkCmdEndRendering;
|
||||
extern PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2;
|
||||
extern PFN_vkCmdResetEvent2 vkCmdResetEvent2;
|
||||
extern PFN_vkCmdResolveImage2 vkCmdResolveImage2;
|
||||
extern PFN_vkCmdSetCullMode vkCmdSetCullMode;
|
||||
extern PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable;
|
||||
extern PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable;
|
||||
extern PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp;
|
||||
extern PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable;
|
||||
extern PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable;
|
||||
extern PFN_vkCmdSetEvent2 vkCmdSetEvent2;
|
||||
extern PFN_vkCmdSetFrontFace vkCmdSetFrontFace;
|
||||
extern PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable;
|
||||
extern PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology;
|
||||
extern PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable;
|
||||
extern PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount;
|
||||
extern PFN_vkCmdSetStencilOp vkCmdSetStencilOp;
|
||||
extern PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable;
|
||||
extern PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount;
|
||||
extern PFN_vkCmdWaitEvents2 vkCmdWaitEvents2;
|
||||
extern PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2;
|
||||
extern PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot;
|
||||
extern PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot;
|
||||
extern PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements;
|
||||
extern PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements;
|
||||
extern PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements;
|
||||
extern PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties;
|
||||
extern PFN_vkGetPrivateData vkGetPrivateData;
|
||||
extern PFN_vkQueueSubmit2 vkQueueSubmit2;
|
||||
extern PFN_vkSetPrivateData vkSetPrivateData;
|
||||
#endif // defined(VK_VERSION_1_3)
|
||||
#if defined(VK_AMD_buffer_marker)
|
||||
extern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
|
||||
#endif // defined(VK_AMD_buffer_marker)
|
||||
#if defined(VK_AMD_display_native_hdr)
|
||||
extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;
|
||||
#endif // defined(VK_AMD_display_native_hdr)
|
||||
#if defined(VK_AMD_draw_indirect_count)
|
||||
extern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;
|
||||
extern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;
|
||||
#endif // defined(VK_AMD_draw_indirect_count)
|
||||
#if defined(VK_AMD_shader_info)
|
||||
extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
|
||||
#endif // defined(VK_AMD_shader_info)
|
||||
#if defined(VK_ANDROID_external_memory_android_hardware_buffer)
|
||||
extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif // defined(VK_ANDROID_external_memory_android_hardware_buffer)
|
||||
#if defined(VK_ANDROID_native_buffer)
|
||||
extern PFN_vkAcquireImageANDROID vkAcquireImageANDROID;
|
||||
extern PFN_vkGetSwapchainGrallocUsage2ANDROID vkGetSwapchainGrallocUsage2ANDROID;
|
||||
extern PFN_vkGetSwapchainGrallocUsageANDROID vkGetSwapchainGrallocUsageANDROID;
|
||||
extern PFN_vkQueueSignalReleaseImageANDROID vkQueueSignalReleaseImageANDROID;
|
||||
#endif // defined(VK_ANDROID_native_buffer)
|
||||
#if defined(VK_EXT_acquire_drm_display)
|
||||
extern PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;
|
||||
extern PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;
|
||||
#endif // defined(VK_EXT_acquire_drm_display)
|
||||
#if defined(VK_EXT_acquire_xlib_display)
|
||||
extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
|
||||
extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
|
||||
#endif // defined(VK_EXT_acquire_xlib_display)
|
||||
#if defined(VK_EXT_buffer_device_address)
|
||||
extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;
|
||||
#endif // defined(VK_EXT_buffer_device_address)
|
||||
#if defined(VK_EXT_calibrated_timestamps)
|
||||
extern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;
|
||||
extern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
|
||||
#endif // defined(VK_EXT_calibrated_timestamps)
|
||||
#if defined(VK_EXT_color_write_enable)
|
||||
extern PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT;
|
||||
#endif // defined(VK_EXT_color_write_enable)
|
||||
#if defined(VK_EXT_conditional_rendering)
|
||||
extern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;
|
||||
extern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;
|
||||
#endif // defined(VK_EXT_conditional_rendering)
|
||||
#if defined(VK_EXT_debug_marker)
|
||||
extern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;
|
||||
extern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;
|
||||
extern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;
|
||||
extern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;
|
||||
extern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;
|
||||
#endif // defined(VK_EXT_debug_marker)
|
||||
#if defined(VK_EXT_debug_report)
|
||||
extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
|
||||
extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
|
||||
extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
|
||||
#endif // defined(VK_EXT_debug_report)
|
||||
#if defined(VK_EXT_debug_utils)
|
||||
extern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;
|
||||
extern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;
|
||||
extern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;
|
||||
extern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
|
||||
extern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
|
||||
extern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;
|
||||
extern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;
|
||||
extern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;
|
||||
extern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;
|
||||
extern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;
|
||||
extern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;
|
||||
#endif // defined(VK_EXT_debug_utils)
|
||||
#if defined(VK_EXT_direct_mode_display)
|
||||
extern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;
|
||||
#endif // defined(VK_EXT_direct_mode_display)
|
||||
#if defined(VK_EXT_directfb_surface)
|
||||
extern PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT;
|
||||
extern PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT;
|
||||
#endif // defined(VK_EXT_directfb_surface)
|
||||
#if defined(VK_EXT_discard_rectangles)
|
||||
extern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;
|
||||
#endif // defined(VK_EXT_discard_rectangles)
|
||||
#if defined(VK_EXT_display_control)
|
||||
extern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;
|
||||
extern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;
|
||||
extern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;
|
||||
extern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;
|
||||
#endif // defined(VK_EXT_display_control)
|
||||
#if defined(VK_EXT_display_surface_counter)
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;
|
||||
#endif // defined(VK_EXT_display_surface_counter)
|
||||
#if defined(VK_EXT_extended_dynamic_state)
|
||||
extern PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT;
|
||||
extern PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT;
|
||||
extern PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT;
|
||||
extern PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT;
|
||||
extern PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT;
|
||||
extern PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT;
|
||||
extern PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT;
|
||||
extern PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT;
|
||||
extern PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT;
|
||||
extern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
|
||||
extern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
|
||||
extern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;
|
||||
#endif // defined(VK_EXT_extended_dynamic_state)
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
extern PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;
|
||||
extern PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;
|
||||
extern PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;
|
||||
extern PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;
|
||||
extern PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;
|
||||
#endif // defined(VK_EXT_extended_dynamic_state2)
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
#endif // defined(VK_EXT_external_memory_host)
|
||||
#if defined(VK_EXT_full_screen_exclusive)
|
||||
extern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;
|
||||
extern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;
|
||||
extern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;
|
||||
#endif // defined(VK_EXT_full_screen_exclusive)
|
||||
#if defined(VK_EXT_hdr_metadata)
|
||||
extern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;
|
||||
#endif // defined(VK_EXT_hdr_metadata)
|
||||
#if defined(VK_EXT_headless_surface)
|
||||
extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;
|
||||
#endif // defined(VK_EXT_headless_surface)
|
||||
#if defined(VK_EXT_host_query_reset)
|
||||
extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;
|
||||
#endif // defined(VK_EXT_host_query_reset)
|
||||
#if defined(VK_EXT_image_compression_control)
|
||||
extern PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT;
|
||||
#endif // defined(VK_EXT_image_compression_control)
|
||||
#if defined(VK_EXT_image_drm_format_modifier)
|
||||
extern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;
|
||||
#endif // defined(VK_EXT_image_drm_format_modifier)
|
||||
#if defined(VK_EXT_line_rasterization)
|
||||
extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
#endif // defined(VK_EXT_line_rasterization)
|
||||
#if defined(VK_EXT_metal_objects)
|
||||
extern PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT;
|
||||
#endif // defined(VK_EXT_metal_objects)
|
||||
#if defined(VK_EXT_metal_surface)
|
||||
extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
#endif // defined(VK_EXT_metal_surface)
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
extern PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;
|
||||
extern PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;
|
||||
#endif // defined(VK_EXT_multi_draw)
|
||||
#if defined(VK_EXT_pageable_device_local_memory)
|
||||
extern PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT;
|
||||
#endif // defined(VK_EXT_pageable_device_local_memory)
|
||||
#if defined(VK_EXT_pipeline_properties)
|
||||
extern PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT;
|
||||
#endif // defined(VK_EXT_pipeline_properties)
|
||||
#if defined(VK_EXT_private_data)
|
||||
extern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;
|
||||
extern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;
|
||||
extern PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT;
|
||||
extern PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT;
|
||||
#endif // defined(VK_EXT_private_data)
|
||||
#if defined(VK_EXT_sample_locations)
|
||||
extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
|
||||
extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
|
||||
#endif // defined(VK_EXT_sample_locations)
|
||||
#if defined(VK_EXT_tooling_info)
|
||||
extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
|
||||
#endif // defined(VK_EXT_tooling_info)
|
||||
#if defined(VK_EXT_transform_feedback)
|
||||
extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
|
||||
extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
|
||||
extern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;
|
||||
extern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;
|
||||
extern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;
|
||||
extern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;
|
||||
#endif // defined(VK_EXT_transform_feedback)
|
||||
#if defined(VK_EXT_validation_cache)
|
||||
extern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;
|
||||
extern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;
|
||||
extern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;
|
||||
extern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;
|
||||
#endif // defined(VK_EXT_validation_cache)
|
||||
#if defined(VK_EXT_vertex_input_dynamic_state)
|
||||
extern PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT;
|
||||
#endif // defined(VK_EXT_vertex_input_dynamic_state)
|
||||
#if defined(VK_FUCHSIA_buffer_collection)
|
||||
extern PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA;
|
||||
extern PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA;
|
||||
extern PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA;
|
||||
extern PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA;
|
||||
extern PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_buffer_collection)
|
||||
#if defined(VK_FUCHSIA_external_memory)
|
||||
extern PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA;
|
||||
extern PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_external_memory)
|
||||
#if defined(VK_FUCHSIA_external_semaphore)
|
||||
extern PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA;
|
||||
extern PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_external_semaphore)
|
||||
#if defined(VK_FUCHSIA_imagepipe_surface)
|
||||
extern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_imagepipe_surface)
|
||||
#if defined(VK_GGP_stream_descriptor_surface)
|
||||
extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;
|
||||
#endif // defined(VK_GGP_stream_descriptor_surface)
|
||||
#if defined(VK_GOOGLE_display_timing)
|
||||
extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
|
||||
extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
|
||||
#endif // defined(VK_GOOGLE_display_timing)
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
extern PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;
|
||||
#endif // defined(VK_HUAWEI_invocation_mask)
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
extern PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;
|
||||
extern PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
||||
#endif // defined(VK_HUAWEI_subpass_shading)
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;
|
||||
extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;
|
||||
extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;
|
||||
extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;
|
||||
extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;
|
||||
extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;
|
||||
extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;
|
||||
#endif // defined(VK_INTEL_performance_query)
|
||||
#if defined(VK_KHR_acceleration_structure)
|
||||
extern PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;
|
||||
extern PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR;
|
||||
extern PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;
|
||||
extern PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR;
|
||||
extern PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR;
|
||||
extern PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR;
|
||||
extern PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR;
|
||||
extern PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR;
|
||||
extern PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR;
|
||||
extern PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR;
|
||||
extern PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;
|
||||
extern PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;
|
||||
extern PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;
|
||||
extern PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;
|
||||
extern PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR;
|
||||
extern PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR;
|
||||
#endif // defined(VK_KHR_acceleration_structure)
|
||||
#if defined(VK_KHR_android_surface)
|
||||
extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
|
||||
#endif // defined(VK_KHR_android_surface)
|
||||
#if defined(VK_KHR_bind_memory2)
|
||||
extern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;
|
||||
extern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;
|
||||
#endif // defined(VK_KHR_bind_memory2)
|
||||
#if defined(VK_KHR_buffer_device_address)
|
||||
extern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;
|
||||
extern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;
|
||||
extern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;
|
||||
#endif // defined(VK_KHR_buffer_device_address)
|
||||
#if defined(VK_KHR_copy_commands2)
|
||||
extern PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR;
|
||||
extern PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR;
|
||||
extern PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR;
|
||||
extern PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR;
|
||||
extern PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR;
|
||||
extern PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR;
|
||||
#endif // defined(VK_KHR_copy_commands2)
|
||||
#if defined(VK_KHR_create_renderpass2)
|
||||
extern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;
|
||||
extern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;
|
||||
extern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;
|
||||
extern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;
|
||||
#endif // defined(VK_KHR_create_renderpass2)
|
||||
#if defined(VK_KHR_deferred_host_operations)
|
||||
extern PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR;
|
||||
extern PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR;
|
||||
extern PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR;
|
||||
extern PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR;
|
||||
extern PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR;
|
||||
#endif // defined(VK_KHR_deferred_host_operations)
|
||||
#if defined(VK_KHR_descriptor_update_template)
|
||||
extern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;
|
||||
extern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;
|
||||
extern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;
|
||||
#endif // defined(VK_KHR_descriptor_update_template)
|
||||
#if defined(VK_KHR_device_group)
|
||||
extern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;
|
||||
extern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;
|
||||
extern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;
|
||||
#endif // defined(VK_KHR_device_group)
|
||||
#if defined(VK_KHR_device_group_creation)
|
||||
extern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;
|
||||
#endif // defined(VK_KHR_device_group_creation)
|
||||
#if defined(VK_KHR_display)
|
||||
extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;
|
||||
extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
|
||||
extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;
|
||||
extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
|
||||
extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;
|
||||
#endif // defined(VK_KHR_display)
|
||||
#if defined(VK_KHR_display_swapchain)
|
||||
extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
|
||||
#endif // defined(VK_KHR_display_swapchain)
|
||||
#if defined(VK_KHR_draw_indirect_count)
|
||||
extern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;
|
||||
extern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;
|
||||
#endif // defined(VK_KHR_draw_indirect_count)
|
||||
#if defined(VK_KHR_dynamic_rendering)
|
||||
extern PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;
|
||||
extern PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;
|
||||
#endif // defined(VK_KHR_dynamic_rendering)
|
||||
#if defined(VK_KHR_external_fence_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_fence_capabilities)
|
||||
#if defined(VK_KHR_external_fence_fd)
|
||||
extern PFN_vkGetFenceFdKHR vkGetFenceFdKHR;
|
||||
extern PFN_vkImportFenceFdKHR vkImportFenceFdKHR;
|
||||
#endif // defined(VK_KHR_external_fence_fd)
|
||||
#if defined(VK_KHR_external_fence_win32)
|
||||
extern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;
|
||||
extern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;
|
||||
#endif // defined(VK_KHR_external_fence_win32)
|
||||
#if defined(VK_KHR_external_memory_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_capabilities)
|
||||
#if defined(VK_KHR_external_memory_fd)
|
||||
extern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;
|
||||
extern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_fd)
|
||||
#if defined(VK_KHR_external_memory_win32)
|
||||
extern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;
|
||||
extern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_win32)
|
||||
#if defined(VK_KHR_external_semaphore_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_capabilities)
|
||||
#if defined(VK_KHR_external_semaphore_fd)
|
||||
extern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;
|
||||
extern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_fd)
|
||||
#if defined(VK_KHR_external_semaphore_win32)
|
||||
extern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;
|
||||
extern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_win32)
|
||||
#if defined(VK_KHR_fragment_shading_rate)
|
||||
extern PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR;
|
||||
extern PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR;
|
||||
#endif // defined(VK_KHR_fragment_shading_rate)
|
||||
#if defined(VK_KHR_get_display_properties2)
|
||||
extern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;
|
||||
extern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;
|
||||
#endif // defined(VK_KHR_get_display_properties2)
|
||||
#if defined(VK_KHR_get_memory_requirements2)
|
||||
extern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;
|
||||
extern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;
|
||||
#endif // defined(VK_KHR_get_memory_requirements2)
|
||||
#if defined(VK_KHR_get_physical_device_properties2)
|
||||
extern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
|
||||
#endif // defined(VK_KHR_get_physical_device_properties2)
|
||||
#if defined(VK_KHR_get_surface_capabilities2)
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;
|
||||
#endif // defined(VK_KHR_get_surface_capabilities2)
|
||||
#if defined(VK_KHR_maintenance1)
|
||||
extern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;
|
||||
#endif // defined(VK_KHR_maintenance1)
|
||||
#if defined(VK_KHR_maintenance3)
|
||||
extern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;
|
||||
#endif // defined(VK_KHR_maintenance3)
|
||||
#if defined(VK_KHR_maintenance4)
|
||||
extern PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR;
|
||||
extern PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR;
|
||||
extern PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR;
|
||||
#endif // defined(VK_KHR_maintenance4)
|
||||
#if defined(VK_KHR_performance_query)
|
||||
extern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;
|
||||
extern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
|
||||
extern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;
|
||||
#endif // defined(VK_KHR_performance_query)
|
||||
#if defined(VK_KHR_pipeline_executable_properties)
|
||||
extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;
|
||||
extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
#endif // defined(VK_KHR_pipeline_executable_properties)
|
||||
#if defined(VK_KHR_present_wait)
|
||||
extern PFN_vkWaitForPresentKHR vkWaitForPresentKHR;
|
||||
#endif // defined(VK_KHR_present_wait)
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
|
||||
#endif // defined(VK_KHR_push_descriptor)
|
||||
#if (defined(VK_KHR_ray_tracing_maintenance1) && defined(VK_KHR_ray_tracing_pipeline))
|
||||
extern PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR;
|
||||
#endif // (defined(VK_KHR_ray_tracing_maintenance1) && defined(VK_KHR_ray_tracing_pipeline))
|
||||
#if defined(VK_KHR_ray_tracing_pipeline)
|
||||
extern PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR;
|
||||
extern PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR;
|
||||
extern PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;
|
||||
extern PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;
|
||||
extern PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
|
||||
extern PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;
|
||||
extern PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR;
|
||||
#endif // defined(VK_KHR_ray_tracing_pipeline)
|
||||
#if defined(VK_KHR_sampler_ycbcr_conversion)
|
||||
extern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;
|
||||
extern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;
|
||||
#endif // defined(VK_KHR_sampler_ycbcr_conversion)
|
||||
#if defined(VK_KHR_shared_presentable_image)
|
||||
extern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;
|
||||
#endif // defined(VK_KHR_shared_presentable_image)
|
||||
#if defined(VK_KHR_surface)
|
||||
extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
|
||||
#endif // defined(VK_KHR_surface)
|
||||
#if defined(VK_KHR_swapchain)
|
||||
extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
|
||||
extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
|
||||
extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
|
||||
extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
|
||||
extern PFN_vkQueuePresentKHR vkQueuePresentKHR;
|
||||
#endif // defined(VK_KHR_swapchain)
|
||||
#if defined(VK_KHR_synchronization2)
|
||||
extern PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;
|
||||
extern PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR;
|
||||
extern PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR;
|
||||
extern PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR;
|
||||
extern PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR;
|
||||
extern PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;
|
||||
#endif // defined(VK_KHR_synchronization2)
|
||||
#if (defined(VK_KHR_synchronization2) && defined(VK_AMD_buffer_marker))
|
||||
extern PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD;
|
||||
#endif // (defined(VK_KHR_synchronization2) && defined(VK_AMD_buffer_marker))
|
||||
#if (defined(VK_KHR_synchronization2) && defined(VK_NV_device_diagnostic_checkpoints))
|
||||
extern PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV;
|
||||
#endif // (defined(VK_KHR_synchronization2) && defined(VK_NV_device_diagnostic_checkpoints))
|
||||
#if defined(VK_KHR_timeline_semaphore)
|
||||
extern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;
|
||||
extern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;
|
||||
extern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;
|
||||
#endif // defined(VK_KHR_timeline_semaphore)
|
||||
#if defined(VK_KHR_video_decode_queue)
|
||||
extern PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR;
|
||||
#endif // defined(VK_KHR_video_decode_queue)
|
||||
#if defined(VK_KHR_video_encode_queue)
|
||||
extern PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR;
|
||||
#endif // defined(VK_KHR_video_encode_queue)
|
||||
#if defined(VK_KHR_video_queue)
|
||||
extern PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR;
|
||||
extern PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR;
|
||||
extern PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR;
|
||||
extern PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR;
|
||||
extern PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR;
|
||||
extern PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR;
|
||||
extern PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR;
|
||||
extern PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR;
|
||||
extern PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR;
|
||||
extern PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;
|
||||
extern PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;
|
||||
#endif // defined(VK_KHR_video_queue)
|
||||
#if defined(VK_KHR_wayland_surface)
|
||||
extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_wayland_surface)
|
||||
#if defined(VK_KHR_win32_surface)
|
||||
extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_win32_surface)
|
||||
#if defined(VK_KHR_xcb_surface)
|
||||
extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_xcb_surface)
|
||||
#if defined(VK_KHR_xlib_surface)
|
||||
extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_xlib_surface)
|
||||
#if defined(VK_MVK_ios_surface)
|
||||
extern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;
|
||||
#endif // defined(VK_MVK_ios_surface)
|
||||
#if defined(VK_MVK_macos_surface)
|
||||
extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
|
||||
#endif // defined(VK_MVK_macos_surface)
|
||||
#if defined(VK_NN_vi_surface)
|
||||
extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
|
||||
#endif // defined(VK_NN_vi_surface)
|
||||
#if defined(VK_NVX_binary_import)
|
||||
extern PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;
|
||||
extern PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;
|
||||
extern PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;
|
||||
extern PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;
|
||||
extern PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;
|
||||
#endif // defined(VK_NVX_binary_import)
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
extern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;
|
||||
extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
#endif // defined(VK_NVX_image_view_handle)
|
||||
#if defined(VK_NV_acquire_winrt_display)
|
||||
extern PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV;
|
||||
extern PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV;
|
||||
#endif // defined(VK_NV_acquire_winrt_display)
|
||||
#if defined(VK_NV_clip_space_w_scaling)
|
||||
extern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;
|
||||
#endif // defined(VK_NV_clip_space_w_scaling)
|
||||
#if defined(VK_NV_cooperative_matrix)
|
||||
extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
||||
#endif // defined(VK_NV_cooperative_matrix)
|
||||
#if defined(VK_NV_coverage_reduction_mode)
|
||||
extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
|
||||
#endif // defined(VK_NV_coverage_reduction_mode)
|
||||
#if defined(VK_NV_device_diagnostic_checkpoints)
|
||||
extern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
|
||||
extern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
|
||||
#endif // defined(VK_NV_device_diagnostic_checkpoints)
|
||||
#if defined(VK_NV_device_generated_commands)
|
||||
extern PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV;
|
||||
extern PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV;
|
||||
extern PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV;
|
||||
extern PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV;
|
||||
extern PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;
|
||||
extern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;
|
||||
#endif // defined(VK_NV_device_generated_commands)
|
||||
#if defined(VK_NV_external_memory_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#endif // defined(VK_NV_external_memory_capabilities)
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
extern PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;
|
||||
#endif // defined(VK_NV_external_memory_rdma)
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
|
||||
#endif // defined(VK_NV_external_memory_win32)
|
||||
#if defined(VK_NV_fragment_shading_rate_enums)
|
||||
extern PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV;
|
||||
#endif // defined(VK_NV_fragment_shading_rate_enums)
|
||||
#if defined(VK_NV_mesh_shader)
|
||||
extern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;
|
||||
extern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;
|
||||
extern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;
|
||||
#endif // defined(VK_NV_mesh_shader)
|
||||
#if defined(VK_NV_ray_tracing)
|
||||
extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
|
||||
extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
|
||||
extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
|
||||
extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
|
||||
extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
extern PFN_vkCompileDeferredNV vkCompileDeferredNV;
|
||||
extern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;
|
||||
extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
|
||||
extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
|
||||
extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
|
||||
extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
|
||||
#endif // defined(VK_NV_ray_tracing)
|
||||
#if defined(VK_NV_scissor_exclusive)
|
||||
extern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;
|
||||
#endif // defined(VK_NV_scissor_exclusive)
|
||||
#if defined(VK_NV_shading_rate_image)
|
||||
extern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;
|
||||
extern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;
|
||||
extern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;
|
||||
#endif // defined(VK_NV_shading_rate_image)
|
||||
#if defined(VK_QNX_screen_surface)
|
||||
extern PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX;
|
||||
extern PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX;
|
||||
#endif // defined(VK_QNX_screen_surface)
|
||||
#if defined(VK_VALVE_descriptor_set_host_mapping)
|
||||
extern PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE;
|
||||
extern PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE;
|
||||
#endif // defined(VK_VALVE_descriptor_set_host_mapping)
|
||||
#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;
|
||||
#endif // (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
|
||||
#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template))
|
||||
extern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;
|
||||
#endif // (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template))
|
||||
#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;
|
||||
extern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;
|
||||
extern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;
|
||||
#endif // (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;
|
||||
#endif // (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
|
||||
} // namespace bluevk
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
#include <utils/Log.h>
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageLayout& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAttachmentLoadOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAttachmentStoreOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageTiling& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageViewType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCommandBufferLevel& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkComponentSwizzle& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDescriptorType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueryType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBorderColor& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineBindPoint& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineCacheHeaderVersion& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPrimitiveTopology& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSharingMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkIndexType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFilter& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerMipmapMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerAddressMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCompareOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPolygonMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFrontFace& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendFactor& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkStencilOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkLogicOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkInternalAllocationType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSystemAllocationScope& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPhysicalDeviceType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkVertexInputRate& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFormat& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkStructureType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSubpassContents& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkResult& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDynamicState& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDescriptorUpdateTemplateType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkObjectType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSemaphoreType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPresentModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkColorSpaceKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkTimeDomainEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDebugReportObjectTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDeviceMemoryReportEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkRasterizationOrderAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationCheckEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationFeatureEnableEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationFeatureDisableEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkIndirectCommandsTokenTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDisplayPowerStateEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDeviceEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDisplayEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkViewportCoordinateSwizzleNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDiscardRectangleModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPointClippingBehavior& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerReductionMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkTessellationDomainOrigin& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerYcbcrModelConversion& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerYcbcrRange& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkChromaLocation& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendOverlapEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoverageModulationModeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoverageReductionModeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationCacheHeaderVersionEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderInfoTypeAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueueGlobalPriorityKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkConservativeRasterizationModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkVendorId& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDriverId& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShadingRatePaletteEntryNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoarseSampleOrderTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCopyAccelerationStructureModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBuildAccelerationStructureModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkGeometryTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureMemoryRequirementsTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureBuildTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkRayTracingShaderGroupTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureCompatibilityKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderGroupShaderKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkMemoryOverallocationBehaviorAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkScopeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkComponentTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterScopeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterUnitKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterStorageKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceConfigurationTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueryPoolSamplingModeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceOverrideTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceParameterTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceValueTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderFloatControlsIndependence& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineExecutableStatisticFormatKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkLineRasterizationModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateCombinerOpKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSubpassMergeStatusEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkProvokingVertexModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureMotionInstanceTypeNV& value);
|
||||
#endif
|
||||
|
||||
#endif // TNT_FILAMENT_BLUEVK_H
|
||||
@@ -0,0 +1,310 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H264STD_H_
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h264std 1
|
||||
#include <stdint.h>
|
||||
#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32
|
||||
#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6
|
||||
#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16
|
||||
#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 6
|
||||
#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64
|
||||
#define STD_VIDEO_H264_MAX_NUM_LIST_REF 32
|
||||
#define STD_VIDEO_H264_MAX_CHROMA_PLANES 2
|
||||
|
||||
typedef enum StdVideoH264ChromaFormatIdc {
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME = 0,
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_420 = 1,
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_422 = 2,
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_444 = 3,
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264ChromaFormatIdc;
|
||||
|
||||
typedef enum StdVideoH264ProfileIdc {
|
||||
STD_VIDEO_H264_PROFILE_IDC_BASELINE = 66,
|
||||
STD_VIDEO_H264_PROFILE_IDC_MAIN = 77,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH = 100,
|
||||
STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE = 244,
|
||||
STD_VIDEO_H264_PROFILE_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264ProfileIdc;
|
||||
|
||||
typedef enum StdVideoH264LevelIdc {
|
||||
STD_VIDEO_H264_LEVEL_IDC_1_0 = 0,
|
||||
STD_VIDEO_H264_LEVEL_IDC_1_1 = 1,
|
||||
STD_VIDEO_H264_LEVEL_IDC_1_2 = 2,
|
||||
STD_VIDEO_H264_LEVEL_IDC_1_3 = 3,
|
||||
STD_VIDEO_H264_LEVEL_IDC_2_0 = 4,
|
||||
STD_VIDEO_H264_LEVEL_IDC_2_1 = 5,
|
||||
STD_VIDEO_H264_LEVEL_IDC_2_2 = 6,
|
||||
STD_VIDEO_H264_LEVEL_IDC_3_0 = 7,
|
||||
STD_VIDEO_H264_LEVEL_IDC_3_1 = 8,
|
||||
STD_VIDEO_H264_LEVEL_IDC_3_2 = 9,
|
||||
STD_VIDEO_H264_LEVEL_IDC_4_0 = 10,
|
||||
STD_VIDEO_H264_LEVEL_IDC_4_1 = 11,
|
||||
STD_VIDEO_H264_LEVEL_IDC_4_2 = 12,
|
||||
STD_VIDEO_H264_LEVEL_IDC_5_0 = 13,
|
||||
STD_VIDEO_H264_LEVEL_IDC_5_1 = 14,
|
||||
STD_VIDEO_H264_LEVEL_IDC_5_2 = 15,
|
||||
STD_VIDEO_H264_LEVEL_IDC_6_0 = 16,
|
||||
STD_VIDEO_H264_LEVEL_IDC_6_1 = 17,
|
||||
STD_VIDEO_H264_LEVEL_IDC_6_2 = 18,
|
||||
STD_VIDEO_H264_LEVEL_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264LevelIdc;
|
||||
|
||||
typedef enum StdVideoH264PocType {
|
||||
STD_VIDEO_H264_POC_TYPE_0 = 0,
|
||||
STD_VIDEO_H264_POC_TYPE_1 = 1,
|
||||
STD_VIDEO_H264_POC_TYPE_2 = 2,
|
||||
STD_VIDEO_H264_POC_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264PocType;
|
||||
|
||||
typedef enum StdVideoH264AspectRatioIdc {
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE = 1,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11 = 2,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11 = 3,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11 = 4,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33 = 5,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11 = 6,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11 = 7,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11 = 8,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33 = 9,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11 = 10,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11 = 11,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33 = 12,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99 = 13,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3 = 14,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2 = 15,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1 = 16,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264AspectRatioIdc;
|
||||
|
||||
typedef enum StdVideoH264WeightedBipredIdc {
|
||||
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0,
|
||||
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1,
|
||||
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2,
|
||||
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264WeightedBipredIdc;
|
||||
|
||||
typedef enum StdVideoH264ModificationOfPicNumsIdc {
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT = 0,
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD = 1,
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM = 2,
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END = 3,
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264ModificationOfPicNumsIdc;
|
||||
|
||||
typedef enum StdVideoH264MemMgmtControlOp {
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END = 0,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM = 1,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM = 2,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM = 3,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX = 4,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL = 5,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM = 6,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264MemMgmtControlOp;
|
||||
|
||||
typedef enum StdVideoH264CabacInitIdc {
|
||||
STD_VIDEO_H264_CABAC_INIT_IDC_0 = 0,
|
||||
STD_VIDEO_H264_CABAC_INIT_IDC_1 = 1,
|
||||
STD_VIDEO_H264_CABAC_INIT_IDC_2 = 2,
|
||||
STD_VIDEO_H264_CABAC_INIT_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264CabacInitIdc;
|
||||
|
||||
typedef enum StdVideoH264DisableDeblockingFilterIdc {
|
||||
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED = 0,
|
||||
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED = 1,
|
||||
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL = 2,
|
||||
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264DisableDeblockingFilterIdc;
|
||||
|
||||
typedef enum StdVideoH264SliceType {
|
||||
STD_VIDEO_H264_SLICE_TYPE_P = 0,
|
||||
STD_VIDEO_H264_SLICE_TYPE_B = 1,
|
||||
STD_VIDEO_H264_SLICE_TYPE_I = 2,
|
||||
STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264SliceType;
|
||||
|
||||
typedef enum StdVideoH264PictureType {
|
||||
STD_VIDEO_H264_PICTURE_TYPE_P = 0,
|
||||
STD_VIDEO_H264_PICTURE_TYPE_B = 1,
|
||||
STD_VIDEO_H264_PICTURE_TYPE_I = 2,
|
||||
STD_VIDEO_H264_PICTURE_TYPE_IDR = 5,
|
||||
STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264PictureType;
|
||||
|
||||
typedef enum StdVideoH264NonVclNaluType {
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS = 0,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS = 1,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD = 2,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX = 3,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE = 4,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM = 5,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED = 6,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH264NonVclNaluType;
|
||||
typedef struct StdVideoH264SpsVuiFlags {
|
||||
uint32_t aspect_ratio_info_present_flag : 1;
|
||||
uint32_t overscan_info_present_flag : 1;
|
||||
uint32_t overscan_appropriate_flag : 1;
|
||||
uint32_t video_signal_type_present_flag : 1;
|
||||
uint32_t video_full_range_flag : 1;
|
||||
uint32_t color_description_present_flag : 1;
|
||||
uint32_t chroma_loc_info_present_flag : 1;
|
||||
uint32_t timing_info_present_flag : 1;
|
||||
uint32_t fixed_frame_rate_flag : 1;
|
||||
uint32_t bitstream_restriction_flag : 1;
|
||||
uint32_t nal_hrd_parameters_present_flag : 1;
|
||||
uint32_t vcl_hrd_parameters_present_flag : 1;
|
||||
} StdVideoH264SpsVuiFlags;
|
||||
|
||||
typedef struct StdVideoH264HrdParameters {
|
||||
uint8_t cpb_cnt_minus1;
|
||||
uint8_t bit_rate_scale;
|
||||
uint8_t cpb_size_scale;
|
||||
uint8_t reserved1;
|
||||
uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||
uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||
uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE];
|
||||
uint32_t initial_cpb_removal_delay_length_minus1;
|
||||
uint32_t cpb_removal_delay_length_minus1;
|
||||
uint32_t dpb_output_delay_length_minus1;
|
||||
uint32_t time_offset_length;
|
||||
} StdVideoH264HrdParameters;
|
||||
|
||||
typedef struct StdVideoH264SequenceParameterSetVui {
|
||||
StdVideoH264SpsVuiFlags flags;
|
||||
StdVideoH264AspectRatioIdc aspect_ratio_idc;
|
||||
uint16_t sar_width;
|
||||
uint16_t sar_height;
|
||||
uint8_t video_format;
|
||||
uint8_t colour_primaries;
|
||||
uint8_t transfer_characteristics;
|
||||
uint8_t matrix_coefficients;
|
||||
uint32_t num_units_in_tick;
|
||||
uint32_t time_scale;
|
||||
uint8_t max_num_reorder_frames;
|
||||
uint8_t max_dec_frame_buffering;
|
||||
uint8_t chroma_sample_loc_type_top_field;
|
||||
uint8_t chroma_sample_loc_type_bottom_field;
|
||||
uint32_t reserved1;
|
||||
const StdVideoH264HrdParameters* pHrdParameters;
|
||||
} StdVideoH264SequenceParameterSetVui;
|
||||
|
||||
typedef struct StdVideoH264SpsFlags {
|
||||
uint32_t constraint_set0_flag : 1;
|
||||
uint32_t constraint_set1_flag : 1;
|
||||
uint32_t constraint_set2_flag : 1;
|
||||
uint32_t constraint_set3_flag : 1;
|
||||
uint32_t constraint_set4_flag : 1;
|
||||
uint32_t constraint_set5_flag : 1;
|
||||
uint32_t direct_8x8_inference_flag : 1;
|
||||
uint32_t mb_adaptive_frame_field_flag : 1;
|
||||
uint32_t frame_mbs_only_flag : 1;
|
||||
uint32_t delta_pic_order_always_zero_flag : 1;
|
||||
uint32_t separate_colour_plane_flag : 1;
|
||||
uint32_t gaps_in_frame_num_value_allowed_flag : 1;
|
||||
uint32_t qpprime_y_zero_transform_bypass_flag : 1;
|
||||
uint32_t frame_cropping_flag : 1;
|
||||
uint32_t seq_scaling_matrix_present_flag : 1;
|
||||
uint32_t vui_parameters_present_flag : 1;
|
||||
} StdVideoH264SpsFlags;
|
||||
|
||||
typedef struct StdVideoH264ScalingLists {
|
||||
uint16_t scaling_list_present_mask;
|
||||
uint16_t use_default_scaling_matrix_mask;
|
||||
uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS];
|
||||
uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS];
|
||||
} StdVideoH264ScalingLists;
|
||||
|
||||
typedef struct StdVideoH264SequenceParameterSet {
|
||||
StdVideoH264SpsFlags flags;
|
||||
StdVideoH264ProfileIdc profile_idc;
|
||||
StdVideoH264LevelIdc level_idc;
|
||||
StdVideoH264ChromaFormatIdc chroma_format_idc;
|
||||
uint8_t seq_parameter_set_id;
|
||||
uint8_t bit_depth_luma_minus8;
|
||||
uint8_t bit_depth_chroma_minus8;
|
||||
uint8_t log2_max_frame_num_minus4;
|
||||
StdVideoH264PocType pic_order_cnt_type;
|
||||
int32_t offset_for_non_ref_pic;
|
||||
int32_t offset_for_top_to_bottom_field;
|
||||
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||
uint8_t num_ref_frames_in_pic_order_cnt_cycle;
|
||||
uint8_t max_num_ref_frames;
|
||||
uint8_t reserved1;
|
||||
uint32_t pic_width_in_mbs_minus1;
|
||||
uint32_t pic_height_in_map_units_minus1;
|
||||
uint32_t frame_crop_left_offset;
|
||||
uint32_t frame_crop_right_offset;
|
||||
uint32_t frame_crop_top_offset;
|
||||
uint32_t frame_crop_bottom_offset;
|
||||
uint32_t reserved2;
|
||||
const int32_t* pOffsetForRefFrame;
|
||||
const StdVideoH264ScalingLists* pScalingLists;
|
||||
const StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui;
|
||||
} StdVideoH264SequenceParameterSet;
|
||||
|
||||
typedef struct StdVideoH264PpsFlags {
|
||||
uint32_t transform_8x8_mode_flag : 1;
|
||||
uint32_t redundant_pic_cnt_present_flag : 1;
|
||||
uint32_t constrained_intra_pred_flag : 1;
|
||||
uint32_t deblocking_filter_control_present_flag : 1;
|
||||
uint32_t weighted_pred_flag : 1;
|
||||
uint32_t bottom_field_pic_order_in_frame_present_flag : 1;
|
||||
uint32_t entropy_coding_mode_flag : 1;
|
||||
uint32_t pic_scaling_matrix_present_flag : 1;
|
||||
} StdVideoH264PpsFlags;
|
||||
|
||||
typedef struct StdVideoH264PictureParameterSet {
|
||||
StdVideoH264PpsFlags flags;
|
||||
uint8_t seq_parameter_set_id;
|
||||
uint8_t pic_parameter_set_id;
|
||||
uint8_t num_ref_idx_l0_default_active_minus1;
|
||||
uint8_t num_ref_idx_l1_default_active_minus1;
|
||||
StdVideoH264WeightedBipredIdc weighted_bipred_idc;
|
||||
int8_t pic_init_qp_minus26;
|
||||
int8_t pic_init_qs_minus26;
|
||||
int8_t chroma_qp_index_offset;
|
||||
int8_t second_chroma_qp_index_offset;
|
||||
const StdVideoH264ScalingLists* pScalingLists;
|
||||
} StdVideoH264PictureParameterSet;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,75 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h264std_decode 1
|
||||
// Vulkan 0.9 provisional Vulkan video H.264 decode std specification version number
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
|
||||
|
||||
#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_0_9_8
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode"
|
||||
|
||||
typedef enum StdVideoDecodeH264FieldOrderCount {
|
||||
STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0,
|
||||
STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1,
|
||||
STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoDecodeH264FieldOrderCount;
|
||||
typedef struct StdVideoDecodeH264PictureInfoFlags {
|
||||
uint32_t field_pic_flag : 1;
|
||||
uint32_t is_intra : 1;
|
||||
uint32_t IdrPicFlag : 1;
|
||||
uint32_t bottom_field_flag : 1;
|
||||
uint32_t is_reference : 1;
|
||||
uint32_t complementary_field_pair : 1;
|
||||
} StdVideoDecodeH264PictureInfoFlags;
|
||||
|
||||
typedef struct StdVideoDecodeH264PictureInfo {
|
||||
StdVideoDecodeH264PictureInfoFlags flags;
|
||||
uint8_t seq_parameter_set_id;
|
||||
uint8_t pic_parameter_set_id;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint16_t frame_num;
|
||||
uint16_t idr_pic_id;
|
||||
int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];
|
||||
} StdVideoDecodeH264PictureInfo;
|
||||
|
||||
typedef struct StdVideoDecodeH264ReferenceInfoFlags {
|
||||
uint32_t top_field_flag : 1;
|
||||
uint32_t bottom_field_flag : 1;
|
||||
uint32_t used_for_long_term_reference : 1;
|
||||
uint32_t is_non_existing : 1;
|
||||
} StdVideoDecodeH264ReferenceInfoFlags;
|
||||
|
||||
typedef struct StdVideoDecodeH264ReferenceInfo {
|
||||
StdVideoDecodeH264ReferenceInfoFlags flags;
|
||||
uint16_t FrameNum;
|
||||
uint16_t reserved;
|
||||
int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE];
|
||||
} StdVideoDecodeH264ReferenceInfo;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,132 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
|
||||
#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h264std_encode 1
|
||||
// Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8) // Patch version should always be set to 0
|
||||
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
|
||||
typedef struct StdVideoEncodeH264WeightTableFlags {
|
||||
uint32_t luma_weight_l0_flag;
|
||||
uint32_t chroma_weight_l0_flag;
|
||||
uint32_t luma_weight_l1_flag;
|
||||
uint32_t chroma_weight_l1_flag;
|
||||
} StdVideoEncodeH264WeightTableFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH264WeightTable {
|
||||
StdVideoEncodeH264WeightTableFlags flags;
|
||||
uint8_t luma_log2_weight_denom;
|
||||
uint8_t chroma_log2_weight_denom;
|
||||
int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||
int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||
int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||
int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||
int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||
int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
|
||||
int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||
int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
|
||||
} StdVideoEncodeH264WeightTable;
|
||||
|
||||
typedef struct StdVideoEncodeH264SliceHeaderFlags {
|
||||
uint32_t direct_spatial_mv_pred_flag : 1;
|
||||
uint32_t num_ref_idx_active_override_flag : 1;
|
||||
uint32_t no_output_of_prior_pics_flag : 1;
|
||||
uint32_t adaptive_ref_pic_marking_mode_flag : 1;
|
||||
uint32_t no_prior_references_available_flag : 1;
|
||||
} StdVideoEncodeH264SliceHeaderFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH264PictureInfoFlags {
|
||||
uint32_t idr_flag : 1;
|
||||
uint32_t is_reference_flag : 1;
|
||||
uint32_t used_for_long_term_reference : 1;
|
||||
} StdVideoEncodeH264PictureInfoFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH264ReferenceInfoFlags {
|
||||
uint32_t used_for_long_term_reference : 1;
|
||||
} StdVideoEncodeH264ReferenceInfoFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH264RefMgmtFlags {
|
||||
uint32_t ref_pic_list_modification_l0_flag : 1;
|
||||
uint32_t ref_pic_list_modification_l1_flag : 1;
|
||||
} StdVideoEncodeH264RefMgmtFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH264RefListModEntry {
|
||||
StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
|
||||
uint16_t abs_diff_pic_num_minus1;
|
||||
uint16_t long_term_pic_num;
|
||||
} StdVideoEncodeH264RefListModEntry;
|
||||
|
||||
typedef struct StdVideoEncodeH264RefPicMarkingEntry {
|
||||
StdVideoH264MemMgmtControlOp operation;
|
||||
uint16_t difference_of_pic_nums_minus1;
|
||||
uint16_t long_term_pic_num;
|
||||
uint16_t long_term_frame_idx;
|
||||
uint16_t max_long_term_frame_idx_plus1;
|
||||
} StdVideoEncodeH264RefPicMarkingEntry;
|
||||
|
||||
typedef struct StdVideoEncodeH264RefMemMgmtCtrlOperations {
|
||||
StdVideoEncodeH264RefMgmtFlags flags;
|
||||
uint8_t refList0ModOpCount;
|
||||
const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
|
||||
uint8_t refList1ModOpCount;
|
||||
const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
|
||||
uint8_t refPicMarkingOpCount;
|
||||
const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
|
||||
} StdVideoEncodeH264RefMemMgmtCtrlOperations;
|
||||
|
||||
typedef struct StdVideoEncodeH264PictureInfo {
|
||||
StdVideoEncodeH264PictureInfoFlags flags;
|
||||
uint8_t seq_parameter_set_id;
|
||||
uint8_t pic_parameter_set_id;
|
||||
StdVideoH264PictureType pictureType;
|
||||
uint32_t frame_num;
|
||||
int32_t PicOrderCnt;
|
||||
} StdVideoEncodeH264PictureInfo;
|
||||
|
||||
typedef struct StdVideoEncodeH264ReferenceInfo {
|
||||
StdVideoEncodeH264ReferenceInfoFlags flags;
|
||||
uint32_t FrameNum;
|
||||
int32_t PicOrderCnt;
|
||||
uint16_t long_term_pic_num;
|
||||
uint16_t long_term_frame_idx;
|
||||
} StdVideoEncodeH264ReferenceInfo;
|
||||
|
||||
typedef struct StdVideoEncodeH264SliceHeader {
|
||||
StdVideoEncodeH264SliceHeaderFlags flags;
|
||||
uint32_t first_mb_in_slice;
|
||||
StdVideoH264SliceType slice_type;
|
||||
uint16_t idr_pic_id;
|
||||
uint8_t num_ref_idx_l0_active_minus1;
|
||||
uint8_t num_ref_idx_l1_active_minus1;
|
||||
StdVideoH264CabacInitIdc cabac_init_idc;
|
||||
StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
|
||||
int8_t slice_alpha_c0_offset_div2;
|
||||
int8_t slice_beta_offset_div2;
|
||||
const StdVideoEncodeH264WeightTable* pWeightTable;
|
||||
} StdVideoEncodeH264SliceHeader;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,443 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H265STD_H_
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h265std 1
|
||||
#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7
|
||||
#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32
|
||||
#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6
|
||||
#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16
|
||||
#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6
|
||||
#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64
|
||||
#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6
|
||||
#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64
|
||||
#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2
|
||||
#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64
|
||||
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3
|
||||
#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128
|
||||
#define STD_VIDEO_H265_MAX_DPB_SIZE 16
|
||||
#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32
|
||||
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6
|
||||
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19
|
||||
#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21
|
||||
#define STD_VIDEO_H265_MAX_NUM_LIST_REF 15
|
||||
#define STD_VIDEO_H265_MAX_CHROMA_PLANES 2
|
||||
#define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64
|
||||
#define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16
|
||||
#define STD_VIDEO_H265_MAX_DELTA_POC 48
|
||||
|
||||
typedef enum StdVideoH265ChromaFormatIdc {
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME = 0,
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_420 = 1,
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_422 = 2,
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_444 = 3,
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265ChromaFormatIdc;
|
||||
|
||||
typedef enum StdVideoH265ProfileIdc {
|
||||
STD_VIDEO_H265_PROFILE_IDC_MAIN = 1,
|
||||
STD_VIDEO_H265_PROFILE_IDC_MAIN_10 = 2,
|
||||
STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE = 3,
|
||||
STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS = 4,
|
||||
STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS = 9,
|
||||
STD_VIDEO_H265_PROFILE_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265ProfileIdc;
|
||||
|
||||
typedef enum StdVideoH265LevelIdc {
|
||||
STD_VIDEO_H265_LEVEL_IDC_1_0 = 0,
|
||||
STD_VIDEO_H265_LEVEL_IDC_2_0 = 1,
|
||||
STD_VIDEO_H265_LEVEL_IDC_2_1 = 2,
|
||||
STD_VIDEO_H265_LEVEL_IDC_3_0 = 3,
|
||||
STD_VIDEO_H265_LEVEL_IDC_3_1 = 4,
|
||||
STD_VIDEO_H265_LEVEL_IDC_4_0 = 5,
|
||||
STD_VIDEO_H265_LEVEL_IDC_4_1 = 6,
|
||||
STD_VIDEO_H265_LEVEL_IDC_5_0 = 7,
|
||||
STD_VIDEO_H265_LEVEL_IDC_5_1 = 8,
|
||||
STD_VIDEO_H265_LEVEL_IDC_5_2 = 9,
|
||||
STD_VIDEO_H265_LEVEL_IDC_6_0 = 10,
|
||||
STD_VIDEO_H265_LEVEL_IDC_6_1 = 11,
|
||||
STD_VIDEO_H265_LEVEL_IDC_6_2 = 12,
|
||||
STD_VIDEO_H265_LEVEL_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265LevelIdc;
|
||||
|
||||
typedef enum StdVideoH265SliceType {
|
||||
STD_VIDEO_H265_SLICE_TYPE_B = 0,
|
||||
STD_VIDEO_H265_SLICE_TYPE_P = 1,
|
||||
STD_VIDEO_H265_SLICE_TYPE_I = 2,
|
||||
STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265SliceType;
|
||||
|
||||
typedef enum StdVideoH265PictureType {
|
||||
STD_VIDEO_H265_PICTURE_TYPE_P = 0,
|
||||
STD_VIDEO_H265_PICTURE_TYPE_B = 1,
|
||||
STD_VIDEO_H265_PICTURE_TYPE_I = 2,
|
||||
STD_VIDEO_H265_PICTURE_TYPE_IDR = 3,
|
||||
STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265PictureType;
|
||||
|
||||
typedef enum StdVideoH265AspectRatioIdc {
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF,
|
||||
STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF
|
||||
} StdVideoH265AspectRatioIdc;
|
||||
typedef struct StdVideoH265DecPicBufMgr {
|
||||
uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||
uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||
uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||
} StdVideoH265DecPicBufMgr;
|
||||
|
||||
typedef struct StdVideoH265SubLayerHrdParameters {
|
||||
uint32_t bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
|
||||
uint32_t cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
|
||||
uint32_t cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
|
||||
uint32_t bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE];
|
||||
uint32_t cbr_flag;
|
||||
} StdVideoH265SubLayerHrdParameters;
|
||||
|
||||
typedef struct StdVideoH265HrdFlags {
|
||||
uint32_t nal_hrd_parameters_present_flag : 1;
|
||||
uint32_t vcl_hrd_parameters_present_flag : 1;
|
||||
uint32_t sub_pic_hrd_params_present_flag : 1;
|
||||
uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1;
|
||||
uint32_t fixed_pic_rate_general_flag : 8;
|
||||
uint32_t fixed_pic_rate_within_cvs_flag : 8;
|
||||
uint32_t low_delay_hrd_flag : 8;
|
||||
} StdVideoH265HrdFlags;
|
||||
|
||||
typedef struct StdVideoH265HrdParameters {
|
||||
StdVideoH265HrdFlags flags;
|
||||
uint8_t tick_divisor_minus2;
|
||||
uint8_t du_cpb_removal_delay_increment_length_minus1;
|
||||
uint8_t dpb_output_delay_du_length_minus1;
|
||||
uint8_t bit_rate_scale;
|
||||
uint8_t cpb_size_scale;
|
||||
uint8_t cpb_size_du_scale;
|
||||
uint8_t initial_cpb_removal_delay_length_minus1;
|
||||
uint8_t au_cpb_removal_delay_length_minus1;
|
||||
uint8_t dpb_output_delay_length_minus1;
|
||||
uint8_t cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||
uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE];
|
||||
uint16_t reserved[3];
|
||||
const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal;
|
||||
const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl;
|
||||
} StdVideoH265HrdParameters;
|
||||
|
||||
typedef struct StdVideoH265VpsFlags {
|
||||
uint32_t vps_temporal_id_nesting_flag : 1;
|
||||
uint32_t vps_sub_layer_ordering_info_present_flag : 1;
|
||||
uint32_t vps_timing_info_present_flag : 1;
|
||||
uint32_t vps_poc_proportional_to_timing_flag : 1;
|
||||
} StdVideoH265VpsFlags;
|
||||
|
||||
typedef struct StdVideoH265ProfileTierLevelFlags {
|
||||
uint32_t general_tier_flag : 1;
|
||||
uint32_t general_progressive_source_flag : 1;
|
||||
uint32_t general_interlaced_source_flag : 1;
|
||||
uint32_t general_non_packed_constraint_flag : 1;
|
||||
uint32_t general_frame_only_constraint_flag : 1;
|
||||
} StdVideoH265ProfileTierLevelFlags;
|
||||
|
||||
typedef struct StdVideoH265ProfileTierLevel {
|
||||
StdVideoH265ProfileTierLevelFlags flags;
|
||||
StdVideoH265ProfileIdc general_profile_idc;
|
||||
StdVideoH265LevelIdc general_level_idc;
|
||||
} StdVideoH265ProfileTierLevel;
|
||||
|
||||
typedef struct StdVideoH265VideoParameterSet {
|
||||
StdVideoH265VpsFlags flags;
|
||||
uint8_t vps_video_parameter_set_id;
|
||||
uint8_t vps_max_sub_layers_minus1;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint32_t vps_num_units_in_tick;
|
||||
uint32_t vps_time_scale;
|
||||
uint32_t vps_num_ticks_poc_diff_one_minus1;
|
||||
uint32_t reserved3;
|
||||
const StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||
const StdVideoH265HrdParameters* pHrdParameters;
|
||||
const StdVideoH265ProfileTierLevel* pProfileTierLevel;
|
||||
} StdVideoH265VideoParameterSet;
|
||||
|
||||
typedef struct StdVideoH265ScalingLists {
|
||||
uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS];
|
||||
uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS];
|
||||
uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS];
|
||||
uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS];
|
||||
uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS];
|
||||
uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS];
|
||||
} StdVideoH265ScalingLists;
|
||||
|
||||
typedef struct StdVideoH265SpsVuiFlags {
|
||||
uint32_t aspect_ratio_info_present_flag : 1;
|
||||
uint32_t overscan_info_present_flag : 1;
|
||||
uint32_t overscan_appropriate_flag : 1;
|
||||
uint32_t video_signal_type_present_flag : 1;
|
||||
uint32_t video_full_range_flag : 1;
|
||||
uint32_t colour_description_present_flag : 1;
|
||||
uint32_t chroma_loc_info_present_flag : 1;
|
||||
uint32_t neutral_chroma_indication_flag : 1;
|
||||
uint32_t field_seq_flag : 1;
|
||||
uint32_t frame_field_info_present_flag : 1;
|
||||
uint32_t default_display_window_flag : 1;
|
||||
uint32_t vui_timing_info_present_flag : 1;
|
||||
uint32_t vui_poc_proportional_to_timing_flag : 1;
|
||||
uint32_t vui_hrd_parameters_present_flag : 1;
|
||||
uint32_t bitstream_restriction_flag : 1;
|
||||
uint32_t tiles_fixed_structure_flag : 1;
|
||||
uint32_t motion_vectors_over_pic_boundaries_flag : 1;
|
||||
uint32_t restricted_ref_pic_lists_flag : 1;
|
||||
} StdVideoH265SpsVuiFlags;
|
||||
|
||||
typedef struct StdVideoH265SequenceParameterSetVui {
|
||||
StdVideoH265SpsVuiFlags flags;
|
||||
StdVideoH265AspectRatioIdc aspect_ratio_idc;
|
||||
uint16_t sar_width;
|
||||
uint16_t sar_height;
|
||||
uint8_t video_format;
|
||||
uint8_t colour_primaries;
|
||||
uint8_t transfer_characteristics;
|
||||
uint8_t matrix_coeffs;
|
||||
uint8_t chroma_sample_loc_type_top_field;
|
||||
uint8_t chroma_sample_loc_type_bottom_field;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint16_t def_disp_win_left_offset;
|
||||
uint16_t def_disp_win_right_offset;
|
||||
uint16_t def_disp_win_top_offset;
|
||||
uint16_t def_disp_win_bottom_offset;
|
||||
uint32_t vui_num_units_in_tick;
|
||||
uint32_t vui_time_scale;
|
||||
uint32_t vui_num_ticks_poc_diff_one_minus1;
|
||||
uint16_t min_spatial_segmentation_idc;
|
||||
uint16_t reserved3;
|
||||
uint8_t max_bytes_per_pic_denom;
|
||||
uint8_t max_bits_per_min_cu_denom;
|
||||
uint8_t log2_max_mv_length_horizontal;
|
||||
uint8_t log2_max_mv_length_vertical;
|
||||
const StdVideoH265HrdParameters* pHrdParameters;
|
||||
} StdVideoH265SequenceParameterSetVui;
|
||||
|
||||
typedef struct StdVideoH265PredictorPaletteEntries {
|
||||
uint16_t PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE];
|
||||
} StdVideoH265PredictorPaletteEntries;
|
||||
|
||||
typedef struct StdVideoH265SpsFlags {
|
||||
uint32_t sps_temporal_id_nesting_flag : 1;
|
||||
uint32_t separate_colour_plane_flag : 1;
|
||||
uint32_t conformance_window_flag : 1;
|
||||
uint32_t sps_sub_layer_ordering_info_present_flag : 1;
|
||||
uint32_t scaling_list_enabled_flag : 1;
|
||||
uint32_t sps_scaling_list_data_present_flag : 1;
|
||||
uint32_t amp_enabled_flag : 1;
|
||||
uint32_t sample_adaptive_offset_enabled_flag : 1;
|
||||
uint32_t pcm_enabled_flag : 1;
|
||||
uint32_t pcm_loop_filter_disabled_flag : 1;
|
||||
uint32_t long_term_ref_pics_present_flag : 1;
|
||||
uint32_t sps_temporal_mvp_enabled_flag : 1;
|
||||
uint32_t strong_intra_smoothing_enabled_flag : 1;
|
||||
uint32_t vui_parameters_present_flag : 1;
|
||||
uint32_t sps_extension_present_flag : 1;
|
||||
uint32_t sps_range_extension_flag : 1;
|
||||
uint32_t transform_skip_rotation_enabled_flag : 1;
|
||||
uint32_t transform_skip_context_enabled_flag : 1;
|
||||
uint32_t implicit_rdpcm_enabled_flag : 1;
|
||||
uint32_t explicit_rdpcm_enabled_flag : 1;
|
||||
uint32_t extended_precision_processing_flag : 1;
|
||||
uint32_t intra_smoothing_disabled_flag : 1;
|
||||
uint32_t high_precision_offsets_enabled_flag : 1;
|
||||
uint32_t persistent_rice_adaptation_enabled_flag : 1;
|
||||
uint32_t cabac_bypass_alignment_enabled_flag : 1;
|
||||
uint32_t sps_scc_extension_flag : 1;
|
||||
uint32_t sps_curr_pic_ref_enabled_flag : 1;
|
||||
uint32_t palette_mode_enabled_flag : 1;
|
||||
uint32_t sps_palette_predictor_initializers_present_flag : 1;
|
||||
uint32_t intra_boundary_filtering_disabled_flag : 1;
|
||||
} StdVideoH265SpsFlags;
|
||||
|
||||
typedef struct StdVideoH265ShortTermRefPicSetFlags {
|
||||
uint32_t inter_ref_pic_set_prediction_flag : 1;
|
||||
uint32_t delta_rps_sign : 1;
|
||||
} StdVideoH265ShortTermRefPicSetFlags;
|
||||
|
||||
typedef struct StdVideoH265ShortTermRefPicSet {
|
||||
StdVideoH265ShortTermRefPicSetFlags flags;
|
||||
uint32_t delta_idx_minus1;
|
||||
uint16_t use_delta_flag;
|
||||
uint16_t abs_delta_rps_minus1;
|
||||
uint16_t used_by_curr_pic_flag;
|
||||
uint16_t used_by_curr_pic_s0_flag;
|
||||
uint16_t used_by_curr_pic_s1_flag;
|
||||
uint16_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint8_t reserved3;
|
||||
uint8_t num_negative_pics;
|
||||
uint8_t num_positive_pics;
|
||||
uint16_t delta_poc_s0_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
|
||||
uint16_t delta_poc_s1_minus1[STD_VIDEO_H265_MAX_DPB_SIZE];
|
||||
} StdVideoH265ShortTermRefPicSet;
|
||||
|
||||
typedef struct StdVideoH265LongTermRefPicsSps {
|
||||
uint32_t used_by_curr_pic_lt_sps_flag;
|
||||
uint32_t lt_ref_pic_poc_lsb_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
|
||||
} StdVideoH265LongTermRefPicsSps;
|
||||
|
||||
typedef struct StdVideoH265SequenceParameterSet {
|
||||
StdVideoH265SpsFlags flags;
|
||||
StdVideoH265ChromaFormatIdc chroma_format_idc;
|
||||
uint32_t pic_width_in_luma_samples;
|
||||
uint32_t pic_height_in_luma_samples;
|
||||
uint8_t sps_video_parameter_set_id;
|
||||
uint8_t sps_max_sub_layers_minus1;
|
||||
uint8_t sps_seq_parameter_set_id;
|
||||
uint8_t bit_depth_luma_minus8;
|
||||
uint8_t bit_depth_chroma_minus8;
|
||||
uint8_t log2_max_pic_order_cnt_lsb_minus4;
|
||||
uint8_t log2_min_luma_coding_block_size_minus3;
|
||||
uint8_t log2_diff_max_min_luma_coding_block_size;
|
||||
uint8_t log2_min_luma_transform_block_size_minus2;
|
||||
uint8_t log2_diff_max_min_luma_transform_block_size;
|
||||
uint8_t max_transform_hierarchy_depth_inter;
|
||||
uint8_t max_transform_hierarchy_depth_intra;
|
||||
uint8_t num_short_term_ref_pic_sets;
|
||||
uint8_t num_long_term_ref_pics_sps;
|
||||
uint8_t pcm_sample_bit_depth_luma_minus1;
|
||||
uint8_t pcm_sample_bit_depth_chroma_minus1;
|
||||
uint8_t log2_min_pcm_luma_coding_block_size_minus3;
|
||||
uint8_t log2_diff_max_min_pcm_luma_coding_block_size;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint8_t palette_max_size;
|
||||
uint8_t delta_palette_max_predictor_size;
|
||||
uint8_t motion_vector_resolution_control_idc;
|
||||
uint8_t sps_num_palette_predictor_initializers_minus1;
|
||||
uint32_t conf_win_left_offset;
|
||||
uint32_t conf_win_right_offset;
|
||||
uint32_t conf_win_top_offset;
|
||||
uint32_t conf_win_bottom_offset;
|
||||
const StdVideoH265ProfileTierLevel* pProfileTierLevel;
|
||||
const StdVideoH265DecPicBufMgr* pDecPicBufMgr;
|
||||
const StdVideoH265ScalingLists* pScalingLists;
|
||||
const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;
|
||||
const StdVideoH265LongTermRefPicsSps* pLongTermRefPicsSps;
|
||||
const StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui;
|
||||
const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;
|
||||
} StdVideoH265SequenceParameterSet;
|
||||
|
||||
typedef struct StdVideoH265PpsFlags {
|
||||
uint32_t dependent_slice_segments_enabled_flag : 1;
|
||||
uint32_t output_flag_present_flag : 1;
|
||||
uint32_t sign_data_hiding_enabled_flag : 1;
|
||||
uint32_t cabac_init_present_flag : 1;
|
||||
uint32_t constrained_intra_pred_flag : 1;
|
||||
uint32_t transform_skip_enabled_flag : 1;
|
||||
uint32_t cu_qp_delta_enabled_flag : 1;
|
||||
uint32_t pps_slice_chroma_qp_offsets_present_flag : 1;
|
||||
uint32_t weighted_pred_flag : 1;
|
||||
uint32_t weighted_bipred_flag : 1;
|
||||
uint32_t transquant_bypass_enabled_flag : 1;
|
||||
uint32_t tiles_enabled_flag : 1;
|
||||
uint32_t entropy_coding_sync_enabled_flag : 1;
|
||||
uint32_t uniform_spacing_flag : 1;
|
||||
uint32_t loop_filter_across_tiles_enabled_flag : 1;
|
||||
uint32_t pps_loop_filter_across_slices_enabled_flag : 1;
|
||||
uint32_t deblocking_filter_control_present_flag : 1;
|
||||
uint32_t deblocking_filter_override_enabled_flag : 1;
|
||||
uint32_t pps_deblocking_filter_disabled_flag : 1;
|
||||
uint32_t pps_scaling_list_data_present_flag : 1;
|
||||
uint32_t lists_modification_present_flag : 1;
|
||||
uint32_t slice_segment_header_extension_present_flag : 1;
|
||||
uint32_t pps_extension_present_flag : 1;
|
||||
uint32_t cross_component_prediction_enabled_flag : 1;
|
||||
uint32_t chroma_qp_offset_list_enabled_flag : 1;
|
||||
uint32_t pps_curr_pic_ref_enabled_flag : 1;
|
||||
uint32_t residual_adaptive_colour_transform_enabled_flag : 1;
|
||||
uint32_t pps_slice_act_qp_offsets_present_flag : 1;
|
||||
uint32_t pps_palette_predictor_initializers_present_flag : 1;
|
||||
uint32_t monochrome_palette_flag : 1;
|
||||
uint32_t pps_range_extension_flag : 1;
|
||||
} StdVideoH265PpsFlags;
|
||||
|
||||
typedef struct StdVideoH265PictureParameterSet {
|
||||
StdVideoH265PpsFlags flags;
|
||||
uint8_t pps_pic_parameter_set_id;
|
||||
uint8_t pps_seq_parameter_set_id;
|
||||
uint8_t sps_video_parameter_set_id;
|
||||
uint8_t num_extra_slice_header_bits;
|
||||
uint8_t num_ref_idx_l0_default_active_minus1;
|
||||
uint8_t num_ref_idx_l1_default_active_minus1;
|
||||
int8_t init_qp_minus26;
|
||||
uint8_t diff_cu_qp_delta_depth;
|
||||
int8_t pps_cb_qp_offset;
|
||||
int8_t pps_cr_qp_offset;
|
||||
int8_t pps_beta_offset_div2;
|
||||
int8_t pps_tc_offset_div2;
|
||||
uint8_t log2_parallel_merge_level_minus2;
|
||||
uint8_t log2_max_transform_skip_block_size_minus2;
|
||||
uint8_t diff_cu_chroma_qp_offset_depth;
|
||||
uint8_t chroma_qp_offset_list_len_minus1;
|
||||
int8_t cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
|
||||
int8_t cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE];
|
||||
uint8_t log2_sao_offset_scale_luma;
|
||||
uint8_t log2_sao_offset_scale_chroma;
|
||||
int8_t pps_act_y_qp_offset_plus5;
|
||||
int8_t pps_act_cb_qp_offset_plus5;
|
||||
int8_t pps_act_cr_qp_offset_plus3;
|
||||
uint8_t pps_num_palette_predictor_initializers;
|
||||
uint8_t luma_bit_depth_entry_minus8;
|
||||
uint8_t chroma_bit_depth_entry_minus8;
|
||||
uint8_t num_tile_columns_minus1;
|
||||
uint8_t num_tile_rows_minus1;
|
||||
uint8_t reserved1;
|
||||
uint8_t reserved2;
|
||||
uint16_t column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE];
|
||||
uint16_t row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE];
|
||||
uint32_t reserved3;
|
||||
const StdVideoH265ScalingLists* pScalingLists;
|
||||
const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries;
|
||||
} StdVideoH265PictureParameterSet;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,65 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h265std_decode 1
|
||||
// Vulkan 0.9 provisional Vulkan video H.265 decode std specification version number
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
|
||||
|
||||
#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_0_9_9
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode"
|
||||
typedef struct StdVideoDecodeH265PictureInfoFlags {
|
||||
uint32_t IrapPicFlag : 1;
|
||||
uint32_t IdrPicFlag : 1;
|
||||
uint32_t IsReference : 1;
|
||||
uint32_t short_term_ref_pic_set_sps_flag : 1;
|
||||
} StdVideoDecodeH265PictureInfoFlags;
|
||||
|
||||
typedef struct StdVideoDecodeH265PictureInfo {
|
||||
StdVideoDecodeH265PictureInfoFlags flags;
|
||||
uint8_t sps_video_parameter_set_id;
|
||||
uint8_t pps_seq_parameter_set_id;
|
||||
uint8_t pps_pic_parameter_set_id;
|
||||
uint8_t NumDeltaPocsOfRefRpsIdx;
|
||||
int32_t PicOrderCntVal;
|
||||
uint16_t NumBitsForSTRefPicSetInSlice;
|
||||
uint16_t reserved;
|
||||
uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||
uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||
uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE];
|
||||
} StdVideoDecodeH265PictureInfo;
|
||||
|
||||
typedef struct StdVideoDecodeH265ReferenceInfoFlags {
|
||||
uint32_t used_for_long_term_reference : 1;
|
||||
uint32_t unused_for_reference : 1;
|
||||
} StdVideoDecodeH265ReferenceInfoFlags;
|
||||
|
||||
typedef struct StdVideoDecodeH265ReferenceInfo {
|
||||
StdVideoDecodeH265ReferenceInfoFlags flags;
|
||||
int32_t PicOrderCntVal;
|
||||
} StdVideoDecodeH265ReferenceInfo;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,146 @@
|
||||
#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
|
||||
#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codec_h265std_encode 1
|
||||
// Vulkan 0.9 provisional Vulkan video H.265 encode std specification version number
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9) // Patch version should always be set to 0
|
||||
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_0_9_9
|
||||
#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode"
|
||||
typedef struct StdVideoEncodeH265WeightTableFlags {
|
||||
uint16_t luma_weight_l0_flag;
|
||||
uint16_t chroma_weight_l0_flag;
|
||||
uint16_t luma_weight_l1_flag;
|
||||
uint16_t chroma_weight_l1_flag;
|
||||
} StdVideoEncodeH265WeightTableFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH265WeightTable {
|
||||
StdVideoEncodeH265WeightTableFlags flags;
|
||||
uint8_t luma_log2_weight_denom;
|
||||
int8_t delta_chroma_log2_weight_denom;
|
||||
int8_t delta_luma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||
int8_t luma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||
int8_t delta_chroma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||
int8_t delta_chroma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||
int8_t delta_luma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||
int8_t luma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
|
||||
int8_t delta_chroma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||
int8_t delta_chroma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
|
||||
} StdVideoEncodeH265WeightTable;
|
||||
|
||||
typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags {
|
||||
uint32_t first_slice_segment_in_pic_flag : 1;
|
||||
uint32_t no_output_of_prior_pics_flag : 1;
|
||||
uint32_t dependent_slice_segment_flag : 1;
|
||||
uint32_t pic_output_flag : 1;
|
||||
uint32_t short_term_ref_pic_set_sps_flag : 1;
|
||||
uint32_t slice_temporal_mvp_enable_flag : 1;
|
||||
uint32_t slice_sao_luma_flag : 1;
|
||||
uint32_t slice_sao_chroma_flag : 1;
|
||||
uint32_t num_ref_idx_active_override_flag : 1;
|
||||
uint32_t mvd_l1_zero_flag : 1;
|
||||
uint32_t cabac_init_flag : 1;
|
||||
uint32_t cu_chroma_qp_offset_enabled_flag : 1;
|
||||
uint32_t deblocking_filter_override_flag : 1;
|
||||
uint32_t slice_deblocking_filter_disabled_flag : 1;
|
||||
uint32_t collocated_from_l0_flag : 1;
|
||||
uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
|
||||
} StdVideoEncodeH265SliceSegmentHeaderFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH265SliceSegmentLongTermRefPics {
|
||||
uint8_t num_long_term_sps;
|
||||
uint8_t num_long_term_pics;
|
||||
uint8_t lt_idx_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
|
||||
uint8_t poc_lsb_lt[STD_VIDEO_H265_MAX_LONG_TERM_PICS];
|
||||
uint16_t used_by_curr_pic_lt_flag;
|
||||
uint8_t delta_poc_msb_present_flag[STD_VIDEO_H265_MAX_DELTA_POC];
|
||||
uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC];
|
||||
} StdVideoEncodeH265SliceSegmentLongTermRefPics;
|
||||
|
||||
typedef struct StdVideoEncodeH265SliceSegmentHeader {
|
||||
StdVideoEncodeH265SliceSegmentHeaderFlags flags;
|
||||
StdVideoH265SliceType slice_type;
|
||||
uint32_t slice_segment_address;
|
||||
uint8_t short_term_ref_pic_set_idx;
|
||||
uint8_t collocated_ref_idx;
|
||||
uint8_t num_ref_idx_l0_active_minus1;
|
||||
uint8_t num_ref_idx_l1_active_minus1;
|
||||
uint8_t MaxNumMergeCand;
|
||||
int8_t slice_cb_qp_offset;
|
||||
int8_t slice_cr_qp_offset;
|
||||
int8_t slice_beta_offset_div2;
|
||||
int8_t slice_tc_offset_div2;
|
||||
int8_t slice_act_y_qp_offset;
|
||||
int8_t slice_act_cb_qp_offset;
|
||||
int8_t slice_act_cr_qp_offset;
|
||||
const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;
|
||||
const StdVideoEncodeH265SliceSegmentLongTermRefPics* pLongTermRefPics;
|
||||
const StdVideoEncodeH265WeightTable* pWeightTable;
|
||||
} StdVideoEncodeH265SliceSegmentHeader;
|
||||
|
||||
typedef struct StdVideoEncodeH265ReferenceModificationFlags {
|
||||
uint32_t ref_pic_list_modification_flag_l0 : 1;
|
||||
uint32_t ref_pic_list_modification_flag_l1 : 1;
|
||||
} StdVideoEncodeH265ReferenceModificationFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH265ReferenceModifications {
|
||||
StdVideoEncodeH265ReferenceModificationFlags flags;
|
||||
uint8_t referenceList0ModificationsCount;
|
||||
const uint8_t* pReferenceList0Modifications;
|
||||
uint8_t referenceList1ModificationsCount;
|
||||
const uint8_t* pReferenceList1Modifications;
|
||||
} StdVideoEncodeH265ReferenceModifications;
|
||||
|
||||
typedef struct StdVideoEncodeH265PictureInfoFlags {
|
||||
uint32_t is_reference_flag : 1;
|
||||
uint32_t IrapPicFlag : 1;
|
||||
uint32_t long_term_flag : 1;
|
||||
uint32_t discardable_flag : 1;
|
||||
uint32_t cross_layer_bla_flag : 1;
|
||||
} StdVideoEncodeH265PictureInfoFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH265PictureInfo {
|
||||
StdVideoEncodeH265PictureInfoFlags flags;
|
||||
StdVideoH265PictureType PictureType;
|
||||
uint8_t sps_video_parameter_set_id;
|
||||
uint8_t pps_seq_parameter_set_id;
|
||||
uint8_t pps_pic_parameter_set_id;
|
||||
int32_t PicOrderCntVal;
|
||||
uint8_t TemporalId;
|
||||
} StdVideoEncodeH265PictureInfo;
|
||||
|
||||
typedef struct StdVideoEncodeH265ReferenceInfoFlags {
|
||||
uint32_t used_for_long_term_reference : 1;
|
||||
uint32_t unused_for_reference : 1;
|
||||
} StdVideoEncodeH265ReferenceInfoFlags;
|
||||
|
||||
typedef struct StdVideoEncodeH265ReferenceInfo {
|
||||
StdVideoEncodeH265ReferenceInfoFlags flags;
|
||||
int32_t PicOrderCntVal;
|
||||
uint8_t TemporalId;
|
||||
} StdVideoEncodeH265ReferenceInfo;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef VULKAN_VIDEO_CODECS_COMMON_H_
|
||||
#define VULKAN_VIDEO_CODECS_COMMON_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define vulkan_video_codecs_common 1
|
||||
#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \
|
||||
((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,245 @@
|
||||
//
|
||||
// File: vk_icd.h
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016 Valve Corporation
|
||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef VKICD_H
|
||||
#define VKICD_H
|
||||
|
||||
#include "vulkan.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
// Loader-ICD version negotiation API. Versions add the following features:
|
||||
// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr
|
||||
// or vk_icdNegotiateLoaderICDInterfaceVersion.
|
||||
// Version 1 - Add support for vk_icdGetInstanceProcAddr.
|
||||
// Version 2 - Add Loader/ICD Interface version negotiation
|
||||
// via vk_icdNegotiateLoaderICDInterfaceVersion.
|
||||
// Version 3 - Add ICD creation/destruction of KHR_surface objects.
|
||||
// Version 4 - Add unknown physical device extension querying via
|
||||
// vk_icdGetPhysicalDeviceProcAddr.
|
||||
// Version 5 - Tells ICDs that the loader is now paying attention to the
|
||||
// application version of Vulkan passed into the ApplicationInfo
|
||||
// structure during vkCreateInstance. This will tell the ICD
|
||||
// that if the loader is older, it should automatically fail a
|
||||
// call for any API version > 1.0. Otherwise, the loader will
|
||||
// manually determine if it can support the expected version.
|
||||
// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices.
|
||||
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6
|
||||
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
|
||||
#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4
|
||||
|
||||
// Old typedefs that don't follow a proper naming convention but are preserved for compatibility
|
||||
typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
|
||||
// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this
|
||||
// file directly, it won't be found.
|
||||
#ifndef PFN_GetPhysicalDeviceProcAddr
|
||||
typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName);
|
||||
#endif
|
||||
|
||||
// Typedefs for loader/ICD interface
|
||||
typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion);
|
||||
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName);
|
||||
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
||||
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
||||
typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID,
|
||||
uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
|
||||
#endif
|
||||
|
||||
// Prototypes for loader/ICD interface
|
||||
#if !defined(VK_NO_PROTOTYPES)
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion);
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName);
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance isntance, const char* pName);
|
||||
#if defined(VK_USE_PLATFORM_WIN32_KHR)
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID,
|
||||
uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The ICD must reserve space for a pointer for the loader's dispatch
|
||||
* table, at the start of <each object>.
|
||||
* The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro.
|
||||
*/
|
||||
|
||||
#define ICD_LOADER_MAGIC 0x01CDC0DE
|
||||
|
||||
typedef union {
|
||||
uintptr_t loaderMagic;
|
||||
void *loaderData;
|
||||
} VK_LOADER_DATA;
|
||||
|
||||
static inline void set_loader_magic_value(void *pNewObject) {
|
||||
VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||
loader_info->loaderMagic = ICD_LOADER_MAGIC;
|
||||
}
|
||||
|
||||
static inline bool valid_loader_magic_value(void *pNewObject) {
|
||||
const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject;
|
||||
return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC;
|
||||
}
|
||||
|
||||
/*
|
||||
* Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that
|
||||
* contains the platform-specific connection and surface information.
|
||||
*/
|
||||
typedef enum {
|
||||
VK_ICD_WSI_PLATFORM_MIR,
|
||||
VK_ICD_WSI_PLATFORM_WAYLAND,
|
||||
VK_ICD_WSI_PLATFORM_WIN32,
|
||||
VK_ICD_WSI_PLATFORM_XCB,
|
||||
VK_ICD_WSI_PLATFORM_XLIB,
|
||||
VK_ICD_WSI_PLATFORM_ANDROID,
|
||||
VK_ICD_WSI_PLATFORM_MACOS,
|
||||
VK_ICD_WSI_PLATFORM_IOS,
|
||||
VK_ICD_WSI_PLATFORM_DISPLAY,
|
||||
VK_ICD_WSI_PLATFORM_HEADLESS,
|
||||
VK_ICD_WSI_PLATFORM_METAL,
|
||||
VK_ICD_WSI_PLATFORM_DIRECTFB,
|
||||
VK_ICD_WSI_PLATFORM_VI,
|
||||
VK_ICD_WSI_PLATFORM_GGP,
|
||||
VK_ICD_WSI_PLATFORM_SCREEN,
|
||||
} VkIcdWsiPlatform;
|
||||
|
||||
typedef struct {
|
||||
VkIcdWsiPlatform platform;
|
||||
} VkIcdSurfaceBase;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
MirConnection *connection;
|
||||
MirSurface *mirSurface;
|
||||
} VkIcdSurfaceMir;
|
||||
#endif // VK_USE_PLATFORM_MIR_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
struct wl_display *display;
|
||||
struct wl_surface *surface;
|
||||
} VkIcdSurfaceWayland;
|
||||
#endif // VK_USE_PLATFORM_WAYLAND_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
HINSTANCE hinstance;
|
||||
HWND hwnd;
|
||||
} VkIcdSurfaceWin32;
|
||||
#endif // VK_USE_PLATFORM_WIN32_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
xcb_connection_t *connection;
|
||||
xcb_window_t window;
|
||||
} VkIcdSurfaceXcb;
|
||||
#endif // VK_USE_PLATFORM_XCB_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
Display *dpy;
|
||||
Window window;
|
||||
} VkIcdSurfaceXlib;
|
||||
#endif // VK_USE_PLATFORM_XLIB_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
IDirectFB *dfb;
|
||||
IDirectFBSurface *surface;
|
||||
} VkIcdSurfaceDirectFB;
|
||||
#endif // VK_USE_PLATFORM_DIRECTFB_EXT
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
struct ANativeWindow *window;
|
||||
} VkIcdSurfaceAndroid;
|
||||
#endif // VK_USE_PLATFORM_ANDROID_KHR
|
||||
|
||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
const void *pView;
|
||||
} VkIcdSurfaceMacOS;
|
||||
#endif // VK_USE_PLATFORM_MACOS_MVK
|
||||
|
||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
const void *pView;
|
||||
} VkIcdSurfaceIOS;
|
||||
#endif // VK_USE_PLATFORM_IOS_MVK
|
||||
|
||||
#ifdef VK_USE_PLATFORM_GGP
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
GgpStreamDescriptor streamDescriptor;
|
||||
} VkIcdSurfaceGgp;
|
||||
#endif // VK_USE_PLATFORM_GGP
|
||||
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
VkDisplayModeKHR displayMode;
|
||||
uint32_t planeIndex;
|
||||
uint32_t planeStackIndex;
|
||||
VkSurfaceTransformFlagBitsKHR transform;
|
||||
float globalAlpha;
|
||||
VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
|
||||
VkExtent2D imageExtent;
|
||||
} VkIcdSurfaceDisplay;
|
||||
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
} VkIcdSurfaceHeadless;
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
const CAMetalLayer *pLayer;
|
||||
} VkIcdSurfaceMetal;
|
||||
#endif // VK_USE_PLATFORM_METAL_EXT
|
||||
|
||||
#ifdef VK_USE_PLATFORM_VI_NN
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
void *window;
|
||||
} VkIcdSurfaceVi;
|
||||
#endif // VK_USE_PLATFORM_VI_NN
|
||||
|
||||
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||
typedef struct {
|
||||
VkIcdSurfaceBase base;
|
||||
struct _screen_context *context;
|
||||
struct _screen_window *window;
|
||||
} VkIcdSurfaceScreen;
|
||||
#endif // VK_USE_PLATFORM_SCREEN_QNX
|
||||
|
||||
#endif // VKICD_H
|
||||
@@ -0,0 +1,210 @@
|
||||
//
|
||||
// File: vk_layer.h
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2017 Valve Corporation
|
||||
* Copyright (c) 2015-2017 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Need to define dispatch table
|
||||
* Core struct can then have ptr to dispatch table at the top
|
||||
* Along with object ptrs for current and next OBJ
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "vulkan.h"
|
||||
#if defined(__GNUC__) && __GNUC__ >= 4
|
||||
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
|
||||
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
|
||||
#define VK_LAYER_EXPORT __attribute__((visibility("default")))
|
||||
#else
|
||||
#define VK_LAYER_EXPORT
|
||||
#endif
|
||||
|
||||
#define MAX_NUM_UNKNOWN_EXTS 250
|
||||
|
||||
// Loader-Layer version negotiation API. Versions add the following features:
|
||||
// Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr
|
||||
// or vk_icdNegotiateLoaderLayerInterfaceVersion.
|
||||
// Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and
|
||||
// vk_icdNegotiateLoaderLayerInterfaceVersion.
|
||||
#define CURRENT_LOADER_LAYER_INTERFACE_VERSION 2
|
||||
#define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION 1
|
||||
|
||||
#define VK_CURRENT_CHAIN_VERSION 1
|
||||
|
||||
// Typedef for use in the interfaces below
|
||||
typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName);
|
||||
|
||||
// Version negotiation values
|
||||
typedef enum VkNegotiateLayerStructType {
|
||||
LAYER_NEGOTIATE_UNINTIALIZED = 0,
|
||||
LAYER_NEGOTIATE_INTERFACE_STRUCT = 1,
|
||||
} VkNegotiateLayerStructType;
|
||||
|
||||
// Version negotiation structures
|
||||
typedef struct VkNegotiateLayerInterface {
|
||||
VkNegotiateLayerStructType sType;
|
||||
void *pNext;
|
||||
uint32_t loaderLayerInterfaceVersion;
|
||||
PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr;
|
||||
PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr;
|
||||
PFN_GetPhysicalDeviceProcAddr pfnGetPhysicalDeviceProcAddr;
|
||||
} VkNegotiateLayerInterface;
|
||||
|
||||
// Version negotiation functions
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderLayerInterfaceVersion)(VkNegotiateLayerInterface *pVersionStruct);
|
||||
|
||||
// Function prototype for unknown physical device extension command
|
||||
typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device);
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// CreateInstance and CreateDevice support structures
|
||||
|
||||
/* Sub type of structure for instance and device loader ext of CreateInfo.
|
||||
* When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
||||
* or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
|
||||
* then VkLayerFunction indicates struct type pointed to by pNext
|
||||
*/
|
||||
typedef enum VkLayerFunction_ {
|
||||
VK_LAYER_LINK_INFO = 0,
|
||||
VK_LOADER_DATA_CALLBACK = 1,
|
||||
VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2,
|
||||
VK_LOADER_FEATURES = 3,
|
||||
} VkLayerFunction;
|
||||
|
||||
typedef struct VkLayerInstanceLink_ {
|
||||
struct VkLayerInstanceLink_ *pNext;
|
||||
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||
PFN_GetPhysicalDeviceProcAddr pfnNextGetPhysicalDeviceProcAddr;
|
||||
} VkLayerInstanceLink;
|
||||
|
||||
/*
|
||||
* When creating the device chain the loader needs to pass
|
||||
* down information about it's device structure needed at
|
||||
* the end of the chain. Passing the data via the
|
||||
* VkLayerDeviceInfo avoids issues with finding the
|
||||
* exact instance being used.
|
||||
*/
|
||||
typedef struct VkLayerDeviceInfo_ {
|
||||
void *device_info;
|
||||
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||
} VkLayerDeviceInfo;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance,
|
||||
void *object);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device,
|
||||
void *object);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA);
|
||||
typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction);
|
||||
|
||||
typedef enum VkLoaderFeastureFlagBits {
|
||||
VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001,
|
||||
} VkLoaderFlagBits;
|
||||
typedef VkFlags VkLoaderFeatureFlags;
|
||||
|
||||
typedef struct {
|
||||
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
|
||||
const void *pNext;
|
||||
VkLayerFunction function;
|
||||
union {
|
||||
VkLayerInstanceLink *pLayerInfo;
|
||||
PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData;
|
||||
struct {
|
||||
PFN_vkLayerCreateDevice pfnLayerCreateDevice;
|
||||
PFN_vkLayerDestroyDevice pfnLayerDestroyDevice;
|
||||
} layerDevice;
|
||||
VkLoaderFeatureFlags loaderFeatures;
|
||||
} u;
|
||||
} VkLayerInstanceCreateInfo;
|
||||
|
||||
typedef struct VkLayerDeviceLink_ {
|
||||
struct VkLayerDeviceLink_ *pNext;
|
||||
PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
|
||||
PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr;
|
||||
} VkLayerDeviceLink;
|
||||
|
||||
typedef struct {
|
||||
VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
|
||||
const void *pNext;
|
||||
VkLayerFunction function;
|
||||
union {
|
||||
VkLayerDeviceLink *pLayerInfo;
|
||||
PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData;
|
||||
} u;
|
||||
} VkLayerDeviceCreateInfo;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct);
|
||||
|
||||
typedef enum VkChainType {
|
||||
VK_CHAIN_TYPE_UNKNOWN = 0,
|
||||
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES = 1,
|
||||
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_LAYER_PROPERTIES = 2,
|
||||
VK_CHAIN_TYPE_ENUMERATE_INSTANCE_VERSION = 3,
|
||||
} VkChainType;
|
||||
|
||||
typedef struct VkChainHeader {
|
||||
VkChainType type;
|
||||
uint32_t version;
|
||||
uint32_t size;
|
||||
} VkChainHeader;
|
||||
|
||||
typedef struct VkEnumerateInstanceExtensionPropertiesChain {
|
||||
VkChainHeader header;
|
||||
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceExtensionPropertiesChain *, const char *, uint32_t *,
|
||||
VkExtensionProperties *);
|
||||
const struct VkEnumerateInstanceExtensionPropertiesChain *pNextLink;
|
||||
|
||||
#if defined(__cplusplus)
|
||||
inline VkResult CallDown(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) const {
|
||||
return pfnNextLayer(pNextLink, pLayerName, pPropertyCount, pProperties);
|
||||
}
|
||||
#endif
|
||||
} VkEnumerateInstanceExtensionPropertiesChain;
|
||||
|
||||
typedef struct VkEnumerateInstanceLayerPropertiesChain {
|
||||
VkChainHeader header;
|
||||
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceLayerPropertiesChain *, uint32_t *, VkLayerProperties *);
|
||||
const struct VkEnumerateInstanceLayerPropertiesChain *pNextLink;
|
||||
|
||||
#if defined(__cplusplus)
|
||||
inline VkResult CallDown(uint32_t *pPropertyCount, VkLayerProperties *pProperties) const {
|
||||
return pfnNextLayer(pNextLink, pPropertyCount, pProperties);
|
||||
}
|
||||
#endif
|
||||
} VkEnumerateInstanceLayerPropertiesChain;
|
||||
|
||||
typedef struct VkEnumerateInstanceVersionChain {
|
||||
VkChainHeader header;
|
||||
VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceVersionChain *, uint32_t *);
|
||||
const struct VkEnumerateInstanceVersionChain *pNextLink;
|
||||
|
||||
#if defined(__cplusplus)
|
||||
inline VkResult CallDown(uint32_t *pApiVersion) const {
|
||||
return pfnNextLayer(pNextLink, pApiVersion);
|
||||
}
|
||||
#endif
|
||||
} VkEnumerateInstanceVersionChain;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// File: vk_platform.h
|
||||
//
|
||||
/*
|
||||
** Copyright 2014-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
|
||||
#ifndef VK_PLATFORM_H_
|
||||
#define VK_PLATFORM_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif // __cplusplus
|
||||
|
||||
/*
|
||||
***************************************************************************************************
|
||||
* Platform-specific directives and type declarations
|
||||
***************************************************************************************************
|
||||
*/
|
||||
|
||||
/* Platform-specific calling convention macros.
|
||||
*
|
||||
* Platforms should define these so that Vulkan clients call Vulkan commands
|
||||
* with the same calling conventions that the Vulkan implementation expects.
|
||||
*
|
||||
* VKAPI_ATTR - Placed before the return type in function declarations.
|
||||
* Useful for C++11 and GCC/Clang-style function attribute syntax.
|
||||
* VKAPI_CALL - Placed after the return type in function declarations.
|
||||
* Useful for MSVC-style calling convention syntax.
|
||||
* VKAPI_PTR - Placed between the '(' and '*' in function pointer types.
|
||||
*
|
||||
* Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void);
|
||||
* Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
|
||||
*/
|
||||
#if defined(_WIN32)
|
||||
// On Windows, Vulkan commands use the stdcall convention
|
||||
#define VKAPI_ATTR
|
||||
#define VKAPI_CALL __stdcall
|
||||
#define VKAPI_PTR VKAPI_CALL
|
||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
|
||||
#error "Vulkan is not supported for the 'armeabi' NDK ABI"
|
||||
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
|
||||
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
|
||||
// calling convention, i.e. float parameters are passed in registers. This
|
||||
// is true even if the rest of the application passes floats on the stack,
|
||||
// as it does by default when compiling for the armeabi-v7a NDK ABI.
|
||||
#define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
|
||||
#define VKAPI_CALL
|
||||
#define VKAPI_PTR VKAPI_ATTR
|
||||
#else
|
||||
// On other platforms, use the default calling convention
|
||||
#define VKAPI_ATTR
|
||||
#define VKAPI_CALL
|
||||
#define VKAPI_PTR
|
||||
#endif
|
||||
|
||||
#if !defined(VK_NO_STDDEF_H)
|
||||
#include <stddef.h>
|
||||
#endif // !defined(VK_NO_STDDEF_H)
|
||||
|
||||
#if !defined(VK_NO_STDINT_H)
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1600)
|
||||
typedef signed __int8 int8_t;
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef signed __int16 int16_t;
|
||||
typedef unsigned __int16 uint16_t;
|
||||
typedef signed __int32 int32_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef signed __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#endif // !defined(VK_NO_STDINT_H)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// File: vk_sdk_platform.h
|
||||
//
|
||||
/*
|
||||
* Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
* Copyright (c) 2015-2016 Valve Corporation
|
||||
* Copyright (c) 2015-2016 LunarG, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef VK_SDK_PLATFORM_H
|
||||
#define VK_SDK_PLATFORM_H
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define NOMINMAX
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#define inline __inline
|
||||
#endif // __cplusplus
|
||||
|
||||
#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/)
|
||||
// C99:
|
||||
// Microsoft didn't implement C99 in Visual Studio; but started adding it with
|
||||
// VS2013. However, VS2013 still didn't have snprintf(). The following is a
|
||||
// work-around (Note: The _CRT_SECURE_NO_WARNINGS macro must be set in the
|
||||
// "CMakeLists.txt" file).
|
||||
// NOTE: This is fixed in Visual Studio 2015.
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
#define strdup _strdup
|
||||
|
||||
#endif // _WIN32
|
||||
|
||||
// Check for noexcept support using clang, with fallback to Windows or GCC version numbers
|
||||
#ifndef NOEXCEPT
|
||||
#if defined(__clang__)
|
||||
#if __has_feature(cxx_noexcept)
|
||||
#define HAS_NOEXCEPT
|
||||
#endif
|
||||
#else
|
||||
#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46
|
||||
#define HAS_NOEXCEPT
|
||||
#else
|
||||
#if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS
|
||||
#define HAS_NOEXCEPT
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAS_NOEXCEPT
|
||||
#define NOEXCEPT noexcept
|
||||
#else
|
||||
#define NOEXCEPT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // VK_SDK_PLATFORM_H
|
||||
@@ -0,0 +1,91 @@
|
||||
#ifndef VULKAN_H_
|
||||
#define VULKAN_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include "vk_platform.h"
|
||||
#include "vulkan_core.h"
|
||||
|
||||
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||
#include "vulkan_android.h"
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_FUCHSIA
|
||||
#include <zircon/types.h>
|
||||
#include "vulkan_fuchsia.h"
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_IOS_MVK
|
||||
#include "vulkan_ios.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_MACOS_MVK
|
||||
#include "vulkan_macos.h"
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_METAL_EXT
|
||||
#include "vulkan_metal.h"
|
||||
#endif
|
||||
|
||||
#ifdef VK_USE_PLATFORM_VI_NN
|
||||
#include "vulkan_vi.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||
#include "vulkan_wayland.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||
#include <windows.h>
|
||||
#include "vulkan_win32.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||
#include <xcb/xcb.h>
|
||||
#include "vulkan_xcb.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||
#include <X11/Xlib.h>
|
||||
#include "vulkan_xlib.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_DIRECTFB_EXT
|
||||
#include <directfb.h>
|
||||
#include "vulkan_directfb.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#include "vulkan_xlib_xrandr.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_GGP
|
||||
#include <ggp_c/vulkan_types.h>
|
||||
#include "vulkan_ggp.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_USE_PLATFORM_SCREEN_QNX
|
||||
#include <screen/screen.h>
|
||||
#include "vulkan_screen.h"
|
||||
#endif
|
||||
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
#include "vulkan_beta.h"
|
||||
#endif
|
||||
|
||||
#endif // VULKAN_H_
|
||||
@@ -0,0 +1,125 @@
|
||||
#ifndef VULKAN_ANDROID_H_
|
||||
#define VULKAN_ANDROID_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_android_surface 1
|
||||
struct ANativeWindow;
|
||||
#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
|
||||
#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
|
||||
typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
|
||||
typedef struct VkAndroidSurfaceCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkAndroidSurfaceCreateFlagsKHR flags;
|
||||
struct ANativeWindow* window;
|
||||
} VkAndroidSurfaceCreateInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
|
||||
VkInstance instance,
|
||||
const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_ANDROID_external_memory_android_hardware_buffer 1
|
||||
struct AHardwareBuffer;
|
||||
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5
|
||||
#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
|
||||
typedef struct VkAndroidHardwareBufferUsageANDROID {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint64_t androidHardwareBufferUsage;
|
||||
} VkAndroidHardwareBufferUsageANDROID;
|
||||
|
||||
typedef struct VkAndroidHardwareBufferPropertiesANDROID {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkDeviceSize allocationSize;
|
||||
uint32_t memoryTypeBits;
|
||||
} VkAndroidHardwareBufferPropertiesANDROID;
|
||||
|
||||
typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkFormat format;
|
||||
uint64_t externalFormat;
|
||||
VkFormatFeatureFlags formatFeatures;
|
||||
VkComponentMapping samplerYcbcrConversionComponents;
|
||||
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
||||
VkSamplerYcbcrRange suggestedYcbcrRange;
|
||||
VkChromaLocation suggestedXChromaOffset;
|
||||
VkChromaLocation suggestedYChromaOffset;
|
||||
} VkAndroidHardwareBufferFormatPropertiesANDROID;
|
||||
|
||||
typedef struct VkImportAndroidHardwareBufferInfoANDROID {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
struct AHardwareBuffer* buffer;
|
||||
} VkImportAndroidHardwareBufferInfoANDROID;
|
||||
|
||||
typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDeviceMemory memory;
|
||||
} VkMemoryGetAndroidHardwareBufferInfoANDROID;
|
||||
|
||||
typedef struct VkExternalFormatANDROID {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint64_t externalFormat;
|
||||
} VkExternalFormatANDROID;
|
||||
|
||||
typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkFormat format;
|
||||
uint64_t externalFormat;
|
||||
VkFormatFeatureFlags2 formatFeatures;
|
||||
VkComponentMapping samplerYcbcrConversionComponents;
|
||||
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
||||
VkSamplerYcbcrRange suggestedYcbcrRange;
|
||||
VkChromaLocation suggestedXChromaOffset;
|
||||
VkChromaLocation suggestedYChromaOffset;
|
||||
} VkAndroidHardwareBufferFormatProperties2ANDROID;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID(
|
||||
VkDevice device,
|
||||
const struct AHardwareBuffer* buffer,
|
||||
VkAndroidHardwareBufferPropertiesANDROID* pProperties);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID(
|
||||
VkDevice device,
|
||||
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
|
||||
struct AHardwareBuffer** pBuffer);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,54 @@
|
||||
#ifndef VULKAN_DIRECTFB_H_
|
||||
#define VULKAN_DIRECTFB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_directfb_surface 1
|
||||
#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1
|
||||
#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface"
|
||||
typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT;
|
||||
typedef struct VkDirectFBSurfaceCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDirectFBSurfaceCreateFlagsEXT flags;
|
||||
IDirectFB* dfb;
|
||||
IDirectFBSurface* surface;
|
||||
} VkDirectFBSurfaceCreateInfoEXT;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT(
|
||||
VkInstance instance,
|
||||
const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
IDirectFB* dfb);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,258 @@
|
||||
#ifndef VULKAN_FUCHSIA_H_
|
||||
#define VULKAN_FUCHSIA_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_FUCHSIA_imagepipe_surface 1
|
||||
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
|
||||
#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
|
||||
typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
|
||||
typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImagePipeSurfaceCreateFlagsFUCHSIA flags;
|
||||
zx_handle_t imagePipeHandle;
|
||||
} VkImagePipeSurfaceCreateInfoFUCHSIA;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
|
||||
VkInstance instance,
|
||||
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_FUCHSIA_external_memory 1
|
||||
#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
|
||||
#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
|
||||
typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||
zx_handle_t handle;
|
||||
} VkImportMemoryZirconHandleInfoFUCHSIA;
|
||||
|
||||
typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t memoryTypeBits;
|
||||
} VkMemoryZirconHandlePropertiesFUCHSIA;
|
||||
|
||||
typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDeviceMemory memory;
|
||||
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||
} VkMemoryGetZirconHandleInfoFUCHSIA;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
|
||||
VkDevice device,
|
||||
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
||||
zx_handle_t* pZirconHandle);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
|
||||
VkDevice device,
|
||||
VkExternalMemoryHandleTypeFlagBits handleType,
|
||||
zx_handle_t zirconHandle,
|
||||
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_FUCHSIA_external_semaphore 1
|
||||
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
|
||||
#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
|
||||
typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
VkSemaphoreImportFlags flags;
|
||||
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||
zx_handle_t zirconHandle;
|
||||
} VkImportSemaphoreZirconHandleInfoFUCHSIA;
|
||||
|
||||
typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||
} VkSemaphoreGetZirconHandleInfoFUCHSIA;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
|
||||
VkDevice device,
|
||||
const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
|
||||
VkDevice device,
|
||||
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
||||
zx_handle_t* pZirconHandle);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_FUCHSIA_buffer_collection 1
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)
|
||||
#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2
|
||||
#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection"
|
||||
typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
|
||||
|
||||
typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA {
|
||||
VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,
|
||||
VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,
|
||||
VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,
|
||||
VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,
|
||||
VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,
|
||||
VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
|
||||
} VkImageConstraintsInfoFlagBitsFUCHSIA;
|
||||
typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
|
||||
typedef struct VkBufferCollectionCreateInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
zx_handle_t collectionToken;
|
||||
} VkBufferCollectionCreateInfoFUCHSIA;
|
||||
|
||||
typedef struct VkImportMemoryBufferCollectionFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkBufferCollectionFUCHSIA collection;
|
||||
uint32_t index;
|
||||
} VkImportMemoryBufferCollectionFUCHSIA;
|
||||
|
||||
typedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkBufferCollectionFUCHSIA collection;
|
||||
uint32_t index;
|
||||
} VkBufferCollectionImageCreateInfoFUCHSIA;
|
||||
|
||||
typedef struct VkBufferCollectionConstraintsInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t minBufferCount;
|
||||
uint32_t maxBufferCount;
|
||||
uint32_t minBufferCountForCamping;
|
||||
uint32_t minBufferCountForDedicatedSlack;
|
||||
uint32_t minBufferCountForSharedSlack;
|
||||
} VkBufferCollectionConstraintsInfoFUCHSIA;
|
||||
|
||||
typedef struct VkBufferConstraintsInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkBufferCreateInfo createInfo;
|
||||
VkFormatFeatureFlags requiredFormatFeatures;
|
||||
VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
|
||||
} VkBufferConstraintsInfoFUCHSIA;
|
||||
|
||||
typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkBufferCollectionFUCHSIA collection;
|
||||
uint32_t index;
|
||||
} VkBufferCollectionBufferCreateInfoFUCHSIA;
|
||||
|
||||
typedef struct VkSysmemColorSpaceFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t colorSpace;
|
||||
} VkSysmemColorSpaceFUCHSIA;
|
||||
|
||||
typedef struct VkBufferCollectionPropertiesFUCHSIA {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t memoryTypeBits;
|
||||
uint32_t bufferCount;
|
||||
uint32_t createInfoIndex;
|
||||
uint64_t sysmemPixelFormat;
|
||||
VkFormatFeatureFlags formatFeatures;
|
||||
VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex;
|
||||
VkComponentMapping samplerYcbcrConversionComponents;
|
||||
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
|
||||
VkSamplerYcbcrRange suggestedYcbcrRange;
|
||||
VkChromaLocation suggestedXChromaOffset;
|
||||
VkChromaLocation suggestedYChromaOffset;
|
||||
} VkBufferCollectionPropertiesFUCHSIA;
|
||||
|
||||
typedef struct VkImageFormatConstraintsInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImageCreateInfo imageCreateInfo;
|
||||
VkFormatFeatureFlags requiredFormatFeatures;
|
||||
VkImageFormatConstraintsFlagsFUCHSIA flags;
|
||||
uint64_t sysmemPixelFormat;
|
||||
uint32_t colorSpaceCount;
|
||||
const VkSysmemColorSpaceFUCHSIA* pColorSpaces;
|
||||
} VkImageFormatConstraintsInfoFUCHSIA;
|
||||
|
||||
typedef struct VkImageConstraintsInfoFUCHSIA {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t formatConstraintsCount;
|
||||
const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints;
|
||||
VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints;
|
||||
VkImageConstraintsInfoFlagsFUCHSIA flags;
|
||||
} VkImageConstraintsInfoFUCHSIA;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
|
||||
typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
|
||||
VkDevice device,
|
||||
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkBufferCollectionFUCHSIA* pCollection);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
|
||||
VkDevice device,
|
||||
VkBufferCollectionFUCHSIA collection,
|
||||
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
|
||||
VkDevice device,
|
||||
VkBufferCollectionFUCHSIA collection,
|
||||
const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
|
||||
VkDevice device,
|
||||
VkBufferCollectionFUCHSIA collection,
|
||||
const VkAllocationCallbacks* pAllocator);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA(
|
||||
VkDevice device,
|
||||
VkBufferCollectionFUCHSIA collection,
|
||||
VkBufferCollectionPropertiesFUCHSIA* pProperties);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,58 @@
|
||||
#ifndef VULKAN_GGP_H_
|
||||
#define VULKAN_GGP_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_GGP_stream_descriptor_surface 1
|
||||
#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1
|
||||
#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface"
|
||||
typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP;
|
||||
typedef struct VkStreamDescriptorSurfaceCreateInfoGGP {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkStreamDescriptorSurfaceCreateFlagsGGP flags;
|
||||
GgpStreamDescriptor streamDescriptor;
|
||||
} VkStreamDescriptorSurfaceCreateInfoGGP;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP(
|
||||
VkInstance instance,
|
||||
const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_GGP_frame_token 1
|
||||
#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1
|
||||
#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token"
|
||||
typedef struct VkPresentFrameTokenGGP {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
GgpFrameToken frameToken;
|
||||
} VkPresentFrameTokenGGP;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
#ifndef VULKAN_IOS_H_
|
||||
#define VULKAN_IOS_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_MVK_ios_surface 1
|
||||
#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3
|
||||
#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
|
||||
typedef VkFlags VkIOSSurfaceCreateFlagsMVK;
|
||||
typedef struct VkIOSSurfaceCreateInfoMVK {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkIOSSurfaceCreateFlagsMVK flags;
|
||||
const void* pView;
|
||||
} VkIOSSurfaceCreateInfoMVK;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
|
||||
VkInstance instance,
|
||||
const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
#ifndef VULKAN_MACOS_H_
|
||||
#define VULKAN_MACOS_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_MVK_macos_surface 1
|
||||
#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3
|
||||
#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
|
||||
typedef VkFlags VkMacOSSurfaceCreateFlagsMVK;
|
||||
typedef struct VkMacOSSurfaceCreateInfoMVK {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkMacOSSurfaceCreateFlagsMVK flags;
|
||||
const void* pView;
|
||||
} VkMacOSSurfaceCreateInfoMVK;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
|
||||
VkInstance instance,
|
||||
const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,193 @@
|
||||
#ifndef VULKAN_METAL_H_
|
||||
#define VULKAN_METAL_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_metal_surface 1
|
||||
#ifdef __OBJC__
|
||||
@class CAMetalLayer;
|
||||
#else
|
||||
typedef void CAMetalLayer;
|
||||
#endif
|
||||
|
||||
#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
|
||||
#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface"
|
||||
typedef VkFlags VkMetalSurfaceCreateFlagsEXT;
|
||||
typedef struct VkMetalSurfaceCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkMetalSurfaceCreateFlagsEXT flags;
|
||||
const CAMetalLayer* pLayer;
|
||||
} VkMetalSurfaceCreateInfoEXT;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT(
|
||||
VkInstance instance,
|
||||
const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_EXT_metal_objects 1
|
||||
#ifdef __OBJC__
|
||||
@protocol MTLDevice;
|
||||
typedef id<MTLDevice> MTLDevice_id;
|
||||
#else
|
||||
typedef void* MTLDevice_id;
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
@protocol MTLCommandQueue;
|
||||
typedef id<MTLCommandQueue> MTLCommandQueue_id;
|
||||
#else
|
||||
typedef void* MTLCommandQueue_id;
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
@protocol MTLBuffer;
|
||||
typedef id<MTLBuffer> MTLBuffer_id;
|
||||
#else
|
||||
typedef void* MTLBuffer_id;
|
||||
#endif
|
||||
|
||||
#ifdef __OBJC__
|
||||
@protocol MTLTexture;
|
||||
typedef id<MTLTexture> MTLTexture_id;
|
||||
#else
|
||||
typedef void* MTLTexture_id;
|
||||
#endif
|
||||
|
||||
typedef struct __IOSurface* IOSurfaceRef;
|
||||
#ifdef __OBJC__
|
||||
@protocol MTLSharedEvent;
|
||||
typedef id<MTLSharedEvent> MTLSharedEvent_id;
|
||||
#else
|
||||
typedef void* MTLSharedEvent_id;
|
||||
#endif
|
||||
|
||||
#define VK_EXT_METAL_OBJECTS_SPEC_VERSION 1
|
||||
#define VK_EXT_METAL_OBJECTS_EXTENSION_NAME "VK_EXT_metal_objects"
|
||||
|
||||
typedef enum VkExportMetalObjectTypeFlagBitsEXT {
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020,
|
||||
VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkExportMetalObjectTypeFlagBitsEXT;
|
||||
typedef VkFlags VkExportMetalObjectTypeFlagsEXT;
|
||||
typedef struct VkExportMetalObjectCreateInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkExportMetalObjectTypeFlagBitsEXT exportObjectType;
|
||||
} VkExportMetalObjectCreateInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalObjectsInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
} VkExportMetalObjectsInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalDeviceInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
MTLDevice_id mtlDevice;
|
||||
} VkExportMetalDeviceInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalCommandQueueInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkQueue queue;
|
||||
MTLCommandQueue_id mtlCommandQueue;
|
||||
} VkExportMetalCommandQueueInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalBufferInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDeviceMemory memory;
|
||||
MTLBuffer_id mtlBuffer;
|
||||
} VkExportMetalBufferInfoEXT;
|
||||
|
||||
typedef struct VkImportMetalBufferInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
MTLBuffer_id mtlBuffer;
|
||||
} VkImportMetalBufferInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalTextureInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImage image;
|
||||
VkImageView imageView;
|
||||
VkBufferView bufferView;
|
||||
VkImageAspectFlagBits plane;
|
||||
MTLTexture_id mtlTexture;
|
||||
} VkExportMetalTextureInfoEXT;
|
||||
|
||||
typedef struct VkImportMetalTextureInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImageAspectFlagBits plane;
|
||||
MTLTexture_id mtlTexture;
|
||||
} VkImportMetalTextureInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalIOSurfaceInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkImage image;
|
||||
IOSurfaceRef ioSurface;
|
||||
} VkExportMetalIOSurfaceInfoEXT;
|
||||
|
||||
typedef struct VkImportMetalIOSurfaceInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
IOSurfaceRef ioSurface;
|
||||
} VkImportMetalIOSurfaceInfoEXT;
|
||||
|
||||
typedef struct VkExportMetalSharedEventInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
VkEvent event;
|
||||
MTLSharedEvent_id mtlSharedEvent;
|
||||
} VkExportMetalSharedEventInfoEXT;
|
||||
|
||||
typedef struct VkImportMetalSharedEventInfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
MTLSharedEvent_id mtlSharedEvent;
|
||||
} VkImportMetalSharedEventInfoEXT;
|
||||
|
||||
typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR void VKAPI_CALL vkExportMetalObjectsEXT(
|
||||
VkDevice device,
|
||||
VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,54 @@
|
||||
#ifndef VULKAN_SCREEN_H_
|
||||
#define VULKAN_SCREEN_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_QNX_screen_surface 1
|
||||
#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1
|
||||
#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface"
|
||||
typedef VkFlags VkScreenSurfaceCreateFlagsQNX;
|
||||
typedef struct VkScreenSurfaceCreateInfoQNX {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkScreenSurfaceCreateFlagsQNX flags;
|
||||
struct _screen_context* context;
|
||||
struct _screen_window* window;
|
||||
} VkScreenSurfaceCreateInfoQNX;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX(
|
||||
VkInstance instance,
|
||||
const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
struct _screen_window* window);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
#ifndef VULKAN_VI_H_
|
||||
#define VULKAN_VI_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_NN_vi_surface 1
|
||||
#define VK_NN_VI_SURFACE_SPEC_VERSION 1
|
||||
#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
|
||||
typedef VkFlags VkViSurfaceCreateFlagsNN;
|
||||
typedef struct VkViSurfaceCreateInfoNN {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkViSurfaceCreateFlagsNN flags;
|
||||
void* window;
|
||||
} VkViSurfaceCreateInfoNN;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
|
||||
VkInstance instance,
|
||||
const VkViSurfaceCreateInfoNN* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,54 @@
|
||||
#ifndef VULKAN_WAYLAND_H_
|
||||
#define VULKAN_WAYLAND_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_wayland_surface 1
|
||||
#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
|
||||
#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
|
||||
typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
|
||||
typedef struct VkWaylandSurfaceCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkWaylandSurfaceCreateFlagsKHR flags;
|
||||
struct wl_display* display;
|
||||
struct wl_surface* surface;
|
||||
} VkWaylandSurfaceCreateInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
|
||||
VkInstance instance,
|
||||
const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
struct wl_display* display);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,315 @@
|
||||
#ifndef VULKAN_WIN32_H_
|
||||
#define VULKAN_WIN32_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_win32_surface 1
|
||||
#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
|
||||
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
|
||||
typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
|
||||
typedef struct VkWin32SurfaceCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkWin32SurfaceCreateFlagsKHR flags;
|
||||
HINSTANCE hinstance;
|
||||
HWND hwnd;
|
||||
} VkWin32SurfaceCreateInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
|
||||
VkInstance instance,
|
||||
const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_external_memory_win32 1
|
||||
#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
||||
#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
|
||||
typedef struct VkImportMemoryWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||
HANDLE handle;
|
||||
LPCWSTR name;
|
||||
} VkImportMemoryWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkExportMemoryWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
const SECURITY_ATTRIBUTES* pAttributes;
|
||||
DWORD dwAccess;
|
||||
LPCWSTR name;
|
||||
} VkExportMemoryWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkMemoryWin32HandlePropertiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
uint32_t memoryTypeBits;
|
||||
} VkMemoryWin32HandlePropertiesKHR;
|
||||
|
||||
typedef struct VkMemoryGetWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkDeviceMemory memory;
|
||||
VkExternalMemoryHandleTypeFlagBits handleType;
|
||||
} VkMemoryGetWin32HandleInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
|
||||
VkDevice device,
|
||||
const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||
HANDLE* pHandle);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
|
||||
VkDevice device,
|
||||
VkExternalMemoryHandleTypeFlagBits handleType,
|
||||
HANDLE handle,
|
||||
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_win32_keyed_mutex 1
|
||||
#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
|
||||
#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
|
||||
typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t acquireCount;
|
||||
const VkDeviceMemory* pAcquireSyncs;
|
||||
const uint64_t* pAcquireKeys;
|
||||
const uint32_t* pAcquireTimeouts;
|
||||
uint32_t releaseCount;
|
||||
const VkDeviceMemory* pReleaseSyncs;
|
||||
const uint64_t* pReleaseKeys;
|
||||
} VkWin32KeyedMutexAcquireReleaseInfoKHR;
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_external_semaphore_win32 1
|
||||
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
|
||||
#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
|
||||
typedef struct VkImportSemaphoreWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
VkSemaphoreImportFlags flags;
|
||||
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||
HANDLE handle;
|
||||
LPCWSTR name;
|
||||
} VkImportSemaphoreWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkExportSemaphoreWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
const SECURITY_ATTRIBUTES* pAttributes;
|
||||
DWORD dwAccess;
|
||||
LPCWSTR name;
|
||||
} VkExportSemaphoreWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkD3D12FenceSubmitInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t waitSemaphoreValuesCount;
|
||||
const uint64_t* pWaitSemaphoreValues;
|
||||
uint32_t signalSemaphoreValuesCount;
|
||||
const uint64_t* pSignalSemaphoreValues;
|
||||
} VkD3D12FenceSubmitInfoKHR;
|
||||
|
||||
typedef struct VkSemaphoreGetWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkSemaphore semaphore;
|
||||
VkExternalSemaphoreHandleTypeFlagBits handleType;
|
||||
} VkSemaphoreGetWin32HandleInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
|
||||
VkDevice device,
|
||||
const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
|
||||
VkDevice device,
|
||||
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||
HANDLE* pHandle);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_KHR_external_fence_win32 1
|
||||
#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
|
||||
#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
|
||||
typedef struct VkImportFenceWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkFence fence;
|
||||
VkFenceImportFlags flags;
|
||||
VkExternalFenceHandleTypeFlagBits handleType;
|
||||
HANDLE handle;
|
||||
LPCWSTR name;
|
||||
} VkImportFenceWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkExportFenceWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
const SECURITY_ATTRIBUTES* pAttributes;
|
||||
DWORD dwAccess;
|
||||
LPCWSTR name;
|
||||
} VkExportFenceWin32HandleInfoKHR;
|
||||
|
||||
typedef struct VkFenceGetWin32HandleInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkFence fence;
|
||||
VkExternalFenceHandleTypeFlagBits handleType;
|
||||
} VkFenceGetWin32HandleInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
|
||||
VkDevice device,
|
||||
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
|
||||
VkDevice device,
|
||||
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
||||
HANDLE* pHandle);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_NV_external_memory_win32 1
|
||||
#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
|
||||
#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
|
||||
typedef struct VkImportMemoryWin32HandleInfoNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkExternalMemoryHandleTypeFlagsNV handleType;
|
||||
HANDLE handle;
|
||||
} VkImportMemoryWin32HandleInfoNV;
|
||||
|
||||
typedef struct VkExportMemoryWin32HandleInfoNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
const SECURITY_ATTRIBUTES* pAttributes;
|
||||
DWORD dwAccess;
|
||||
} VkExportMemoryWin32HandleInfoNV;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
|
||||
VkDevice device,
|
||||
VkDeviceMemory memory,
|
||||
VkExternalMemoryHandleTypeFlagsNV handleType,
|
||||
HANDLE* pHandle);
|
||||
#endif
|
||||
|
||||
|
||||
#define VK_NV_win32_keyed_mutex 1
|
||||
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
|
||||
#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
|
||||
typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
uint32_t acquireCount;
|
||||
const VkDeviceMemory* pAcquireSyncs;
|
||||
const uint64_t* pAcquireKeys;
|
||||
const uint32_t* pAcquireTimeoutMilliseconds;
|
||||
uint32_t releaseCount;
|
||||
const VkDeviceMemory* pReleaseSyncs;
|
||||
const uint64_t* pReleaseKeys;
|
||||
} VkWin32KeyedMutexAcquireReleaseInfoNV;
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_full_screen_exclusive 1
|
||||
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
|
||||
#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
|
||||
|
||||
typedef enum VkFullScreenExclusiveEXT {
|
||||
VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,
|
||||
VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,
|
||||
VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,
|
||||
VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,
|
||||
VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkFullScreenExclusiveEXT;
|
||||
typedef struct VkSurfaceFullScreenExclusiveInfoEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkFullScreenExclusiveEXT fullScreenExclusive;
|
||||
} VkSurfaceFullScreenExclusiveInfoEXT;
|
||||
|
||||
typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkBool32 fullScreenExclusiveSupported;
|
||||
} VkSurfaceCapabilitiesFullScreenExclusiveEXT;
|
||||
|
||||
typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
HMONITOR hmonitor;
|
||||
} VkSurfaceFullScreenExclusiveWin32InfoEXT;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
||||
uint32_t* pPresentModeCount,
|
||||
VkPresentModeKHR* pPresentModes);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
|
||||
VkDevice device,
|
||||
VkSwapchainKHR swapchain);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
|
||||
VkDevice device,
|
||||
VkSwapchainKHR swapchain);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT(
|
||||
VkDevice device,
|
||||
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
||||
VkDeviceGroupPresentModeFlagsKHR* pModes);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,55 @@
|
||||
#ifndef VULKAN_XCB_H_
|
||||
#define VULKAN_XCB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_xcb_surface 1
|
||||
#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
|
||||
#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
|
||||
typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
|
||||
typedef struct VkXcbSurfaceCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkXcbSurfaceCreateFlagsKHR flags;
|
||||
xcb_connection_t* connection;
|
||||
xcb_window_t window;
|
||||
} VkXcbSurfaceCreateInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
|
||||
VkInstance instance,
|
||||
const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
xcb_connection_t* connection,
|
||||
xcb_visualid_t visual_id);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,55 @@
|
||||
#ifndef VULKAN_XLIB_H_
|
||||
#define VULKAN_XLIB_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_KHR_xlib_surface 1
|
||||
#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
|
||||
#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
|
||||
typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
|
||||
typedef struct VkXlibSurfaceCreateInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkXlibSurfaceCreateFlagsKHR flags;
|
||||
Display* dpy;
|
||||
Window window;
|
||||
} VkXlibSurfaceCreateInfoKHR;
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
|
||||
VkInstance instance,
|
||||
const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
|
||||
const VkAllocationCallbacks* pAllocator,
|
||||
VkSurfaceKHR* pSurface);
|
||||
|
||||
VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t queueFamilyIndex,
|
||||
Display* dpy,
|
||||
VisualID visualID);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef VULKAN_XLIB_XRANDR_H_
|
||||
#define VULKAN_XLIB_XRANDR_H_ 1
|
||||
|
||||
/*
|
||||
** Copyright 2015-2022 The Khronos Group Inc.
|
||||
**
|
||||
** SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/*
|
||||
** This header is generated from the Khronos Vulkan XML API Registry.
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#define VK_EXT_acquire_xlib_display 1
|
||||
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
|
||||
#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay);
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
Display* dpy,
|
||||
VkDisplayKHR display);
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
Display* dpy,
|
||||
RROutput rrOutput,
|
||||
VkDisplayKHR* pDisplay);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -8,5 +8,5 @@ GRID_PACKAGE:
|
||||
GRID_GRID_OFFSET:
|
||||
.int 0
|
||||
GRID_GRID_SIZE:
|
||||
.int 30210
|
||||
.int 43432
|
||||
|
||||
|
||||
@@ -8,5 +8,5 @@ _GRID_PACKAGE:
|
||||
_GRID_GRID_OFFSET:
|
||||
.int 0
|
||||
_GRID_GRID_SIZE:
|
||||
.int 30210
|
||||
.int 43432
|
||||
|
||||
|
||||
Binary file not shown.
@@ -44,8 +44,8 @@ const uint8_t GRID_PACKAGE[] = {
|
||||
0x00, 0x00, 0x00, 0x53, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41,
|
||||
0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x50, 0x4f, 0x52, 0x50, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x2e, 0x93, 0xfd, 0x40, 0xe9, 0x81,
|
||||
0xd0, 0x07, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f,
|
||||
0x00, 0x00, 0x44, 0x49, 0x55, 0x55, 0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0xb0, 0xcc, 0x15, 0x7a, 0xa0, 0x00,
|
||||
0x46, 0x33, 0x44, 0x41, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f,
|
||||
0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x54, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54,
|
||||
0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x41, 0x51, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x04, 0x00, 0x00, 0x00, 0x01,
|
||||
@@ -1372,28 +1372,704 @@ const uint8_t GRID_PACKAGE[] = {
|
||||
0x3c, 0x01, 0x62, 0x00, 0x3d, 0x01, 0x3e, 0x01, 0x66, 0x00, 0x02, 0x00, 0x67, 0x00, 0x02, 0x00, 0x68, 0x00, 0x69, 0x00,
|
||||
0x6a, 0x00, 0x02, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01,
|
||||
0x55, 0x01, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01,
|
||||
0x5f, 0x01, 0x60, 0x01, 0x61, 0x01, 0x69, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0xfa, 0x0a, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x92, 0x01,
|
||||
0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xa2, 0x02, 0x00, 0x00, 0x01, 0x20, 0x01, 0xbc,
|
||||
0x02, 0x00, 0x00, 0x01, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x01, 0x44, 0x01, 0xbe, 0x04, 0x00, 0x00, 0x01, 0x80, 0x00,
|
||||
0xe8, 0x04, 0x00, 0x00, 0x01, 0x90, 0x00, 0xe8, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x02, 0x00,
|
||||
0x01, 0x2a, 0x07, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x02, 0x10, 0x01, 0xa2, 0x02, 0x00, 0x00, 0x02,
|
||||
0x20, 0x01, 0x32, 0x08, 0x00, 0x00, 0x02, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x02, 0x44, 0x01, 0xbe, 0x04, 0x00, 0x00,
|
||||
0x02, 0x80, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x02, 0x90, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x72, 0x0d, 0x00, 0x00, 0x82, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01,
|
||||
0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00,
|
||||
0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01,
|
||||
0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01,
|
||||
0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01,
|
||||
0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01,
|
||||
0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01,
|
||||
0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01,
|
||||
0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01,
|
||||
0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01,
|
||||
0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01,
|
||||
0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01,
|
||||
0xc3, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0x69, 0x00,
|
||||
0x64, 0x01, 0x12, 0x0d, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01,
|
||||
0x5f, 0x01, 0x60, 0x01, 0x61, 0x01, 0x69, 0x00, 0x52, 0x49, 0x50, 0x53, 0x5f, 0x43, 0x49, 0x44, 0x08, 0x33, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x2b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x12, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xaf, 0x0f, 0x00, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x85, 0x01, 0xa0, 0x01,
|
||||
0xa2, 0x01, 0xaf, 0x01, 0xbf, 0x01, 0xc8, 0x01, 0x10, 0x92, 0x01, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23,
|
||||
0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00,
|
||||
0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x42, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10,
|
||||
0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x83, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80,
|
||||
0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10,
|
||||
0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x00,
|
||||
0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01,
|
||||
0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x16,
|
||||
0x1e, 0x00, 0x00, 0x36, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x0b, 0x2b, 0x10, 0x1a, 0x1e, 0x04, 0x10, 0x20, 0x1e,
|
||||
0x07, 0x47, 0x0e, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x00, 0x00, 0x02, 0x93, 0x02, 0x02, 0xa1, 0x04,
|
||||
0x02, 0x02, 0xa6, 0x02, 0x06, 0x20, 0xb7, 0x02, 0x02, 0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02, 0x06,
|
||||
0x03, 0xae, 0x02, 0x24, 0x07, 0xb5, 0x02, 0x1a, 0x20, 0x00, 0xbb, 0x04, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02,
|
||||
0x04, 0x20, 0x01, 0xbb, 0x04, 0x2b, 0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x06, 0x01, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x28, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x26, 0x09, 0x03, 0xbb, 0x04, 0x28, 0x02, 0x08, 0x00, 0x00, 0x00,
|
||||
0xbc, 0x02, 0x02, 0x07, 0x48, 0x8e, 0x03, 0x02, 0x08, 0x47, 0x2b, 0x2b, 0x2b, 0x06, 0x49, 0xbb, 0x04, 0x28, 0x02, 0x40,
|
||||
0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x4a, 0x4b, 0xae, 0x02, 0x02, 0x4c, 0x3e, 0x02, 0x02, 0x4d, 0x39, 0x4e, 0x02, 0x02,
|
||||
0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04, 0x2b, 0x28, 0x04, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x14, 0x04, 0x00, 0x00, 0x00,
|
||||
0xbc, 0x02, 0x02, 0x08, 0x6f, 0xb7, 0x02, 0x02, 0x06, 0x02, 0xb7, 0x02, 0x02, 0x28, 0x03, 0xbb, 0x04, 0x28, 0x02, 0x09,
|
||||
0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x73, 0xbc, 0x02, 0x02, 0x07, 0x6f, 0xbb, 0x04, 0x28, 0x02, 0x28, 0x00, 0x00,
|
||||
0x00, 0xbc, 0x02, 0x02, 0x07, 0x76, 0xae, 0x83, 0x80, 0x02, 0x02, 0x08, 0x08, 0x08, 0x08, 0x70, 0x08, 0x08, 0x07, 0x71,
|
||||
0x06, 0x06, 0x07, 0x07, 0x71, 0x71, 0x06, 0x06, 0x71, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x72, 0x2b,
|
||||
0x71, 0x06, 0x06, 0x74, 0x09, 0x06, 0x07, 0x07, 0x71, 0x2b, 0x06, 0x07, 0x2b, 0x06, 0x71, 0x06, 0x06, 0x06, 0x28, 0x09,
|
||||
0x06, 0x06, 0x28, 0x06, 0x06, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x47, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x75, 0x2b,
|
||||
0x06, 0x06, 0x06, 0x77, 0x3e, 0x02, 0x02, 0x78, 0x39, 0x79, 0x02, 0x02, 0x3e, 0x14, 0x01, 0x07, 0x39, 0x84, 0x01, 0x02,
|
||||
0x01, 0x3e, 0x34, 0x03, 0x2b, 0x39, 0x9f, 0x01, 0x02, 0x03, 0x3e, 0x02, 0x01, 0x2b, 0x39, 0xa1, 0x01, 0x02, 0x01, 0x3e,
|
||||
0x18, 0x03, 0x07, 0x39, 0xae, 0x01, 0x02, 0x03, 0x3e, 0x08, 0x03, 0x06, 0x39, 0xae, 0x01, 0x18, 0x03, 0xbe, 0x02, 0x0e,
|
||||
0x07, 0x06, 0x3e, 0x02, 0x03, 0xc6, 0x01, 0x39, 0xc7, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0x87, 0x03, 0x00, 0x03, 0x18,
|
||||
0x02, 0x01, 0x2b, 0xbc, 0x02, 0x02, 0x22, 0x06, 0x00, 0x01, 0x2b, 0x02, 0x08, 0x33, 0x51, 0x6e, 0x4f, 0x2c, 0xa4, 0x01,
|
||||
0x2c, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0x7e, 0xac, 0x02, 0xc1, 0x12, 0x07, 0x0f, 0x6e, 0x0f, 0xb0, 0x0a, 0x1b, 0x32,
|
||||
0x32, 0xc1, 0x0a, 0x07, 0x0d, 0x0d, 0x00, 0x3d, 0x09, 0xe5, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x18, 0x13, 0xb3, 0x01, 0x04,
|
||||
0xaf, 0x01, 0x29, 0xc1, 0x0a, 0x06, 0x02, 0x06, 0x00, 0x22, 0x02, 0x00, 0x13, 0xb3, 0x01, 0x02, 0xaf, 0x01, 0x2f, 0xc1,
|
||||
0x0a, 0x06, 0x02, 0x0a, 0x01, 0x22, 0x02, 0x00, 0x13, 0xb3, 0x01, 0x02, 0xaf, 0x01, 0x34, 0xc1, 0x0a, 0x06, 0x02, 0x0e,
|
||||
0x02, 0x22, 0x02, 0x00, 0x23, 0x51, 0xcc, 0x01, 0x7a, 0x65, 0x2c, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0xc3, 0x01,
|
||||
0xc3, 0x01, 0xcd, 0x01, 0x22, 0x01, 0x00, 0xc1, 0x0a, 0x06, 0x0a, 0x0a, 0x01, 0x3f, 0x06, 0x02, 0x02, 0xd2, 0x0a, 0x07,
|
||||
0xd6, 0x01, 0xd6, 0x01, 0xe2, 0x01, 0x01, 0x13, 0xae, 0x01, 0xc9, 0x01, 0xc8, 0x01, 0x2c, 0x22, 0x00, 0xc9, 0x01, 0x8d,
|
||||
0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x8e, 0x01, 0x91, 0x02,
|
||||
0xa0, 0x02, 0x04, 0x07, 0x37, 0x2c, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x10,
|
||||
0xae, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x83, 0x00,
|
||||
0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10,
|
||||
0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x2e, 0x1e, 0x04, 0x37, 0x68, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x00, 0x9a, 0x01, 0x00, 0x10,
|
||||
0x00, 0x1e, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x28, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04,
|
||||
0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x04, 0xb8, 0x02, 0x02, 0x09, 0x04, 0xb7, 0x02, 0x08, 0x08,
|
||||
0x03, 0x94, 0x02, 0x08, 0xfe, 0x02, 0x08, 0x09, 0x09, 0x08, 0x08, 0x08, 0x0e, 0xb5, 0x02, 0x42, 0x20, 0x01, 0xb8, 0x02,
|
||||
0x10, 0x0e, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0xbb, 0x04, 0x37, 0x12, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x04, 0x02, 0x0a,
|
||||
0xbb, 0x04, 0x37, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x30, 0x02, 0x08, 0xbb, 0x04, 0x40, 0x06, 0x04, 0x00, 0x00, 0x00,
|
||||
0xbc, 0x02, 0x02, 0x0a, 0x6c, 0xb7, 0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02, 0x40, 0x03, 0xbb, 0x04, 0x40, 0x02, 0x09,
|
||||
0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0e, 0x70, 0xbc, 0x02, 0x02, 0x09, 0x6c, 0xbb, 0x04, 0x40, 0x02, 0x28, 0x00, 0x00,
|
||||
0x00, 0xbc, 0x02, 0x02, 0x09, 0x73, 0xae, 0x83, 0x80, 0x02, 0x02, 0x0a, 0x0a, 0x0a, 0x0a, 0x6d, 0x0a, 0x0a, 0x09, 0x6e,
|
||||
0x08, 0x08, 0x09, 0x09, 0x6e, 0x6e, 0x08, 0x08, 0x6e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x6f, 0x37,
|
||||
0x6e, 0x08, 0x08, 0x71, 0x0e, 0x08, 0x09, 0x09, 0x6e, 0x37, 0x08, 0x09, 0x37, 0x08, 0x6e, 0x08, 0x08, 0x08, 0x40, 0x0e,
|
||||
0x08, 0x08, 0x40, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3f, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x08, 0x72, 0x37,
|
||||
0x08, 0x08, 0x08, 0x74, 0x3e, 0x02, 0x02, 0x75, 0x39, 0x76, 0x02, 0x02, 0xbb, 0x04, 0x08, 0x1a, 0x00, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a, 0x01, 0x09, 0x39, 0x8d, 0x01, 0x02, 0x01, 0xbe, 0x02, 0x68,
|
||||
0x08, 0x0e, 0x3e, 0x02, 0x02, 0xc2, 0x01, 0x39, 0xc3, 0x01, 0x02, 0x02, 0xec, 0x04, 0x09, 0x0c, 0x8c, 0x01, 0x8c, 0x01,
|
||||
0x8c, 0x01, 0x8c, 0x01, 0x3e, 0x06, 0x02, 0x0e, 0xbb, 0x04, 0x08, 0x16, 0xcd, 0xcc, 0x4c, 0x3f, 0x3e, 0x70, 0x03, 0x09,
|
||||
0x39, 0x90, 0x02, 0x02, 0x03, 0xad, 0x06, 0x09, 0xd4, 0x02, 0xad, 0x06, 0x08, 0x02, 0xad, 0x06, 0x0e, 0x02, 0xc6, 0x06,
|
||||
0x02, 0xf1, 0x06, 0x00, 0x03, 0x18, 0x02, 0x01, 0x09, 0x8e, 0x05, 0xfc, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x13,
|
||||
0x4b, 0xb0, 0x01, 0x77, 0x49, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x5d, 0x54, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x56,
|
||||
0x01, 0xc1, 0x0a, 0x08, 0x02, 0x58, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06, 0x04, 0x02, 0xe4, 0x03, 0xc1, 0x12, 0x09, 0x02,
|
||||
0x55, 0x02, 0x2d, 0x6e, 0x04, 0x04, 0x04, 0x20, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xfd, 0x02, 0x13, 0x69, 0x04, 0xc4, 0x01,
|
||||
0x49, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x12, 0x02, 0x08, 0x02, 0xa7, 0x1e, 0x3b, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x05,
|
||||
0x18, 0x02, 0x99, 0x1e, 0x39, 0x18, 0x04, 0x13, 0xcd, 0x01, 0x02, 0xc4, 0x01, 0x51, 0x01, 0x0e, 0x02, 0x02, 0xc1, 0x0a,
|
||||
0x08, 0x02, 0x02, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x06, 0x02, 0xe0, 0x0a, 0x09, 0x02,
|
||||
0x06, 0x04, 0x02, 0x86, 0x04, 0x4a, 0x08, 0x08, 0x1c, 0xee, 0x02, 0xca, 0x16, 0x12, 0x06, 0x28, 0x06, 0xa7, 0x1e, 0x19,
|
||||
0x00, 0xba, 0x1e, 0x00, 0x01, 0x19, 0x18, 0x02, 0xc3, 0x10, 0x08, 0x06, 0x30, 0x0e, 0xc3, 0x10, 0x08, 0x08, 0x32, 0x16,
|
||||
0xc8, 0x10, 0x08, 0x02, 0x0a, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xa8, 0x04, 0x02, 0xd2, 0x0a, 0x09, 0x74, 0x74, 0x96, 0x01,
|
||||
0x03, 0x99, 0x1e, 0x6e, 0x18, 0x6d, 0xe5, 0x1e, 0x09, 0x76, 0x8b, 0x01, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0xd6, 0x01,
|
||||
0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x99, 0x1e, 0x74, 0x18, 0x73, 0xe5, 0x1e, 0x09, 0x72, 0xca, 0x00, 0x00, 0x00, 0x83,
|
||||
0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x80, 0x0b, 0x16, 0x0b, 0x0b, 0x30, 0x2e, 0x2e, 0x2e,
|
||||
0x2c, 0xc1, 0x0a, 0x09, 0x27, 0x27, 0x00, 0x80, 0x0b, 0x16, 0x04, 0x04, 0x0c, 0x0a, 0x0a, 0x0a, 0x08, 0xc1, 0x0a, 0x09,
|
||||
0x21, 0x21, 0x00, 0x22, 0xbe, 0x02, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xcf, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0xa0, 0x02, 0x04, 0x07, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xc6, 0x06, 0x02, 0x02, 0x00,
|
||||
0x03, 0x18, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x60, 0x23, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34,
|
||||
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00,
|
||||
0x9c, 0x01, 0xeb, 0x03, 0xa0, 0x02, 0x04, 0x07, 0x37, 0x30, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x03, 0x00, 0x10, 0x9c, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02,
|
||||
0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x83, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05,
|
||||
0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23,
|
||||
0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01,
|
||||
0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x00, 0x00,
|
||||
0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x23,
|
||||
0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10,
|
||||
0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00,
|
||||
0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x3a, 0x1e,
|
||||
0x04, 0x00, 0x5a, 0x00, 0x00, 0x70, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x22, 0x00, 0x10, 0x00, 0x22, 0x01, 0x10, 0x00,
|
||||
0x21, 0x06, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00,
|
||||
0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x28, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1a,
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x37, 0x24, 0x04,
|
||||
0x00, 0x00, 0x00, 0x23, 0x00, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21,
|
||||
0x08, 0x00, 0x98, 0x01, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0xcc,
|
||||
0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28,
|
||||
0x00, 0x00, 0x5a, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x93, 0x02, 0x02, 0xa1,
|
||||
0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x04, 0xb8, 0x02, 0x02, 0x09, 0x04, 0xb7, 0x02, 0x08,
|
||||
0x08, 0x03, 0x94, 0x02, 0x0c, 0xfe, 0x02, 0x08, 0x09, 0x09, 0x08, 0x08, 0x08, 0x0e, 0x3e, 0x18, 0x07, 0x09, 0x3e, 0x02,
|
||||
0x07, 0x0e, 0xc1, 0x04, 0x02, 0x09, 0x24, 0x25, 0xb5, 0x02, 0x32, 0x20, 0x01, 0xb8, 0x02, 0x10, 0x0e, 0x03, 0xb5, 0x02,
|
||||
0x02, 0x20, 0x00, 0xbb, 0x04, 0x3f, 0x12, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x04, 0x02, 0x0a, 0xbb, 0x04, 0x3f, 0x0c, 0x01,
|
||||
0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x47, 0xbb, 0x04, 0x3f, 0x16, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x02, 0x08, 0xbb,
|
||||
0x04, 0x48, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0a, 0x74, 0xb7, 0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02,
|
||||
0x48, 0x03, 0xbb, 0x04, 0x48, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0e, 0x78, 0xbc, 0x02, 0x02, 0x09, 0x74,
|
||||
0xbb, 0x04, 0x48, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x7b, 0xae, 0x83, 0x80, 0x02, 0x02, 0x0a, 0x0a,
|
||||
0x0a, 0x0a, 0x75, 0x0a, 0x0a, 0x09, 0x76, 0x08, 0x08, 0x09, 0x09, 0x76, 0x76, 0x08, 0x08, 0x76, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x09, 0x77, 0x3f, 0x76, 0x08, 0x08, 0x79, 0x0e, 0x08, 0x09, 0x09, 0x76, 0x3f, 0x08, 0x09, 0x3f,
|
||||
0x08, 0x76, 0x08, 0x08, 0x08, 0x48, 0x0e, 0x08, 0x08, 0x48, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x47, 0x0a,
|
||||
0x0a, 0x08, 0x08, 0x08, 0x08, 0x7a, 0x3f, 0x08, 0x08, 0x08, 0x7c, 0x3e, 0x02, 0x02, 0x7d, 0x39, 0x7e, 0x02, 0x02, 0x3e,
|
||||
0x0a, 0x02, 0x09, 0xbb, 0x04, 0x48, 0x16, 0x03, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a, 0x01, 0x09, 0x39, 0x9b, 0x01, 0x02, 0x01, 0x3e, 0x44, 0x07, 0x08,
|
||||
0xbb, 0x04, 0x3f, 0x0a, 0x35, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x12, 0x30, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x0e,
|
||||
0xbb, 0x04, 0x3f, 0x08, 0x34, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x48, 0x08, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x48, 0x0a,
|
||||
0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x0c, 0x0a, 0xd7, 0xa3, 0x3a, 0xbb, 0x04, 0x48, 0x0c, 0x00, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x3f, 0x1e, 0x31, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x1a, 0x32, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x0a,
|
||||
0x36, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x06, 0x37, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x10, 0x3a, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x3f, 0x08, 0x3b, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x0c, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x48,
|
||||
0xbb, 0x04, 0x3f, 0x1c, 0x06, 0x00, 0x00, 0x00, 0x89, 0x03, 0x16, 0x08, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0xab, 0x02,
|
||||
0x02, 0xb6, 0x02, 0x3e, 0x02, 0x00, 0xb7, 0x02, 0x39, 0xb8, 0x02, 0x02, 0x00, 0xbb, 0x04, 0x3f, 0x14, 0x1e, 0x00, 0x00,
|
||||
0x00, 0xbb, 0x04, 0x3f, 0x0e, 0x39, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x12, 0x38, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f,
|
||||
0x16, 0x23, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x14, 0x21, 0x00, 0x00, 0x00, 0xbe, 0x02, 0x6a, 0x08, 0x0e, 0x3e, 0x02,
|
||||
0x02, 0x9d, 0x03, 0x39, 0x9e, 0x03, 0x02, 0x02, 0xec, 0x04, 0x09, 0x0c, 0xa6, 0x04, 0xa6, 0x04, 0xa6, 0x04, 0xa6, 0x04,
|
||||
0xbb, 0x04, 0x08, 0x1a, 0xcd, 0xcc, 0x4c, 0x3f, 0x3e, 0x70, 0x03, 0x09, 0x39, 0xea, 0x03, 0x02, 0x03, 0xbb, 0x04, 0x3f,
|
||||
0x0e, 0x3c, 0x00, 0x00, 0x00, 0xad, 0x06, 0x09, 0xea, 0x02, 0xad, 0x06, 0x08, 0x02, 0xad, 0x06, 0x0e, 0x02, 0xc6, 0x06,
|
||||
0x02, 0xc9, 0x0a, 0x00, 0x03, 0x18, 0x02, 0x39, 0x24, 0xe4, 0x07, 0x07, 0x39, 0x25, 0x04, 0x07, 0x01, 0x09, 0x6e, 0xa8,
|
||||
0x06, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x13, 0x53, 0xb0, 0x01, 0x7f, 0x51, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x08,
|
||||
0x5d, 0x54, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x56, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x58, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06,
|
||||
0x04, 0x02, 0x90, 0x07, 0xc1, 0x12, 0x09, 0x02, 0x55, 0x02, 0x2d, 0x76, 0x04, 0x04, 0x04, 0x20, 0x5c, 0x08, 0x02, 0x01,
|
||||
0x42, 0xe1, 0x04, 0x13, 0x71, 0x04, 0x9f, 0x03, 0x51, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x08, 0x02, 0xa7,
|
||||
0x1e, 0x3b, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x05, 0x18, 0x02, 0x99, 0x1e, 0x39, 0x18, 0x04, 0x13, 0xcd, 0x01, 0x02, 0x9f,
|
||||
0x03, 0x59, 0x01, 0x0e, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x02, 0x02, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x01, 0xc1, 0x0a,
|
||||
0x08, 0x02, 0x06, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06, 0x04, 0x02, 0xb2, 0x07, 0x4a, 0x08, 0x08, 0x1c, 0x82, 0x03, 0xca,
|
||||
0x16, 0x14, 0x06, 0x28, 0x06, 0xa7, 0x1e, 0x19, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x19, 0x18, 0x02, 0xc3, 0x10, 0x08, 0x06,
|
||||
0x30, 0x0e, 0xc3, 0x10, 0x08, 0x08, 0x32, 0x16, 0xc8, 0x10, 0x08, 0x02, 0x0a, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xd4, 0x07,
|
||||
0x02, 0xd2, 0x0a, 0x09, 0x82, 0x01, 0x82, 0x01, 0xa4, 0x01, 0x03, 0x99, 0x1e, 0x7c, 0x18, 0x7b, 0xe5, 0x1e, 0x09, 0x90,
|
||||
0x01, 0x6f, 0x02, 0x00, 0x00, 0x69, 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x99, 0x1e, 0x8e,
|
||||
0x01, 0x18, 0x8d, 0x01, 0xe5, 0x1e, 0x09, 0x8c, 0x01, 0xa5, 0x01, 0x00, 0x00, 0x67, 0x02, 0x00, 0x00, 0xcb, 0x02, 0x00,
|
||||
0x00, 0x83, 0x02, 0x00, 0x00, 0x80, 0x0b, 0x18, 0x17, 0x17, 0x2e, 0x2c, 0x2c, 0x2c, 0x2a, 0xc1, 0x0a, 0x09, 0x25, 0x25,
|
||||
0x00, 0x80, 0x0b, 0x18, 0x04, 0x04, 0x0c, 0x0a, 0x0a, 0x0a, 0x08, 0xc1, 0x0a, 0x09, 0x31, 0x31, 0x00, 0x22, 0xd2, 0x02,
|
||||
0x00, 0x23, 0x84, 0x01, 0x1e, 0x7f, 0x59, 0x65, 0x01, 0x09, 0x02, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10,
|
||||
0x0e, 0xe7, 0x02, 0x7f, 0xe7, 0x02, 0x13, 0x5a, 0x04, 0x7f, 0xf2, 0x03, 0x01, 0x47, 0x02, 0x02, 0xc1, 0x12, 0x0e, 0x04,
|
||||
0x04, 0x0a, 0x01, 0x09, 0x04, 0x1a, 0x22, 0x02, 0x00, 0x22, 0x01, 0x04, 0xd9, 0x06, 0x09, 0x06, 0xa4, 0x07, 0x08, 0x04,
|
||||
0x22, 0x20, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0xc6, 0x06, 0x09, 0xa3, 0x07, 0x00, 0x26, 0xa7, 0x06, 0x24, 0x03, 0xa7, 0x06,
|
||||
0x25, 0x02, 0x18, 0x04, 0x01, 0x0e, 0xac, 0x02, 0xb0, 0x02, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xc0, 0x01, 0x13, 0x71, 0x06,
|
||||
0x7f, 0xc3, 0x01, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x0a, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00,
|
||||
0x01, 0x03, 0x18, 0x02, 0x01, 0x09, 0x04, 0xc4, 0x02, 0x9e, 0x1e, 0xc9, 0x00, 0x00, 0x00, 0x18, 0x01, 0x13, 0xcd, 0x01,
|
||||
0x0c, 0x7f, 0xcc, 0x01, 0x01, 0x0e, 0x02, 0x02, 0x13, 0x71, 0x06, 0x7f, 0xd1, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x0a,
|
||||
0x08, 0x08, 0x10, 0x02, 0x13, 0xbe, 0x01, 0x08, 0x28, 0xda, 0x01, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0x14, 0x02,
|
||||
0x5c, 0x08, 0x04, 0x01, 0x04, 0xdd, 0x01, 0xca, 0x16, 0x14, 0x04, 0x04, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00,
|
||||
0x01, 0x03, 0x18, 0x02, 0xc1, 0x0a, 0x08, 0x0c, 0x32, 0x00, 0xc1, 0x0a, 0x08, 0x04, 0x36, 0x01, 0xc3, 0x10, 0x08, 0x04,
|
||||
0x04, 0x1e, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xec, 0x01, 0x4a, 0x08, 0x02, 0x0c, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x30, 0x02,
|
||||
0xc8, 0x10, 0x08, 0x04, 0x04, 0x28, 0x99, 0x1e, 0x1c, 0x18, 0x1b, 0xe5, 0x1e, 0x08, 0xd2, 0x07, 0xd7, 0x00, 0x00, 0x00,
|
||||
0xc8, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x13, 0x71, 0xab, 0x07, 0x7f, 0xf5, 0x01, 0x01,
|
||||
0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x6e, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xf8, 0x01, 0x92, 0x01, 0x4a, 0x08,
|
||||
0x02, 0xa3, 0x07, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xfd, 0x01, 0xc3, 0x10, 0x08, 0x06, 0xd6,
|
||||
0x01, 0x06, 0x13, 0x71, 0x04, 0x7f, 0x82, 0x02, 0x01, 0x08, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x25, 0x81, 0x02, 0x84,
|
||||
0x02, 0x13, 0xcd, 0x01, 0x06, 0x7f, 0x87, 0x02, 0x01, 0x0e, 0x02, 0x02, 0x13, 0x71, 0x04, 0x7f, 0x8a, 0x02, 0x01, 0x08,
|
||||
0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x02, 0xf6, 0x01, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02,
|
||||
0x13, 0x71, 0x0a, 0x7f, 0x92, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0xa8, 0x01, 0x02, 0x13, 0x71, 0x04, 0x7f,
|
||||
0x96, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x08, 0x02, 0x13, 0x9d, 0x02, 0x0a, 0x7f, 0x9c, 0x02, 0x01,
|
||||
0x48, 0x02, 0x02, 0x5c, 0x76, 0x02, 0x01, 0x3e, 0x9f, 0x02, 0xc1, 0x0a, 0x08, 0x06, 0x06, 0x01, 0xc1, 0x0a, 0x08, 0x04,
|
||||
0x0a, 0x00, 0x7c, 0x08, 0x04, 0x01, 0x2b, 0x99, 0x02, 0x92, 0x01, 0x96, 0x01, 0x7c, 0x08, 0x02, 0x01, 0x2e, 0xa3, 0x02,
|
||||
0xa5, 0x02, 0xa7, 0x02, 0x13, 0x53, 0x08, 0x7f, 0xab, 0x02, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x09, 0x02, 0x02, 0x00,
|
||||
0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x09, 0x02, 0x06, 0x01, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a,
|
||||
0x09, 0x02, 0x0a, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xd0, 0x0a, 0x47, 0x02, 0x0a, 0x06, 0x02, 0xb4, 0x0a, 0x47,
|
||||
0x02, 0x34, 0x01, 0x00, 0x00, 0x01, 0xb7, 0x02, 0x0a, 0x02, 0x01, 0x0e, 0x04, 0xa8, 0x04, 0xc1, 0x12, 0x0e, 0x02, 0x10,
|
||||
0x02, 0xe8, 0x0a, 0x09, 0x04, 0x0a, 0x04, 0x02, 0xa8, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x4a, 0x0e, 0x04, 0x72,
|
||||
0x04, 0x99, 0x1e, 0x66, 0x18, 0x65, 0xe5, 0x1e, 0x0e, 0xfc, 0x06, 0x09, 0x01, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x42,
|
||||
0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x13, 0x71, 0x91, 0x06, 0x7f, 0xc3, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08,
|
||||
0x04, 0x04, 0x84, 0x01, 0xce, 0x10, 0x0e, 0x04, 0x87, 0x06, 0x04, 0x13, 0x71, 0x04, 0x7f, 0xca, 0x02, 0x01, 0x08, 0x02,
|
||||
0x02, 0xca, 0x16, 0x14, 0x02, 0x02, 0xf6, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13,
|
||||
0x71, 0x0c, 0x7f, 0xd3, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xaa, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01,
|
||||
0x28, 0xd6, 0x02, 0x92, 0x01, 0x4a, 0x08, 0x02, 0xe7, 0x05, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b,
|
||||
0xdb, 0x02, 0x13, 0x84, 0x01, 0x06, 0x7f, 0xde, 0x02, 0x01, 0x09, 0x02, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x23,
|
||||
0x71, 0x02, 0x7f, 0xde, 0x02, 0x8f, 0x01, 0x01, 0x08, 0x02, 0x02, 0xce, 0x10, 0x0e, 0x02, 0x06, 0x02, 0x01, 0x0e, 0x04,
|
||||
0xfc, 0x04, 0x5c, 0x0e, 0x02, 0x01, 0x45, 0xe6, 0x02, 0x13, 0xcd, 0x01, 0x04, 0x7f, 0xe8, 0x02, 0x01, 0x0e, 0x02, 0x02,
|
||||
0xc4, 0x12, 0x08, 0x02, 0x08, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xeb, 0x02, 0x92, 0x01, 0x6c, 0x08, 0x0a, 0x01, 0x1a,
|
||||
0xec, 0x02, 0xcc, 0x02, 0xc3, 0x10, 0x08, 0x08, 0xbe, 0x03, 0x32, 0x4a, 0x08, 0x02, 0x0a, 0x02, 0xce, 0x10, 0x0e, 0x02,
|
||||
0x26, 0x02, 0x4b, 0x0e, 0x04, 0x60, 0x04, 0x99, 0x1e, 0x54, 0x18, 0x53, 0xe5, 0x1e, 0x0e, 0x80, 0x06, 0x49, 0x01, 0x00,
|
||||
0x00, 0x0f, 0x01, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x13, 0xbe, 0x01, 0xa9, 0x05, 0x27, 0x8f,
|
||||
0x01, 0x01, 0x08, 0x02, 0x02, 0xce, 0x10, 0x0e, 0x04, 0xa3, 0x05, 0x04, 0x01, 0x09, 0x02, 0xae, 0x05, 0x3d, 0x0e, 0x02,
|
||||
0x02, 0x02, 0x18, 0xc3, 0x10, 0x08, 0x04, 0xd6, 0x03, 0xf8, 0x01, 0xce, 0x10, 0x0e, 0x02, 0x06, 0x02, 0x4b, 0x0e, 0x04,
|
||||
0x04, 0x0e, 0x13, 0xbe, 0x01, 0x02, 0x27, 0xe6, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0xbe,
|
||||
0x01, 0x02, 0x27, 0xda, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x08, 0x01, 0x22, 0x02, 0x00, 0x13, 0xbe, 0x01, 0x02, 0x27, 0xd5,
|
||||
0x01, 0xc1, 0x0a, 0x08, 0x02, 0x0c, 0x02, 0x22, 0x02, 0x00, 0x01, 0x09, 0x02, 0xc8, 0x05, 0x9e, 0x1e, 0x8b, 0x01, 0x00,
|
||||
0x00, 0x88, 0x06, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00,
|
||||
0x0b, 0x00, 0x08, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1,
|
||||
0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04,
|
||||
0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x53, 0x5a, 0xa0, 0x02, 0x04, 0x07, 0x10, 0x2e,
|
||||
0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04,
|
||||
0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01,
|
||||
0x10, 0x6c, 0x1e, 0x00, 0x10, 0x0e, 0x1e, 0x07, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xb5, 0x02, 0x0a, 0x20, 0x01,
|
||||
0xa6, 0x02, 0x0c, 0x20, 0xb7, 0x02, 0x02, 0x0e, 0x04, 0xb8, 0x02, 0x02, 0x0f, 0x04, 0xb7, 0x02, 0x06, 0x0e, 0x03, 0xb8,
|
||||
0x02, 0x02, 0x13, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0xbb, 0x04, 0x15, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02,
|
||||
0x0f, 0x16, 0x8e, 0x03, 0x02, 0x10, 0x14, 0x08, 0x08, 0x08, 0x0e, 0x17, 0xbb, 0x04, 0x15, 0x02, 0x40, 0x00, 0x00, 0x00,
|
||||
0xbc, 0x02, 0x02, 0x18, 0x19, 0xae, 0x02, 0x02, 0x1a, 0x3e, 0x02, 0x02, 0x1b, 0x39, 0x1c, 0x02, 0x02, 0xbb, 0x04, 0x08,
|
||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1e, 0x02, 0x08, 0xbb, 0x04, 0x08, 0x14, 0x04, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x1a,
|
||||
0x0e, 0x02, 0x3e, 0x1c, 0x03, 0x44, 0x39, 0x52, 0x02, 0x03, 0xbb, 0x04, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x02,
|
||||
0x03, 0x0e, 0x3e, 0x04, 0x01, 0x0f, 0x39, 0x59, 0x02, 0x01, 0xbb, 0x04, 0x15, 0x02, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x02,
|
||||
0x01, 0x0e, 0xbb, 0x04, 0x15, 0x06, 0x03, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x15, 0x08, 0x01, 0x00, 0x00, 0x00, 0xad, 0x06,
|
||||
0x08, 0x86, 0x01, 0xc6, 0x06, 0x02, 0xc3, 0x02, 0x00, 0x03, 0x18, 0x02, 0x33, 0x2d, 0xb8, 0x02, 0x1d, 0x1e, 0xa6, 0x01,
|
||||
0x37, 0x01, 0x08, 0x02, 0x02, 0xbc, 0x0e, 0x0e, 0x99, 0x01, 0x99, 0x01, 0x13, 0x57, 0x06, 0x53, 0x56, 0x22, 0x00, 0x06,
|
||||
0x13, 0x5c, 0x0a, 0x5a, 0x5b, 0x01, 0x0e, 0x02, 0x02, 0x13, 0x5c, 0x04, 0x5a, 0x5f, 0x01, 0x0e, 0x02, 0x02, 0xc8, 0x10,
|
||||
0x0e, 0x02, 0x08, 0x02, 0x13, 0x57, 0x04, 0x53, 0x63, 0x22, 0x00, 0x04, 0x8d, 0x1e, 0x88, 0x06, 0x8b, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xfd, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xdf, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0xfc, 0x01, 0xa0, 0x02, 0x04, 0x07, 0x00, 0xf8, 0x03, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x93, 0x02,
|
||||
0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x04, 0xbb, 0x04, 0x08, 0xe4, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0xec, 0x04, 0x09, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x3e, 0x74, 0x03, 0x09,
|
||||
0x39, 0xfb, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xef, 0x03, 0x00, 0x03, 0x18, 0x02, 0x22, 0xed, 0x03, 0xf7, 0x02, 0x8d,
|
||||
0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x15, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xbf, 0x0f, 0x00, 0x02, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x03, 0x04, 0x05, 0x06,
|
||||
0x07, 0x08, 0x09, 0x10, 0x24, 0x06, 0x10, 0x37, 0x0d, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x10, 0x10, 0x06, 0x80, 0x02, 0x47, 0x0d, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x02, 0x22,
|
||||
0x00, 0x10, 0x00, 0x21, 0x01, 0x00, 0x13, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x16, 0x01, 0x08, 0x10, 0x0c, 0x06, 0x40,
|
||||
0x10, 0x02, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x37, 0x0f, 0x83, 0x00, 0x05, 0x00, 0x23, 0x00,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10,
|
||||
0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10,
|
||||
0x01, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23,
|
||||
0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10,
|
||||
0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00,
|
||||
0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x02, 0x22, 0x00, 0x10,
|
||||
0x00, 0x21, 0x00, 0x10, 0x17, 0x1e, 0x00, 0x10, 0x02, 0x0b, 0x2b, 0x10, 0x02, 0x1e, 0x04, 0x10, 0x02, 0x1e, 0x07, 0x10,
|
||||
0x02, 0x0b, 0x03, 0x47, 0x12, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x00, 0x00, 0x02, 0x93, 0x02, 0x2e,
|
||||
0xa1, 0x04, 0x02, 0x18, 0xa6, 0x02, 0x02, 0x20, 0xb7, 0x02, 0x02, 0x1a, 0x04, 0xb8, 0x02, 0x02, 0x1b, 0x04, 0xb7, 0x02,
|
||||
0x02, 0x1a, 0x03, 0xae, 0x02, 0x25, 0x1b, 0xb5, 0x02, 0x28, 0x20, 0x00, 0xbb, 0x04, 0x1e, 0x02, 0x00, 0x00, 0x00, 0x00,
|
||||
0xb5, 0x02, 0x02, 0x20, 0x01, 0xbb, 0x04, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x1e, 0x02, 0x01, 0x00, 0x00,
|
||||
0x00, 0xbb, 0x04, 0x20, 0x02, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x1e, 0x02, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x02,
|
||||
0x1d, 0x03, 0xbb, 0x04, 0x1e, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x27, 0x1b, 0x26, 0x8e, 0x03, 0x0d, 0x1c, 0x25,
|
||||
0x20, 0x20, 0x20, 0x1a, 0x12, 0xbb, 0x04, 0x1e, 0x38, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x27, 0x0b, 0x27, 0xae, 0x02,
|
||||
0x0d, 0x13, 0x3e, 0x38, 0x02, 0x0c, 0x39, 0x28, 0x35, 0x02, 0x3e, 0x38, 0x02, 0x1c, 0xbb, 0x04, 0x20, 0x02, 0x04, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x02, 0x03, 0x20, 0x39, 0x2b, 0x4f, 0x03, 0xb2, 0x06, 0x20, 0x16, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04,
|
||||
0x1e, 0x3c, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x2f, 0x1c, 0x2c, 0xb7, 0x02, 0x32, 0x1a, 0x02, 0xb7, 0x02, 0x02, 0x1e,
|
||||
0x03, 0xbb, 0x04, 0x1e, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x33, 0x1d, 0x2f, 0xbc, 0x02, 0x02, 0x1b, 0x2c, 0xbb,
|
||||
0x04, 0x1e, 0x34, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x31, 0x1b, 0x30, 0xae, 0x83, 0x80, 0x02, 0x0f, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x14, 0x1c, 0x1c, 0x1b, 0x2d, 0x1a, 0x1a, 0x1b, 0x1b, 0x2d, 0x2d, 0x1a, 0x1a, 0x2d, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a,
|
||||
0x1a, 0x1a, 0x1a, 0x1b, 0x2e, 0x20, 0x2d, 0x1a, 0x1a, 0x15, 0x1d, 0x1a, 0x1b, 0x1b, 0x2d, 0x20, 0x1a, 0x1b, 0x20, 0x1a,
|
||||
0x2d, 0x1a, 0x1a, 0x1a, 0x1e, 0x1d, 0x1a, 0x1a, 0x1e, 0x1a, 0x1a, 0x1d, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x25, 0x1c, 0x1c,
|
||||
0x1a, 0x1a, 0x1a, 0x1a, 0x16, 0x20, 0x1a, 0x1a, 0x1a, 0x17, 0x3e, 0x44, 0x02, 0x0f, 0x39, 0x31, 0x41, 0x02, 0x3e, 0x44,
|
||||
0x01, 0x1b, 0x39, 0x32, 0x5b, 0x01, 0x3e, 0x5e, 0x01, 0x20, 0x39, 0x33, 0x5b, 0x01, 0x3e, 0x5e, 0x03, 0x1b, 0x39, 0x34,
|
||||
0x5b, 0x03, 0x3e, 0x5e, 0x03, 0x1a, 0x39, 0x34, 0x5b, 0x03, 0xbb, 0x04, 0x1a, 0x5e, 0x00, 0x00, 0x00, 0x40, 0xbb, 0x04,
|
||||
0x1a, 0x02, 0x00, 0x00, 0x80, 0xbf, 0xbb, 0x04, 0x1a, 0x02, 0x00, 0x00, 0x80, 0x3f, 0xbc, 0x02, 0x02, 0x1a, 0x24, 0x3e,
|
||||
0x02, 0x03, 0x39, 0x39, 0x3a, 0x63, 0x03, 0xbe, 0x02, 0x12, 0x1b, 0x1a, 0x3e, 0x54, 0x03, 0x11, 0x39, 0x3b, 0x63, 0x03,
|
||||
0xc6, 0x06, 0x18, 0x0d, 0x00, 0x19, 0x18, 0x74, 0x01, 0x20, 0x02, 0x70, 0x22, 0x74, 0x00, 0x01, 0x20, 0x02, 0x76, 0xc7,
|
||||
0x10, 0x20, 0x02, 0x02, 0x62, 0x33, 0x29, 0x02, 0x0d, 0x21, 0x3f, 0x21, 0x01, 0x1c, 0x02, 0x02, 0x01, 0x1b, 0x02, 0x7c,
|
||||
0xc1, 0x12, 0x1b, 0x02, 0x04, 0x02, 0xb0, 0x0a, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x1b, 0x02, 0x02, 0x00, 0x3d, 0x1d, 0x02,
|
||||
0x02, 0x02, 0x18, 0x13, 0x35, 0x02, 0x06, 0x1f, 0xc1, 0x0a, 0x1a, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0x35, 0x02,
|
||||
0x06, 0x22, 0xc1, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x22, 0x02, 0x00, 0x13, 0x35, 0x02, 0x06, 0x24, 0xc1, 0x0a, 0x1a, 0x02,
|
||||
0x0c, 0x02, 0x22, 0x02, 0x00, 0x01, 0x20, 0x02, 0x94, 0x01, 0xcb, 0x10, 0x20, 0x02, 0x02, 0x80, 0x01, 0x23, 0x29, 0x02,
|
||||
0x10, 0x2a, 0x4e, 0x01, 0x1c, 0x02, 0x02, 0xc1, 0x12, 0x1b, 0x02, 0x02, 0x18, 0x22, 0x94, 0x01, 0x00, 0x01, 0x20, 0x02,
|
||||
0x9e, 0x01, 0xcb, 0x10, 0x20, 0x02, 0x02, 0x8a, 0x01, 0xbf, 0x0c, 0x1a, 0x02, 0x8c, 0x01, 0xc8, 0x10, 0x1a, 0x02, 0x3e,
|
||||
0x02, 0xc8, 0x10, 0x1a, 0x02, 0x02, 0x40, 0x4b, 0x1a, 0x02, 0x40, 0x02, 0xbf, 0x0c, 0x1a, 0x02, 0x0a, 0x4a, 0x1a, 0x02,
|
||||
0x08, 0x02, 0x4b, 0x1a, 0x02, 0x06, 0x02, 0xc8, 0x10, 0x1a, 0x02, 0x46, 0x0e, 0xc1, 0x0a, 0x1a, 0x02, 0x16, 0x00, 0x4a,
|
||||
0x1a, 0x02, 0x02, 0x04, 0xd2, 0x0a, 0x1b, 0x02, 0x02, 0x1a, 0x00, 0xc1, 0x0a, 0x1a, 0x02, 0x02, 0x03, 0x4a, 0x1a, 0x02,
|
||||
0x0c, 0x02, 0xc1, 0x0a, 0x1a, 0x02, 0x06, 0x00, 0x4b, 0x1a, 0x02, 0x02, 0x04, 0xd2, 0x0a, 0x1b, 0x02, 0x02, 0x0a, 0x00,
|
||||
0xc1, 0x0a, 0x1a, 0x02, 0x02, 0x00, 0xc3, 0x10, 0x1a, 0x02, 0x5a, 0x18, 0xc1, 0x0a, 0x1a, 0x02, 0x06, 0x03, 0x4a, 0x1a,
|
||||
0x02, 0x04, 0x02, 0x4b, 0x1a, 0x02, 0x08, 0x02, 0xc0, 0x10, 0x20, 0x02, 0x2c, 0x8c, 0x01, 0xbf, 0x0c, 0x1a, 0x02, 0x02,
|
||||
0x4a, 0x1a, 0x02, 0x2c, 0x02, 0xc3, 0x10, 0x1a, 0x02, 0x68, 0x02, 0x4a, 0x1a, 0x02, 0x02, 0x0e, 0x4b, 0x1a, 0x02, 0x14,
|
||||
0x02, 0x13, 0x35, 0x02, 0x08, 0x21, 0x22, 0x00, 0x0e, 0x3f, 0x1a, 0x02, 0x04, 0x13, 0x35, 0x02, 0x08, 0x23, 0x22, 0x00,
|
||||
0x02, 0xc1, 0x0a, 0x1a, 0x02, 0x1e, 0x01, 0x3f, 0x1a, 0x02, 0x02, 0xd2, 0x0a, 0x1b, 0x02, 0x02, 0x22, 0x01, 0x13, 0x34,
|
||||
0x02, 0x09, 0x21, 0x22, 0x00, 0x02, 0x22, 0xe4, 0x01, 0x6c, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x22, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00,
|
||||
0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x11, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c,
|
||||
0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xaf, 0x0f,
|
||||
0x00, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x85, 0x01, 0xa0, 0x01, 0xa2, 0x01, 0xaf, 0x01, 0xbf, 0x01, 0xc9, 0x01,
|
||||
0x10, 0x92, 0x01, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10,
|
||||
0x00, 0x21, 0x01, 0x10, 0x42, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37,
|
||||
0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10,
|
||||
0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05,
|
||||
0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01,
|
||||
0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00,
|
||||
0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05,
|
||||
0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00,
|
||||
0x10, 0x00, 0x21, 0x00, 0x10, 0x16, 0x1e, 0x00, 0x00, 0x36, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x0b, 0x2b, 0x10,
|
||||
0x1a, 0x1e, 0x04, 0x10, 0x20, 0x1e, 0x07, 0x47, 0x10, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x01, 0x0b,
|
||||
0x01, 0x03, 0x01, 0x0b, 0x01, 0x04, 0x00, 0x00, 0x02, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x06, 0x20,
|
||||
0xb7, 0x02, 0x02, 0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02, 0x06, 0x03, 0xae, 0x02, 0x24, 0x07, 0xb5,
|
||||
0x02, 0x1a, 0x20, 0x00, 0xbb, 0x04, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x04, 0x20, 0x01, 0xbb, 0x04, 0x2b,
|
||||
0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x06, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x0a, 0x02, 0x00, 0x00,
|
||||
0x00, 0xb8, 0x02, 0x26, 0x09, 0x03, 0xbb, 0x04, 0x28, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x48, 0x8e,
|
||||
0x03, 0x02, 0x08, 0x47, 0x2b, 0x2b, 0x2b, 0x06, 0x49, 0xbb, 0x04, 0x28, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02,
|
||||
0x4a, 0x4b, 0xae, 0x02, 0x02, 0x4c, 0x3e, 0x02, 0x02, 0x4d, 0x39, 0x4e, 0x02, 0x02, 0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04,
|
||||
0x2b, 0x28, 0x04, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x14, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x08, 0x6f, 0xb7,
|
||||
0x02, 0x02, 0x06, 0x02, 0xb7, 0x02, 0x02, 0x28, 0x03, 0xbb, 0x04, 0x28, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02,
|
||||
0x09, 0x73, 0xbc, 0x02, 0x02, 0x07, 0x6f, 0xbb, 0x04, 0x28, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x76,
|
||||
0xae, 0x83, 0x80, 0x02, 0x02, 0x08, 0x08, 0x08, 0x08, 0x70, 0x08, 0x08, 0x07, 0x71, 0x06, 0x06, 0x07, 0x07, 0x71, 0x71,
|
||||
0x06, 0x06, 0x71, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x72, 0x2b, 0x71, 0x06, 0x06, 0x74, 0x09, 0x06,
|
||||
0x07, 0x07, 0x71, 0x2b, 0x06, 0x07, 0x2b, 0x06, 0x71, 0x06, 0x06, 0x06, 0x28, 0x09, 0x06, 0x06, 0x28, 0x06, 0x06, 0x09,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x47, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x75, 0x2b, 0x06, 0x06, 0x06, 0x77, 0x3e, 0x02,
|
||||
0x02, 0x78, 0x39, 0x79, 0x02, 0x02, 0x3e, 0x14, 0x01, 0x07, 0x39, 0x84, 0x01, 0x02, 0x01, 0x3e, 0x34, 0x03, 0x2b, 0x39,
|
||||
0x9f, 0x01, 0x02, 0x03, 0x3e, 0x02, 0x01, 0x2b, 0x39, 0xa1, 0x01, 0x02, 0x01, 0x3e, 0x18, 0x03, 0x07, 0x39, 0xae, 0x01,
|
||||
0x02, 0x03, 0x3e, 0x08, 0x03, 0x06, 0x39, 0xae, 0x01, 0x18, 0x03, 0xbc, 0x02, 0x0e, 0x06, 0x2f, 0xde, 0x02, 0x02, 0x07,
|
||||
0x06, 0xc6, 0x01, 0xc6, 0x01, 0x3e, 0x02, 0x03, 0xc7, 0x01, 0x39, 0xc8, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0x89, 0x03,
|
||||
0x00, 0x03, 0x18, 0x02, 0x01, 0x2b, 0xbc, 0x02, 0x02, 0x22, 0x06, 0x00, 0x01, 0x2b, 0x02, 0x08, 0x33, 0x51, 0x70, 0x4f,
|
||||
0x2c, 0xa4, 0x01, 0x2c, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0x7e, 0xae, 0x02, 0xc1, 0x12, 0x07, 0x0f, 0x6e, 0x0f, 0xb0,
|
||||
0x0a, 0x1b, 0x32, 0x32, 0xc1, 0x0a, 0x07, 0x0d, 0x0d, 0x00, 0x3d, 0x09, 0xe7, 0x01, 0xe7, 0x01, 0xe7, 0x01, 0x18, 0x13,
|
||||
0xb3, 0x01, 0x04, 0xaf, 0x01, 0x29, 0xc1, 0x0a, 0x06, 0x02, 0x06, 0x00, 0x22, 0x02, 0x00, 0x13, 0xb3, 0x01, 0x02, 0xaf,
|
||||
0x01, 0x2f, 0xc1, 0x0a, 0x06, 0x02, 0x0a, 0x01, 0x22, 0x02, 0x00, 0x13, 0xb3, 0x01, 0x02, 0xaf, 0x01, 0x34, 0xc1, 0x0a,
|
||||
0x06, 0x02, 0x0e, 0x02, 0x22, 0x02, 0x00, 0x23, 0x51, 0xce, 0x01, 0x7a, 0x65, 0x2c, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12,
|
||||
0x07, 0xc5, 0x01, 0xc5, 0x01, 0xcf, 0x01, 0x22, 0x01, 0x00, 0xc1, 0x0a, 0x06, 0x0a, 0x0a, 0x01, 0x3f, 0x06, 0x02, 0x02,
|
||||
0xd2, 0x0a, 0x07, 0xd8, 0x01, 0xd8, 0x01, 0xe4, 0x01, 0x01, 0x13, 0xae, 0x01, 0xc9, 0x01, 0xc9, 0x01, 0x2c, 0x22, 0x00,
|
||||
0xc9, 0x01, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x30, 0x11, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34,
|
||||
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00,
|
||||
0x8e, 0x01, 0x91, 0x02, 0xa0, 0x02, 0x04, 0x07, 0x10, 0xda, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06,
|
||||
0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23,
|
||||
0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00,
|
||||
0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x2e, 0x1e, 0x04, 0x47, 0x68, 0x02, 0x00, 0x23, 0x00,
|
||||
0x01, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x10, 0x9a, 0x01, 0x1e, 0x00, 0x93,
|
||||
0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x04, 0xb8, 0x02, 0x02, 0x09, 0x04,
|
||||
0xb7, 0x02, 0x08, 0x08, 0x03, 0x94, 0x02, 0x08, 0xfe, 0x02, 0x08, 0x09, 0x09, 0x08, 0x08, 0x08, 0x0e, 0xb5, 0x02, 0x42,
|
||||
0x20, 0x01, 0xb8, 0x02, 0x10, 0x0e, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0xbb, 0x04, 0x37, 0x12, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x04, 0x02, 0x0a, 0xbb, 0x04, 0x37, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x30, 0x02, 0x08, 0xbb, 0x04, 0x40, 0x06,
|
||||
0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0a, 0x6c, 0xb7, 0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02, 0x40, 0x03, 0xbb,
|
||||
0x04, 0x40, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0e, 0x70, 0xbc, 0x02, 0x02, 0x09, 0x6c, 0xbb, 0x04, 0x40,
|
||||
0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x73, 0xae, 0x83, 0x80, 0x02, 0x02, 0x0a, 0x0a, 0x0a, 0x0a, 0x6d,
|
||||
0x0a, 0x0a, 0x09, 0x6e, 0x08, 0x08, 0x09, 0x09, 0x6e, 0x6e, 0x08, 0x08, 0x6e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x09, 0x6f, 0x37, 0x6e, 0x08, 0x08, 0x71, 0x0e, 0x08, 0x09, 0x09, 0x6e, 0x37, 0x08, 0x09, 0x37, 0x08, 0x6e, 0x08,
|
||||
0x08, 0x08, 0x40, 0x0e, 0x08, 0x08, 0x40, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3f, 0x0a, 0x0a, 0x08, 0x08,
|
||||
0x08, 0x08, 0x72, 0x37, 0x08, 0x08, 0x08, 0x74, 0x3e, 0x02, 0x02, 0x75, 0x39, 0x76, 0x02, 0x02, 0xbb, 0x04, 0x08, 0x1a,
|
||||
0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a, 0x01, 0x09, 0x39, 0x8d, 0x01, 0x02,
|
||||
0x01, 0xbe, 0x02, 0x68, 0x08, 0x0e, 0x3e, 0x02, 0x02, 0xc2, 0x01, 0x39, 0xc3, 0x01, 0x02, 0x02, 0xec, 0x04, 0x09, 0x0c,
|
||||
0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x3e, 0x06, 0x02, 0x0e, 0xbb, 0x04, 0x08, 0x16, 0xcd, 0xcc, 0x4c, 0x3f,
|
||||
0x3e, 0x70, 0x03, 0x09, 0x39, 0x90, 0x02, 0x02, 0x03, 0xad, 0x06, 0x09, 0xd4, 0x02, 0xad, 0x06, 0x08, 0x02, 0xad, 0x06,
|
||||
0x0e, 0x02, 0xc6, 0x06, 0x02, 0xf1, 0x06, 0x00, 0x03, 0x18, 0x02, 0x01, 0x09, 0x8e, 0x05, 0xfc, 0x02, 0x3d, 0x0e, 0x02,
|
||||
0x02, 0x02, 0x18, 0x13, 0x4b, 0xb0, 0x01, 0x77, 0x49, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x5d, 0x54, 0x00, 0xc1,
|
||||
0x0a, 0x08, 0x02, 0x56, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x58, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06, 0x04, 0x02, 0xe4, 0x03,
|
||||
0xc1, 0x12, 0x09, 0x02, 0x55, 0x02, 0x2d, 0x6e, 0x04, 0x04, 0x04, 0x20, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xfd, 0x02, 0x13,
|
||||
0x69, 0x04, 0xc4, 0x01, 0x49, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x12, 0x02, 0x08, 0x02, 0xa7, 0x1e, 0x3b, 0x00, 0xba,
|
||||
0x1e, 0x00, 0x01, 0x05, 0x18, 0x02, 0x99, 0x1e, 0x39, 0x18, 0x04, 0x13, 0xcd, 0x01, 0x02, 0xc4, 0x01, 0x51, 0x01, 0x0e,
|
||||
0x02, 0x02, 0xc1, 0x0a, 0x08, 0x02, 0x02, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x06, 0x02,
|
||||
0xe0, 0x0a, 0x09, 0x02, 0x06, 0x04, 0x02, 0x86, 0x04, 0x4a, 0x08, 0x08, 0x1c, 0xee, 0x02, 0xca, 0x16, 0x12, 0x06, 0x28,
|
||||
0x06, 0xa7, 0x1e, 0x19, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x19, 0x18, 0x02, 0xc3, 0x10, 0x08, 0x06, 0x30, 0x0e, 0xc3, 0x10,
|
||||
0x08, 0x08, 0x32, 0x16, 0xc8, 0x10, 0x08, 0x02, 0x0a, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xa8, 0x04, 0x02, 0xd2, 0x0a, 0x09,
|
||||
0x74, 0x74, 0x96, 0x01, 0x03, 0x99, 0x1e, 0x6e, 0x18, 0x6d, 0xe5, 0x1e, 0x09, 0x76, 0x8b, 0x01, 0x00, 0x00, 0x85, 0x01,
|
||||
0x00, 0x00, 0xd6, 0x01, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x99, 0x1e, 0x74, 0x18, 0x73, 0xe5, 0x1e, 0x09, 0x72, 0xca,
|
||||
0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x80, 0x0b, 0x16, 0x0b, 0x0b,
|
||||
0x30, 0x2e, 0x2e, 0x2e, 0x2c, 0xc1, 0x0a, 0x09, 0x27, 0x27, 0x00, 0x80, 0x0b, 0x16, 0x04, 0x04, 0x0c, 0x0a, 0x0a, 0x0a,
|
||||
0x08, 0xc1, 0x0a, 0x09, 0x21, 0x21, 0x00, 0x22, 0xbe, 0x02, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x53, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xcf, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0xa0, 0x02, 0x04, 0x07, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xc6, 0x06, 0x02, 0x02, 0x00,
|
||||
0x03, 0x18, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x7c, 0x1f, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34,
|
||||
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00,
|
||||
0x9c, 0x01, 0xeb, 0x03, 0xa0, 0x02, 0x04, 0x07, 0x10, 0xea, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06,
|
||||
0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23,
|
||||
0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00,
|
||||
0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x3a, 0x1e, 0x04, 0x00, 0x8e, 0x02, 0x00, 0x00, 0x04,
|
||||
0x00, 0x00, 0x28, 0x00, 0x10, 0x00, 0x22, 0x01, 0x10, 0x00, 0x21, 0x06, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02,
|
||||
0x00, 0x47, 0xba, 0x01, 0x02, 0x00, 0x23, 0x00, 0x01, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00,
|
||||
0x21, 0x08, 0x10, 0x98, 0x01, 0x1e, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02,
|
||||
0x02, 0x08, 0x04, 0xb8, 0x02, 0x02, 0x09, 0x04, 0xb7, 0x02, 0x08, 0x08, 0x03, 0x94, 0x02, 0x0c, 0xfe, 0x02, 0x08, 0x09,
|
||||
0x09, 0x08, 0x08, 0x08, 0x0e, 0x3e, 0x18, 0x07, 0x09, 0x3e, 0x02, 0x07, 0x0e, 0xc1, 0x04, 0x02, 0x09, 0x24, 0x25, 0xb5,
|
||||
0x02, 0x32, 0x20, 0x01, 0xb8, 0x02, 0x10, 0x0e, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0xbb, 0x04, 0x3f, 0x12, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x04, 0x02, 0x0a, 0xbb, 0x04, 0x3f, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x47, 0xbb, 0x04,
|
||||
0x3f, 0x16, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x02, 0x08, 0xbb, 0x04, 0x48, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02,
|
||||
0x02, 0x0a, 0x74, 0xb7, 0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02, 0x48, 0x03, 0xbb, 0x04, 0x48, 0x02, 0x09, 0x00, 0x00,
|
||||
0x00, 0xbc, 0x02, 0x02, 0x0e, 0x78, 0xbc, 0x02, 0x02, 0x09, 0x74, 0xbb, 0x04, 0x48, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc,
|
||||
0x02, 0x02, 0x09, 0x7b, 0xae, 0x83, 0x80, 0x02, 0x02, 0x0a, 0x0a, 0x0a, 0x0a, 0x75, 0x0a, 0x0a, 0x09, 0x76, 0x08, 0x08,
|
||||
0x09, 0x09, 0x76, 0x76, 0x08, 0x08, 0x76, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x77, 0x3f, 0x76, 0x08,
|
||||
0x08, 0x79, 0x0e, 0x08, 0x09, 0x09, 0x76, 0x3f, 0x08, 0x09, 0x3f, 0x08, 0x76, 0x08, 0x08, 0x08, 0x48, 0x0e, 0x08, 0x08,
|
||||
0x48, 0x08, 0x08, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x47, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x08, 0x7a, 0x3f, 0x08, 0x08,
|
||||
0x08, 0x7c, 0x3e, 0x02, 0x02, 0x7d, 0x39, 0x7e, 0x02, 0x02, 0x3e, 0x0a, 0x02, 0x09, 0xbb, 0x04, 0x48, 0x16, 0x03, 0x00,
|
||||
0x00, 0x00, 0xbb, 0x04, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a,
|
||||
0x01, 0x09, 0x39, 0x9b, 0x01, 0x02, 0x01, 0x3e, 0x44, 0x07, 0x08, 0xbb, 0x04, 0x3f, 0x0a, 0x35, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3f, 0x12, 0x30, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x0e, 0xbb, 0x04, 0x3f, 0x08, 0x34, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x48, 0x08, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x48, 0x0a, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x0c, 0x0a,
|
||||
0xd7, 0xa3, 0x3a, 0xbb, 0x04, 0x48, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x1e, 0x31, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3f, 0x1a, 0x32, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x0a, 0x36, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x06, 0x37,
|
||||
0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x10, 0x3a, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x08, 0x3b, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3f, 0x0c, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x48, 0xbb, 0x04, 0x3f, 0x1c, 0x06, 0x00, 0x00, 0x00, 0x89,
|
||||
0x03, 0x16, 0x08, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0xab, 0x02, 0x02, 0xb6, 0x02, 0x3e, 0x02, 0x00, 0xb7, 0x02, 0x39,
|
||||
0xb8, 0x02, 0x02, 0x00, 0xbb, 0x04, 0x3f, 0x14, 0x1e, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x0e, 0x39, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x3f, 0x12, 0x38, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x16, 0x23, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3f, 0x14,
|
||||
0x21, 0x00, 0x00, 0x00, 0xbe, 0x02, 0x6a, 0x08, 0x0e, 0x3e, 0x02, 0x02, 0x9d, 0x03, 0x39, 0x9e, 0x03, 0x02, 0x02, 0xec,
|
||||
0x04, 0x09, 0x0c, 0xa6, 0x04, 0xa6, 0x04, 0xa6, 0x04, 0xa6, 0x04, 0xbb, 0x04, 0x08, 0x1a, 0xcd, 0xcc, 0x4c, 0x3f, 0x3e,
|
||||
0x70, 0x03, 0x09, 0x39, 0xea, 0x03, 0x02, 0x03, 0xbb, 0x04, 0x3f, 0x0e, 0x3c, 0x00, 0x00, 0x00, 0xad, 0x06, 0x09, 0xea,
|
||||
0x02, 0xad, 0x06, 0x08, 0x02, 0xad, 0x06, 0x0e, 0x02, 0xc6, 0x06, 0x02, 0xc9, 0x0a, 0x00, 0x03, 0x18, 0x02, 0x39, 0x24,
|
||||
0xe4, 0x07, 0x07, 0x39, 0x25, 0x04, 0x07, 0x01, 0x09, 0x6e, 0xa8, 0x06, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x13, 0x53,
|
||||
0xb0, 0x01, 0x7f, 0x51, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x5d, 0x54, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x56, 0x01,
|
||||
0xc1, 0x0a, 0x08, 0x02, 0x58, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06, 0x04, 0x02, 0x90, 0x07, 0xc1, 0x12, 0x09, 0x02, 0x55,
|
||||
0x02, 0x2d, 0x76, 0x04, 0x04, 0x04, 0x20, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xe1, 0x04, 0x13, 0x71, 0x04, 0x9f, 0x03, 0x51,
|
||||
0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x08, 0x02, 0xa7, 0x1e, 0x3b, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x05, 0x18,
|
||||
0x02, 0x99, 0x1e, 0x39, 0x18, 0x04, 0x13, 0xcd, 0x01, 0x02, 0x9f, 0x03, 0x59, 0x01, 0x0e, 0x02, 0x02, 0xc1, 0x0a, 0x08,
|
||||
0x02, 0x02, 0x00, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x06, 0x02, 0xe0, 0x0a, 0x09, 0x02, 0x06,
|
||||
0x04, 0x02, 0xb2, 0x07, 0x4a, 0x08, 0x08, 0x1c, 0x82, 0x03, 0xca, 0x16, 0x14, 0x06, 0x28, 0x06, 0xa7, 0x1e, 0x19, 0x00,
|
||||
0xba, 0x1e, 0x00, 0x01, 0x19, 0x18, 0x02, 0xc3, 0x10, 0x08, 0x06, 0x30, 0x0e, 0xc3, 0x10, 0x08, 0x08, 0x32, 0x16, 0xc8,
|
||||
0x10, 0x08, 0x02, 0x0a, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xd4, 0x07, 0x02, 0xd2, 0x0a, 0x09, 0x82, 0x01, 0x82, 0x01, 0xa4,
|
||||
0x01, 0x03, 0x99, 0x1e, 0x7c, 0x18, 0x7b, 0xe5, 0x1e, 0x09, 0x90, 0x01, 0x6f, 0x02, 0x00, 0x00, 0x69, 0x02, 0x00, 0x00,
|
||||
0xc1, 0x02, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x99, 0x1e, 0x8e, 0x01, 0x18, 0x8d, 0x01, 0xe5, 0x1e, 0x09, 0x8c, 0x01,
|
||||
0xa5, 0x01, 0x00, 0x00, 0x67, 0x02, 0x00, 0x00, 0xcb, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x80, 0x0b, 0x18, 0x17,
|
||||
0x17, 0x2e, 0x2c, 0x2c, 0x2c, 0x2a, 0xc1, 0x0a, 0x09, 0x25, 0x25, 0x00, 0x80, 0x0b, 0x18, 0x04, 0x04, 0x0c, 0x0a, 0x0a,
|
||||
0x0a, 0x08, 0xc1, 0x0a, 0x09, 0x31, 0x31, 0x00, 0x22, 0xd2, 0x02, 0x00, 0x23, 0x84, 0x01, 0x1e, 0x7f, 0x59, 0x65, 0x01,
|
||||
0x09, 0x02, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10, 0x0e, 0xe7, 0x02, 0x7f, 0xe7, 0x02, 0x13, 0x5a, 0x04,
|
||||
0x7f, 0xf2, 0x03, 0x01, 0x47, 0x02, 0x02, 0xc1, 0x12, 0x0e, 0x04, 0x04, 0x0a, 0x01, 0x09, 0x04, 0x1a, 0x22, 0x02, 0x00,
|
||||
0x22, 0x01, 0x04, 0xd9, 0x06, 0x09, 0x06, 0xa4, 0x07, 0x08, 0x04, 0x22, 0x20, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0xc6, 0x06,
|
||||
0x09, 0xa3, 0x07, 0x00, 0x26, 0xa7, 0x06, 0x24, 0x03, 0xa7, 0x06, 0x25, 0x02, 0x18, 0x04, 0x01, 0x0e, 0xac, 0x02, 0xb0,
|
||||
0x02, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xc0, 0x01, 0x13, 0x71, 0x06, 0x7f, 0xc3, 0x01, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16,
|
||||
0x14, 0x02, 0x0a, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x01, 0x09, 0x04, 0xc4, 0x02,
|
||||
0x9e, 0x1e, 0xc9, 0x00, 0x00, 0x00, 0x18, 0x01, 0x13, 0xcd, 0x01, 0x0c, 0x7f, 0xcc, 0x01, 0x01, 0x0e, 0x02, 0x02, 0x13,
|
||||
0x71, 0x06, 0x7f, 0xd1, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x08, 0x10, 0x02, 0x13, 0xbe, 0x01, 0x08, 0x28,
|
||||
0xda, 0x01, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0x14, 0x02, 0x5c, 0x08, 0x04, 0x01, 0x04, 0xdd, 0x01, 0xca, 0x16,
|
||||
0x14, 0x04, 0x04, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0xc1, 0x0a, 0x08, 0x0c, 0x32,
|
||||
0x00, 0xc1, 0x0a, 0x08, 0x04, 0x36, 0x01, 0xc3, 0x10, 0x08, 0x04, 0x04, 0x1e, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xec, 0x01,
|
||||
0x4a, 0x08, 0x02, 0x0c, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x30, 0x02, 0xc8, 0x10, 0x08, 0x04, 0x04, 0x28, 0x99, 0x1e, 0x1c,
|
||||
0x18, 0x1b, 0xe5, 0x1e, 0x08, 0xd2, 0x07, 0xd7, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xe2,
|
||||
0x00, 0x00, 0x00, 0x13, 0x71, 0xab, 0x07, 0x7f, 0xf5, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x6e, 0x02,
|
||||
0x6c, 0x08, 0x02, 0x01, 0x28, 0xf8, 0x01, 0x92, 0x01, 0x4a, 0x08, 0x02, 0xa3, 0x07, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c,
|
||||
0x08, 0x02, 0x01, 0x1b, 0xfd, 0x01, 0xc3, 0x10, 0x08, 0x06, 0xd6, 0x01, 0x06, 0x13, 0x71, 0x04, 0x7f, 0x82, 0x02, 0x01,
|
||||
0x08, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x25, 0x81, 0x02, 0x84, 0x02, 0x13, 0xcd, 0x01, 0x06, 0x7f, 0x87, 0x02, 0x01,
|
||||
0x0e, 0x02, 0x02, 0x13, 0x71, 0x04, 0x7f, 0x8a, 0x02, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x02, 0xf6, 0x01,
|
||||
0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13, 0x71, 0x0a, 0x7f, 0x92, 0x02, 0x01, 0x08, 0x02,
|
||||
0x02, 0x4a, 0x08, 0x02, 0xa8, 0x01, 0x02, 0x13, 0x71, 0x04, 0x7f, 0x96, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08,
|
||||
0x02, 0x08, 0x02, 0x13, 0x9d, 0x02, 0x0a, 0x7f, 0x9c, 0x02, 0x01, 0x48, 0x02, 0x02, 0x5c, 0x76, 0x02, 0x01, 0x3e, 0x9f,
|
||||
0x02, 0xc1, 0x0a, 0x08, 0x06, 0x06, 0x01, 0xc1, 0x0a, 0x08, 0x04, 0x0a, 0x00, 0x7c, 0x08, 0x04, 0x01, 0x2b, 0x99, 0x02,
|
||||
0x92, 0x01, 0x96, 0x01, 0x7c, 0x08, 0x02, 0x01, 0x2e, 0xa3, 0x02, 0xa5, 0x02, 0xa7, 0x02, 0x13, 0x53, 0x08, 0x7f, 0xab,
|
||||
0x02, 0x01, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x09, 0x02, 0x02, 0x00, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x09,
|
||||
0x02, 0x06, 0x01, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x09, 0x02, 0x0a, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02,
|
||||
0x18, 0xd0, 0x0a, 0x47, 0x02, 0x0a, 0x06, 0x02, 0xb4, 0x0a, 0x47, 0x02, 0x34, 0x01, 0x00, 0x00, 0x01, 0xb7, 0x02, 0x0a,
|
||||
0x02, 0x01, 0x0e, 0x04, 0xa8, 0x04, 0xc1, 0x12, 0x0e, 0x02, 0x10, 0x02, 0xe8, 0x0a, 0x09, 0x04, 0x0a, 0x04, 0x02, 0xa8,
|
||||
0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x4a, 0x0e, 0x04, 0x72, 0x04, 0x99, 0x1e, 0x66, 0x18, 0x65, 0xe5, 0x1e, 0x0e,
|
||||
0xfc, 0x06, 0x09, 0x01, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x13, 0x71,
|
||||
0x91, 0x06, 0x7f, 0xc3, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x04, 0x04, 0x84, 0x01, 0xce, 0x10, 0x0e, 0x04, 0x87,
|
||||
0x06, 0x04, 0x13, 0x71, 0x04, 0x7f, 0xca, 0x02, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x14, 0x02, 0x02, 0xf6, 0x02, 0xa7,
|
||||
0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13, 0x71, 0x0c, 0x7f, 0xd3, 0x02, 0x01, 0x08, 0x02, 0x02,
|
||||
0xc3, 0x10, 0x08, 0x02, 0xaa, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xd6, 0x02, 0x92, 0x01, 0x4a, 0x08, 0x02, 0xe7,
|
||||
0x05, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xdb, 0x02, 0x13, 0x84, 0x01, 0x06, 0x7f, 0xde, 0x02,
|
||||
0x01, 0x09, 0x02, 0x02, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0x23, 0x71, 0x02, 0x7f, 0xde, 0x02, 0x8f, 0x01, 0x01, 0x08,
|
||||
0x02, 0x02, 0xce, 0x10, 0x0e, 0x02, 0x06, 0x02, 0x01, 0x0e, 0x04, 0xfc, 0x04, 0x5c, 0x0e, 0x02, 0x01, 0x45, 0xe6, 0x02,
|
||||
0x13, 0xcd, 0x01, 0x04, 0x7f, 0xe8, 0x02, 0x01, 0x0e, 0x02, 0x02, 0xc4, 0x12, 0x08, 0x02, 0x08, 0x02, 0x6c, 0x08, 0x02,
|
||||
0x01, 0x28, 0xeb, 0x02, 0x92, 0x01, 0x6c, 0x08, 0x0a, 0x01, 0x1a, 0xec, 0x02, 0xcc, 0x02, 0xc3, 0x10, 0x08, 0x08, 0xbe,
|
||||
0x03, 0x32, 0x4a, 0x08, 0x02, 0x0a, 0x02, 0xce, 0x10, 0x0e, 0x02, 0x26, 0x02, 0x4b, 0x0e, 0x04, 0x60, 0x04, 0x99, 0x1e,
|
||||
0x54, 0x18, 0x53, 0xe5, 0x1e, 0x0e, 0x80, 0x06, 0x49, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x79, 0x01, 0x00, 0x00,
|
||||
0x4e, 0x01, 0x00, 0x00, 0x13, 0xbe, 0x01, 0xa9, 0x05, 0x27, 0x8f, 0x01, 0x01, 0x08, 0x02, 0x02, 0xce, 0x10, 0x0e, 0x04,
|
||||
0xa3, 0x05, 0x04, 0x01, 0x09, 0x02, 0xae, 0x05, 0x3d, 0x0e, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10, 0x08, 0x04, 0xd6, 0x03,
|
||||
0xf8, 0x01, 0xce, 0x10, 0x0e, 0x02, 0x06, 0x02, 0x4b, 0x0e, 0x04, 0x04, 0x0e, 0x13, 0xbe, 0x01, 0x02, 0x27, 0xe6, 0x01,
|
||||
0xc1, 0x0a, 0x08, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0xbe, 0x01, 0x02, 0x27, 0xda, 0x01, 0xc1, 0x0a, 0x08, 0x02,
|
||||
0x08, 0x01, 0x22, 0x02, 0x00, 0x13, 0xbe, 0x01, 0x02, 0x27, 0xd5, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x0c, 0x02, 0x22, 0x02,
|
||||
0x00, 0x01, 0x09, 0x02, 0xc8, 0x05, 0x9e, 0x1e, 0x8b, 0x01, 0x00, 0x00, 0x88, 0x06, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xa7, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0x53, 0x5a, 0xa0, 0x02, 0x04, 0x07, 0x10, 0x2e, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00,
|
||||
0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23,
|
||||
0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x6c, 0x1e, 0x00, 0x10, 0x0e, 0x1e, 0x07,
|
||||
0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xb5, 0x02, 0x0a, 0x20, 0x01, 0xa6, 0x02, 0x0c, 0x20, 0xb7, 0x02, 0x02, 0x0e,
|
||||
0x04, 0xb8, 0x02, 0x02, 0x0f, 0x04, 0xb7, 0x02, 0x06, 0x0e, 0x03, 0xb8, 0x02, 0x02, 0x13, 0x03, 0xb5, 0x02, 0x02, 0x20,
|
||||
0x00, 0xbb, 0x04, 0x15, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0f, 0x16, 0x8e, 0x03, 0x02, 0x10, 0x14, 0x08,
|
||||
0x08, 0x08, 0x0e, 0x17, 0xbb, 0x04, 0x15, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x18, 0x19, 0xae, 0x02, 0x02,
|
||||
0x1a, 0x3e, 0x02, 0x02, 0x1b, 0x39, 0x1c, 0x02, 0x02, 0xbb, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1e, 0x02,
|
||||
0x08, 0xbb, 0x04, 0x08, 0x14, 0x04, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x1a, 0x0e, 0x02, 0x3e, 0x1c, 0x03, 0x44, 0x39, 0x52,
|
||||
0x02, 0x03, 0xbb, 0x04, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x03, 0x0e, 0x3e, 0x04, 0x01, 0x0f, 0x39, 0x59,
|
||||
0x02, 0x01, 0xbb, 0x04, 0x15, 0x02, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x01, 0x0e, 0xbb, 0x04, 0x15, 0x06, 0x03, 0x00,
|
||||
0x00, 0x00, 0xbb, 0x04, 0x15, 0x08, 0x01, 0x00, 0x00, 0x00, 0xad, 0x06, 0x08, 0x86, 0x01, 0xc6, 0x06, 0x02, 0xc3, 0x02,
|
||||
0x00, 0x03, 0x18, 0x02, 0x33, 0x2d, 0xb8, 0x02, 0x1d, 0x1e, 0xa6, 0x01, 0x37, 0x01, 0x08, 0x02, 0x02, 0xbc, 0x0e, 0x0e,
|
||||
0x99, 0x01, 0x99, 0x01, 0x13, 0x57, 0x06, 0x53, 0x56, 0x22, 0x00, 0x06, 0x13, 0x5c, 0x0a, 0x5a, 0x5b, 0x01, 0x0e, 0x02,
|
||||
0x02, 0x13, 0x5c, 0x04, 0x5a, 0x5f, 0x01, 0x0e, 0x02, 0x02, 0xc8, 0x10, 0x0e, 0x02, 0x08, 0x02, 0x13, 0x57, 0x04, 0x53,
|
||||
0x63, 0x22, 0x00, 0x04, 0x8d, 0x1e, 0x88, 0x06, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xdf, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xfc, 0x01, 0xa0, 0x02,
|
||||
0x04, 0x07, 0x10, 0xf8, 0x03, 0x1e, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02,
|
||||
0x02, 0x08, 0x04, 0xbb, 0x04, 0x08, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x09, 0x8c, 0x01, 0x8c, 0x01, 0x8c,
|
||||
0x01, 0x8c, 0x01, 0x8c, 0x01, 0x3e, 0x74, 0x03, 0x09, 0x39, 0xfb, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xef, 0x03, 0x00,
|
||||
0x03, 0x18, 0x02, 0x22, 0xed, 0x03, 0xf7, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x34, 0x15, 0x00, 0x00, 0x91, 0x02, 0x01, 0x91, 0x02, 0x20, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74,
|
||||
0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xaf, 0x0f, 0x00, 0x04, 0xed, 0xc2, 0xa5,
|
||||
0xf3, 0x06, 0x00, 0x71, 0x8c, 0x01, 0xa7, 0x01, 0xb6, 0x01, 0xc6, 0x01, 0x89, 0x02, 0x10, 0x92, 0x01, 0x06, 0x10, 0x37,
|
||||
0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10,
|
||||
0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02,
|
||||
0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x00, 0x44, 0x0e,
|
||||
0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x01, 0x08, 0x10, 0x06, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10,
|
||||
0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23,
|
||||
0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10,
|
||||
0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00,
|
||||
0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x18, 0x1e, 0x00, 0x10, 0x36, 0x0b, 0x2b, 0x10, 0x1e, 0x1e,
|
||||
0x04, 0x10, 0x20, 0x1e, 0x07, 0x47, 0x82, 0x01, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x01, 0x0b, 0x01,
|
||||
0x03, 0x01, 0x0b, 0x01, 0x04, 0x00, 0x00, 0x02, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x06, 0x20, 0xb7,
|
||||
0x02, 0x02, 0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02, 0x06, 0x03, 0xae, 0x02, 0x24, 0x07, 0xb5, 0x02,
|
||||
0x1a, 0x20, 0x00, 0xbb, 0x04, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x04, 0x20, 0x01, 0xbb, 0x04, 0x2b, 0x02,
|
||||
0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28, 0x06, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2b, 0x04, 0x01, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x28, 0x06, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2b, 0x04, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x22, 0x09,
|
||||
0x03, 0xbb, 0x04, 0x28, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x48, 0x8e, 0x03, 0x02, 0x08, 0x47, 0x2b,
|
||||
0x2b, 0x2b, 0x06, 0x49, 0xbb, 0x04, 0x28, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x4a, 0x4b, 0xae, 0x02, 0x02,
|
||||
0x4c, 0x3e, 0x02, 0x02, 0x4d, 0x39, 0x4e, 0x02, 0x02, 0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04, 0x2b, 0x28, 0x04, 0x00, 0x00,
|
||||
0x00, 0x3e, 0x16, 0x03, 0x2b, 0x39, 0x70, 0x02, 0x03, 0xb2, 0x06, 0x2b, 0x04, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x28,
|
||||
0x04, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x08, 0x75, 0xb7, 0x02, 0x02, 0x06, 0x02, 0xb7, 0x02, 0x02, 0x28, 0x03,
|
||||
0xbb, 0x04, 0x28, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x79, 0xbc, 0x02, 0x02, 0x07, 0x75, 0xbb, 0x04,
|
||||
0x28, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x7c, 0xae, 0x83, 0x80, 0x02, 0x02, 0x08, 0x08, 0x08, 0x08,
|
||||
0x76, 0x08, 0x08, 0x07, 0x77, 0x06, 0x06, 0x07, 0x07, 0x77, 0x77, 0x06, 0x06, 0x77, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x07, 0x78, 0x2b, 0x77, 0x06, 0x06, 0x7a, 0x09, 0x06, 0x07, 0x07, 0x77, 0x2b, 0x06, 0x07, 0x2b, 0x06, 0x77,
|
||||
0x06, 0x06, 0x06, 0x28, 0x09, 0x06, 0x06, 0x28, 0x06, 0x06, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x47, 0x08, 0x08, 0x06,
|
||||
0x06, 0x06, 0x06, 0x7b, 0x2b, 0x06, 0x06, 0x06, 0x7d, 0x3e, 0x02, 0x02, 0x7e, 0x39, 0x7f, 0x02, 0x02, 0x3e, 0x16, 0x01,
|
||||
0x07, 0x39, 0x8b, 0x01, 0x02, 0x01, 0x3e, 0x34, 0x01, 0x2b, 0x39, 0xa6, 0x01, 0x02, 0x01, 0x3e, 0x1c, 0x03, 0x07, 0x39,
|
||||
0xb5, 0x01, 0x02, 0x03, 0x3e, 0x08, 0x03, 0x06, 0x39, 0xb5, 0x01, 0x18, 0x03, 0xbb, 0x04, 0x06, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x40, 0xbb, 0x04, 0x06, 0x08, 0x00, 0x00, 0x80, 0xbf, 0xbb, 0x04, 0x06, 0x16, 0x00, 0x00, 0x80, 0x3f, 0xbc, 0x02, 0x52,
|
||||
0x06, 0x34, 0xbc, 0x02, 0x02, 0x06, 0x2f, 0xde, 0x02, 0x02, 0x07, 0x06, 0x85, 0x02, 0x86, 0x02, 0x3e, 0x02, 0x03, 0x87,
|
||||
0x02, 0x39, 0x88, 0x02, 0x02, 0x03, 0xc6, 0x06, 0x02, 0x89, 0x04, 0x00, 0x03, 0x18, 0x02, 0x01, 0x2b, 0xc6, 0x02, 0x02,
|
||||
0x22, 0x6e, 0x00, 0x01, 0x2b, 0x04, 0x72, 0xc7, 0x10, 0x2b, 0x02, 0x02, 0x70, 0x33, 0x51, 0xf4, 0x01, 0x4f, 0x2c, 0xab,
|
||||
0x01, 0x2c, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0x7e, 0xb2, 0x03, 0xc1, 0x12, 0x07, 0x0f, 0x6e, 0x0f, 0xb0, 0x0a, 0x1b,
|
||||
0x3a, 0x3a, 0xc1, 0x0a, 0x07, 0x0d, 0x0d, 0x00, 0x3d, 0x09, 0xf3, 0x02, 0xf3, 0x02, 0xf3, 0x02, 0x18, 0x13, 0xba, 0x01,
|
||||
0x04, 0xb6, 0x01, 0x29, 0xc1, 0x0a, 0x06, 0x02, 0x06, 0x00, 0x22, 0x02, 0x00, 0x13, 0xba, 0x01, 0x02, 0xb6, 0x01, 0x2f,
|
||||
0xc1, 0x0a, 0x06, 0x02, 0x0a, 0x01, 0x22, 0x02, 0x00, 0x13, 0xba, 0x01, 0x02, 0xb6, 0x01, 0x34, 0xc1, 0x0a, 0x06, 0x02,
|
||||
0x0e, 0x02, 0x22, 0x02, 0x00, 0x01, 0x2b, 0xd4, 0x02, 0xf2, 0x03, 0xcb, 0x10, 0x2b, 0x02, 0x02, 0xf0, 0x03, 0x23, 0x51,
|
||||
0x04, 0x80, 0x01, 0x65, 0xeb, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0xd1, 0x02, 0xd1, 0x02, 0xdb, 0x02, 0x22,
|
||||
0x01, 0x00, 0x01, 0x2b, 0x08, 0xb0, 0x01, 0xcb, 0x10, 0x2b, 0x02, 0x02, 0xae, 0x01, 0xbf, 0x0c, 0x06, 0x08, 0xb6, 0x01,
|
||||
0xc8, 0x10, 0x06, 0x02, 0x04, 0x02, 0xc8, 0x10, 0x06, 0x08, 0x08, 0x0c, 0x4b, 0x06, 0x02, 0x06, 0x02, 0xbf, 0x0c, 0x06,
|
||||
0x0a, 0x1e, 0x4a, 0x06, 0x02, 0x16, 0x02, 0x4b, 0x06, 0x02, 0x0e, 0x02, 0xc8, 0x10, 0x06, 0x06, 0x04, 0x20, 0xc1, 0x0a,
|
||||
0x06, 0x04, 0x36, 0x00, 0x4a, 0x06, 0x02, 0x02, 0x06, 0xd2, 0x0a, 0x07, 0xb8, 0x02, 0xb8, 0x02, 0xf0, 0x02, 0x00, 0xc1,
|
||||
0x0a, 0x06, 0xad, 0x02, 0xad, 0x02, 0x03, 0x4a, 0x06, 0x02, 0x18, 0x02, 0xc1, 0x0a, 0x06, 0x04, 0xa7, 0x02, 0x00, 0x4b,
|
||||
0x06, 0x02, 0x02, 0x06, 0xd2, 0x0a, 0x07, 0xae, 0x02, 0xae, 0x02, 0x08, 0x00, 0xc1, 0x0a, 0x06, 0xa5, 0x02, 0xa5, 0x02,
|
||||
0x00, 0xc3, 0x10, 0x06, 0x0a, 0x2e, 0x32, 0xc1, 0x0a, 0x06, 0x04, 0x97, 0x02, 0x03, 0x4a, 0x06, 0x02, 0x06, 0x02, 0x4b,
|
||||
0x06, 0x02, 0x12, 0x02, 0xc0, 0x10, 0x2b, 0x0c, 0x66, 0x98, 0x03, 0xbf, 0x0c, 0x06, 0x02, 0x02, 0x4a, 0x06, 0x02, 0x60,
|
||||
0x02, 0xc3, 0x10, 0x06, 0x02, 0x48, 0x02, 0x4a, 0x06, 0x06, 0x06, 0x1c, 0x4b, 0x06, 0x02, 0x2c, 0x02, 0x23, 0xba, 0x01,
|
||||
0x0e, 0x89, 0x02, 0x36, 0x2c, 0x22, 0x00, 0x28, 0x3f, 0x06, 0x04, 0x12, 0x23, 0xba, 0x01, 0x02, 0x89, 0x02, 0x36, 0x31,
|
||||
0x22, 0x00, 0x02, 0xc1, 0x0a, 0x06, 0x04, 0xe1, 0x01, 0x01, 0x3f, 0x06, 0x02, 0x02, 0xd2, 0x0a, 0x07, 0xee, 0x01, 0xee,
|
||||
0x01, 0x0e, 0x01, 0x13, 0xb5, 0x01, 0xe7, 0x01, 0x89, 0x02, 0x2c, 0x22, 0x00, 0xe7, 0x01, 0x22, 0xc6, 0x02, 0xd2, 0x01,
|
||||
0x8d, 0x1e, 0x88, 0x06, 0x52, 0x49, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x86, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x03, 0x00, 0x00, 0x00, 0x01,
|
||||
0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0x05, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x01, 0x90, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x08, 0x00, 0x00,
|
||||
0x00, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x10, 0x01, 0x09, 0x00, 0x00, 0x00, 0x02, 0x20, 0x01, 0x0a, 0x00,
|
||||
0x00, 0x00, 0x02, 0x30, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x44, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x0d,
|
||||
0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0xfa, 0x0a,
|
||||
0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
|
||||
0x92, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xa2, 0x02, 0x00, 0x00, 0x01, 0x20,
|
||||
0x01, 0xbc, 0x02, 0x00, 0x00, 0x01, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x01, 0x44, 0x01, 0xbe, 0x04, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0xe8, 0x04, 0x00, 0x00, 0x01, 0x90, 0x00, 0xe8, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1e, 0x06, 0x00, 0x00,
|
||||
0x02, 0x00, 0x01, 0x2a, 0x07, 0x00, 0x00, 0x02, 0x10, 0x00, 0x1e, 0x06, 0x00, 0x00, 0x02, 0x10, 0x01, 0xa2, 0x02, 0x00,
|
||||
0x00, 0x02, 0x20, 0x01, 0x32, 0x08, 0x00, 0x00, 0x02, 0x30, 0x01, 0x5a, 0x04, 0x00, 0x00, 0x02, 0x44, 0x01, 0xbe, 0x04,
|
||||
0x00, 0x00, 0x02, 0x80, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x02, 0x90, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x72, 0x0d, 0x00, 0x00,
|
||||
0x82, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01,
|
||||
0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00,
|
||||
0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00,
|
||||
0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01,
|
||||
0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01,
|
||||
0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01,
|
||||
0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01,
|
||||
0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01,
|
||||
0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01,
|
||||
0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01,
|
||||
0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01,
|
||||
0xbe, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00,
|
||||
0xc2, 0x01, 0xc3, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01,
|
||||
0x69, 0x00, 0x64, 0x01, 0x12, 0x0d, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01,
|
||||
0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01,
|
||||
0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01,
|
||||
0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01,
|
||||
0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01,
|
||||
0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01,
|
||||
0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01,
|
||||
0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01,
|
||||
0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00,
|
||||
0xcd, 0x01, 0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01,
|
||||
0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd0, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01,
|
||||
0xd4, 0x01, 0xd5, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01,
|
||||
0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01,
|
||||
0xe6, 0x01, 0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0xe8, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x64, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0x69, 0x00,
|
||||
0x64, 0x01, 0x72, 0x19, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01,
|
||||
0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01,
|
||||
0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01,
|
||||
0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01,
|
||||
@@ -1402,13 +2078,68 @@ const uint8_t GRID_PACKAGE[] = {
|
||||
0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01,
|
||||
0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01,
|
||||
0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01,
|
||||
0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00,
|
||||
0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd0, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01,
|
||||
0xd5, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01,
|
||||
0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0xe6, 0x01,
|
||||
0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0xe8, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0x69, 0x00, 0x64, 0x01,
|
||||
0x72, 0x19, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01,
|
||||
0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01,
|
||||
0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xf9, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xd5, 0x01, 0xfe, 0x01, 0xd7, 0x01,
|
||||
0xd8, 0x01, 0xd5, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0xdf, 0x01, 0x05, 0x02,
|
||||
0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01,
|
||||
0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0xd5, 0x01, 0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x11, 0x02, 0x12, 0x02,
|
||||
0xe4, 0x01, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01,
|
||||
0x18, 0x02, 0xe4, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0xdf, 0x01, 0x1e, 0x02, 0x1f, 0x02,
|
||||
0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x20, 0x02, 0xe4, 0x01, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0xdf, 0x01, 0x24, 0x02,
|
||||
0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02,
|
||||
0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xbc, 0x03, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01,
|
||||
0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00,
|
||||
0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x30, 0x02, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0x31, 0x02, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbc, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x32, 0x02, 0x02, 0x00, 0xc2, 0x01, 0x33, 0x02, 0x34, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xec, 0x00, 0x00, 0x00,
|
||||
0x11, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01,
|
||||
0x04, 0x00, 0x64, 0x01, 0x35, 0x02, 0x02, 0x00, 0xc2, 0x01, 0x36, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x70, 0x11,
|
||||
0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00,
|
||||
0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00,
|
||||
0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x37, 0x02,
|
||||
0x38, 0x02, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01,
|
||||
0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01,
|
||||
0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01,
|
||||
0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01,
|
||||
0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01,
|
||||
0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01,
|
||||
0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01,
|
||||
0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01,
|
||||
0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x04, 0x00, 0x64, 0x01,
|
||||
0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x3c, 0x02,
|
||||
0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, 0x02,
|
||||
0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x4f, 0x02, 0x50, 0x02,
|
||||
0x51, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x72, 0x0d, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01,
|
||||
0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01,
|
||||
0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01,
|
||||
0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01,
|
||||
0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01,
|
||||
0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01,
|
||||
0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01,
|
||||
0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01,
|
||||
0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01,
|
||||
0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01,
|
||||
0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01,
|
||||
0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x52, 0x02, 0x53, 0x02,
|
||||
0x54, 0x02, 0x55, 0x02, 0x56, 0x02, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x88, 0x0c, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01,
|
||||
0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01,
|
||||
0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01,
|
||||
0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01,
|
||||
0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01,
|
||||
0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01,
|
||||
0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01,
|
||||
0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01,
|
||||
0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xd0, 0x01, 0x02, 0x00, 0xc2, 0x01, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0xd5, 0x01, 0x5a, 0x02, 0xd7, 0x01, 0xd8, 0x01,
|
||||
0xd5, 0x01, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0xdf, 0x01, 0x5e, 0x02, 0x5f, 0x02, 0x60, 0x02, 0xe3, 0x01, 0xe4, 0x01,
|
||||
0xe5, 0x01, 0xdf, 0x01, 0xe6, 0x01, 0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0x61, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01,
|
||||
0x87, 0x18, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01,
|
||||
0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01,
|
||||
0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01,
|
||||
0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01,
|
||||
@@ -1420,102 +2151,32 @@ const uint8_t GRID_PACKAGE[] = {
|
||||
0x04, 0x00, 0x64, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01,
|
||||
0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01,
|
||||
0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xf9, 0x01,
|
||||
0x02, 0x00, 0xc2, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xd5, 0x01, 0xfe, 0x01, 0xd7, 0x01, 0xd8, 0x01,
|
||||
0xd5, 0x01, 0xff, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0xdf, 0x01, 0x05, 0x02, 0x06, 0x02,
|
||||
0x07, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01, 0x0b, 0x02,
|
||||
0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0xd5, 0x01, 0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x11, 0x02, 0x12, 0x02, 0xe4, 0x01,
|
||||
0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x18, 0x02,
|
||||
0xe4, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0xdf, 0x01, 0x1e, 0x02, 0x1f, 0x02, 0xe4, 0x01,
|
||||
0xe5, 0x01, 0xdf, 0x01, 0x20, 0x02, 0xe4, 0x01, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0xdf, 0x01, 0x24, 0x02, 0xe4, 0x01,
|
||||
0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02,
|
||||
0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01,
|
||||
0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00,
|
||||
0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x30, 0x02, 0x64, 0x01, 0xba, 0x01,
|
||||
0x02, 0x00, 0x31, 0x02, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbc, 0x01, 0x04, 0x00, 0x64, 0x01, 0x32, 0x02,
|
||||
0x02, 0x00, 0xc2, 0x01, 0x33, 0x02, 0x34, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xcf, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0x35, 0x02, 0x02, 0x00, 0xc2, 0x01, 0x36, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x70, 0x11, 0x00, 0x00,
|
||||
0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01,
|
||||
0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00,
|
||||
0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x37, 0x02, 0x38, 0x02,
|
||||
0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01,
|
||||
0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01,
|
||||
0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01,
|
||||
0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01,
|
||||
0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01,
|
||||
0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01,
|
||||
0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01,
|
||||
0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00,
|
||||
0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01,
|
||||
0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x3c, 0x02, 0x3d, 0x02,
|
||||
0x3e, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x47, 0x02,
|
||||
0x48, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x4f, 0x02, 0x50, 0x02, 0x51, 0x02,
|
||||
0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x72, 0x0d, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01,
|
||||
0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01,
|
||||
0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00,
|
||||
0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01,
|
||||
0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01,
|
||||
0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01,
|
||||
0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01,
|
||||
0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01,
|
||||
0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01,
|
||||
0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01,
|
||||
0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00,
|
||||
0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01, 0x52, 0x02, 0x53, 0x02, 0x54, 0x02,
|
||||
0x55, 0x02, 0x56, 0x02, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x88, 0x0c, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01,
|
||||
0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01,
|
||||
0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01,
|
||||
0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01,
|
||||
0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01,
|
||||
0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01,
|
||||
0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01,
|
||||
0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01,
|
||||
0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01,
|
||||
0x02, 0x00, 0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd0, 0x01,
|
||||
0x02, 0x00, 0xc2, 0x01, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0xd5, 0x01, 0x5a, 0x02, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01,
|
||||
0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0xdf, 0x01, 0x5e, 0x02, 0x5f, 0x02, 0x60, 0x02, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01,
|
||||
0xdf, 0x01, 0xe6, 0x01, 0xe4, 0x01, 0xe7, 0x01, 0xd7, 0x01, 0x61, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01, 0x87, 0x18,
|
||||
0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00,
|
||||
0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01,
|
||||
0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01,
|
||||
0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01,
|
||||
0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01,
|
||||
0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01,
|
||||
0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01,
|
||||
0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01,
|
||||
0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xcc, 0x01, 0x02, 0x00, 0xcd, 0x01, 0xce, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01,
|
||||
0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00,
|
||||
0xcf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x64, 0x01, 0xf9, 0x01, 0x02, 0x00,
|
||||
0xc2, 0x01, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0xd5, 0x01, 0x65, 0x02, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0x66, 0x02,
|
||||
0x67, 0x02, 0x68, 0x02, 0xdf, 0x01, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01,
|
||||
0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01, 0x6c, 0x02, 0x0c, 0x02, 0x6d, 0x02, 0x6e, 0x02, 0x0e, 0x02, 0xd5, 0x01,
|
||||
0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x6f, 0x02, 0x12, 0x02, 0xe4, 0x01, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02,
|
||||
0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x18, 0x02, 0xe4, 0x01, 0x70, 0x02, 0x71, 0x02, 0x1d, 0x02,
|
||||
0xdf, 0x01, 0x72, 0x02, 0x73, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x74, 0x02, 0xe4, 0x01, 0x75, 0x02, 0x76, 0x02,
|
||||
0x23, 0x02, 0xdf, 0x01, 0x77, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x78, 0x02, 0x79, 0x02,
|
||||
0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x7a, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01,
|
||||
0x98, 0x11, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00,
|
||||
0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x37, 0x02, 0x38, 0x02, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01,
|
||||
0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01,
|
||||
0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01,
|
||||
0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01,
|
||||
0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01,
|
||||
0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01,
|
||||
0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01,
|
||||
0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x04, 0x00,
|
||||
0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01, 0xc3, 0x01,
|
||||
0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, 0x02,
|
||||
0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, 0x02,
|
||||
0x50, 0x02, 0x51, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01,
|
||||
0x02, 0x00, 0xc2, 0x01, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0xd5, 0x01, 0x65, 0x02, 0xd7, 0x01, 0xd8, 0x01, 0xd5, 0x01,
|
||||
0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0xdf, 0x01, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x08, 0x02, 0xe4, 0x01, 0xe5, 0x01,
|
||||
0xdf, 0x01, 0x09, 0x02, 0xe4, 0x01, 0x0a, 0x02, 0xd7, 0x01, 0x6c, 0x02, 0x0c, 0x02, 0x6d, 0x02, 0x6e, 0x02, 0x0e, 0x02,
|
||||
0xd5, 0x01, 0x0f, 0x02, 0x10, 0x02, 0xdf, 0x01, 0x6f, 0x02, 0x12, 0x02, 0xe4, 0x01, 0x13, 0x02, 0x14, 0x02, 0x15, 0x02,
|
||||
0x16, 0x02, 0xdf, 0x01, 0x17, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x18, 0x02, 0xe4, 0x01, 0x70, 0x02, 0x71, 0x02,
|
||||
0x1d, 0x02, 0xdf, 0x01, 0x72, 0x02, 0x73, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x74, 0x02, 0xe4, 0x01, 0x75, 0x02,
|
||||
0x76, 0x02, 0x23, 0x02, 0xdf, 0x01, 0x77, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0xdf, 0x01, 0x25, 0x02, 0xe4, 0x01, 0x78, 0x02,
|
||||
0x79, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x7a, 0x02, 0xcb, 0x01, 0x69, 0x00,
|
||||
0x64, 0x01, 0x98, 0x11, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01,
|
||||
0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0x37, 0x02, 0x38, 0x02, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01,
|
||||
0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01,
|
||||
0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01,
|
||||
0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01,
|
||||
0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01,
|
||||
0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01,
|
||||
0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01,
|
||||
0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x39, 0x02, 0x3a, 0x02, 0x3b, 0x02,
|
||||
0x04, 0x00, 0x64, 0x01, 0xbf, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc1, 0x01, 0x02, 0x00, 0xc2, 0x01,
|
||||
0xc3, 0x01, 0x7b, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, 0x02,
|
||||
0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0x8d, 0x02,
|
||||
0x8e, 0x02, 0x50, 0x02, 0x51, 0x02, 0xcb, 0x01, 0x69, 0x00, 0x64, 0x01,
|
||||
|
||||
};
|
||||
|
||||
int GRID_GRID_OFFSET = 0;
|
||||
int GRID_GRID_SIZE = 30210;
|
||||
int GRID_GRID_SIZE = 43432;
|
||||
|
||||
@@ -8,5 +8,5 @@ IMAGE_PACKAGE:
|
||||
IMAGE_IMAGE_OFFSET:
|
||||
.int 0
|
||||
IMAGE_IMAGE_SIZE:
|
||||
.int 37409
|
||||
.int 53024
|
||||
|
||||
|
||||
@@ -8,5 +8,5 @@ _IMAGE_PACKAGE:
|
||||
_IMAGE_IMAGE_OFFSET:
|
||||
.int 0
|
||||
_IMAGE_IMAGE_SIZE:
|
||||
.int 37409
|
||||
.int 53024
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -8,5 +8,5 @@ UNLIT_PACKAGE:
|
||||
UNLIT_UNLIT_OFFSET:
|
||||
.int 0
|
||||
UNLIT_UNLIT_SIZE:
|
||||
.int 101456
|
||||
.int 147713
|
||||
|
||||
|
||||
@@ -8,5 +8,5 @@ _UNLIT_PACKAGE:
|
||||
_UNLIT_UNLIT_OFFSET:
|
||||
.int 0
|
||||
_UNLIT_UNLIT_SIZE:
|
||||
.int 101456
|
||||
.int 147713
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -8,5 +8,5 @@ UNLIT_FIXED_SIZE_PACKAGE:
|
||||
UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET:
|
||||
.int 0
|
||||
UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE:
|
||||
.int 28235
|
||||
.int 39924
|
||||
|
||||
|
||||
@@ -8,5 +8,5 @@ _UNLIT_FIXED_SIZE_PACKAGE:
|
||||
_UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET:
|
||||
.int 0
|
||||
_UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE:
|
||||
.int 28235
|
||||
.int 39924
|
||||
|
||||
|
||||
Binary file not shown.
@@ -46,7 +46,7 @@ const uint8_t UNLIT_FIXED_SIZE_PACKAGE[] = {
|
||||
0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x43, 0x32, 0x41, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x4f, 0x4d, 0x55, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x52, 0x50,
|
||||
0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0x55, 0x55,
|
||||
0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x77, 0xc2, 0x95, 0x49, 0xd9, 0x38, 0xdc, 0x73, 0x44, 0x41, 0x48, 0x53,
|
||||
0x5f, 0x54, 0x41, 0x4d, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x6a, 0x60, 0xde, 0x0d, 0x57, 0x12, 0xbf, 0x44, 0x41, 0x48, 0x53,
|
||||
0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4d, 0x48, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x4d, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x46, 0x45, 0x52, 0x5f,
|
||||
0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x4f, 0x49, 0x43, 0x5f, 0x54, 0x41, 0x4d, 0x01, 0x00, 0x00, 0x00,
|
||||
@@ -1297,126 +1297,711 @@ const uint8_t UNLIT_FIXED_SIZE_PACKAGE[] = {
|
||||
0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x49, 0x01, 0x4a, 0x01, 0x4b, 0x01, 0x4c,
|
||||
0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x56,
|
||||
0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x5f, 0x01, 0x60,
|
||||
0x01, 0x61, 0x01, 0x6d, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x41, 0x4d, 0x22, 0x09, 0x00, 0x00, 0x12, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xac, 0x01, 0x00, 0x00, 0x01,
|
||||
0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xe4, 0x01, 0x00, 0x00, 0x01, 0x20, 0x01, 0xfe, 0x01, 0x00, 0x00,
|
||||
0x01, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0xcc, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0xf6, 0x03, 0x00,
|
||||
0x00, 0x01, 0x90, 0x00, 0xf6, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x46, 0x05, 0x00, 0x00, 0x02, 0x00, 0x01, 0xac, 0x01,
|
||||
0x00, 0x00, 0x02, 0x10, 0x00, 0x46, 0x05, 0x00, 0x00, 0x02, 0x10, 0x01, 0xe4, 0x01, 0x00, 0x00, 0x02, 0x20, 0x01, 0x6c,
|
||||
0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x02, 0x44, 0x01, 0xcc, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00,
|
||||
0xd2, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xd2, 0x07, 0x00, 0x00, 0x29, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x62,
|
||||
0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69,
|
||||
0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64,
|
||||
0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73,
|
||||
0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d,
|
||||
0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87,
|
||||
0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91,
|
||||
0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b,
|
||||
0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5,
|
||||
0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf,
|
||||
0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9,
|
||||
0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe,
|
||||
0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4,
|
||||
0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb,
|
||||
0x01, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd5,
|
||||
0x01, 0x6d, 0x00, 0x64, 0x01, 0x96, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65,
|
||||
0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02,
|
||||
0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd7, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64,
|
||||
0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xd9,
|
||||
0x01, 0x02, 0x00, 0x6d, 0x00, 0x64, 0x01, 0x82, 0x16, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64,
|
||||
0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76,
|
||||
0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80,
|
||||
0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a,
|
||||
0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94,
|
||||
0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e,
|
||||
0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8,
|
||||
0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2,
|
||||
0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba,
|
||||
0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd,
|
||||
0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7,
|
||||
0x01, 0xe8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02,
|
||||
0x00, 0xbf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec,
|
||||
0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6,
|
||||
0x01, 0xf7, 0x01, 0xf0, 0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0xfa, 0x01, 0xf3, 0x01, 0xfb, 0x01, 0xfc,
|
||||
0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0xf0, 0x01, 0x00, 0x02, 0x01, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x02,
|
||||
0x02, 0xf3, 0x01, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0xf0, 0x01, 0x06, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x07,
|
||||
0x02, 0xf3, 0x01, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10,
|
||||
0x02, 0x11, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xbc, 0x03, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63,
|
||||
0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a,
|
||||
0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e,
|
||||
0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x12, 0x02, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0x13, 0x02, 0x04,
|
||||
0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x64, 0x01, 0x14, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x15,
|
||||
0x02, 0x16, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xec, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63,
|
||||
0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0x17, 0x02, 0x02,
|
||||
0x00, 0xc6, 0x01, 0x18, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x2b, 0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62,
|
||||
0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69,
|
||||
0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64,
|
||||
0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73,
|
||||
0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d,
|
||||
0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87,
|
||||
0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91,
|
||||
0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b,
|
||||
0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5,
|
||||
0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf,
|
||||
0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9,
|
||||
0x01, 0x04, 0x00, 0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd,
|
||||
0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c,
|
||||
0x02, 0x1d, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02,
|
||||
0x00, 0xc6, 0x01, 0xc7, 0x01, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25,
|
||||
0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f,
|
||||
0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39,
|
||||
0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x29, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64,
|
||||
0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b,
|
||||
0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02,
|
||||
0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75,
|
||||
0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f,
|
||||
0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89,
|
||||
0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93,
|
||||
0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d,
|
||||
0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7,
|
||||
0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1,
|
||||
0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64,
|
||||
0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf,
|
||||
0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64,
|
||||
0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x3a, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f,
|
||||
0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02, 0xd3, 0x01, 0xd4, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64,
|
||||
0x01, 0x21, 0x16, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70,
|
||||
0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79,
|
||||
0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83,
|
||||
0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d,
|
||||
0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97,
|
||||
0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1,
|
||||
0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab,
|
||||
0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5,
|
||||
0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc,
|
||||
0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0,
|
||||
0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0x04, 0x00, 0x64,
|
||||
0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0x04, 0x00, 0x64,
|
||||
0x01, 0xe9, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01, 0x45, 0x02, 0x46, 0x02, 0xec, 0x01, 0xed, 0x01, 0xee,
|
||||
0x01, 0xef, 0x01, 0xf0, 0x01, 0x47, 0x02, 0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf0,
|
||||
0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0xfa, 0x01, 0xf3, 0x01, 0x48, 0x02, 0x49, 0x02, 0xff, 0x01, 0xf0,
|
||||
0x01, 0x4a, 0x02, 0x4b, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x4c, 0x02, 0xf3, 0x01, 0x4d, 0x02, 0x4e, 0x02, 0x05,
|
||||
0x02, 0xf0, 0x01, 0x4f, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x07, 0x02, 0xf3, 0x01, 0x50, 0x02, 0x51, 0x02, 0x0b,
|
||||
0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x52, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x41,
|
||||
0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02,
|
||||
0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d,
|
||||
0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70,
|
||||
0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79,
|
||||
0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83,
|
||||
0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d,
|
||||
0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97,
|
||||
0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1,
|
||||
0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab,
|
||||
0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5,
|
||||
0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01, 0xba,
|
||||
0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0,
|
||||
0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4,
|
||||
0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x53, 0x02, 0x54, 0x02, 0x55, 0x02, 0x56,
|
||||
0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x5f, 0x02, 0x60,
|
||||
0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a,
|
||||
0x02, 0x6b, 0x02, 0x6c, 0x02, 0x38, 0x02, 0x39, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01,
|
||||
0x01, 0x61, 0x01, 0x6d, 0x00, 0x52, 0x49, 0x50, 0x53, 0x5f, 0x43, 0x49, 0x44, 0x0b, 0x2d, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xe4, 0x14, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34,
|
||||
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xaf, 0x0f, 0x00, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00,
|
||||
0x8b, 0x01, 0xc6, 0x01, 0xc8, 0x01, 0xd5, 0x01, 0xe5, 0x01, 0xed, 0x01, 0x10, 0x96, 0x01, 0x06, 0x10, 0x37, 0x02, 0x0b,
|
||||
0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23,
|
||||
0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02,
|
||||
0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x42, 0x06, 0x40, 0x10,
|
||||
0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x83, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23,
|
||||
0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01,
|
||||
0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01,
|
||||
0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23,
|
||||
0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00,
|
||||
0x21, 0x00, 0x10, 0x1e, 0x1e, 0x00, 0x37, 0x4c, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00,
|
||||
0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x00,
|
||||
0x26, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x0b, 0x2b, 0x10, 0x1a, 0x1e, 0x04, 0x10, 0x20, 0x1e, 0x07, 0x47, 0x0c,
|
||||
0x02, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0xb0, 0x01, 0x00, 0x93, 0x02, 0x02, 0xa1,
|
||||
0x04, 0x02, 0x02, 0xa6, 0x02, 0x06, 0x20, 0xb7, 0x02, 0x02, 0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02,
|
||||
0x06, 0x03, 0xae, 0x02, 0x28, 0x07, 0xb5, 0x02, 0x1a, 0x20, 0x00, 0xbb, 0x04, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5,
|
||||
0x02, 0x04, 0x20, 0x01, 0xbb, 0x04, 0x2d, 0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2a, 0x06, 0x01, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x2a, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2d, 0x04, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x22, 0x09,
|
||||
0x03, 0xbb, 0x04, 0x2a, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x4a, 0x8e, 0x03, 0x02, 0x08, 0x49, 0x2d,
|
||||
0x2d, 0x2d, 0x06, 0x4b, 0xbb, 0x04, 0x2a, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x4c, 0x4d, 0xae, 0x02, 0x02,
|
||||
0x4e, 0x3e, 0x02, 0x02, 0x4f, 0x39, 0x50, 0x02, 0x02, 0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04, 0x2d, 0x28, 0x04, 0x00, 0x00,
|
||||
0x00, 0x3e, 0x0e, 0x02, 0x06, 0xbb, 0x04, 0x2a, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x08, 0x71, 0xb7, 0x02,
|
||||
0x02, 0x06, 0x02, 0xb7, 0x02, 0x02, 0x2a, 0x03, 0xbb, 0x04, 0x2a, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09,
|
||||
0x75, 0xbc, 0x02, 0x02, 0x07, 0x71, 0xbb, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x78, 0xae,
|
||||
0x83, 0x80, 0x02, 0x02, 0x08, 0x08, 0x08, 0x08, 0x72, 0x08, 0x08, 0x07, 0x73, 0x06, 0x06, 0x07, 0x07, 0x73, 0x73, 0x06,
|
||||
0x06, 0x73, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x74, 0x2d, 0x73, 0x06, 0x06, 0x76, 0x09, 0x06, 0x07,
|
||||
0x07, 0x73, 0x2d, 0x06, 0x07, 0x2d, 0x06, 0x73, 0x06, 0x06, 0x06, 0x2a, 0x09, 0x06, 0x06, 0x2a, 0x06, 0x06, 0x09, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x49, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x77, 0x2d, 0x06, 0x06, 0x06, 0x79, 0x3e, 0x02, 0x02,
|
||||
0x7a, 0x39, 0x7b, 0x02, 0x02, 0x3e, 0x1c, 0x01, 0x07, 0x39, 0x8a, 0x01, 0x02, 0x01, 0xce, 0x02, 0x4c, 0x08, 0x07, 0x06,
|
||||
0x3e, 0x02, 0x02, 0xb1, 0x01, 0x39, 0xb2, 0x01, 0x02, 0x02, 0x3e, 0x24, 0x03, 0x2d, 0x39, 0xc5, 0x01, 0x02, 0x03, 0x3e,
|
||||
0x02, 0x01, 0x2d, 0x39, 0xc7, 0x01, 0x02, 0x01, 0x3e, 0x18, 0x03, 0x07, 0x39, 0xd4, 0x01, 0x02, 0x03, 0x3e, 0x08, 0x03,
|
||||
0x06, 0x39, 0xd4, 0x01, 0x18, 0x03, 0xbe, 0x02, 0x0c, 0x07, 0x06, 0x3e, 0x02, 0x03, 0xeb, 0x01, 0x39, 0xec, 0x01, 0x02,
|
||||
0x03, 0xc6, 0x06, 0x02, 0xd1, 0x03, 0x00, 0x03, 0x18, 0x02, 0x01, 0x2d, 0x88, 0x03, 0x02, 0x22, 0x06, 0x00, 0x01, 0x2d,
|
||||
0x02, 0x08, 0x33, 0x53, 0x66, 0x51, 0x2e, 0xca, 0x01, 0x2e, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0xb0, 0x01, 0x96, 0x03,
|
||||
0xc1, 0x12, 0x07, 0x37, 0x78, 0x37, 0x13, 0x53, 0x46, 0x7c, 0x2e, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0x41, 0x41,
|
||||
0x06, 0x3d, 0x09, 0x04, 0x04, 0x04, 0x18, 0x5c, 0x06, 0x02, 0x01, 0x42, 0xbf, 0x02, 0x13, 0x6e, 0x04, 0xb3, 0x01, 0x38,
|
||||
0x01, 0x06, 0x02, 0x02, 0xc8, 0x10, 0x06, 0x02, 0x08, 0x02, 0x3d, 0x09, 0x04, 0x1f, 0x1f, 0x18, 0xce, 0x10, 0x09, 0x02,
|
||||
0x02, 0x06, 0xc1, 0x0a, 0x06, 0x04, 0x04, 0x00, 0xd2, 0x0a, 0x07, 0x54, 0x54, 0x3a, 0x00, 0xc1, 0x0a, 0x06, 0x4f, 0x08,
|
||||
0x01, 0xd2, 0x0a, 0x07, 0x54, 0x54, 0x04, 0x01, 0xc1, 0x0a, 0x06, 0x4f, 0x0c, 0x02, 0xd2, 0x0a, 0x07, 0x54, 0x54, 0x04,
|
||||
0x02, 0xc1, 0x12, 0x07, 0x4d, 0xa4, 0x01, 0x4d, 0xb0, 0x0a, 0x1d, 0x42, 0x42, 0xc1, 0x0a, 0x07, 0x0d, 0x0d, 0x00, 0x3d,
|
||||
0x09, 0xa3, 0x02, 0xa3, 0x02, 0xa3, 0x02, 0x18, 0x13, 0xd9, 0x01, 0x04, 0xd5, 0x01, 0x2b, 0xc1, 0x0a, 0x06, 0x02, 0x06,
|
||||
0x00, 0x22, 0x02, 0x00, 0x13, 0xd9, 0x01, 0x02, 0xd5, 0x01, 0x31, 0xc1, 0x0a, 0x06, 0x02, 0x0a, 0x01, 0x22, 0x02, 0x00,
|
||||
0x13, 0xd9, 0x01, 0x02, 0xd5, 0x01, 0x36, 0xc1, 0x0a, 0x06, 0x02, 0x0e, 0x02, 0x22, 0x02, 0x00, 0x23, 0x53, 0x8a, 0x02,
|
||||
0x7c, 0x67, 0x2e, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0x81, 0x02, 0x81, 0x02, 0x8b, 0x02, 0x22, 0x01, 0x00, 0xc1,
|
||||
0x0a, 0x06, 0x08, 0x08, 0x01, 0x3f, 0x06, 0x02, 0x02, 0xd2, 0x0a, 0x07, 0xa2, 0x02, 0xa2, 0x02, 0xac, 0x02, 0x01, 0x13,
|
||||
0xd4, 0x01, 0x95, 0x02, 0xed, 0x01, 0x2e, 0x22, 0x00, 0x95, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00,
|
||||
0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c,
|
||||
0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xdf, 0x0e,
|
||||
0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xd3, 0x01, 0xa0, 0x02, 0x04, 0x07, 0x37, 0x1e, 0x06, 0x00, 0x00, 0x01,
|
||||
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x37, 0xb0, 0x02, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10,
|
||||
0x00, 0x21, 0x08, 0x00, 0x54, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x12, 0x00, 0x93, 0x02, 0x02,
|
||||
0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x12, 0x20, 0xb7, 0x02, 0x02, 0x0c, 0x04, 0xb7, 0x02, 0x02, 0x0c, 0x03, 0xfe, 0x02,
|
||||
0x02, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x0e, 0xb5, 0x02, 0x42, 0x20, 0x01, 0xb8, 0x02, 0x0c, 0x0d, 0x04, 0xbb, 0x04, 0x30,
|
||||
0x2a, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x7e, 0x02, 0x0d, 0xce, 0x02, 0x3a, 0x36, 0x0d, 0x0c, 0x3e, 0x02, 0x02, 0xa7, 0x01,
|
||||
0x39, 0xa8, 0x01, 0x02, 0x02, 0x3e, 0x52, 0x03, 0x0d, 0x39, 0xd2, 0x01, 0x02, 0x03, 0xad, 0x06, 0x0d, 0xea, 0x01, 0xad,
|
||||
0x06, 0x0c, 0x02, 0xad, 0x06, 0x0e, 0x02, 0xc6, 0x06, 0x02, 0x8b, 0x05, 0x00, 0x03, 0x18, 0x02, 0x13, 0x8a, 0x01, 0xdc,
|
||||
0x04, 0xa9, 0x01, 0x4b, 0x01, 0x0d, 0x02, 0x02, 0x80, 0x0b, 0x0f, 0x58, 0x58, 0x30, 0x2e, 0x2e, 0x2e, 0x2c, 0xc1, 0x0a,
|
||||
0x0d, 0x29, 0x29, 0x00, 0x80, 0x0b, 0x0f, 0x04, 0x04, 0x0a, 0x08, 0x08, 0x08, 0x06, 0xc1, 0x0a, 0x0d, 0x1f, 0x1f, 0x00,
|
||||
0x22, 0xd4, 0x01, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xcf, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xa0, 0x02, 0x04, 0x07,
|
||||
0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xc6, 0x06, 0x02, 0x02, 0x00, 0x03, 0x18, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00,
|
||||
0x0b, 0x00, 0x08, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1,
|
||||
0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04,
|
||||
0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x95, 0x01, 0xb5, 0x03, 0xa0, 0x02, 0x04, 0x07,
|
||||
0x37, 0x28, 0x06, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x03,
|
||||
0x00, 0x10, 0x9e, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02,
|
||||
0x83, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01,
|
||||
0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23,
|
||||
0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23,
|
||||
0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00,
|
||||
0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x32, 0x1e, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x70, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x22, 0x00, 0x10, 0x00, 0x22, 0x01, 0x10, 0x00, 0x21, 0x06, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x28,
|
||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00,
|
||||
0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x37, 0x0a, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00,
|
||||
0x21, 0x08, 0x00, 0x54, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x00, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0xb6,
|
||||
0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x64, 0x00, 0x00, 0x04, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02,
|
||||
0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x03, 0x94, 0x02, 0x0c, 0xb7, 0x02, 0x08, 0x08, 0x04, 0xfe, 0x02, 0x02, 0x13, 0x13,
|
||||
0x08, 0x08, 0x08, 0x09, 0x3e, 0x18, 0x07, 0x13, 0x3e, 0x02, 0x07, 0x09, 0xc1, 0x04, 0x02, 0x13, 0x20, 0x21, 0xb5, 0x02,
|
||||
0x32, 0x20, 0x01, 0xb8, 0x02, 0x0c, 0x13, 0x04, 0xb8, 0x02, 0x06, 0x09, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0x3e, 0x16,
|
||||
0x02, 0x41, 0xbb, 0x04, 0x3b, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x44, 0xbb, 0x04, 0x3b, 0x16, 0x03, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x18, 0x02, 0x08, 0xbb, 0x04, 0x45, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x41, 0x71, 0xb7,
|
||||
0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02, 0x45, 0x03, 0xbb, 0x04, 0x45, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02,
|
||||
0x09, 0x75, 0xbc, 0x02, 0x02, 0x13, 0x71, 0xbb, 0x04, 0x45, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x13, 0x78,
|
||||
0xae, 0x83, 0x80, 0x02, 0x02, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x41, 0x13, 0x73, 0x08, 0x08, 0x13, 0x13, 0x73, 0x73,
|
||||
0x08, 0x08, 0x73, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x13, 0x74, 0x3b, 0x73, 0x08, 0x08, 0x76, 0x09, 0x08,
|
||||
0x13, 0x13, 0x73, 0x3b, 0x08, 0x13, 0x3b, 0x08, 0x73, 0x08, 0x08, 0x08, 0x45, 0x09, 0x08, 0x08, 0x45, 0x08, 0x08, 0x09,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x44, 0x41, 0x41, 0x08, 0x08, 0x08, 0x08, 0x77, 0x3b, 0x08, 0x08, 0x08, 0x79, 0x3e, 0x02,
|
||||
0x02, 0x7a, 0x39, 0x7b, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x13, 0xbb, 0x04, 0x45, 0x16, 0x03, 0x00, 0x00, 0x00, 0xbb, 0x04,
|
||||
0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a, 0x01, 0x13, 0x39, 0x94,
|
||||
0x01, 0x02, 0x01, 0x3e, 0x44, 0x07, 0x08, 0xbb, 0x04, 0x3b, 0x0a, 0x35, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x12, 0x30,
|
||||
0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x09, 0xbb, 0x04, 0x3b, 0x08, 0x34, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x45, 0x08, 0x02,
|
||||
0x00, 0x00, 0x00, 0xbb, 0x04, 0x45, 0x0a, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x0c, 0x0a, 0xd7, 0xa3, 0x3a, 0xbb,
|
||||
0x04, 0x45, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x1e, 0x31, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x1a, 0x32,
|
||||
0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x0a, 0x36, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x06, 0x37, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3b, 0x10, 0x3a, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x08, 0x3b, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x0c, 0x33,
|
||||
0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x45, 0xbb, 0x04, 0x3b, 0x1c, 0x06, 0x00, 0x00, 0x00, 0x89, 0x03, 0x16, 0x08, 0x03,
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0xab, 0x02, 0x02, 0xaf, 0x02, 0x3e, 0x02, 0x00, 0xb0, 0x02, 0x39, 0xb1, 0x02, 0x02, 0x00,
|
||||
0xbb, 0x04, 0x3b, 0x14, 0x1e, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x0e, 0x39, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x12,
|
||||
0x38, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x16, 0x23, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x14, 0x21, 0x00, 0x00, 0x00,
|
||||
0xce, 0x02, 0x50, 0x41, 0x13, 0x08, 0x3e, 0x02, 0x02, 0x89, 0x03, 0x39, 0x8a, 0x03, 0x02, 0x02, 0x3e, 0x52, 0x03, 0x13,
|
||||
0x39, 0xb4, 0x03, 0x02, 0x03, 0xbb, 0x04, 0x3b, 0x0e, 0x3c, 0x00, 0x00, 0x00, 0xad, 0x06, 0x13, 0x82, 0x02, 0xad, 0x06,
|
||||
0x08, 0x02, 0xad, 0x06, 0x09, 0x02, 0xc6, 0x06, 0x02, 0xf5, 0x08, 0x00, 0x03, 0x18, 0x02, 0x39, 0x20, 0xf8, 0x06, 0x07,
|
||||
0x39, 0x21, 0x04, 0x07, 0x01, 0x13, 0x6e, 0xca, 0x05, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x13, 0x7d, 0x48, 0x8b, 0x03,
|
||||
0x56, 0x01, 0x13, 0x02, 0x02, 0x80, 0x0b, 0x14, 0x66, 0x66, 0x2c, 0x2a, 0x2a, 0x2a, 0x28, 0xc1, 0x0a, 0x13, 0x25, 0x25,
|
||||
0x00, 0x80, 0x0b, 0x14, 0x04, 0x04, 0x0a, 0x08, 0x08, 0x08, 0x06, 0xc1, 0x0a, 0x13, 0x31, 0x31, 0x00, 0x22, 0xe8, 0x01,
|
||||
0x00, 0x23, 0x7d, 0x1e, 0x7c, 0x56, 0x62, 0x01, 0x13, 0x02, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10, 0x09,
|
||||
0xfd, 0x01, 0x7f, 0xfd, 0x01, 0x13, 0x57, 0x04, 0x7c, 0xbc, 0x03, 0x01, 0x44, 0x02, 0x02, 0xc1, 0x12, 0x09, 0x04, 0x04,
|
||||
0x0a, 0x01, 0x13, 0x04, 0x1a, 0x22, 0x02, 0x00, 0x22, 0x01, 0x04, 0xd9, 0x06, 0x13, 0x06, 0xc0, 0x06, 0x08, 0x04, 0x22,
|
||||
0x20, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0xc6, 0x06, 0x13, 0xbf, 0x06, 0x00, 0x22, 0xa7, 0x06, 0x20, 0x03, 0xa7, 0x06, 0x21,
|
||||
0x02, 0x18, 0x04, 0x01, 0x09, 0xa6, 0x02, 0xaa, 0x02, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xb9, 0x01, 0x13, 0x6e, 0x06, 0x7c,
|
||||
0xbc, 0x01, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x0f, 0x02, 0x0a, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01,
|
||||
0x03, 0x18, 0x02, 0x01, 0x13, 0x04, 0xbe, 0x02, 0x9e, 0x1e, 0xc2, 0x00, 0x00, 0x00, 0x18, 0x01, 0x13, 0xc6, 0x01, 0x0c,
|
||||
0x7c, 0xc5, 0x01, 0x01, 0x09, 0x02, 0x02, 0x13, 0x6e, 0x06, 0x7c, 0xca, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x0a, 0x08,
|
||||
0x08, 0x10, 0x02, 0x13, 0xb7, 0x01, 0x08, 0x24, 0xd3, 0x01, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0x14, 0x02, 0x5c,
|
||||
0x08, 0x04, 0x01, 0x04, 0xd6, 0x01, 0xca, 0x16, 0x0f, 0x04, 0x04, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01,
|
||||
0x03, 0x18, 0x02, 0xc1, 0x0a, 0x08, 0x0c, 0x32, 0x00, 0xc1, 0x0a, 0x08, 0x04, 0x36, 0x01, 0xc3, 0x10, 0x08, 0x04, 0x04,
|
||||
0x1e, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xe5, 0x01, 0x4a, 0x08, 0x02, 0x0c, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x30, 0x02, 0xc8,
|
||||
0x10, 0x08, 0x04, 0x04, 0x28, 0x99, 0x1e, 0x1c, 0x18, 0x1b, 0xe5, 0x1e, 0x08, 0xfc, 0x05, 0xd0, 0x00, 0x00, 0x00, 0xc1,
|
||||
0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x13, 0x6e, 0xd5, 0x05, 0x7c, 0xee, 0x01, 0x01, 0x08,
|
||||
0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x6e, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xf1, 0x01, 0x8b, 0x01, 0x4a, 0x08, 0x02,
|
||||
0xcd, 0x05, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xf6, 0x01, 0xc3, 0x10, 0x08, 0x06, 0xd6, 0x01,
|
||||
0x06, 0x13, 0x6e, 0x04, 0x7c, 0xfb, 0x01, 0x01, 0x08, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x25, 0xfa, 0x01, 0xfd, 0x01,
|
||||
0x13, 0xc6, 0x01, 0x06, 0x7c, 0x80, 0x02, 0x01, 0x09, 0x02, 0x02, 0x13, 0x6e, 0x04, 0x7c, 0x83, 0x02, 0x01, 0x08, 0x02,
|
||||
0x02, 0xca, 0x16, 0x0f, 0x02, 0x02, 0xf6, 0x01, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13,
|
||||
0x6e, 0x0a, 0x7c, 0x8b, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0xa8, 0x01, 0x02, 0x13, 0x6e, 0x04, 0x7c, 0x8f,
|
||||
0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x08, 0x02, 0x13, 0x96, 0x02, 0x0a, 0x7c, 0x95, 0x02, 0x01, 0x45,
|
||||
0x02, 0x02, 0x5c, 0x73, 0x02, 0x01, 0x3e, 0x98, 0x02, 0xc1, 0x0a, 0x08, 0x06, 0x06, 0x01, 0xc1, 0x0a, 0x08, 0x04, 0x0a,
|
||||
0x00, 0x7c, 0x08, 0x04, 0x01, 0x2b, 0x92, 0x02, 0x8b, 0x01, 0x8f, 0x01, 0x7c, 0x08, 0x02, 0x01, 0x2e, 0x9c, 0x02, 0x9e,
|
||||
0x02, 0xa0, 0x02, 0x13, 0x50, 0x08, 0x7c, 0xa4, 0x02, 0x01, 0x41, 0x02, 0x02, 0xc1, 0x0a, 0x13, 0x02, 0x02, 0x00, 0x3d,
|
||||
0x09, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x13, 0x02, 0x06, 0x01, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x13,
|
||||
0x02, 0x0a, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xd0, 0x0a, 0x44, 0x02, 0x0a, 0x06, 0x02, 0xb4, 0x0a, 0x44, 0x02,
|
||||
0x2d, 0x01, 0x00, 0x00, 0x01, 0xb0, 0x02, 0x0a, 0x02, 0x01, 0x09, 0x04, 0xa2, 0x04, 0xc1, 0x12, 0x09, 0x02, 0x10, 0x02,
|
||||
0xe8, 0x0a, 0x13, 0x04, 0x0a, 0x04, 0x02, 0xa1, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x4a, 0x09, 0x04, 0x72, 0x04,
|
||||
0x99, 0x1e, 0x66, 0x18, 0x65, 0xe5, 0x1e, 0x09, 0xa6, 0x05, 0x02, 0x01, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3b, 0x01,
|
||||
0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x13, 0x6e, 0xbb, 0x04, 0x7c, 0xbc, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x04,
|
||||
0x04, 0x84, 0x01, 0xce, 0x10, 0x09, 0x04, 0xb1, 0x04, 0x04, 0x13, 0x6e, 0x04, 0x7c, 0xc3, 0x02, 0x01, 0x08, 0x02, 0x02,
|
||||
0xca, 0x16, 0x0f, 0x02, 0x02, 0xf6, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13, 0x6e,
|
||||
0x0c, 0x7c, 0xcc, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0xaa, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28,
|
||||
0xcf, 0x02, 0x8b, 0x01, 0x4a, 0x08, 0x02, 0x91, 0x04, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xd4,
|
||||
0x02, 0x13, 0x7d, 0x06, 0x7c, 0xd7, 0x02, 0x01, 0x13, 0x02, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x23, 0x6e, 0x02,
|
||||
0x7c, 0xd7, 0x02, 0x88, 0x01, 0x01, 0x08, 0x02, 0x02, 0xce, 0x10, 0x09, 0x02, 0x06, 0x02, 0x01, 0x09, 0x04, 0xf6, 0x04,
|
||||
0x5c, 0x09, 0x02, 0x01, 0x45, 0xdf, 0x02, 0x13, 0xc6, 0x01, 0x04, 0x7c, 0xe1, 0x02, 0x01, 0x09, 0x02, 0x02, 0xc4, 0x12,
|
||||
0x08, 0x02, 0x08, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xe4, 0x02, 0x8b, 0x01, 0x6c, 0x08, 0x0a, 0x01, 0x1a, 0xe5, 0x02,
|
||||
0xc5, 0x02, 0xc3, 0x10, 0x08, 0x08, 0xbe, 0x03, 0x32, 0x4a, 0x08, 0x02, 0x0a, 0x02, 0xce, 0x10, 0x09, 0x02, 0x26, 0x02,
|
||||
0x4b, 0x09, 0x04, 0x60, 0x04, 0x99, 0x1e, 0x54, 0x18, 0x53, 0xe5, 0x1e, 0x09, 0xaa, 0x04, 0x42, 0x01, 0x00, 0x00, 0x08,
|
||||
0x01, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x13, 0xb7, 0x01, 0xd3, 0x03, 0x23, 0x88, 0x01, 0x01,
|
||||
0x08, 0x02, 0x02, 0xce, 0x10, 0x09, 0x04, 0xcd, 0x03, 0x04, 0x01, 0x13, 0x02, 0xa8, 0x05, 0x3d, 0x09, 0x02, 0x02, 0x02,
|
||||
0x18, 0xc3, 0x10, 0x08, 0x04, 0xd6, 0x03, 0xf8, 0x01, 0xce, 0x10, 0x09, 0x02, 0x06, 0x02, 0x4b, 0x09, 0x04, 0x04, 0x0e,
|
||||
0x13, 0xb7, 0x01, 0x02, 0x23, 0xdf, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0xb7, 0x01, 0x02,
|
||||
0x23, 0xd3, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x08, 0x01, 0x22, 0x02, 0x00, 0x13, 0xb7, 0x01, 0x02, 0x23, 0xce, 0x01, 0xc1,
|
||||
0x0a, 0x08, 0x02, 0x0c, 0x02, 0x22, 0x02, 0x00, 0x01, 0x13, 0x02, 0xc2, 0x05, 0x9e, 0x1e, 0x84, 0x01, 0x00, 0x00, 0x88,
|
||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x53, 0x5a, 0xa0, 0x02,
|
||||
0x04, 0x07, 0x10, 0x2e, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05,
|
||||
0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00,
|
||||
0x10, 0x00, 0x21, 0x01, 0x10, 0x6c, 0x1e, 0x00, 0x10, 0x0e, 0x1e, 0x07, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xb5,
|
||||
0x02, 0x0a, 0x20, 0x01, 0xa6, 0x02, 0x0c, 0x20, 0xb7, 0x02, 0x02, 0x0e, 0x04, 0xb8, 0x02, 0x02, 0x0f, 0x04, 0xb7, 0x02,
|
||||
0x06, 0x0e, 0x03, 0xb8, 0x02, 0x02, 0x13, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0xbb, 0x04, 0x15, 0x02, 0x08, 0x00, 0x00,
|
||||
0x00, 0xbc, 0x02, 0x02, 0x0f, 0x16, 0x8e, 0x03, 0x02, 0x10, 0x14, 0x08, 0x08, 0x08, 0x0e, 0x17, 0xbb, 0x04, 0x15, 0x02,
|
||||
0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x18, 0x19, 0xae, 0x02, 0x02, 0x1a, 0x3e, 0x02, 0x02, 0x1b, 0x39, 0x1c, 0x02,
|
||||
0x02, 0xbb, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1e, 0x02, 0x08, 0xbb, 0x04, 0x08, 0x14, 0x04, 0x00, 0x00,
|
||||
0x00, 0xb7, 0x02, 0x1a, 0x0e, 0x02, 0x3e, 0x1c, 0x03, 0x44, 0x39, 0x52, 0x02, 0x03, 0xbb, 0x04, 0x15, 0x06, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x02, 0x03, 0x0e, 0x3e, 0x04, 0x01, 0x0f, 0x39, 0x59, 0x02, 0x01, 0xbb, 0x04, 0x15, 0x02, 0x02, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x02, 0x01, 0x0e, 0xbb, 0x04, 0x15, 0x06, 0x03, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x15, 0x08, 0x01, 0x00,
|
||||
0x00, 0x00, 0xad, 0x06, 0x08, 0x86, 0x01, 0xc6, 0x06, 0x02, 0xc3, 0x02, 0x00, 0x03, 0x18, 0x02, 0x33, 0x2d, 0xb8, 0x02,
|
||||
0x1d, 0x1e, 0xa6, 0x01, 0x37, 0x01, 0x08, 0x02, 0x02, 0xbc, 0x0e, 0x0e, 0x99, 0x01, 0x99, 0x01, 0x13, 0x57, 0x06, 0x53,
|
||||
0x56, 0x22, 0x00, 0x06, 0x13, 0x5c, 0x0a, 0x5a, 0x5b, 0x01, 0x0e, 0x02, 0x02, 0x13, 0x5c, 0x04, 0x5a, 0x5f, 0x01, 0x0e,
|
||||
0x02, 0x02, 0xc8, 0x10, 0x0e, 0x02, 0x08, 0x02, 0x13, 0x57, 0x04, 0x53, 0x63, 0x22, 0x00, 0x04, 0x8d, 0x1e, 0x88, 0x06,
|
||||
0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c,
|
||||
0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xdf, 0x0e,
|
||||
0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xbf, 0x01, 0xa0, 0x02, 0x04, 0x07, 0x00, 0xfe, 0x02, 0x00, 0x10, 0x00,
|
||||
0x1e, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x12, 0x20, 0xb7, 0x02, 0x02, 0x0c, 0x04, 0xbb, 0x04,
|
||||
0x0c, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x0d, 0x70, 0x70, 0x70, 0x70, 0x70, 0x3e, 0x34, 0x03, 0x0d, 0x39,
|
||||
0xbe, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xf5, 0x02, 0x00, 0x03, 0x18, 0x02, 0x22, 0xf3, 0x02, 0xbd, 0x02, 0x8d, 0x1e,
|
||||
0x88, 0x06, 0x00, 0x00, 0xb9, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00,
|
||||
0x00, 0x00, 0x07, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1,
|
||||
0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04,
|
||||
0x00, 0x01, 0xbf, 0x0f, 0x00, 0x02, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
|
||||
0x28, 0x06, 0x10, 0x37, 0x11, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10,
|
||||
0x14, 0x06, 0x80, 0x02, 0x47, 0x11, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x02, 0x22, 0x00, 0x10, 0x00, 0x21,
|
||||
0x01, 0x10, 0x12, 0x06, 0x40, 0x10, 0x02, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x37, 0x15, 0x83,
|
||||
0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05,
|
||||
0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23,
|
||||
0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10,
|
||||
0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02,
|
||||
0x10, 0x02, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x00, 0x17, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x1a, 0x01, 0x08, 0x10,
|
||||
0x17, 0x1e, 0x00, 0x37, 0x1a, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x02, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x10, 0x19, 0x0b, 0x2b,
|
||||
0x10, 0x02, 0x1e, 0x04, 0x10, 0x02, 0x1e, 0x07, 0x10, 0x02, 0x0b, 0x03, 0x47, 0x16, 0x02, 0x00, 0x0b, 0x01, 0x00, 0x01,
|
||||
0x0b, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x93, 0x02, 0x34, 0xa1, 0x04, 0x02, 0x1b, 0xa6, 0x02, 0x02, 0x20,
|
||||
0xb7, 0x02, 0x02, 0x1d, 0x04, 0xb8, 0x02, 0x02, 0x1e, 0x04, 0xb7, 0x02, 0x02, 0x1d, 0x03, 0xae, 0x02, 0x2b, 0x1e, 0xb5,
|
||||
0x02, 0x2e, 0x20, 0x00, 0xbb, 0x04, 0x21, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x02, 0x20, 0x01, 0xbb, 0x04, 0x23,
|
||||
0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x21, 0x02, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x23, 0x02, 0x01, 0x00, 0x00,
|
||||
0x00, 0xbb, 0x04, 0x21, 0x02, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x23, 0x02, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x02,
|
||||
0x20, 0x03, 0xbb, 0x04, 0x21, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x2b, 0x1e, 0x2a, 0x8e, 0x03, 0x11, 0x1f, 0x29,
|
||||
0x23, 0x23, 0x23, 0x1d, 0x14, 0xbb, 0x04, 0x21, 0x40, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x2b, 0x0b, 0x2b, 0xae, 0x02,
|
||||
0x11, 0x15, 0x3e, 0x40, 0x02, 0x0c, 0x39, 0x2c, 0x3d, 0x02, 0x3e, 0x40, 0x02, 0x1f, 0xbb, 0x04, 0x23, 0x02, 0x04, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x02, 0x02, 0x1d, 0xbb, 0x04, 0x21, 0x02, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x33, 0x1f, 0x30, 0xb7,
|
||||
0x02, 0x36, 0x1d, 0x02, 0xb7, 0x02, 0x02, 0x21, 0x03, 0xbb, 0x04, 0x21, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x37,
|
||||
0x20, 0x33, 0xbc, 0x02, 0x02, 0x1e, 0x30, 0xbb, 0x04, 0x21, 0x38, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x35, 0x1e, 0x34,
|
||||
0xae, 0x83, 0x80, 0x02, 0x15, 0x1f, 0x1f, 0x1f, 0x1f, 0x16, 0x1f, 0x1f, 0x1e, 0x31, 0x1d, 0x1d, 0x1e, 0x1e, 0x31, 0x31,
|
||||
0x1d, 0x1d, 0x31, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1e, 0x32, 0x23, 0x31, 0x1d, 0x1d, 0x17, 0x20, 0x1d,
|
||||
0x1e, 0x1e, 0x31, 0x23, 0x1d, 0x1e, 0x23, 0x1d, 0x31, 0x1d, 0x1d, 0x1d, 0x21, 0x20, 0x1d, 0x1d, 0x21, 0x1d, 0x1d, 0x20,
|
||||
0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x29, 0x1f, 0x1f, 0x1d, 0x1d, 0x1d, 0x1d, 0x18, 0x23, 0x1d, 0x1d, 0x1d, 0x19, 0x3e, 0x4e,
|
||||
0x02, 0x0e, 0x39, 0x35, 0x4b, 0x02, 0x3e, 0x4e, 0x03, 0x23, 0x39, 0x36, 0x65, 0x03, 0xb2, 0x06, 0x23, 0x1a, 0x02, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x4e, 0x01, 0x1e, 0x39, 0x37, 0x65, 0x01, 0xce, 0x02, 0x1a, 0x1f, 0x1e, 0x1d, 0x3e, 0x4e, 0x02, 0x11,
|
||||
0x39, 0x38, 0x4b, 0x02, 0x3e, 0x4e, 0x01, 0x23, 0x39, 0x39, 0x67, 0x01, 0x3e, 0x6a, 0x03, 0x1e, 0x39, 0x3a, 0x67, 0x03,
|
||||
0x3e, 0x6a, 0x03, 0x1d, 0x39, 0x3a, 0x67, 0x03, 0xbb, 0x04, 0x1d, 0x6a, 0x00, 0x00, 0x00, 0x40, 0xbb, 0x04, 0x1d, 0x02,
|
||||
0x00, 0x00, 0x80, 0xbf, 0xbb, 0x04, 0x1d, 0x02, 0x00, 0x00, 0x80, 0x3f, 0xbc, 0x02, 0x02, 0x1d, 0x27, 0x3e, 0x02, 0x03,
|
||||
0x3f, 0x39, 0x40, 0x6f, 0x03, 0xbe, 0x02, 0x16, 0x1e, 0x1d, 0x3e, 0x5c, 0x03, 0x13, 0x39, 0x41, 0x6f, 0x03, 0xc6, 0x06,
|
||||
0x1b, 0x0d, 0x00, 0x1c, 0x18, 0x80, 0x01, 0x01, 0x23, 0x02, 0x7c, 0x22, 0x80, 0x01, 0x00, 0x01, 0x23, 0x02, 0x82, 0x01,
|
||||
0xc7, 0x10, 0x23, 0x02, 0x02, 0x6a, 0x33, 0x2d, 0x02, 0x0d, 0x24, 0x45, 0x24, 0x01, 0x1f, 0x02, 0x02, 0x01, 0x1e, 0x02,
|
||||
0x88, 0x01, 0xc1, 0x12, 0x1e, 0x02, 0x04, 0x02, 0x13, 0x2d, 0x02, 0x0f, 0x24, 0x01, 0x1f, 0x02, 0x02, 0xc1, 0x12, 0x1e,
|
||||
0x02, 0x02, 0x06, 0x3d, 0x20, 0x02, 0x02, 0x02, 0x18, 0x5c, 0x1d, 0x02, 0x01, 0x42, 0x4d, 0x13, 0x2f, 0x02, 0x12, 0x28,
|
||||
0x01, 0x1d, 0x69, 0x69, 0xc8, 0x10, 0x1d, 0x6c, 0x04, 0x6c, 0x3d, 0x20, 0x02, 0x12, 0x12, 0x18, 0xce, 0x10, 0x20, 0x02,
|
||||
0x02, 0x04, 0xc1, 0x0a, 0x1d, 0x02, 0x02, 0x00, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x18, 0x00, 0xc1, 0x0a, 0x1d, 0x02, 0x06,
|
||||
0x01, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x04, 0x01, 0xc1, 0x0a, 0x1d, 0x02, 0x0a, 0x02, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x04,
|
||||
0x02, 0xc1, 0x12, 0x1e, 0x02, 0x24, 0x02, 0xb0, 0x0a, 0x0a, 0x02, 0x02, 0xc1, 0x0a, 0x1e, 0x02, 0x02, 0x00, 0x3d, 0x20,
|
||||
0x02, 0x02, 0x02, 0x18, 0x13, 0x3b, 0x02, 0x06, 0x22, 0xc1, 0x0a, 0x1d, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0x3b,
|
||||
0x02, 0x06, 0x25, 0xc1, 0x0a, 0x1d, 0x02, 0x08, 0x01, 0x22, 0x02, 0x00, 0x13, 0x3b, 0x02, 0x06, 0x27, 0xc1, 0x0a, 0x1d,
|
||||
0x02, 0x0c, 0x02, 0x22, 0x02, 0x00, 0x01, 0x23, 0x02, 0xc0, 0x01, 0xcb, 0x10, 0x23, 0x02, 0x02, 0xa8, 0x01, 0x23, 0x2d,
|
||||
0x02, 0x0f, 0x2e, 0x64, 0x01, 0x1f, 0x02, 0x02, 0xc1, 0x12, 0x1e, 0x02, 0x02, 0x18, 0x22, 0xc0, 0x01, 0x00, 0x01, 0x23,
|
||||
0x02, 0xca, 0x01, 0xcb, 0x10, 0x23, 0x02, 0x02, 0xb2, 0x01, 0xbf, 0x0c, 0x1d, 0x02, 0xb4, 0x01, 0xc8, 0x10, 0x1d, 0x02,
|
||||
0x5e, 0x02, 0xc8, 0x10, 0x1d, 0x02, 0x02, 0x60, 0x4b, 0x1d, 0x02, 0x60, 0x02, 0xbf, 0x0c, 0x1d, 0x02, 0x0a, 0x4a, 0x1d,
|
||||
0x02, 0x08, 0x02, 0x4b, 0x1d, 0x02, 0x06, 0x02, 0xc8, 0x10, 0x1d, 0x02, 0x66, 0x0e, 0xc1, 0x0a, 0x1d, 0x02, 0x16, 0x00,
|
||||
0x4a, 0x1d, 0x02, 0x02, 0x04, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x1a, 0x00, 0xc1, 0x0a, 0x1d, 0x02, 0x02, 0x03, 0x4a, 0x1d,
|
||||
0x02, 0x0c, 0x02, 0xc1, 0x0a, 0x1d, 0x02, 0x06, 0x00, 0x4b, 0x1d, 0x02, 0x02, 0x04, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x0a,
|
||||
0x00, 0xc1, 0x0a, 0x1d, 0x02, 0x02, 0x00, 0xc3, 0x10, 0x1d, 0x02, 0x7a, 0x18, 0xc1, 0x0a, 0x1d, 0x02, 0x06, 0x03, 0x4a,
|
||||
0x1d, 0x02, 0x04, 0x02, 0x4b, 0x1d, 0x02, 0x08, 0x02, 0xc0, 0x10, 0x23, 0x02, 0x2c, 0xb2, 0x01, 0xbf, 0x0c, 0x1d, 0x02,
|
||||
0x02, 0x4a, 0x1d, 0x02, 0x2c, 0x02, 0xc3, 0x10, 0x1d, 0x02, 0x88, 0x01, 0x02, 0x4a, 0x1d, 0x02, 0x02, 0x0e, 0x4b, 0x1d,
|
||||
0x02, 0x14, 0x02, 0x13, 0x3b, 0x02, 0x08, 0x24, 0x22, 0x00, 0x0e, 0x3f, 0x1d, 0x02, 0x04, 0x13, 0x3b, 0x02, 0x08, 0x26,
|
||||
0x22, 0x00, 0x02, 0xc1, 0x0a, 0x1d, 0x02, 0x1e, 0x01, 0x3f, 0x1d, 0x02, 0x02, 0xd2, 0x0a, 0x1e, 0x02, 0x02, 0x22, 0x01,
|
||||
0x13, 0x3a, 0x02, 0x09, 0x24, 0x22, 0x00, 0x02, 0x22, 0x90, 0x02, 0x8c, 0x01, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xca, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00,
|
||||
0x0b, 0x00, 0x08, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x14, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1,
|
||||
0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04,
|
||||
0x00, 0x01, 0xaf, 0x0f, 0x00, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0x8b, 0x01, 0xc6, 0x01, 0xc8, 0x01, 0xd5, 0x01,
|
||||
0xe5, 0x01, 0xee, 0x01, 0x10, 0x96, 0x01, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10,
|
||||
0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x42, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10,
|
||||
0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01,
|
||||
0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02,
|
||||
0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x1e, 0x1e, 0x00, 0x37, 0x4c, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22,
|
||||
0x00, 0x10, 0x00, 0x21, 0x08, 0x00, 0x26, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x0b, 0x2b, 0x10, 0x1a, 0x1e, 0x04,
|
||||
0x10, 0x20, 0x1e, 0x07, 0x47, 0x0e, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x01, 0x0b, 0x01, 0x03, 0x01,
|
||||
0x0b, 0x01, 0x04, 0x00, 0x00, 0x02, 0x00, 0xb0, 0x01, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x06,
|
||||
0x20, 0xb7, 0x02, 0x02, 0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02, 0x06, 0x03, 0xae, 0x02, 0x28, 0x07,
|
||||
0xb5, 0x02, 0x1a, 0x20, 0x00, 0xbb, 0x04, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x04, 0x20, 0x01, 0xbb, 0x04,
|
||||
0x2d, 0x02, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2a, 0x06, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2a, 0x0a, 0x02, 0x00,
|
||||
0x00, 0x00, 0xbb, 0x04, 0x2d, 0x04, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x22, 0x09, 0x03, 0xbb, 0x04, 0x2a, 0x02, 0x08,
|
||||
0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x4a, 0x8e, 0x03, 0x02, 0x08, 0x49, 0x2d, 0x2d, 0x2d, 0x06, 0x4b, 0xbb, 0x04,
|
||||
0x2a, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x4c, 0x4d, 0xae, 0x02, 0x02, 0x4e, 0x3e, 0x02, 0x02, 0x4f, 0x39,
|
||||
0x50, 0x02, 0x02, 0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04, 0x2d, 0x28, 0x04, 0x00, 0x00, 0x00, 0x3e, 0x0e, 0x02, 0x06, 0xbb,
|
||||
0x04, 0x2a, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x08, 0x71, 0xb7, 0x02, 0x02, 0x06, 0x02, 0xb7, 0x02, 0x02,
|
||||
0x2a, 0x03, 0xbb, 0x04, 0x2a, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x75, 0xbc, 0x02, 0x02, 0x07, 0x71,
|
||||
0xbb, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x78, 0xae, 0x83, 0x80, 0x02, 0x02, 0x08, 0x08,
|
||||
0x08, 0x08, 0x72, 0x08, 0x08, 0x07, 0x73, 0x06, 0x06, 0x07, 0x07, 0x73, 0x73, 0x06, 0x06, 0x73, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x07, 0x74, 0x2d, 0x73, 0x06, 0x06, 0x76, 0x09, 0x06, 0x07, 0x07, 0x73, 0x2d, 0x06, 0x07, 0x2d,
|
||||
0x06, 0x73, 0x06, 0x06, 0x06, 0x2a, 0x09, 0x06, 0x06, 0x2a, 0x06, 0x06, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x49, 0x08,
|
||||
0x08, 0x06, 0x06, 0x06, 0x06, 0x77, 0x2d, 0x06, 0x06, 0x06, 0x79, 0x3e, 0x02, 0x02, 0x7a, 0x39, 0x7b, 0x02, 0x02, 0x3e,
|
||||
0x1c, 0x01, 0x07, 0x39, 0x8a, 0x01, 0x02, 0x01, 0xce, 0x02, 0x4c, 0x08, 0x07, 0x06, 0x3e, 0x02, 0x02, 0xb1, 0x01, 0x39,
|
||||
0xb2, 0x01, 0x02, 0x02, 0x3e, 0x24, 0x03, 0x2d, 0x39, 0xc5, 0x01, 0x02, 0x03, 0x3e, 0x02, 0x01, 0x2d, 0x39, 0xc7, 0x01,
|
||||
0x02, 0x01, 0x3e, 0x18, 0x03, 0x07, 0x39, 0xd4, 0x01, 0x02, 0x03, 0x3e, 0x08, 0x03, 0x06, 0x39, 0xd4, 0x01, 0x18, 0x03,
|
||||
0xbc, 0x02, 0x0c, 0x06, 0x31, 0xde, 0x02, 0x02, 0x07, 0x06, 0xeb, 0x01, 0xeb, 0x01, 0x3e, 0x02, 0x03, 0xec, 0x01, 0x39,
|
||||
0xed, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xd3, 0x03, 0x00, 0x03, 0x18, 0x02, 0x01, 0x2d, 0x88, 0x03, 0x02, 0x22, 0x06,
|
||||
0x00, 0x01, 0x2d, 0x02, 0x08, 0x33, 0x53, 0x68, 0x51, 0x2e, 0xca, 0x01, 0x2e, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0xb0,
|
||||
0x01, 0x98, 0x03, 0xc1, 0x12, 0x07, 0x37, 0x78, 0x37, 0x13, 0x53, 0x46, 0x7c, 0x2e, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12,
|
||||
0x07, 0x41, 0x41, 0x06, 0x3d, 0x09, 0x04, 0x04, 0x04, 0x18, 0x5c, 0x06, 0x02, 0x01, 0x42, 0xc0, 0x02, 0x13, 0x6e, 0x04,
|
||||
0xb3, 0x01, 0x38, 0x01, 0x06, 0x02, 0x02, 0xc8, 0x10, 0x06, 0x02, 0x08, 0x02, 0x3d, 0x09, 0x04, 0x1f, 0x1f, 0x18, 0xce,
|
||||
0x10, 0x09, 0x02, 0x02, 0x06, 0xc1, 0x0a, 0x06, 0x04, 0x04, 0x00, 0xd2, 0x0a, 0x07, 0x54, 0x54, 0x3a, 0x00, 0xc1, 0x0a,
|
||||
0x06, 0x4f, 0x08, 0x01, 0xd2, 0x0a, 0x07, 0x54, 0x54, 0x04, 0x01, 0xc1, 0x0a, 0x06, 0x4f, 0x0c, 0x02, 0xd2, 0x0a, 0x07,
|
||||
0x54, 0x54, 0x04, 0x02, 0xc1, 0x12, 0x07, 0x4d, 0xa4, 0x01, 0x4d, 0xb0, 0x0a, 0x1d, 0x42, 0x42, 0xc1, 0x0a, 0x07, 0x0d,
|
||||
0x0d, 0x00, 0x3d, 0x09, 0xa5, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x18, 0x13, 0xd9, 0x01, 0x04, 0xd5, 0x01, 0x2b, 0xc1, 0x0a,
|
||||
0x06, 0x02, 0x06, 0x00, 0x22, 0x02, 0x00, 0x13, 0xd9, 0x01, 0x02, 0xd5, 0x01, 0x31, 0xc1, 0x0a, 0x06, 0x02, 0x0a, 0x01,
|
||||
0x22, 0x02, 0x00, 0x13, 0xd9, 0x01, 0x02, 0xd5, 0x01, 0x36, 0xc1, 0x0a, 0x06, 0x02, 0x0e, 0x02, 0x22, 0x02, 0x00, 0x23,
|
||||
0x53, 0x8c, 0x02, 0x7c, 0x67, 0x2e, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0x83, 0x02, 0x83, 0x02, 0x8d, 0x02, 0x22,
|
||||
0x01, 0x00, 0xc1, 0x0a, 0x06, 0x08, 0x08, 0x01, 0x3f, 0x06, 0x02, 0x02, 0xd2, 0x0a, 0x07, 0xa4, 0x02, 0xa4, 0x02, 0xae,
|
||||
0x02, 0x01, 0x13, 0xd4, 0x01, 0x95, 0x02, 0xee, 0x01, 0x2e, 0x22, 0x00, 0x95, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00,
|
||||
0x0b, 0x00, 0x08, 0x00, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1,
|
||||
0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04,
|
||||
0x00, 0x01, 0xdf, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xd3, 0x01, 0xa0, 0x02, 0x04, 0x07, 0x37, 0xce,
|
||||
0x02, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23,
|
||||
0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x10, 0x54, 0x1e, 0x00, 0x00, 0xc2, 0x01, 0x00,
|
||||
0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x12, 0x20, 0xb7, 0x02, 0x02, 0x0c, 0x04, 0xb7, 0x02, 0x02, 0x0c,
|
||||
0x03, 0xfe, 0x02, 0x02, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x0e, 0xb5, 0x02, 0x42, 0x20, 0x01, 0xb8, 0x02, 0x0c, 0x0d, 0x04,
|
||||
0xbb, 0x04, 0x30, 0x2a, 0x01, 0x00, 0x00, 0x00, 0x3e, 0x7e, 0x02, 0x0d, 0xce, 0x02, 0x3a, 0x36, 0x0d, 0x0c, 0x3e, 0x02,
|
||||
0x02, 0xa7, 0x01, 0x39, 0xa8, 0x01, 0x02, 0x02, 0x3e, 0x52, 0x03, 0x0d, 0x39, 0xd2, 0x01, 0x02, 0x03, 0xad, 0x06, 0x0d,
|
||||
0xea, 0x01, 0xad, 0x06, 0x0c, 0x02, 0xad, 0x06, 0x0e, 0x02, 0xc6, 0x06, 0x02, 0x8b, 0x05, 0x00, 0x03, 0x18, 0x02, 0x13,
|
||||
0x8a, 0x01, 0xdc, 0x04, 0xa9, 0x01, 0x4b, 0x01, 0x0d, 0x02, 0x02, 0x80, 0x0b, 0x0f, 0x58, 0x58, 0x30, 0x2e, 0x2e, 0x2e,
|
||||
0x2c, 0xc1, 0x0a, 0x0d, 0x29, 0x29, 0x00, 0x80, 0x0b, 0x0f, 0x04, 0x04, 0x0a, 0x08, 0x08, 0x08, 0x06, 0xc1, 0x0a, 0x0d,
|
||||
0x1f, 0x1f, 0x00, 0x22, 0xd4, 0x01, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xcf, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0xa0, 0x02, 0x04, 0x07, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xc6, 0x06, 0x02, 0x02, 0x00,
|
||||
0x03, 0x18, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x5e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x14, 0x1d, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34,
|
||||
0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00,
|
||||
0x95, 0x01, 0xb5, 0x03, 0xa0, 0x02, 0x04, 0x07, 0x10, 0xe4, 0x01, 0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06,
|
||||
0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00,
|
||||
0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00,
|
||||
0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23,
|
||||
0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01,
|
||||
0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23,
|
||||
0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23,
|
||||
0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04,
|
||||
0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00,
|
||||
0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x10, 0x32, 0x1e, 0x04, 0x00, 0x8e, 0x02, 0x00, 0x00, 0x04,
|
||||
0x00, 0x00, 0x28, 0x00, 0x10, 0x00, 0x22, 0x01, 0x10, 0x00, 0x21, 0x06, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02,
|
||||
0x00, 0x37, 0xa0, 0x01, 0x07, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01,
|
||||
0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x10, 0x54, 0x1e, 0x00, 0x00,
|
||||
0xd6, 0x01, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x0a, 0x20, 0xb7, 0x02, 0x02, 0x08, 0x03, 0x94,
|
||||
0x02, 0x0c, 0xb7, 0x02, 0x08, 0x08, 0x04, 0xfe, 0x02, 0x02, 0x13, 0x13, 0x08, 0x08, 0x08, 0x09, 0x3e, 0x18, 0x07, 0x13,
|
||||
0x3e, 0x02, 0x07, 0x09, 0xc1, 0x04, 0x02, 0x13, 0x20, 0x21, 0xb5, 0x02, 0x32, 0x20, 0x01, 0xb8, 0x02, 0x0c, 0x13, 0x04,
|
||||
0xb8, 0x02, 0x06, 0x09, 0x03, 0xb5, 0x02, 0x02, 0x20, 0x00, 0x3e, 0x16, 0x02, 0x41, 0xbb, 0x04, 0x3b, 0x0c, 0x01, 0x00,
|
||||
0x00, 0x00, 0x3e, 0x02, 0x02, 0x44, 0xbb, 0x04, 0x3b, 0x16, 0x03, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x02, 0x08, 0xbb, 0x04,
|
||||
0x45, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x41, 0x71, 0xb7, 0x02, 0x02, 0x08, 0x02, 0xb7, 0x02, 0x02, 0x45,
|
||||
0x03, 0xbb, 0x04, 0x45, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x75, 0xbc, 0x02, 0x02, 0x13, 0x71, 0xbb,
|
||||
0x04, 0x45, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x13, 0x78, 0xae, 0x83, 0x80, 0x02, 0x02, 0x41, 0x41, 0x41,
|
||||
0x41, 0x72, 0x41, 0x41, 0x13, 0x73, 0x08, 0x08, 0x13, 0x13, 0x73, 0x73, 0x08, 0x08, 0x73, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x13, 0x74, 0x3b, 0x73, 0x08, 0x08, 0x76, 0x09, 0x08, 0x13, 0x13, 0x73, 0x3b, 0x08, 0x13, 0x3b, 0x08,
|
||||
0x73, 0x08, 0x08, 0x08, 0x45, 0x09, 0x08, 0x08, 0x45, 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, 0x08, 0x44, 0x41, 0x41,
|
||||
0x08, 0x08, 0x08, 0x08, 0x77, 0x3b, 0x08, 0x08, 0x08, 0x79, 0x3e, 0x02, 0x02, 0x7a, 0x39, 0x7b, 0x02, 0x02, 0x3e, 0x02,
|
||||
0x02, 0x13, 0xbb, 0x04, 0x45, 0x16, 0x03, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x04,
|
||||
0x08, 0x08, 0x00, 0x00, 0x80, 0x3f, 0x3e, 0x0a, 0x01, 0x13, 0x39, 0x94, 0x01, 0x02, 0x01, 0x3e, 0x44, 0x07, 0x08, 0xbb,
|
||||
0x04, 0x3b, 0x0a, 0x35, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x12, 0x30, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x09, 0xbb,
|
||||
0x04, 0x3b, 0x08, 0x34, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x45, 0x08, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x45, 0x0a, 0x01,
|
||||
0x00, 0x00, 0x00, 0xbb, 0x04, 0x08, 0x0c, 0x0a, 0xd7, 0xa3, 0x3a, 0xbb, 0x04, 0x45, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3b, 0x1e, 0x31, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x1a, 0x32, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x0a, 0x36,
|
||||
0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x06, 0x37, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x10, 0x3a, 0x00, 0x00, 0x00, 0xbb,
|
||||
0x04, 0x3b, 0x08, 0x3b, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x0c, 0x33, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x45, 0xbb,
|
||||
0x04, 0x3b, 0x1c, 0x06, 0x00, 0x00, 0x00, 0x89, 0x03, 0x16, 0x08, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0xab, 0x02, 0x02,
|
||||
0xaf, 0x02, 0x3e, 0x02, 0x00, 0xb0, 0x02, 0x39, 0xb1, 0x02, 0x02, 0x00, 0xbb, 0x04, 0x3b, 0x14, 0x1e, 0x00, 0x00, 0x00,
|
||||
0xbb, 0x04, 0x3b, 0x0e, 0x39, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x12, 0x38, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x16,
|
||||
0x23, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x3b, 0x14, 0x21, 0x00, 0x00, 0x00, 0xce, 0x02, 0x50, 0x41, 0x13, 0x08, 0x3e, 0x02,
|
||||
0x02, 0x89, 0x03, 0x39, 0x8a, 0x03, 0x02, 0x02, 0x3e, 0x52, 0x03, 0x13, 0x39, 0xb4, 0x03, 0x02, 0x03, 0xbb, 0x04, 0x3b,
|
||||
0x0e, 0x3c, 0x00, 0x00, 0x00, 0xad, 0x06, 0x13, 0x82, 0x02, 0xad, 0x06, 0x08, 0x02, 0xad, 0x06, 0x09, 0x02, 0xc6, 0x06,
|
||||
0x02, 0xf5, 0x08, 0x00, 0x03, 0x18, 0x02, 0x39, 0x20, 0xf8, 0x06, 0x07, 0x39, 0x21, 0x04, 0x07, 0x01, 0x13, 0x6e, 0xca,
|
||||
0x05, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x13, 0x7d, 0x48, 0x8b, 0x03, 0x56, 0x01, 0x13, 0x02, 0x02, 0x80, 0x0b, 0x14,
|
||||
0x66, 0x66, 0x2c, 0x2a, 0x2a, 0x2a, 0x28, 0xc1, 0x0a, 0x13, 0x25, 0x25, 0x00, 0x80, 0x0b, 0x14, 0x04, 0x04, 0x0a, 0x08,
|
||||
0x08, 0x08, 0x06, 0xc1, 0x0a, 0x13, 0x31, 0x31, 0x00, 0x22, 0xe8, 0x01, 0x00, 0x23, 0x7d, 0x1e, 0x7c, 0x56, 0x62, 0x01,
|
||||
0x13, 0x02, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10, 0x09, 0xfd, 0x01, 0x7f, 0xfd, 0x01, 0x13, 0x57, 0x04,
|
||||
0x7c, 0xbc, 0x03, 0x01, 0x44, 0x02, 0x02, 0xc1, 0x12, 0x09, 0x04, 0x04, 0x0a, 0x01, 0x13, 0x04, 0x1a, 0x22, 0x02, 0x00,
|
||||
0x22, 0x01, 0x04, 0xd9, 0x06, 0x13, 0x06, 0xc0, 0x06, 0x08, 0x04, 0x22, 0x20, 0x00, 0x8d, 0x1e, 0x88, 0x06, 0xc6, 0x06,
|
||||
0x13, 0xbf, 0x06, 0x00, 0x22, 0xa7, 0x06, 0x20, 0x03, 0xa7, 0x06, 0x21, 0x02, 0x18, 0x04, 0x01, 0x09, 0xa6, 0x02, 0xaa,
|
||||
0x02, 0x5c, 0x08, 0x02, 0x01, 0x42, 0xb9, 0x01, 0x13, 0x6e, 0x06, 0x7c, 0xbc, 0x01, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16,
|
||||
0x0f, 0x02, 0x0a, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x01, 0x13, 0x04, 0xbe, 0x02,
|
||||
0x9e, 0x1e, 0xc2, 0x00, 0x00, 0x00, 0x18, 0x01, 0x13, 0xc6, 0x01, 0x0c, 0x7c, 0xc5, 0x01, 0x01, 0x09, 0x02, 0x02, 0x13,
|
||||
0x6e, 0x06, 0x7c, 0xca, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x0a, 0x08, 0x08, 0x10, 0x02, 0x13, 0xb7, 0x01, 0x08, 0x24,
|
||||
0xd3, 0x01, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x02, 0x14, 0x02, 0x5c, 0x08, 0x04, 0x01, 0x04, 0xd6, 0x01, 0xca, 0x16,
|
||||
0x0f, 0x04, 0x04, 0x02, 0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0xc1, 0x0a, 0x08, 0x0c, 0x32,
|
||||
0x00, 0xc1, 0x0a, 0x08, 0x04, 0x36, 0x01, 0xc3, 0x10, 0x08, 0x04, 0x04, 0x1e, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xe5, 0x01,
|
||||
0x4a, 0x08, 0x02, 0x0c, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x30, 0x02, 0xc8, 0x10, 0x08, 0x04, 0x04, 0x28, 0x99, 0x1e, 0x1c,
|
||||
0x18, 0x1b, 0xe5, 0x1e, 0x08, 0xfc, 0x05, 0xd0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xdb,
|
||||
0x00, 0x00, 0x00, 0x13, 0x6e, 0xd5, 0x05, 0x7c, 0xee, 0x01, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08, 0x02, 0x6e, 0x02,
|
||||
0x6c, 0x08, 0x02, 0x01, 0x28, 0xf1, 0x01, 0x8b, 0x01, 0x4a, 0x08, 0x02, 0xcd, 0x05, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c,
|
||||
0x08, 0x02, 0x01, 0x1b, 0xf6, 0x01, 0xc3, 0x10, 0x08, 0x06, 0xd6, 0x01, 0x06, 0x13, 0x6e, 0x04, 0x7c, 0xfb, 0x01, 0x01,
|
||||
0x08, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x25, 0xfa, 0x01, 0xfd, 0x01, 0x13, 0xc6, 0x01, 0x06, 0x7c, 0x80, 0x02, 0x01,
|
||||
0x09, 0x02, 0x02, 0x13, 0x6e, 0x04, 0x7c, 0x83, 0x02, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x0f, 0x02, 0x02, 0xf6, 0x01,
|
||||
0xa7, 0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13, 0x6e, 0x0a, 0x7c, 0x8b, 0x02, 0x01, 0x08, 0x02,
|
||||
0x02, 0x4a, 0x08, 0x02, 0xa8, 0x01, 0x02, 0x13, 0x6e, 0x04, 0x7c, 0x8f, 0x02, 0x01, 0x08, 0x02, 0x02, 0xc3, 0x10, 0x08,
|
||||
0x02, 0x08, 0x02, 0x13, 0x96, 0x02, 0x0a, 0x7c, 0x95, 0x02, 0x01, 0x45, 0x02, 0x02, 0x5c, 0x73, 0x02, 0x01, 0x3e, 0x98,
|
||||
0x02, 0xc1, 0x0a, 0x08, 0x06, 0x06, 0x01, 0xc1, 0x0a, 0x08, 0x04, 0x0a, 0x00, 0x7c, 0x08, 0x04, 0x01, 0x2b, 0x92, 0x02,
|
||||
0x8b, 0x01, 0x8f, 0x01, 0x7c, 0x08, 0x02, 0x01, 0x2e, 0x9c, 0x02, 0x9e, 0x02, 0xa0, 0x02, 0x13, 0x50, 0x08, 0x7c, 0xa4,
|
||||
0x02, 0x01, 0x41, 0x02, 0x02, 0xc1, 0x0a, 0x13, 0x02, 0x02, 0x00, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x13,
|
||||
0x02, 0x06, 0x01, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc1, 0x0a, 0x13, 0x02, 0x0a, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02,
|
||||
0x18, 0xd0, 0x0a, 0x44, 0x02, 0x0a, 0x06, 0x02, 0xb4, 0x0a, 0x44, 0x02, 0x2d, 0x01, 0x00, 0x00, 0x01, 0xb0, 0x02, 0x0a,
|
||||
0x02, 0x01, 0x09, 0x04, 0xa2, 0x04, 0xc1, 0x12, 0x09, 0x02, 0x10, 0x02, 0xe8, 0x0a, 0x13, 0x04, 0x0a, 0x04, 0x02, 0xa1,
|
||||
0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x4a, 0x09, 0x04, 0x72, 0x04, 0x99, 0x1e, 0x66, 0x18, 0x65, 0xe5, 0x1e, 0x09,
|
||||
0xa6, 0x05, 0x02, 0x01, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x13, 0x6e,
|
||||
0xbb, 0x04, 0x7c, 0xbc, 0x02, 0x01, 0x08, 0x02, 0x02, 0x4a, 0x08, 0x04, 0x04, 0x84, 0x01, 0xce, 0x10, 0x09, 0x04, 0xb1,
|
||||
0x04, 0x04, 0x13, 0x6e, 0x04, 0x7c, 0xc3, 0x02, 0x01, 0x08, 0x02, 0x02, 0xca, 0x16, 0x0f, 0x02, 0x02, 0xf6, 0x02, 0xa7,
|
||||
0x1e, 0x03, 0x00, 0xba, 0x1e, 0x00, 0x01, 0x03, 0x18, 0x02, 0x13, 0x6e, 0x0c, 0x7c, 0xcc, 0x02, 0x01, 0x08, 0x02, 0x02,
|
||||
0xc3, 0x10, 0x08, 0x02, 0xaa, 0x02, 0x02, 0x6c, 0x08, 0x02, 0x01, 0x28, 0xcf, 0x02, 0x8b, 0x01, 0x4a, 0x08, 0x02, 0x91,
|
||||
0x04, 0x02, 0x3f, 0x08, 0x06, 0x06, 0x5c, 0x08, 0x02, 0x01, 0x1b, 0xd4, 0x02, 0x13, 0x7d, 0x06, 0x7c, 0xd7, 0x02, 0x01,
|
||||
0x13, 0x02, 0x02, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0x23, 0x6e, 0x02, 0x7c, 0xd7, 0x02, 0x88, 0x01, 0x01, 0x08, 0x02,
|
||||
0x02, 0xce, 0x10, 0x09, 0x02, 0x06, 0x02, 0x01, 0x09, 0x04, 0xf6, 0x04, 0x5c, 0x09, 0x02, 0x01, 0x45, 0xdf, 0x02, 0x13,
|
||||
0xc6, 0x01, 0x04, 0x7c, 0xe1, 0x02, 0x01, 0x09, 0x02, 0x02, 0xc4, 0x12, 0x08, 0x02, 0x08, 0x02, 0x6c, 0x08, 0x02, 0x01,
|
||||
0x28, 0xe4, 0x02, 0x8b, 0x01, 0x6c, 0x08, 0x0a, 0x01, 0x1a, 0xe5, 0x02, 0xc5, 0x02, 0xc3, 0x10, 0x08, 0x08, 0xbe, 0x03,
|
||||
0x32, 0x4a, 0x08, 0x02, 0x0a, 0x02, 0xce, 0x10, 0x09, 0x02, 0x26, 0x02, 0x4b, 0x09, 0x04, 0x60, 0x04, 0x99, 0x1e, 0x54,
|
||||
0x18, 0x53, 0xe5, 0x1e, 0x09, 0xaa, 0x04, 0x42, 0x01, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x47,
|
||||
0x01, 0x00, 0x00, 0x13, 0xb7, 0x01, 0xd3, 0x03, 0x23, 0x88, 0x01, 0x01, 0x08, 0x02, 0x02, 0xce, 0x10, 0x09, 0x04, 0xcd,
|
||||
0x03, 0x04, 0x01, 0x13, 0x02, 0xa8, 0x05, 0x3d, 0x09, 0x02, 0x02, 0x02, 0x18, 0xc3, 0x10, 0x08, 0x04, 0xd6, 0x03, 0xf8,
|
||||
0x01, 0xce, 0x10, 0x09, 0x02, 0x06, 0x02, 0x4b, 0x09, 0x04, 0x04, 0x0e, 0x13, 0xb7, 0x01, 0x02, 0x23, 0xdf, 0x01, 0xc1,
|
||||
0x0a, 0x08, 0x02, 0x04, 0x00, 0x22, 0x02, 0x00, 0x13, 0xb7, 0x01, 0x02, 0x23, 0xd3, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x08,
|
||||
0x01, 0x22, 0x02, 0x00, 0x13, 0xb7, 0x01, 0x02, 0x23, 0xce, 0x01, 0xc1, 0x0a, 0x08, 0x02, 0x0c, 0x02, 0x22, 0x02, 0x00,
|
||||
0x01, 0x13, 0x02, 0xc2, 0x05, 0x9e, 0x1e, 0x84, 0x01, 0x00, 0x00, 0x88, 0x06, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xa7, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00, 0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73,
|
||||
0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xef, 0x0e, 0x04, 0x04, 0xed, 0xc2,
|
||||
0xa5, 0xf3, 0x06, 0x00, 0x53, 0x5a, 0xa0, 0x02, 0x04, 0x07, 0x10, 0x2e, 0x06, 0x10, 0x37, 0x02, 0x0b, 0x00, 0x05, 0x00,
|
||||
0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x23, 0x30, 0x01, 0x23,
|
||||
0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80, 0x02, 0x47, 0x02, 0x01, 0x00, 0x23,
|
||||
0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x6c, 0x1e, 0x00, 0x10, 0x0e, 0x1e, 0x07,
|
||||
0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xb5, 0x02, 0x0a, 0x20, 0x01, 0xa6, 0x02, 0x0c, 0x20, 0xb7, 0x02, 0x02, 0x0e,
|
||||
0x04, 0xb8, 0x02, 0x02, 0x0f, 0x04, 0xb7, 0x02, 0x06, 0x0e, 0x03, 0xb8, 0x02, 0x02, 0x13, 0x03, 0xb5, 0x02, 0x02, 0x20,
|
||||
0x00, 0xbb, 0x04, 0x15, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x0f, 0x16, 0x8e, 0x03, 0x02, 0x10, 0x14, 0x08,
|
||||
0x08, 0x08, 0x0e, 0x17, 0xbb, 0x04, 0x15, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x18, 0x19, 0xae, 0x02, 0x02,
|
||||
0x1a, 0x3e, 0x02, 0x02, 0x1b, 0x39, 0x1c, 0x02, 0x02, 0xbb, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1e, 0x02,
|
||||
0x08, 0xbb, 0x04, 0x08, 0x14, 0x04, 0x00, 0x00, 0x00, 0xb7, 0x02, 0x1a, 0x0e, 0x02, 0x3e, 0x1c, 0x03, 0x44, 0x39, 0x52,
|
||||
0x02, 0x03, 0xbb, 0x04, 0x15, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x03, 0x0e, 0x3e, 0x04, 0x01, 0x0f, 0x39, 0x59,
|
||||
0x02, 0x01, 0xbb, 0x04, 0x15, 0x02, 0x02, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x01, 0x0e, 0xbb, 0x04, 0x15, 0x06, 0x03, 0x00,
|
||||
0x00, 0x00, 0xbb, 0x04, 0x15, 0x08, 0x01, 0x00, 0x00, 0x00, 0xad, 0x06, 0x08, 0x86, 0x01, 0xc6, 0x06, 0x02, 0xc3, 0x02,
|
||||
0x00, 0x03, 0x18, 0x02, 0x33, 0x2d, 0xb8, 0x02, 0x1d, 0x1e, 0xa6, 0x01, 0x37, 0x01, 0x08, 0x02, 0x02, 0xbc, 0x0e, 0x0e,
|
||||
0x99, 0x01, 0x99, 0x01, 0x13, 0x57, 0x06, 0x53, 0x56, 0x22, 0x00, 0x06, 0x13, 0x5c, 0x0a, 0x5a, 0x5b, 0x01, 0x0e, 0x02,
|
||||
0x02, 0x13, 0x5c, 0x04, 0x5a, 0x5f, 0x01, 0x0e, 0x02, 0x02, 0xc8, 0x10, 0x0e, 0x02, 0x08, 0x02, 0x13, 0x57, 0x04, 0x53,
|
||||
0x63, 0x22, 0x00, 0x04, 0x8d, 0x1e, 0x88, 0x06, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4f, 0x4d, 0x53,
|
||||
0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
||||
0x91, 0x02, 0x01, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xdf, 0x0e, 0x04, 0x04, 0xed, 0xc2, 0xa5, 0xf3, 0x06, 0x00, 0xbf, 0x01, 0xa0, 0x02,
|
||||
0x04, 0x07, 0x10, 0xfe, 0x02, 0x1e, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x12, 0x20, 0xb7, 0x02,
|
||||
0x02, 0x0c, 0x04, 0xbb, 0x04, 0x0c, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0x04, 0x0d, 0x70, 0x70, 0x70, 0x70, 0x70,
|
||||
0x3e, 0x34, 0x03, 0x0d, 0x39, 0xbe, 0x01, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xf5, 0x02, 0x00, 0x03, 0x18, 0x02, 0x22, 0xf3,
|
||||
0x02, 0xbd, 0x02, 0x8d, 0x1e, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x4f, 0x4d, 0x53, 0x00, 0x03, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xa4, 0x17, 0x00, 0x00, 0x91, 0x02, 0x01, 0x91, 0x02, 0x20, 0xd1, 0x10, 0x02, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74,
|
||||
0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x01, 0xaf, 0x0f, 0x00, 0x04, 0xed, 0xc2, 0xa5,
|
||||
0xf3, 0x06, 0x00, 0x83, 0x01, 0x92, 0x01, 0xcd, 0x01, 0xdc, 0x01, 0xec, 0x01, 0xae, 0x02, 0x10, 0x96, 0x01, 0x06, 0x10,
|
||||
0x37, 0x02, 0x0b, 0x00, 0x05, 0x00, 0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x23, 0x30, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x10, 0x04, 0x06, 0x80,
|
||||
0x02, 0x47, 0x02, 0x01, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x01, 0x10, 0x42,
|
||||
0x06, 0x40, 0x10, 0x08, 0x06, 0x10, 0x10, 0x02, 0x06, 0x10, 0x10, 0x04, 0x06, 0x10, 0x37, 0x02, 0x76, 0x00, 0x05, 0x00,
|
||||
0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x80, 0x02, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07, 0x01,
|
||||
0x10, 0x01, 0x23, 0x40, 0x01, 0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01,
|
||||
0x23, 0x10, 0x01, 0x23, 0x08, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x0c, 0x01,
|
||||
0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x08, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x90, 0x01, 0x01,
|
||||
0x00, 0x00, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x10, 0x01, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x08, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x10, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01,
|
||||
0x00, 0x00, 0x23, 0x08, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01,
|
||||
0x23, 0x04, 0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04,
|
||||
0x01, 0x23, 0x0c, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x05, 0x00, 0x23, 0x04,
|
||||
0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x30, 0x00, 0x07, 0x01, 0x10, 0x01, 0x05, 0x00, 0x23, 0x40, 0x00, 0x07,
|
||||
0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00,
|
||||
0x23, 0x04, 0x01, 0x23, 0x04, 0x01, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x01, 0x00,
|
||||
0x00, 0x23, 0x04, 0x01, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x02, 0x10, 0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x00, 0x00,
|
||||
0x0e, 0x0e, 0x10, 0x00, 0x1e, 0x08, 0x10, 0x04, 0x01, 0x08, 0x10, 0x1a, 0x1e, 0x00, 0x37, 0x4c, 0x07, 0x00, 0x05, 0x00,
|
||||
0x23, 0x00, 0x00, 0x07, 0x01, 0x10, 0x01, 0x00, 0x00, 0x23, 0x40, 0x01, 0x00, 0x00, 0x23, 0x10, 0x00, 0x00, 0x02, 0x10,
|
||||
0x04, 0x22, 0x00, 0x10, 0x00, 0x21, 0x08, 0x10, 0x26, 0x0b, 0x2b, 0x10, 0x1e, 0x1e, 0x04, 0x10, 0x20, 0x1e, 0x07, 0x47,
|
||||
0x80, 0x01, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x01, 0x0b, 0x01, 0x01, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x0b, 0x01, 0x04, 0x00,
|
||||
0x00, 0x02, 0x00, 0xc2, 0x01, 0x00, 0x93, 0x02, 0x02, 0xa1, 0x04, 0x02, 0x02, 0xa6, 0x02, 0x06, 0x20, 0xb7, 0x02, 0x02,
|
||||
0x06, 0x04, 0xb8, 0x02, 0x02, 0x07, 0x04, 0xb7, 0x02, 0x02, 0x06, 0x03, 0xae, 0x02, 0x28, 0x07, 0xb5, 0x02, 0x1a, 0x20,
|
||||
0x00, 0xbb, 0x04, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x02, 0x04, 0x20, 0x01, 0xbb, 0x04, 0x2d, 0x02, 0x00, 0x00,
|
||||
0x00, 0x00, 0xbb, 0x04, 0x2a, 0x06, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2d, 0x04, 0x01, 0x00, 0x00, 0x00, 0xbb, 0x04,
|
||||
0x2a, 0x06, 0x02, 0x00, 0x00, 0x00, 0xbb, 0x04, 0x2d, 0x04, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x22, 0x09, 0x03, 0xbb,
|
||||
0x04, 0x2a, 0x02, 0x08, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x4a, 0x8e, 0x03, 0x02, 0x08, 0x49, 0x2d, 0x2d, 0x2d,
|
||||
0x06, 0x4b, 0xbb, 0x04, 0x2a, 0x02, 0x40, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x4c, 0x4d, 0xae, 0x02, 0x02, 0x4e, 0x3e,
|
||||
0x02, 0x02, 0x4f, 0x39, 0x50, 0x02, 0x02, 0x3e, 0x04, 0x02, 0x08, 0xbb, 0x04, 0x2d, 0x28, 0x04, 0x00, 0x00, 0x00, 0x3e,
|
||||
0x0e, 0x02, 0x06, 0xbb, 0x04, 0x2a, 0x06, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x08, 0x71, 0xb7, 0x02, 0x02, 0x06,
|
||||
0x02, 0xb7, 0x02, 0x02, 0x2a, 0x03, 0xbb, 0x04, 0x2a, 0x02, 0x09, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x09, 0x75, 0xbc,
|
||||
0x02, 0x02, 0x07, 0x71, 0xbb, 0x04, 0x2a, 0x02, 0x28, 0x00, 0x00, 0x00, 0xbc, 0x02, 0x02, 0x07, 0x78, 0xae, 0x83, 0x80,
|
||||
0x02, 0x02, 0x08, 0x08, 0x08, 0x08, 0x72, 0x08, 0x08, 0x07, 0x73, 0x06, 0x06, 0x07, 0x07, 0x73, 0x73, 0x06, 0x06, 0x73,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x74, 0x2d, 0x73, 0x06, 0x06, 0x76, 0x09, 0x06, 0x07, 0x07, 0x73,
|
||||
0x2d, 0x06, 0x07, 0x2d, 0x06, 0x73, 0x06, 0x06, 0x06, 0x2a, 0x09, 0x06, 0x06, 0x2a, 0x06, 0x06, 0x09, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x49, 0x08, 0x08, 0x06, 0x06, 0x06, 0x06, 0x77, 0x2d, 0x06, 0x06, 0x06, 0x79, 0x3e, 0x02, 0x02, 0x7a, 0x39,
|
||||
0x7b, 0x02, 0x02, 0x3e, 0x0c, 0x03, 0x2d, 0x39, 0x82, 0x01, 0x02, 0x03, 0xb2, 0x06, 0x2d, 0x04, 0x02, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x18, 0x01, 0x07, 0x39, 0x91, 0x01, 0x02, 0x01, 0xce, 0x02, 0x4c, 0x08, 0x07, 0x06, 0x3e, 0x02, 0x02, 0xb8, 0x01,
|
||||
0x39, 0xb9, 0x01, 0x02, 0x02, 0x3e, 0x24, 0x01, 0x2d, 0x39, 0xcc, 0x01, 0x02, 0x01, 0x3e, 0x1c, 0x03, 0x07, 0x39, 0xdb,
|
||||
0x01, 0x02, 0x03, 0x3e, 0x08, 0x03, 0x06, 0x39, 0xdb, 0x01, 0x18, 0x03, 0xbb, 0x04, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x40,
|
||||
0xbb, 0x04, 0x06, 0x08, 0x00, 0x00, 0x80, 0xbf, 0xbb, 0x04, 0x06, 0x16, 0x00, 0x00, 0x80, 0x3f, 0xbc, 0x02, 0x52, 0x06,
|
||||
0x36, 0xbc, 0x02, 0x02, 0x06, 0x31, 0xde, 0x02, 0x02, 0x07, 0x06, 0xaa, 0x02, 0xab, 0x02, 0x3e, 0x02, 0x03, 0xac, 0x02,
|
||||
0x39, 0xad, 0x02, 0x02, 0x03, 0xc6, 0x06, 0x02, 0xd3, 0x04, 0x00, 0x03, 0x18, 0x02, 0x01, 0x2d, 0x92, 0x03, 0x02, 0x22,
|
||||
0x96, 0x01, 0x00, 0x01, 0x2d, 0x04, 0x9a, 0x01, 0xc7, 0x10, 0x2d, 0x02, 0x02, 0x98, 0x01, 0x33, 0x53, 0xec, 0x01, 0x51,
|
||||
0x2e, 0xd1, 0x01, 0x2e, 0x01, 0x08, 0x02, 0x02, 0x01, 0x07, 0xb0, 0x01, 0x9c, 0x04, 0xc1, 0x12, 0x07, 0x37, 0x78, 0x37,
|
||||
0x13, 0x53, 0x46, 0x7c, 0x2e, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0x41, 0x41, 0x06, 0x3d, 0x09, 0x04, 0x04, 0x04,
|
||||
0x18, 0x5c, 0x06, 0x02, 0x01, 0x42, 0x89, 0x03, 0x13, 0x6e, 0x04, 0xba, 0x01, 0x38, 0x01, 0x06, 0x02, 0x02, 0xc8, 0x10,
|
||||
0x06, 0x02, 0x08, 0x02, 0x3d, 0x09, 0x04, 0x1f, 0x1f, 0x18, 0xce, 0x10, 0x09, 0x02, 0x02, 0x06, 0xc1, 0x0a, 0x06, 0x04,
|
||||
0x04, 0x00, 0xd2, 0x0a, 0x07, 0x5c, 0x5c, 0x42, 0x00, 0xc1, 0x0a, 0x06, 0x57, 0x08, 0x01, 0xd2, 0x0a, 0x07, 0x5c, 0x5c,
|
||||
0x04, 0x01, 0xc1, 0x0a, 0x06, 0x57, 0x0c, 0x02, 0xd2, 0x0a, 0x07, 0x5c, 0x5c, 0x04, 0x02, 0xc1, 0x12, 0x07, 0x55, 0xa4,
|
||||
0x01, 0x55, 0xb0, 0x0a, 0x1d, 0x4a, 0x4a, 0xc1, 0x0a, 0x07, 0x0d, 0x0d, 0x00, 0x3d, 0x09, 0xb1, 0x03, 0xb1, 0x03, 0xb1,
|
||||
0x03, 0x18, 0x13, 0xe0, 0x01, 0x04, 0xdc, 0x01, 0x2b, 0xc1, 0x0a, 0x06, 0x02, 0x06, 0x00, 0x22, 0x02, 0x00, 0x13, 0xe0,
|
||||
0x01, 0x02, 0xdc, 0x01, 0x31, 0xc1, 0x0a, 0x06, 0x02, 0x0a, 0x01, 0x22, 0x02, 0x00, 0x13, 0xe0, 0x01, 0x02, 0xdc, 0x01,
|
||||
0x36, 0xc1, 0x0a, 0x06, 0x02, 0x0e, 0x02, 0x22, 0x02, 0x00, 0x01, 0x2d, 0x92, 0x03, 0xd8, 0x04, 0xcb, 0x10, 0x2d, 0x02,
|
||||
0x02, 0xd6, 0x04, 0x23, 0x53, 0x04, 0x7c, 0x67, 0xb0, 0x03, 0x01, 0x08, 0x02, 0x02, 0xc1, 0x12, 0x07, 0x8f, 0x03, 0x8f,
|
||||
0x03, 0x99, 0x03, 0x22, 0x01, 0x00, 0x01, 0x2d, 0x08, 0xd8, 0x01, 0xcb, 0x10, 0x2d, 0x02, 0x02, 0xd6, 0x01, 0xbf, 0x0c,
|
||||
0x06, 0x06, 0xdc, 0x01, 0xc8, 0x10, 0x06, 0x02, 0x04, 0x02, 0xc8, 0x10, 0x06, 0x08, 0x08, 0x0c, 0x4b, 0x06, 0x02, 0x06,
|
||||
0x02, 0xbf, 0x0c, 0x06, 0x0a, 0x1c, 0x4a, 0x06, 0x02, 0x16, 0x02, 0x4b, 0x06, 0x02, 0x0e, 0x02, 0xc8, 0x10, 0x06, 0x06,
|
||||
0x04, 0x20, 0xc1, 0x0a, 0x06, 0x04, 0x34, 0x00, 0x4a, 0x06, 0x02, 0x02, 0x06, 0xd2, 0x0a, 0x07, 0x84, 0x03, 0x84, 0x03,
|
||||
0xba, 0x03, 0x00, 0xc1, 0x0a, 0x06, 0xf9, 0x02, 0xf9, 0x02, 0x03, 0x4a, 0x06, 0x02, 0x18, 0x02, 0xc1, 0x0a, 0x06, 0x04,
|
||||
0xf3, 0x02, 0x00, 0x4b, 0x06, 0x02, 0x02, 0x06, 0xd2, 0x0a, 0x07, 0xfa, 0x02, 0xfa, 0x02, 0x08, 0x00, 0xc1, 0x0a, 0x06,
|
||||
0xf1, 0x02, 0xf1, 0x02, 0x00, 0xc3, 0x10, 0x06, 0x0a, 0x2e, 0x32, 0xc1, 0x0a, 0x06, 0x04, 0xe3, 0x02, 0x03, 0x4a, 0x06,
|
||||
0x02, 0x06, 0x02, 0x4b, 0x06, 0x02, 0x12, 0x02, 0xc0, 0x10, 0x2d, 0x0c, 0x64, 0xde, 0x03, 0xbf, 0x0c, 0x06, 0x02, 0x02,
|
||||
0x4a, 0x06, 0x02, 0x60, 0x02, 0xc3, 0x10, 0x06, 0x02, 0x48, 0x02, 0x4a, 0x06, 0x06, 0x06, 0x1c, 0x4b, 0x06, 0x02, 0x2c,
|
||||
0x02, 0x23, 0xe0, 0x01, 0x0e, 0xae, 0x02, 0x38, 0x2e, 0x22, 0x00, 0x28, 0x3f, 0x06, 0x04, 0x12, 0x23, 0xe0, 0x01, 0x02,
|
||||
0xae, 0x02, 0x38, 0x33, 0x22, 0x00, 0x02, 0xc1, 0x0a, 0x06, 0x04, 0xad, 0x02, 0x01, 0x3f, 0x06, 0x02, 0x02, 0xd2, 0x0a,
|
||||
0x07, 0xba, 0x02, 0xba, 0x02, 0x0e, 0x01, 0x13, 0xdb, 0x01, 0xb3, 0x02, 0xae, 0x02, 0x2e, 0x22, 0x00, 0xb3, 0x02, 0x22,
|
||||
0xec, 0x02, 0xd0, 0x01, 0x8d, 0x1e, 0x88, 0x06, 0x52, 0x49, 0x50, 0x53, 0x5f, 0x54, 0x41, 0x4d, 0x86, 0x00, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,
|
||||
0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x20, 0x01, 0x03,
|
||||
0x00, 0x00, 0x00, 0x01, 0x30, 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, 0x05, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x01, 0x90, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00,
|
||||
0x01, 0x08, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x10, 0x01, 0x09, 0x00, 0x00, 0x00, 0x02,
|
||||
0x20, 0x01, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x30, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x44, 0x01, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x02, 0x80, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x02, 0x90, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x4c, 0x54, 0x45, 0x4d, 0x5f, 0x54,
|
||||
0x41, 0x4d, 0x22, 0x09, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x01, 0xac, 0x01, 0x00, 0x00, 0x01, 0x10, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x10, 0x01, 0xe4, 0x01,
|
||||
0x00, 0x00, 0x01, 0x20, 0x01, 0xfe, 0x01, 0x00, 0x00, 0x01, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x01, 0x44, 0x01, 0xcc,
|
||||
0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0xf6, 0x03, 0x00, 0x00, 0x01, 0x90, 0x00, 0xf6, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00,
|
||||
0x46, 0x05, 0x00, 0x00, 0x02, 0x00, 0x01, 0xac, 0x01, 0x00, 0x00, 0x02, 0x10, 0x00, 0x46, 0x05, 0x00, 0x00, 0x02, 0x10,
|
||||
0x01, 0xe4, 0x01, 0x00, 0x00, 0x02, 0x20, 0x01, 0x6c, 0x06, 0x00, 0x00, 0x02, 0x30, 0x01, 0x68, 0x03, 0x00, 0x00, 0x02,
|
||||
0x44, 0x01, 0xcc, 0x03, 0x00, 0x00, 0x02, 0x80, 0x00, 0xd2, 0x07, 0x00, 0x00, 0x02, 0x90, 0x00, 0xd2, 0x07, 0x00, 0x00,
|
||||
0x29, 0x0f, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00,
|
||||
0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01,
|
||||
0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01,
|
||||
0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01,
|
||||
0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01,
|
||||
0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01,
|
||||
0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01,
|
||||
0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01,
|
||||
0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01,
|
||||
0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01,
|
||||
0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01,
|
||||
0xc7, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01,
|
||||
0xd1, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x96, 0x01, 0x00, 0x00, 0x18, 0x00,
|
||||
0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01,
|
||||
0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xd7, 0x01, 0x02, 0x00,
|
||||
0xc6, 0x01, 0xd8, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x64, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x62, 0x01,
|
||||
0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xd9, 0x01, 0x02, 0x00, 0x6d, 0x00, 0x64, 0x01, 0x82, 0x16, 0x00, 0x00,
|
||||
0xb1, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01,
|
||||
0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01,
|
||||
0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01,
|
||||
0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01,
|
||||
0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01,
|
||||
0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01,
|
||||
0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01,
|
||||
0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01,
|
||||
0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xda, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01,
|
||||
0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00,
|
||||
0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00,
|
||||
0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0xf1, 0x01,
|
||||
0xf2, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf0, 0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01,
|
||||
0xf0, 0x01, 0xfa, 0x01, 0xf3, 0x01, 0xfb, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0xff, 0x01, 0xf0, 0x01, 0x00, 0x02,
|
||||
0x01, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x02, 0x02, 0xf3, 0x01, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0xf0, 0x01,
|
||||
0x06, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0x07, 0x02, 0xf3, 0x01, 0x08, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x0b, 0x02,
|
||||
0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x11, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xbc, 0x03,
|
||||
0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00,
|
||||
0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00,
|
||||
0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x12, 0x02,
|
||||
0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0x13, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc0, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0x14, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x15, 0x02, 0x16, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0xec, 0x00,
|
||||
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00,
|
||||
0xd6, 0x01, 0x04, 0x00, 0x64, 0x01, 0x17, 0x02, 0x02, 0x00, 0xc6, 0x01, 0x18, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01,
|
||||
0x2b, 0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00,
|
||||
0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01,
|
||||
0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01,
|
||||
0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01,
|
||||
0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01,
|
||||
0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01,
|
||||
0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01,
|
||||
0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01,
|
||||
0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01,
|
||||
0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01,
|
||||
0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02, 0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00,
|
||||
0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x1e, 0x02, 0x1f, 0x02, 0x20, 0x02,
|
||||
0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2a, 0x02,
|
||||
0x2b, 0x02, 0x2c, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, 0x02,
|
||||
0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x29, 0x0f, 0x00, 0x00,
|
||||
0x8f, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01,
|
||||
0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00,
|
||||
0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01, 0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00,
|
||||
0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01,
|
||||
0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01,
|
||||
0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01,
|
||||
0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01,
|
||||
0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01,
|
||||
0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01,
|
||||
0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01,
|
||||
0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01,
|
||||
0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xc7, 0x01, 0x3a, 0x02,
|
||||
0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, 0x02,
|
||||
0xd3, 0x01, 0xd4, 0x01, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x21, 0x16, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x62, 0x01,
|
||||
0x63, 0x01, 0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01,
|
||||
0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01,
|
||||
0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01,
|
||||
0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01,
|
||||
0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01,
|
||||
0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01,
|
||||
0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01,
|
||||
0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00, 0x64, 0x01, 0xda, 0x01, 0xdb, 0x01,
|
||||
0xdc, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe5, 0x01,
|
||||
0xe6, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0x04, 0x00, 0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x64, 0x01,
|
||||
0xc3, 0x01, 0x02, 0x00, 0xbf, 0x01, 0x04, 0x00, 0x64, 0x01, 0xe9, 0x01, 0x02, 0x00, 0xc6, 0x01, 0xd8, 0x01, 0xea, 0x01,
|
||||
0x45, 0x02, 0x46, 0x02, 0xec, 0x01, 0xed, 0x01, 0xee, 0x01, 0xef, 0x01, 0xf0, 0x01, 0x47, 0x02, 0xf2, 0x01, 0xf3, 0x01,
|
||||
0xf4, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xf7, 0x01, 0xf0, 0x01, 0xf8, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01, 0xfa, 0x01,
|
||||
0xf3, 0x01, 0x48, 0x02, 0x49, 0x02, 0xff, 0x01, 0xf0, 0x01, 0x4a, 0x02, 0x4b, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01,
|
||||
0x4c, 0x02, 0xf3, 0x01, 0x4d, 0x02, 0x4e, 0x02, 0x05, 0x02, 0xf0, 0x01, 0x4f, 0x02, 0xf3, 0x01, 0xf9, 0x01, 0xf0, 0x01,
|
||||
0x07, 0x02, 0xf3, 0x01, 0x50, 0x02, 0x51, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0x10, 0x02,
|
||||
0x52, 0x02, 0xd5, 0x01, 0x6d, 0x00, 0x64, 0x01, 0x41, 0x13, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x62, 0x01, 0x63, 0x01,
|
||||
0x64, 0x01, 0x65, 0x01, 0x64, 0x01, 0x05, 0x00, 0x02, 0x00, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6a, 0x01,
|
||||
0x6b, 0x01, 0x6c, 0x01, 0x04, 0x00, 0x64, 0x01, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x6d, 0x01, 0x64, 0x01, 0x6e, 0x01,
|
||||
0x02, 0x00, 0x6f, 0x01, 0x04, 0x00, 0x64, 0x01, 0x70, 0x01, 0x02, 0x00, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01,
|
||||
0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x7e, 0x01,
|
||||
0x7f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01,
|
||||
0x89, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, 0x01,
|
||||
0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01,
|
||||
0x9d, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01,
|
||||
0xa7, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01,
|
||||
0xb1, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0x19, 0x02, 0x1a, 0x02, 0x64, 0x01, 0xba, 0x01, 0x02, 0x00, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0x04, 0x00,
|
||||
0x64, 0x01, 0xbe, 0x01, 0x02, 0x00, 0xbf, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0x1b, 0x02, 0x1c, 0x02, 0x1d, 0x02,
|
||||
0x04, 0x00, 0x64, 0x01, 0xc3, 0x01, 0x02, 0x00, 0xc4, 0x01, 0x04, 0x00, 0x64, 0x01, 0xc5, 0x01, 0x02, 0x00, 0xc6, 0x01,
|
||||
0xc7, 0x01, 0x53, 0x02, 0x54, 0x02, 0x55, 0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x5b, 0x02,
|
||||
0x5c, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x5f, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, 0x02, 0x65, 0x02,
|
||||
0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x38, 0x02, 0x39, 0x02, 0xd5, 0x01,
|
||||
0x6d, 0x00, 0x64, 0x01,
|
||||
|
||||
};
|
||||
|
||||
int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_OFFSET = 0;
|
||||
int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE = 28235;
|
||||
int UNLIT_FIXED_SIZE_UNLIT_FIXED_SIZE_SIZE = 39924;
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include "import.h"
|
||||
#include "d3d_texture.h"
|
||||
|
||||
#include <d3d.h>
|
||||
#include <d3d11_1.h>
|
||||
#include <dxgi1_2.h>
|
||||
#include <d3d11_4.h>
|
||||
#include <Windows.h>
|
||||
#include <wrl.h>
|
||||
|
||||
|
||||
|
||||
namespace thermion::windows::d3d {
|
||||
|
||||
class EMSCRIPTEN_KEEPALIVE D3DContext {
|
||||
public:
|
||||
D3DContext();
|
||||
~D3DContext();
|
||||
void Flush();
|
||||
std::unique_ptr<D3DTexture> CreateTexture(uint32_t width, uint32_t height);
|
||||
|
||||
private:
|
||||
ID3D11DeviceContext* _D3D11DeviceContext = nullptr;
|
||||
ID3D11Device* _D3D11Device = nullptr;
|
||||
};
|
||||
}
|
||||
+21
-19
@@ -1,50 +1,52 @@
|
||||
#pragma once
|
||||
|
||||
#include "import.h"
|
||||
|
||||
#include <functional>
|
||||
#include <mutex>
|
||||
|
||||
#include <d3d.h>
|
||||
#include <d3d11.h>
|
||||
#include <dxgi1_2.h> // Add this line
|
||||
#include <d3d11_1.h>
|
||||
#include <dxgi1_2.h>
|
||||
#include <d3d11_4.h>
|
||||
#include <Windows.h>
|
||||
#include <wrl.h>
|
||||
|
||||
typedef uint32_t GLuint;
|
||||
|
||||
namespace thermion::windows::d3d {
|
||||
|
||||
class D3DTexture {
|
||||
class EMSCRIPTEN_KEEPALIVE D3DTexture {
|
||||
public:
|
||||
D3DTexture(
|
||||
Microsoft::WRL::ComPtr<ID3D11Texture2D> d3dTexture2D,
|
||||
HANDLE d3dTexture2DHandle,
|
||||
uint32_t width,
|
||||
uint32_t height,
|
||||
std::function<void(size_t, size_t)> onResizeRequested
|
||||
uint32_t height
|
||||
);
|
||||
~D3DTexture();
|
||||
|
||||
void Flush();
|
||||
HANDLE GetTextureHandle();
|
||||
|
||||
GLuint glTextureId = 0;
|
||||
|
||||
void SaveToBMP(const char* filename);
|
||||
|
||||
void FillBlueAndSaveToBMP(const char* filename);
|
||||
bool SaveTextureAsBMP(ID3D11Texture2D* texture, const char* filename);
|
||||
// Device
|
||||
ID3D11Device* _D3D11Device = nullptr;
|
||||
uint32_t GetWidth() {
|
||||
return _width;
|
||||
}
|
||||
|
||||
uint32_t GetHeight() {
|
||||
return _height;
|
||||
}
|
||||
|
||||
private:
|
||||
bool _error = false;
|
||||
uint32_t _width = 0;
|
||||
uint32_t _height = 0;
|
||||
bool logged = false;
|
||||
std::function<void(size_t, size_t)> _onResizeRequested;
|
||||
|
||||
|
||||
ID3D11DeviceContext* _D3D11DeviceContext = nullptr;
|
||||
// Texture objects/shared handles
|
||||
|
||||
Microsoft::WRL::ComPtr<ID3D11Texture2D> _d3dTexture2D;
|
||||
HANDLE _d3dTexture2DHandle = nullptr;
|
||||
|
||||
bool SaveTextureAsBMP(ID3D11Texture2D* texture, const char* filename);
|
||||
|
||||
|
||||
};
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#ifdef THERMION_WIN32_KHR_BUILD
|
||||
#define EMSCRIPTEN_KEEPALIVE __declspec(dllimport)
|
||||
#else
|
||||
#define EMSCRIPTEN_KEEPALIVE __declspec(dllexport)
|
||||
#endif
|
||||
@@ -0,0 +1,72 @@
|
||||
#pragma once
|
||||
|
||||
#include <bluevk/BlueVK.h>
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct BMPHeader {
|
||||
uint16_t signature;
|
||||
uint32_t fileSize;
|
||||
uint32_t reserved;
|
||||
uint32_t dataOffset;
|
||||
uint32_t headerSize;
|
||||
int32_t width;
|
||||
int32_t height;
|
||||
uint16_t planes;
|
||||
uint16_t bitsPerPixel;
|
||||
uint32_t compression;
|
||||
uint32_t imageSize;
|
||||
int32_t xPixelsPerMeter;
|
||||
int32_t yPixelsPerMeter;
|
||||
uint32_t totalColors;
|
||||
uint32_t importantColors;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
// Helper function to convert VkResult to string for error reporting
|
||||
const char *VkResultToString(VkResult result);
|
||||
// bool checkD3D11VulkanInterop(VkPhysicalDevice physicalDevice, ID3D11Device *d3dDevice);
|
||||
uint32_t findOptimalMemoryType(VkPhysicalDevice physicalDevice,
|
||||
uint32_t typeFilter,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties = 0);
|
||||
|
||||
uint32_t findMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties, VkPhysicalDevice physicalDevice);
|
||||
|
||||
VkResult createVulkanInstance(VkInstance *instance);
|
||||
|
||||
uint32_t findGraphicsQueueFamily(VkPhysicalDevice physicalDevice);
|
||||
|
||||
// Structure to hold both command pool and queue
|
||||
struct CommandResources {
|
||||
VkCommandPool commandPool;
|
||||
VkQueue queue;
|
||||
uint32_t queueFamilyIndex;
|
||||
};
|
||||
|
||||
CommandResources createCommandResources(VkDevice device, VkPhysicalDevice physicalDevice);
|
||||
void readVkImageToBitmap(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool,
|
||||
VkQueue queue,
|
||||
VkImage sourceImage,
|
||||
uint32_t width,
|
||||
uint32_t height,
|
||||
const char* outputPath
|
||||
);
|
||||
|
||||
VkResult createLogicalDevice(VkInstance instance, VkPhysicalDevice *physicalDevice, VkDevice *device);
|
||||
|
||||
void createDeviceWithGraphicsQueue(VkPhysicalDevice physicalDevice, uint32_t& queueFamilyIndex, VkDevice* device);
|
||||
void fillImageWithColor(
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool,
|
||||
VkQueue queue,
|
||||
VkImage image,
|
||||
VkFormat format,
|
||||
VkImageLayout currentLayout,
|
||||
VkExtent3D extent,
|
||||
float r, float g, float b, float a
|
||||
);
|
||||
|
||||
bool SavePixelsAsBMP(uint8_t* pixels, uint32_t width, uint32_t height, int rowPitch, const char* filename);
|
||||
@@ -0,0 +1,104 @@
|
||||
#pragma once
|
||||
|
||||
#include "d3d_context.h"
|
||||
|
||||
#include "vulkan_texture.h"
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include "filament/backend/Platform.h"
|
||||
#include "filament/backend/platforms/VulkanPlatform.h"
|
||||
|
||||
#include "import.h"
|
||||
|
||||
namespace thermion::windows::vulkan {
|
||||
|
||||
class TVulkanPlatform : public filament::backend::VulkanPlatform {
|
||||
public:
|
||||
SwapChainPtr createSwapChain(void* nativeWindow, uint64_t flags,
|
||||
VkExtent2D extent = {0, 0}) override {
|
||||
std::lock_guard lock(mutex);
|
||||
_current = filament::backend::VulkanPlatform::createSwapChain(nativeWindow, flags, extent);
|
||||
std::cout << "Created swap chain with flags " << flags << std::endl;
|
||||
return _current;
|
||||
}
|
||||
|
||||
void destroy(SwapChainPtr handle) override {
|
||||
std::lock_guard lock(mutex);
|
||||
_current = nullptr;
|
||||
std::cout << "Destroyed swap chain" << std::endl;
|
||||
}
|
||||
|
||||
// VkResult acquire(SwapChainPtr handle, VkSemaphore clientSignal, uint32_t* index) override {
|
||||
// auto result = filament::backend::VulkanPlatform::acquire(handle, clientSignal, index);
|
||||
// _currentColorIndex = *index;
|
||||
// return result;
|
||||
// }
|
||||
|
||||
VkResult present(SwapChainPtr handle, uint32_t index, VkSemaphore finishedDrawing) override {
|
||||
auto result = filament::backend::VulkanPlatform::present(handle, index, finishedDrawing);
|
||||
_currentColorIndex = index;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
SwapChainPtr _current;
|
||||
std::mutex mutex;
|
||||
uint32_t _currentColorIndex = 0;
|
||||
|
||||
};
|
||||
|
||||
class EMSCRIPTEN_KEEPALIVE ThermionVulkanContext {
|
||||
public:
|
||||
ThermionVulkanContext();
|
||||
void* GetSharedContext();
|
||||
HANDLE CreateRenderingSurface(uint32_t width, uint32_t height, uint32_t left, uint32_t top);
|
||||
void DestroyRenderingSurface(HANDLE handle);
|
||||
void ResizeRenderingSurface(uint32_t width, uint32_t height, uint32_t left, uint32_t top);
|
||||
void Flush();
|
||||
|
||||
filament::backend::VulkanPlatform *GetPlatform() {
|
||||
return _platform;
|
||||
}
|
||||
|
||||
void BlitFromSwapchain();
|
||||
|
||||
void readPixelsFromImage(
|
||||
uint32_t width,
|
||||
uint32_t height,
|
||||
std::vector<uint8_t>& outPixels
|
||||
);
|
||||
|
||||
|
||||
private:
|
||||
VkInstance instance = VK_NULL_HANDLE;
|
||||
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;
|
||||
VkDevice device = VK_NULL_HANDLE;
|
||||
VkCommandPool commandPool = VK_NULL_HANDLE;
|
||||
VkQueue queue = VK_NULL_HANDLE;
|
||||
|
||||
std::unique_ptr<thermion::windows::d3d::D3DContext> _d3dContext;
|
||||
|
||||
std::vector<std::unique_ptr<thermion::windows::d3d::D3DTexture>> _d3dTextures;
|
||||
std::vector<std::unique_ptr<thermion::windows::vulkan::VulkanTexture>> _vulkanTextures;
|
||||
|
||||
TVulkanPlatform *_platform;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include "bluevk/BlueVK.h"
|
||||
|
||||
#include "import.h"
|
||||
|
||||
namespace thermion::windows::vulkan {
|
||||
|
||||
typedef void *HANDLE;
|
||||
|
||||
class EMSCRIPTEN_KEEPALIVE VulkanTexture {
|
||||
public:
|
||||
VulkanTexture(VkImage image, VkDevice device, VkDeviceMemory imageMemory, uint32_t width, uint32_t height, HANDLE d3dTextureHandle);
|
||||
~VulkanTexture();
|
||||
|
||||
HANDLE GetD3DTextureHandle() {
|
||||
return _d3dTextureHandle;
|
||||
}
|
||||
|
||||
static std::unique_ptr<VulkanTexture> create(VkDevice device, VkPhysicalDevice physicalDevice, uint32_t width, uint32_t height, HANDLE d3dTextureHandle);
|
||||
|
||||
VkImage GetImage() {
|
||||
return _image;
|
||||
}
|
||||
private:
|
||||
VkImage _image = VK_NULL_HANDLE;
|
||||
VkDevice _device = VK_NULL_HANDLE;
|
||||
VkDeviceMemory _imageMemory = VK_NULL_HANDLE;
|
||||
uint32_t _width = 0;
|
||||
uint32_t _height = 0;
|
||||
HANDLE _d3dTextureHandle;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -127,8 +127,7 @@ namespace thermion
|
||||
FilamentViewer::FilamentViewer(const void *sharedContext, const ResourceLoaderWrapperImpl *const resourceLoader, void *const platform, const char *uberArchivePath)
|
||||
: _resourceLoaderWrapper(resourceLoader)
|
||||
{
|
||||
Log("Creating engine wiht sharedContext %d", sharedContext);
|
||||
|
||||
|
||||
ASSERT_POSTCONDITION(_resourceLoaderWrapper != nullptr, "Resource loader must be non-null");
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
@@ -142,11 +141,12 @@ namespace thermion
|
||||
#elif defined(_WIN32)
|
||||
Engine::Config config;
|
||||
config.stereoscopicEyeCount = 1;
|
||||
_engine = Engine::create(Engine::Backend::OPENGL, (backend::Platform *)platform, (void *)sharedContext, &config);
|
||||
config.disableHandleUseAfterFreeCheck = true;
|
||||
_engine = Engine::create(Engine::Backend::VULKAN, (backend::Platform *)platform, (void *)sharedContext, &config);
|
||||
#else
|
||||
_engine = Engine::create(Engine::Backend::OPENGL, (backend::Platform *)platform, (void *)sharedContext, nullptr);
|
||||
#endif
|
||||
Log("Engine created");
|
||||
#endif
|
||||
|
||||
_engine->setAutomaticInstancingEnabled(true);
|
||||
|
||||
_renderer = _engine->createRenderer();
|
||||
@@ -685,6 +685,7 @@ namespace thermion
|
||||
SwapChain *swapChain;
|
||||
swapChain = _engine->createSwapChain(width, height, filament::backend::SWAP_CHAIN_CONFIG_TRANSPARENT | filament::backend::SWAP_CHAIN_CONFIG_READABLE | filament::SwapChain::CONFIG_HAS_STENCIL_BUFFER);
|
||||
_swapChains.push_back(swapChain);
|
||||
_engine->flushAndWait();
|
||||
return swapChain;
|
||||
}
|
||||
|
||||
@@ -767,7 +768,7 @@ namespace thermion
|
||||
view->setAmbientOcclusionOptions({.enabled = false});
|
||||
view->setDynamicResolutionOptions({.enabled = false});
|
||||
#if defined(_WIN32)
|
||||
view->setStereoscopicOptions({.enabled = true});
|
||||
view->setStereoscopicOptions({.enabled = false});
|
||||
#endif
|
||||
|
||||
// bloom can be a bit glitchy (some Intel iGPUs won't render when postprocessing is enabled and bloom is disabled,
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
set(PROJECT_NAME "thermion_vulkan")
|
||||
project(${PROJECT_NAME} LANGUAGES C CXX)
|
||||
|
||||
cmake_policy(VERSION 3.14...3.25)
|
||||
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
set(BUILD_SHARED_LIBS TRUE)
|
||||
set(CMAKE_ENABLE_EXPORTS TRUE)
|
||||
|
||||
add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||||
|
||||
add_compile_options(/FS)
|
||||
# Add Windows-specific compile definitions
|
||||
add_definitions(-DWIN32)
|
||||
add_definitions(-D_WINDOWS)
|
||||
|
||||
# Ensure UNICODE is defined
|
||||
add_definitions(-DUNICODE)
|
||||
add_definitions(-D_UNICODE)
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED
|
||||
"d3d_context.cpp"
|
||||
"vulkan_context.cpp"
|
||||
"utils.cpp"
|
||||
"d3d_texture.cpp"
|
||||
"vulkan_texture.cpp"
|
||||
)
|
||||
|
||||
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20)
|
||||
include_directories(${PROJECT_NAME} INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/"
|
||||
)
|
||||
target_link_directories(${PROJECT_NAME} PRIVATE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../.dart_tool/thermion_dart/lib/v1.51.2/windows/debug
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Shlwapi
|
||||
dxgi
|
||||
d3d11
|
||||
bluevk
|
||||
vulkan-1
|
||||
)
|
||||
|
||||
#add_executable(${PROJECT_NAME}_test
|
||||
# "main.cpp"
|
||||
#)
|
||||
|
||||
#target_compile_features(${PROJECT_NAME}_test PUBLIC cxx_std_20)
|
||||
|
||||
#target_include_directories(${PROJECT_NAME}_test PRIVATE
|
||||
# E:\\thermion\\thermion_dart\\native\\include\\vulkan
|
||||
## E:\\thermion\\thermion_dart\\native\\include
|
||||
# E:\\thermion\\thermion_dart\\native\\include\\filament
|
||||
#)
|
||||
#target_link_directories(${PROJECT_NAME}_test PRIVATE
|
||||
# E:\\thermion\\thermion_dart\\.dart_tool\\thermion_dart\\lib\\v1.51.2\\windows\\debug
|
||||
# E:\\VulkanSDK\\1.3.296.0\\Lib
|
||||
#)
|
||||
|
||||
#target_link_libraries(${PROJECT_NAME}_test PRIVATE
|
||||
# ${PROJECT_NAME}
|
||||
#)
|
||||
|
||||
#add_dependencies(${PROJECT_NAME}_test ${PROJECT_NAME})
|
||||
@@ -0,0 +1,134 @@
|
||||
#include "d3d_context.h"
|
||||
#include <iostream>
|
||||
|
||||
namespace thermion::windows::d3d
|
||||
{
|
||||
|
||||
D3DContext::D3DContext()
|
||||
{
|
||||
IDXGIAdapter *adapter_ = nullptr;
|
||||
|
||||
auto feature_levels = {
|
||||
D3D_FEATURE_LEVEL_12_0,
|
||||
D3D_FEATURE_LEVEL_11_1,
|
||||
D3D_FEATURE_LEVEL_11_0,
|
||||
D3D_FEATURE_LEVEL_10_1,
|
||||
D3D_FEATURE_LEVEL_10_0,
|
||||
D3D_FEATURE_LEVEL_9_3,
|
||||
};
|
||||
|
||||
IDXGIFactory1 *dxgi = nullptr;
|
||||
HRESULT hr = CreateDXGIFactory1(__uuidof(IDXGIFactory1), (void **)&dxgi);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
std::cout << "Failed to create DXGI 1.1 factory" << std::endl;
|
||||
return;
|
||||
}
|
||||
dxgi->EnumAdapters(0, &adapter_);
|
||||
dxgi->Release();
|
||||
if (!adapter_)
|
||||
{
|
||||
std::cout << "Failed to locate default D3D adapter" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
Microsoft::WRL::ComPtr<IDXGIFactory2> factory2;
|
||||
if (SUCCEEDED(dxgi->QueryInterface(IID_PPV_ARGS(&factory2))))
|
||||
{
|
||||
std::cout << "DXGI 1.2 or higher supported" << std::endl;
|
||||
}
|
||||
|
||||
DXGI_ADAPTER_DESC adapter_desc_;
|
||||
adapter_->GetDesc(&adapter_desc_);
|
||||
std::wcout << L"D3D adapter description: " << adapter_desc_.Description
|
||||
<< std::endl;
|
||||
|
||||
hr = ::D3D11CreateDevice(
|
||||
adapter_, D3D_DRIVER_TYPE_UNKNOWN, 0, D3D11_CREATE_DEVICE_BGRA_SUPPORT, feature_levels.begin(),
|
||||
static_cast<UINT>(feature_levels.size()), D3D11_SDK_VERSION,
|
||||
&_D3D11Device, 0, &_D3D11DeviceContext);
|
||||
|
||||
if (FAILED(hr))
|
||||
{
|
||||
std::cout << "Failed to create D3D device" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
Microsoft::WRL::ComPtr<IDXGIDevice> dxgi_device = nullptr;
|
||||
auto dxgi_device_success = _D3D11Device->QueryInterface(
|
||||
__uuidof(IDXGIDevice), (void **)&dxgi_device);
|
||||
if (SUCCEEDED(dxgi_device_success) && dxgi_device != nullptr)
|
||||
{
|
||||
dxgi_device->SetGPUThreadPriority(5); // Must be in interval [-7, 7].
|
||||
}
|
||||
|
||||
auto level = _D3D11Device->GetFeatureLevel();
|
||||
std::cout << "Direct3D Feature Level: "
|
||||
<< (((unsigned)level) >> 12) << "_"
|
||||
<< ((((unsigned)level) >> 8) & 0xf) << std::endl;
|
||||
}
|
||||
|
||||
D3DContext::~D3DContext() {
|
||||
if (_D3D11DeviceContext) {
|
||||
_D3D11DeviceContext->Release();
|
||||
}
|
||||
if (_D3D11Device) {
|
||||
_D3D11Device->Release();
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<D3DTexture> D3DContext::CreateTexture(uint32_t width, uint32_t height)
|
||||
{
|
||||
// Create texture
|
||||
auto d3d11_texture2D_desc = D3D11_TEXTURE2D_DESC{0};
|
||||
d3d11_texture2D_desc.Width = width;
|
||||
d3d11_texture2D_desc.Height = height;
|
||||
d3d11_texture2D_desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
|
||||
d3d11_texture2D_desc.MipLevels = 1;
|
||||
d3d11_texture2D_desc.ArraySize = 1;
|
||||
d3d11_texture2D_desc.SampleDesc.Count = 1;
|
||||
d3d11_texture2D_desc.SampleDesc.Quality = 0;
|
||||
d3d11_texture2D_desc.Usage = D3D11_USAGE_DEFAULT;
|
||||
d3d11_texture2D_desc.BindFlags =
|
||||
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
|
||||
d3d11_texture2D_desc.CPUAccessFlags = 0;
|
||||
d3d11_texture2D_desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_NTHANDLE;
|
||||
|
||||
Microsoft::WRL::ComPtr<ID3D11Texture2D> _d3dTexture2D;
|
||||
|
||||
|
||||
auto hr = _D3D11Device->CreateTexture2D(&d3d11_texture2D_desc, nullptr, &_d3dTexture2D);
|
||||
if FAILED (hr)
|
||||
{
|
||||
std::cout << "Failed to create D3D texture (" << hr << ")" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
auto resource = Microsoft::WRL::ComPtr<IDXGIResource1>{};
|
||||
hr = _d3dTexture2D.As(&resource);
|
||||
|
||||
if FAILED (hr)
|
||||
{
|
||||
std::cout << "Failed to create D3D texture" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
HANDLE _d3dTexture2DHandle = nullptr;
|
||||
// hr = resource->GetSharedHandle(&_d3dTexture2DHandle);
|
||||
hr = resource->CreateSharedHandle(nullptr, GENERIC_ALL, nullptr, &_d3dTexture2DHandle);
|
||||
if FAILED (hr)
|
||||
{
|
||||
std::cout << "Failed to get shared handle to external D3D texture" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
_d3dTexture2D->AddRef();
|
||||
|
||||
std::cout << "Created external D3D texture " << width << "x" << height << std::endl;
|
||||
return std::make_unique<D3DTexture>(_d3dTexture2D, _d3dTexture2DHandle, width, height);
|
||||
}
|
||||
|
||||
void D3DContext::Flush()
|
||||
{
|
||||
_D3D11DeviceContext->Flush();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
#include "d3d_texture.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
||||
namespace thermion::windows::d3d
|
||||
{
|
||||
|
||||
bool IsNTHandleSupported(ID3D11Device *device)
|
||||
{
|
||||
Microsoft::WRL::ComPtr<ID3D11Device5> device5;
|
||||
return SUCCEEDED(device->QueryInterface(IID_PPV_ARGS(&device5)));
|
||||
}
|
||||
|
||||
D3DTexture::D3DTexture(
|
||||
Microsoft::WRL::ComPtr<ID3D11Texture2D> d3dTexture2D,
|
||||
HANDLE d3dTexture2DHandle, uint32_t width, uint32_t height) : _d3dTexture2D(d3dTexture2D), _d3dTexture2DHandle(d3dTexture2DHandle), _width(width), _height(height)
|
||||
{
|
||||
}
|
||||
|
||||
D3DTexture::~D3DTexture() {
|
||||
if (_d3dTexture2DHandle) {
|
||||
CloseHandle(_d3dTexture2DHandle);
|
||||
_d3dTexture2DHandle = nullptr;
|
||||
}
|
||||
if (_d3dTexture2D) {
|
||||
_d3dTexture2D->Release();
|
||||
_d3dTexture2D = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
HANDLE D3DTexture::GetTextureHandle() {
|
||||
return _d3dTexture2DHandle;
|
||||
}
|
||||
|
||||
void D3DTexture::SaveToBMP(const char *filename)
|
||||
{
|
||||
// // Create render target view of the texture
|
||||
// ID3D11RenderTargetView* rtv = nullptr;
|
||||
// D3D11_RENDER_TARGET_VIEW_DESC rtvDesc = {};
|
||||
// rtvDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
|
||||
// rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
|
||||
// rtvDesc.Texture2D.MipSlice = 0;
|
||||
|
||||
// HRESULT hr = _D3D11Device->CreateRenderTargetView(_d3dTexture2D.Get(), &rtvDesc, &rtv);
|
||||
// if (FAILED(hr)) {
|
||||
// std::cout << "Failed to create render target view" << std::endl;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Create staging texture for CPU read access
|
||||
// D3D11_TEXTURE2D_DESC stagingDesc = {};
|
||||
// _d3dTexture2D->GetDesc(&stagingDesc);
|
||||
// stagingDesc.Usage = D3D11_USAGE_STAGING;
|
||||
// stagingDesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
|
||||
// stagingDesc.BindFlags = 0;
|
||||
// stagingDesc.MiscFlags = 0;
|
||||
|
||||
// ID3D11Texture2D* stagingTexture = nullptr;
|
||||
// hr = _D3D11Device->CreateTexture2D(&stagingDesc, nullptr, &stagingTexture);
|
||||
// if (FAILED(hr)) {
|
||||
// rtv->Release();
|
||||
// std::cout << "Failed to create staging texture" << std::endl;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Copy to staging texture
|
||||
// _D3D11DeviceContext->CopyResource(stagingTexture, _d3dTexture2D.Get());
|
||||
|
||||
// // Save to BMP
|
||||
// bool success = SaveTextureAsBMP(stagingTexture, filename);
|
||||
|
||||
// // Cleanup
|
||||
// stagingTexture->Release();
|
||||
// rtv->Release();
|
||||
|
||||
// if (success) {
|
||||
// std::cout << "Successfully saved texture to " << filename << std::endl;
|
||||
// } else {
|
||||
// std::cout << "Texture save failed to " << filename << std::endl;
|
||||
// }
|
||||
}
|
||||
|
||||
bool D3DTexture::SaveTextureAsBMP(ID3D11Texture2D *texture, const char *filename)
|
||||
{
|
||||
return false;
|
||||
// D3D11_TEXTURE2D_DESC desc;
|
||||
// texture->GetDesc(&desc);
|
||||
|
||||
// // Map texture to get pixel data
|
||||
// D3D11_MAPPED_SUBRESOURCE mappedResource;
|
||||
// HRESULT hr = _D3D11DeviceContext->Map(texture, 0, D3D11_MAP_READ, 0, &mappedResource);
|
||||
// if (FAILED(hr)) {
|
||||
// std::cout << "Failed to map texture" << std::endl;
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// auto success = SavePixelsAsBMP(reinterpret_cast<uint8_t*>(mappedResource.pData), desc.Width, desc.Height, mappedResource.RowPitch, filename);
|
||||
|
||||
// if(!success) {
|
||||
// std::cout << "BMP write failed" << std::endl;
|
||||
// }
|
||||
|
||||
// _D3D11DeviceContext->Unmap(texture, 0);
|
||||
// return success;
|
||||
}
|
||||
|
||||
} // namespace thermion_flutter
|
||||
|
||||
// Create render target view of the texture
|
||||
// ID3D11RenderTargetView* rtv = nullptr;
|
||||
// D3D11_RENDER_TARGET_VIEW_DESC rtvDesc = {};
|
||||
// rtvDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
|
||||
// rtvDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
|
||||
// rtvDesc.Texture2D.MipSlice = 0;
|
||||
|
||||
// hr = _D3D11Device->CreateRenderTargetView(_d3dTexture2D.Get(), &rtvDesc, &rtv);
|
||||
// if (FAILED(hr)) {
|
||||
// std::cout << "Failed to create render target view" << std::endl;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Clear the texture to blue
|
||||
// float blueColor[4] = { 0.0f, 0.0f, 1.0f, 1.0f }; // RGBA
|
||||
// _D3D11DeviceContext->ClearRenderTargetView(rtv, blueColor);
|
||||
@@ -0,0 +1,95 @@
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
||||
#include "ThermionWin32.h"
|
||||
|
||||
#include "vulkan_context.h"
|
||||
|
||||
#include "d3d_texture.h"
|
||||
|
||||
#include "filament/backend/platforms/VulkanPlatform.h"
|
||||
#include "filament/Engine.h"
|
||||
#include "filament/Renderer.h"
|
||||
#include "filament/View.h"
|
||||
#include "filament/Viewport.h"
|
||||
#include "filament/Scene.h"
|
||||
#include "filament/SwapChain.h"
|
||||
#include "filament/Texture.h"
|
||||
#include "utils/EntityManager.h"
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
auto ctx = new thermion::windows::vulkan::ThermionVulkanContext();
|
||||
uint32_t width = 100;
|
||||
uint32_t height = 100;
|
||||
auto handle = ctx->CreateRenderingSurface(width, height, 0, 0);
|
||||
std::cout << "CREATED" << std::endl;
|
||||
ctx->DestroyRenderingSurface(handle);
|
||||
std::cout << "FINISHED" << std::endl;
|
||||
|
||||
// auto *engine = filament::Engine::create(filament::Engine::Backend::VULKAN, ctx->GetPlatform(), nullptr, nullptr);
|
||||
// auto *swapChain = engine->createSwapChain(width,height, filament::backend::SWAP_CHAIN_CONFIG_TRANSPARENT | filament::backend::SWAP_CHAIN_CONFIG_READABLE | filament::SwapChain::CONFIG_HAS_STENCIL_BUFFER);
|
||||
// engine->flushAndWait();
|
||||
|
||||
// if(engine->isValid(reinterpret_cast<filament::SwapChain*>(swapChain))) {
|
||||
// std::cout << "VALID SWAPCHIAN" << std::endl;
|
||||
// } else {
|
||||
// std::cout << "INVALID SWAPCHIAN" << std::endl;
|
||||
// }
|
||||
|
||||
// auto renderer = engine->createRenderer();
|
||||
// filament::Renderer::ClearOptions clearOptions;
|
||||
// clearOptions.clear = true;
|
||||
// clearOptions.clearColor = { 1.0f, 0.0f, 0.5f, 1.0f };
|
||||
// renderer->setClearOptions(clearOptions);
|
||||
// auto scene = engine->createScene();
|
||||
// auto *view = engine->createView();
|
||||
// view->setViewport(filament::Viewport {0,0, width,height});
|
||||
// view->setBlendMode(filament::View::BlendMode::TRANSLUCENT);
|
||||
// view->setScene(scene);
|
||||
|
||||
// auto camera = engine->createCamera(utils::EntityManager::get().create());
|
||||
// view->setCamera(camera);
|
||||
|
||||
// engine->flushAndWait();
|
||||
// size_t pixelBufferSize = width * height * 4;
|
||||
// auto out = new uint8_t[pixelBufferSize];
|
||||
// auto pbd = filament::Texture::PixelBufferDescriptor(
|
||||
// out, pixelBufferSize,
|
||||
// filament::Texture::Format::RGBA,
|
||||
// filament::Texture::Type::UBYTE, nullptr, nullptr, nullptr);
|
||||
// renderer->beginFrame(swapChain);
|
||||
// renderer->render(view);
|
||||
// renderer->readPixels(0, 0, width, height, std::move(pbd));
|
||||
// renderer->endFrame();
|
||||
|
||||
// engine->flushAndWait();
|
||||
// std::cout << "FLUSHED" << std::endl;
|
||||
|
||||
// if(!SavePixelsAsBMP(out, width, height, width, "savepixels.bmp")) {
|
||||
// std::cout << "FAILED TO SAVE PIXELS" << std::endl;
|
||||
// }
|
||||
|
||||
// // ctx->GetTexture()->Flush();
|
||||
// ctx->BlitFromSwapchain(width,height);
|
||||
// ctx->GetTexture()->SaveToBMP("d3d_texture.bmp");
|
||||
|
||||
// std::vector<uint8_t> outPixels(width * height * 4);
|
||||
|
||||
// ctx->readPixelsFromImage(width, height, outPixels);
|
||||
|
||||
// std::cout << "READBACK FROM VULKAN COMPLETE " << std::endl;
|
||||
|
||||
// thermion::windows::d3d::D3DTexture::SavePixelsAsBMP(outPixels.data(), width, height, width, "vulkan_readback.bmp");
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,773 @@
|
||||
#include "utils.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
#include <chrono>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
||||
#include "ThermionWin32.h"
|
||||
#include <Windows.h>
|
||||
|
||||
using namespace bluevk;
|
||||
|
||||
// Helper function to convert VkResult to string for error reporting
|
||||
const char *VkResultToString(VkResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case VK_SUCCESS:
|
||||
return "VK_SUCCESS";
|
||||
case VK_ERROR_OUT_OF_HOST_MEMORY:
|
||||
return "VK_ERROR_OUT_OF_HOST_MEMORY";
|
||||
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
|
||||
return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
|
||||
case VK_ERROR_INITIALIZATION_FAILED:
|
||||
return "VK_ERROR_INITIALIZATION_FAILED";
|
||||
case VK_ERROR_LAYER_NOT_PRESENT:
|
||||
return "VK_ERROR_LAYER_NOT_PRESENT";
|
||||
case VK_ERROR_EXTENSION_NOT_PRESENT:
|
||||
return "VK_ERROR_EXTENSION_NOT_PRESENT";
|
||||
default:
|
||||
return "UNKNOWN_ERROR";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// bool checkD3D11VulkanInterop(VkPhysicalDevice physicalDevice, ID3D11Device *d3dDevice)
|
||||
// {
|
||||
// std::cout << "\n=== Checking D3D11-Vulkan Interop Support in QEMU ===" << std::endl;
|
||||
|
||||
// // Check Vulkan external memory capabilities
|
||||
// VkPhysicalDeviceExternalImageFormatInfo externFormatInfo = {
|
||||
// .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
|
||||
// .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT};
|
||||
|
||||
// VkPhysicalDeviceImageFormatInfo2 formatInfo = {
|
||||
// .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
|
||||
// .pNext = &externFormatInfo,
|
||||
// .format = VK_FORMAT_R8G8B8A8_UNORM,
|
||||
// .type = VK_IMAGE_TYPE_2D,
|
||||
// .tiling = VK_IMAGE_TILING_OPTIMAL,
|
||||
// .usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
// .flags = 0};
|
||||
|
||||
// VkExternalImageFormatProperties externFormatProps = {
|
||||
// .sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES};
|
||||
|
||||
// VkImageFormatProperties2 formatProps = {
|
||||
// .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
|
||||
// .pNext = &externFormatProps};
|
||||
|
||||
// // Check device properties
|
||||
// VkPhysicalDeviceProperties deviceProps;
|
||||
// vkGetPhysicalDeviceProperties(physicalDevice, &deviceProps);
|
||||
|
||||
// std::cout << "Vulkan Device: " << deviceProps.deviceName << std::endl;
|
||||
// std::cout << "Driver Version: " << deviceProps.driverVersion << std::endl;
|
||||
// std::cout << "API Version: " << VK_VERSION_MAJOR(deviceProps.apiVersion) << "." << VK_VERSION_MINOR(deviceProps.apiVersion) << "." << VK_VERSION_PATCH(deviceProps.apiVersion) << std::endl;
|
||||
|
||||
// // Check D3D11 device capabilities
|
||||
// D3D11_FEATURE_DATA_D3D11_OPTIONS3 featureData = {};
|
||||
// HRESULT hr = d3dDevice->CheckFeatureSupport(
|
||||
// D3D11_FEATURE_D3D11_OPTIONS3,
|
||||
// &featureData,
|
||||
// sizeof(featureData));
|
||||
|
||||
// std::cout << "\nChecking D3D11 Device:" << std::endl;
|
||||
|
||||
// // Get D3D11 device information
|
||||
// IDXGIDevice *dxgiDevice = nullptr;
|
||||
// hr = d3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&dxgiDevice);
|
||||
// if (SUCCEEDED(hr))
|
||||
// {
|
||||
// IDXGIAdapter *adapter = nullptr;
|
||||
// hr = dxgiDevice->GetAdapter(&adapter);
|
||||
// if (SUCCEEDED(hr))
|
||||
// {
|
||||
// DXGI_ADAPTER_DESC desc;
|
||||
// adapter->GetDesc(&desc);
|
||||
// std::wcout << L"D3D11 Adapter: " << desc.Description << std::endl;
|
||||
// adapter->Release();
|
||||
// }
|
||||
// dxgiDevice->Release();
|
||||
// }
|
||||
|
||||
// // Check for external memory support
|
||||
// VkResult result = vkGetPhysicalDeviceImageFormatProperties2(
|
||||
// physicalDevice,
|
||||
// &formatInfo,
|
||||
// &formatProps);
|
||||
|
||||
// std::cout << "\nInterop Support Details:" << std::endl;
|
||||
|
||||
// // Check external memory extension
|
||||
// uint32_t extensionCount = 0;
|
||||
// vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, nullptr);
|
||||
// std::vector<VkExtensionProperties> extensions(extensionCount);
|
||||
// vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &extensionCount, extensions.data());
|
||||
|
||||
// bool hasExternalMemoryExt = false;
|
||||
// bool hasWin32Ext = false;
|
||||
|
||||
// for (const auto &ext : extensions)
|
||||
// {
|
||||
// if (strcmp(ext.extensionName, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME) == 0)
|
||||
// {
|
||||
// hasExternalMemoryExt = true;
|
||||
// }
|
||||
// if (strcmp(ext.extensionName, VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME) == 0)
|
||||
// {
|
||||
// hasWin32Ext = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
// std::cout << "External Memory Extension: " << (hasExternalMemoryExt ? "Yes" : "No") << std::endl;
|
||||
// std::cout << "Win32 External Memory Extension: " << (hasWin32Ext ? "Yes" : "No") << std::endl;
|
||||
// std::cout << "Format Properties Check: " << (result == VK_SUCCESS ? "Passed" : "Failed") << std::endl;
|
||||
|
||||
// // Check memory properties
|
||||
// VkPhysicalDeviceMemoryProperties memProps;
|
||||
// vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memProps);
|
||||
|
||||
// std::cout << "\nMemory Types Available:" << std::endl;
|
||||
// for (uint32_t i = 0; i < memProps.memoryTypeCount; i++)
|
||||
// {
|
||||
// VkMemoryPropertyFlags flags = memProps.memoryTypes[i].propertyFlags;
|
||||
// std::cout << "Type " << i << ": ";
|
||||
// if (flags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)
|
||||
// std::cout << "Device Local ";
|
||||
// if (flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
|
||||
// std::cout << "Host Visible ";
|
||||
// if (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)
|
||||
// std::cout << "Host Coherent ";
|
||||
// if (flags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT)
|
||||
// std::cout << "Host Cached ";
|
||||
// std::cout << std::endl;
|
||||
// }
|
||||
|
||||
// // Check if all required features are available
|
||||
// bool supportsInterop =
|
||||
// hasExternalMemoryExt &&
|
||||
// hasWin32Ext &&
|
||||
// result == VK_SUCCESS;
|
||||
|
||||
// std::cout << "\nFinal Result: " << (supportsInterop ? "Interop Supported" : "Interop Not Supported") << std::endl;
|
||||
// std::cout << "================================================" << std::endl;
|
||||
|
||||
// return supportsInterop;
|
||||
// }
|
||||
|
||||
// Helper function to find suitable memory type
|
||||
uint32_t findMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties, VkPhysicalDevice physicalDevice) {
|
||||
VkPhysicalDeviceMemoryProperties memProperties;
|
||||
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memProperties);
|
||||
|
||||
for (uint32_t i = 0; i < memProperties.memoryTypeCount; i++) {
|
||||
if ((typeFilter & (1 << i)) &&
|
||||
(memProperties.memoryTypes[i].propertyFlags & properties) == properties) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
throw std::runtime_error("Failed to find suitable memory type");
|
||||
}
|
||||
|
||||
|
||||
// Modified memory type selection function with more detailed requirements checking
|
||||
uint32_t findOptimalMemoryType(VkPhysicalDevice physicalDevice,
|
||||
uint32_t typeFilter,
|
||||
VkMemoryPropertyFlags requiredProperties,
|
||||
VkMemoryPropertyFlags preferredProperties) {
|
||||
VkPhysicalDeviceMemoryProperties memProperties;
|
||||
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memProperties);
|
||||
|
||||
// First try to find memory type with all preferred properties
|
||||
if (preferredProperties != 0) {
|
||||
for (uint32_t i = 0; i < memProperties.memoryTypeCount; i++) {
|
||||
if ((typeFilter & (1 << i)) &&
|
||||
(memProperties.memoryTypes[i].propertyFlags & (requiredProperties | preferredProperties)) ==
|
||||
(requiredProperties | preferredProperties)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fall back to just required properties
|
||||
for (uint32_t i = 0; i < memProperties.memoryTypeCount; i++) {
|
||||
if ((typeFilter & (1 << i)) &&
|
||||
(memProperties.memoryTypes[i].propertyFlags & requiredProperties) == requiredProperties) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return UINT32_MAX;
|
||||
}
|
||||
|
||||
// Consolidated function for creating Vulkan instance
|
||||
VkResult createVulkanInstance(VkInstance *instance)
|
||||
{
|
||||
std::vector<const char *> instanceExtensions = {
|
||||
VK_KHR_SURFACE_EXTENSION_NAME,
|
||||
VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
|
||||
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME};
|
||||
|
||||
VkApplicationInfo appInfo = {};
|
||||
appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
|
||||
appInfo.pApplicationName = "Vulkan-D3D11 Interop";
|
||||
appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||
appInfo.pEngineName = "No Engine";
|
||||
appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
|
||||
appInfo.apiVersion = VK_API_VERSION_1_1;
|
||||
|
||||
VkInstanceCreateInfo createInfo = {};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
||||
createInfo.pApplicationInfo = &appInfo;
|
||||
createInfo.enabledExtensionCount = static_cast<uint32_t>(instanceExtensions.size());
|
||||
createInfo.ppEnabledExtensionNames = instanceExtensions.data();
|
||||
|
||||
return vkCreateInstance(&createInfo, nullptr, instance);
|
||||
}
|
||||
|
||||
// Helper function to find a queue family that supports graphics operations
|
||||
uint32_t findGraphicsQueueFamily(VkPhysicalDevice physicalDevice) {
|
||||
uint32_t queueFamilyCount = 0;
|
||||
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, nullptr);
|
||||
|
||||
std::vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
|
||||
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyCount, queueFamilies.data());
|
||||
|
||||
// Find a queue family that supports graphics operations
|
||||
for (uint32_t i = 0; i < queueFamilyCount; i++) {
|
||||
if (queueFamilies[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
throw std::runtime_error("Failed to find graphics queue family");
|
||||
}
|
||||
|
||||
|
||||
CommandResources createCommandResources(VkDevice device, VkPhysicalDevice physicalDevice) {
|
||||
CommandResources resources{};
|
||||
|
||||
// 1. Find a suitable queue family
|
||||
resources.queueFamilyIndex = findGraphicsQueueFamily(physicalDevice);
|
||||
|
||||
// 2. Get the queue handle
|
||||
vkGetDeviceQueue(device,
|
||||
resources.queueFamilyIndex,
|
||||
0, // First queue in family
|
||||
&resources.queue);
|
||||
|
||||
// 3. Create command pool
|
||||
VkCommandPoolCreateInfo poolInfo{};
|
||||
poolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
||||
poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; // Allow resetting individual command buffers
|
||||
poolInfo.queueFamilyIndex = resources.queueFamilyIndex;
|
||||
|
||||
if (vkCreateCommandPool(device, &poolInfo, nullptr, &resources.commandPool) != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to create command pool");
|
||||
}
|
||||
|
||||
return resources;
|
||||
}
|
||||
|
||||
void readVkImageToBitmap(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool,
|
||||
VkQueue queue,
|
||||
VkImage sourceImage,
|
||||
uint32_t width,
|
||||
uint32_t height,
|
||||
const char* outputPath
|
||||
) {
|
||||
// Create staging buffer for reading pixel data
|
||||
VkBufferCreateInfo bufferInfo{};
|
||||
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufferInfo.size = width * height * 4; // Assuming RGBA8 format
|
||||
bufferInfo.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||
|
||||
VkBuffer stagingBuffer;
|
||||
VkResult result = vkCreateBuffer(device, &bufferInfo, nullptr, &stagingBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to create staging buffer");
|
||||
}
|
||||
|
||||
// Get memory requirements and properties
|
||||
VkMemoryRequirements memRequirements;
|
||||
vkGetBufferMemoryRequirements(device, stagingBuffer, &memRequirements);
|
||||
|
||||
// Get physical device memory properties
|
||||
VkPhysicalDeviceMemoryProperties memProperties;
|
||||
vkGetPhysicalDeviceMemoryProperties(physicalDevice, &memProperties);
|
||||
|
||||
// Find suitable memory type index
|
||||
uint32_t memoryTypeIndex = -1;
|
||||
for (uint32_t i = 0; i < memProperties.memoryTypeCount; i++) {
|
||||
if ((memRequirements.memoryTypeBits & (1 << i)) &&
|
||||
(memProperties.memoryTypes[i].propertyFlags &
|
||||
(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) ==
|
||||
(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {
|
||||
memoryTypeIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (memoryTypeIndex == -1) {
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to find suitable memory type");
|
||||
}
|
||||
|
||||
// Allocate memory
|
||||
VkMemoryAllocateInfo allocInfo{};
|
||||
allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||
allocInfo.allocationSize = memRequirements.size;
|
||||
allocInfo.memoryTypeIndex = memoryTypeIndex;
|
||||
|
||||
VkDeviceMemory stagingMemory;
|
||||
result = vkAllocateMemory(device, &allocInfo, nullptr, &stagingMemory);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to allocate staging memory");
|
||||
}
|
||||
|
||||
// Bind memory to buffer
|
||||
result = vkBindBufferMemory(device, stagingBuffer, stagingMemory, 0);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to bind buffer memory");
|
||||
}
|
||||
|
||||
// Create command buffer
|
||||
VkCommandBufferAllocateInfo cmdBufInfo{};
|
||||
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
|
||||
cmdBufInfo.commandPool = commandPool;
|
||||
cmdBufInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
||||
cmdBufInfo.commandBufferCount = 1;
|
||||
|
||||
VkCommandBuffer cmdBuffer;
|
||||
result = vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to allocate command buffer");
|
||||
}
|
||||
|
||||
// Begin command buffer
|
||||
VkCommandBufferBeginInfo beginInfo{};
|
||||
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
|
||||
result = vkBeginCommandBuffer(cmdBuffer, &beginInfo);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to begin command buffer");
|
||||
}
|
||||
|
||||
// Transition image layout for transfer
|
||||
VkImageMemoryBarrier imageBarrier{};
|
||||
imageBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
imageBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED; // Adjust based on current layout
|
||||
imageBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
imageBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
imageBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
imageBarrier.image = sourceImage;
|
||||
imageBarrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
imageBarrier.subresourceRange.baseMipLevel = 0;
|
||||
imageBarrier.subresourceRange.levelCount = 1;
|
||||
imageBarrier.subresourceRange.baseArrayLayer = 0;
|
||||
imageBarrier.subresourceRange.layerCount = 1;
|
||||
imageBarrier.srcAccessMask = 0;
|
||||
imageBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
|
||||
vkCmdPipelineBarrier(
|
||||
cmdBuffer,
|
||||
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
1, &imageBarrier
|
||||
);
|
||||
|
||||
// Copy image to buffer
|
||||
VkBufferImageCopy region{};
|
||||
region.bufferOffset = 0;
|
||||
region.bufferRowLength = 0;
|
||||
region.bufferImageHeight = 0;
|
||||
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
region.imageSubresource.mipLevel = 0;
|
||||
region.imageSubresource.baseArrayLayer = 0;
|
||||
region.imageSubresource.layerCount = 1;
|
||||
region.imageOffset = { 0, 0, 0 };
|
||||
region.imageExtent = { width, height, 1 };
|
||||
|
||||
vkCmdCopyImageToBuffer(
|
||||
cmdBuffer,
|
||||
sourceImage,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
stagingBuffer,
|
||||
1,
|
||||
®ion
|
||||
);
|
||||
|
||||
// Add memory barrier to ensure the transfer is complete before reading
|
||||
VkMemoryBarrier memBarrier{};
|
||||
memBarrier.sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER;
|
||||
memBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
memBarrier.dstAccessMask = VK_ACCESS_HOST_READ_BIT;
|
||||
|
||||
vkCmdPipelineBarrier(
|
||||
cmdBuffer,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_PIPELINE_STAGE_HOST_BIT,
|
||||
0,
|
||||
1, &memBarrier,
|
||||
0, nullptr,
|
||||
0, nullptr
|
||||
);
|
||||
|
||||
// End command buffer
|
||||
result = vkEndCommandBuffer(cmdBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to end command buffer");
|
||||
}
|
||||
|
||||
// Submit command buffer
|
||||
VkSubmitInfo submitInfo{};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
submitInfo.commandBufferCount = 1;
|
||||
submitInfo.pCommandBuffers = &cmdBuffer;
|
||||
|
||||
// Create fence to ensure command buffer has finished executing
|
||||
VkFenceCreateInfo fenceInfo{};
|
||||
fenceInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
||||
|
||||
VkFence fence;
|
||||
result = vkCreateFence(device, &fenceInfo, nullptr, &fence);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to create fence");
|
||||
}
|
||||
|
||||
// Submit with fence
|
||||
result = vkQueueSubmit(queue, 1, &submitInfo, fence);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to submit queue");
|
||||
}
|
||||
|
||||
// Wait for the command buffer to complete execution
|
||||
result = vkWaitForFences(device, 1, &fence, VK_TRUE, UINT64_MAX);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to wait for fence");
|
||||
}
|
||||
|
||||
// Now safe to map memory and read data
|
||||
void* data;
|
||||
result = vkMapMemory(device, stagingMemory, 0, bufferInfo.size, 0, &data);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to map memory");
|
||||
}
|
||||
|
||||
// Create bitmap header
|
||||
BMPHeader header{};
|
||||
header.signature = 0x4D42; // "BM"
|
||||
header.fileSize = sizeof(BMPHeader) + width * height * 3; // 3 bytes per pixel (BGR)
|
||||
header.dataOffset = sizeof(BMPHeader);
|
||||
header.headerSize = 40;
|
||||
header.width = width;
|
||||
header.height = height;
|
||||
header.planes = 1;
|
||||
header.bitsPerPixel = 24;
|
||||
header.compression = 0;
|
||||
header.imageSize = width * height * 3;
|
||||
|
||||
|
||||
//// Write to file
|
||||
std::ofstream file(outputPath, std::ios::binary);
|
||||
if (!file.is_open()) {
|
||||
vkUnmapMemory(device, stagingMemory);
|
||||
vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to open output file");
|
||||
}
|
||||
|
||||
file.write(reinterpret_cast<char*>(&header), sizeof(header));
|
||||
|
||||
// Convert RGBA to BGR and write pixel data
|
||||
uint8_t* pixels = reinterpret_cast<uint8_t*>(data);
|
||||
std::vector<uint8_t> bgrData(width * height * 3);
|
||||
|
||||
for (uint32_t y = 0; y < height; y++) {
|
||||
for (uint32_t x = 0; x < width; x++) {
|
||||
uint32_t srcIdx = (y * width + x) * 4; // RGBA has 4 components
|
||||
uint32_t dstIdx = ((height - 1 - y) * width + x) * 3; // Flip vertically
|
||||
|
||||
// RGBA to BGR conversion
|
||||
bgrData[dstIdx + 0] = pixels[srcIdx + 0];
|
||||
bgrData[dstIdx + 1] = pixels[srcIdx + 1];
|
||||
bgrData[dstIdx + 2] = pixels[srcIdx + 2];
|
||||
}
|
||||
}
|
||||
|
||||
file.write(reinterpret_cast<char*>(bgrData.data()), bgrData.size());
|
||||
file.close();
|
||||
|
||||
// Cleanup
|
||||
vkUnmapMemory(device, stagingMemory);
|
||||
vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &cmdBuffer);
|
||||
vkFreeMemory(device, stagingMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
}
|
||||
|
||||
// Consolidated function for creating logical device
|
||||
VkResult createLogicalDevice(VkInstance instance, VkPhysicalDevice *physicalDevice, VkDevice *device)
|
||||
{
|
||||
uint32_t deviceCount = 0;
|
||||
bluevk::vkEnumeratePhysicalDevices(instance, &deviceCount, nullptr);
|
||||
std::vector<VkPhysicalDevice> physicalDevices(deviceCount);
|
||||
bluevk::vkEnumeratePhysicalDevices(instance, &deviceCount, physicalDevices.data());
|
||||
|
||||
if (deviceCount == 0)
|
||||
{
|
||||
return VK_ERROR_INITIALIZATION_FAILED;
|
||||
}
|
||||
|
||||
*physicalDevice = physicalDevices[0];
|
||||
|
||||
std::vector<const char *> deviceExtensions = {
|
||||
VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME};
|
||||
|
||||
float queuePriority = 1.0f;
|
||||
VkDeviceQueueCreateInfo queueCreateInfo = {};
|
||||
queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
||||
queueCreateInfo.queueFamilyIndex = 0;
|
||||
queueCreateInfo.queueCount = 1;
|
||||
queueCreateInfo.pQueuePriorities = &queuePriority;
|
||||
|
||||
VkDeviceCreateInfo deviceCreateInfo = {};
|
||||
deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||
deviceCreateInfo.queueCreateInfoCount = 1;
|
||||
deviceCreateInfo.pQueueCreateInfos = &queueCreateInfo;
|
||||
deviceCreateInfo.enabledExtensionCount = static_cast<uint32_t>(deviceExtensions.size());
|
||||
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions.data();
|
||||
|
||||
return vkCreateDevice(*physicalDevice, &deviceCreateInfo, nullptr, device);
|
||||
}
|
||||
|
||||
// Example usage with device creation
|
||||
void createDeviceWithGraphicsQueue(VkPhysicalDevice physicalDevice, uint32_t& queueFamilyIndex, VkDevice* device) {
|
||||
// Find queue family index
|
||||
queueFamilyIndex = findGraphicsQueueFamily(physicalDevice);
|
||||
|
||||
// Specify queue creation
|
||||
float queuePriority = 1.0f;
|
||||
VkDeviceQueueCreateInfo queueCreateInfo{};
|
||||
queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
||||
queueCreateInfo.queueFamilyIndex = queueFamilyIndex;
|
||||
queueCreateInfo.queueCount = 1;
|
||||
queueCreateInfo.pQueuePriorities = &queuePriority;
|
||||
|
||||
// Specify device features
|
||||
VkPhysicalDeviceFeatures deviceFeatures{};
|
||||
|
||||
// Create logical device
|
||||
VkDeviceCreateInfo createInfo{};
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||
createInfo.pQueueCreateInfos = &queueCreateInfo;
|
||||
createInfo.queueCreateInfoCount = 1;
|
||||
createInfo.pEnabledFeatures = &deviceFeatures;
|
||||
|
||||
if (vkCreateDevice(physicalDevice, &createInfo, nullptr, device) != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to create logical device");
|
||||
}
|
||||
}
|
||||
|
||||
void fillImageWithColor(
|
||||
VkDevice device,
|
||||
VkCommandPool commandPool,
|
||||
VkQueue queue,
|
||||
VkImage image,
|
||||
VkFormat format,
|
||||
VkImageLayout currentLayout,
|
||||
VkExtent3D extent,
|
||||
float r, float g, float b, float a
|
||||
) {
|
||||
// Create command buffer
|
||||
VkCommandBufferAllocateInfo allocInfo = {};
|
||||
allocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
|
||||
allocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
||||
allocInfo.commandPool = commandPool;
|
||||
allocInfo.commandBufferCount = 1;
|
||||
|
||||
VkCommandBuffer commandBuffer;
|
||||
vkAllocateCommandBuffers(device, &allocInfo, &commandBuffer);
|
||||
|
||||
// Begin command buffer
|
||||
VkCommandBufferBeginInfo beginInfo = {};
|
||||
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
vkBeginCommandBuffer(commandBuffer, &beginInfo);
|
||||
|
||||
// Transition image layout to TRANSFER_DST_OPTIMAL if needed
|
||||
if (currentLayout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) {
|
||||
VkImageMemoryBarrier barrier = {};
|
||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
barrier.oldLayout = currentLayout;
|
||||
barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.image = image;
|
||||
barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
barrier.subresourceRange.baseMipLevel = 0;
|
||||
barrier.subresourceRange.levelCount = 1;
|
||||
barrier.subresourceRange.baseArrayLayer = 0;
|
||||
barrier.subresourceRange.layerCount = 1;
|
||||
barrier.srcAccessMask = 0;
|
||||
barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
|
||||
vkCmdPipelineBarrier(
|
||||
commandBuffer,
|
||||
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
1, &barrier
|
||||
);
|
||||
}
|
||||
|
||||
// Clear the image
|
||||
VkClearColorValue clearColor = {{r, g, b, a}};
|
||||
VkImageSubresourceRange range = {};
|
||||
range.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
range.baseMipLevel = 0;
|
||||
range.levelCount = 1;
|
||||
range.baseArrayLayer = 0;
|
||||
range.layerCount = 1;
|
||||
|
||||
vkCmdClearColorImage(
|
||||
commandBuffer,
|
||||
image,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
&clearColor,
|
||||
1,
|
||||
&range
|
||||
);
|
||||
|
||||
// Transition back to original layout if needed
|
||||
if (currentLayout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) {
|
||||
VkImageMemoryBarrier barrier = {};
|
||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
barrier.newLayout = currentLayout;
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.image = image;
|
||||
barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
barrier.subresourceRange.baseMipLevel = 0;
|
||||
barrier.subresourceRange.levelCount = 1;
|
||||
barrier.subresourceRange.baseArrayLayer = 0;
|
||||
barrier.subresourceRange.layerCount = 1;
|
||||
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
barrier.dstAccessMask = 0;
|
||||
|
||||
vkCmdPipelineBarrier(
|
||||
commandBuffer,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
1, &barrier
|
||||
);
|
||||
}
|
||||
|
||||
// End and submit command buffer
|
||||
vkEndCommandBuffer(commandBuffer);
|
||||
|
||||
VkSubmitInfo submitInfo = {};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
submitInfo.commandBufferCount = 1;
|
||||
submitInfo.pCommandBuffers = &commandBuffer;
|
||||
|
||||
vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE);
|
||||
vkQueueWaitIdle(queue);
|
||||
|
||||
// Cleanup
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &commandBuffer);
|
||||
}
|
||||
|
||||
bool SavePixelsAsBMP(uint8_t* pixels, uint32_t width, uint32_t height, int rowPitch, const char* filename) {
|
||||
// Create and fill header
|
||||
BMPHeader header = {};
|
||||
header.signature = 0x4D42; // 'BM'
|
||||
header.fileSize = sizeof(BMPHeader) + width * height * 4;
|
||||
header.dataOffset = sizeof(BMPHeader);
|
||||
header.headerSize = 40;
|
||||
header.width = width;
|
||||
header.height = height;
|
||||
header.planes = 1;
|
||||
header.bitsPerPixel = 32;
|
||||
header.compression = 0;
|
||||
header.imageSize = width * height * 4;
|
||||
header.xPixelsPerMeter = 2835; // 72 DPI
|
||||
header.yPixelsPerMeter = 2835; // 72 DPI
|
||||
|
||||
// Write to file
|
||||
FILE* file = nullptr;
|
||||
fopen_s(&file, filename, "wb");
|
||||
|
||||
if (!file) {
|
||||
std::cout << "Couldn't open file for pixels" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
fwrite(&header, sizeof(header), 1, file);
|
||||
|
||||
// Write pixel data (need to flip rows as BMP is bottom-up)
|
||||
for (int y = height - 1; y >= 0; y--) {
|
||||
uint8_t* rowData = pixels + y * rowPitch;
|
||||
fwrite(rowData, width * 4, 1, file);
|
||||
}
|
||||
|
||||
fclose(file);
|
||||
return true;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,511 @@
|
||||
|
||||
#define THERMION_WIN32_KHR_BUILD
|
||||
#include "vulkan_context.h"
|
||||
|
||||
#include "ThermionWin32.h"
|
||||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
#include <chrono>
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
||||
#include "filament/backend/platforms/VulkanPlatform.h"
|
||||
#include "filament/Engine.h"
|
||||
#include "filament/Renderer.h"
|
||||
#include "filament/View.h"
|
||||
#include "filament/Viewport.h"
|
||||
#include "filament/Scene.h"
|
||||
#include "filament/SwapChain.h"
|
||||
#include "filament/Texture.h"
|
||||
|
||||
#include "Log.hpp"
|
||||
|
||||
namespace thermion::windows::vulkan {
|
||||
|
||||
using namespace bluevk;
|
||||
|
||||
ThermionVulkanContext::ThermionVulkanContext() {
|
||||
bluevk::initialize();
|
||||
|
||||
// Create Vulkan instance
|
||||
VkResult result = createVulkanInstance(&instance);
|
||||
if (result != VK_SUCCESS)
|
||||
{
|
||||
std::cout << "[ERROR] Failed to create Vulkan instance! Error: " << VkResultToString(result) << std::endl;
|
||||
return;
|
||||
}
|
||||
bluevk::bindInstance(instance);
|
||||
|
||||
result = createLogicalDevice(instance, &physicalDevice, &device);
|
||||
if (result != VK_SUCCESS)
|
||||
{
|
||||
std::cout << "[ERROR] Failed to create logical device! Error: " << VkResultToString(result) << std::endl;
|
||||
vkDestroyInstance(instance, nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t queueFamilyIndex;
|
||||
|
||||
createDeviceWithGraphicsQueue(physicalDevice,queueFamilyIndex, &device);
|
||||
|
||||
CommandResources cmdResources = createCommandResources(device, physicalDevice);
|
||||
|
||||
commandPool = cmdResources.commandPool;
|
||||
queue = cmdResources.queue;
|
||||
|
||||
VkPhysicalDeviceExternalImageFormatInfo externFormatInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
|
||||
.pNext = nullptr,
|
||||
.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT};
|
||||
|
||||
VkPhysicalDeviceImageFormatInfo2 formatInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
|
||||
.pNext = &externFormatInfo,
|
||||
.format = VK_FORMAT_R8G8B8A8_UNORM,
|
||||
.type = VK_IMAGE_TYPE_2D,
|
||||
.tiling = VK_IMAGE_TILING_OPTIMAL, // Changed to LINEAR for VM compatibility
|
||||
.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, // Simplified usage flags
|
||||
.flags = 0
|
||||
};
|
||||
|
||||
VkExternalImageFormatProperties externFormatProps = {
|
||||
.sType = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
|
||||
};
|
||||
|
||||
VkImageFormatProperties2 formatProps = {
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
|
||||
.pNext = &externFormatProps};
|
||||
|
||||
// Query supported features
|
||||
result = vkGetPhysicalDeviceImageFormatProperties2(
|
||||
physicalDevice,
|
||||
&formatInfo,
|
||||
&formatProps);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
{
|
||||
std::cout << "VM environment may not support required external memory features" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
_platform = new TVulkanPlatform();
|
||||
|
||||
_d3dContext = std::make_unique<thermion::windows::d3d::D3DContext>();
|
||||
|
||||
}
|
||||
|
||||
HANDLE ThermionVulkanContext::CreateRenderingSurface(uint32_t width, uint32_t height, uint32_t left, uint32_t top) {
|
||||
|
||||
Log("Creating Vulkan texture %dx%d", width, height);
|
||||
|
||||
// creates the D3D texture
|
||||
auto d3dTexture = _d3dContext->CreateTexture(width, height);
|
||||
auto d3dTextureHandle = d3dTexture->GetTextureHandle();
|
||||
auto vkTexture = VulkanTexture::create(device, physicalDevice, width, height, d3dTextureHandle);
|
||||
|
||||
|
||||
// fillImageWithColor(device, commandPool, queue, image, VK_FORMAT_B8G8R8A8_UNORM, VK_IMAGE_LAYOUT_UNDEFINED, // Current image layout
|
||||
// { width, height, 1 }, // Image extent
|
||||
// 0.0f, 1.0f, 0.0f, 1.0f); // Red color (RGBA))
|
||||
|
||||
_d3dTextures.push_back(std::move(d3dTexture));
|
||||
_vulkanTextures.push_back(std::move(vkTexture));
|
||||
return d3dTextureHandle;
|
||||
}
|
||||
|
||||
void ThermionVulkanContext::ResizeRenderingSurface(uint32_t width, uint32_t height, uint32_t left, uint32_t top) {
|
||||
|
||||
}
|
||||
|
||||
void ThermionVulkanContext::DestroyRenderingSurface(HANDLE handle) {
|
||||
|
||||
_vulkanTextures.erase(std::remove_if(_vulkanTextures.begin(), _vulkanTextures.end(), [=](auto&& vkTexture) {
|
||||
return vkTexture->GetD3DTextureHandle() == handle;
|
||||
}));
|
||||
|
||||
_d3dTextures.erase(std::remove_if(_d3dTextures.begin(), _d3dTextures.end(), [=](auto&& d3dTexture) {
|
||||
return d3dTexture->GetTextureHandle() == handle;
|
||||
}));
|
||||
}
|
||||
|
||||
void ThermionVulkanContext::Flush() {
|
||||
// ?? what to do here
|
||||
}
|
||||
|
||||
// Function to perform the blit operation
|
||||
void ThermionVulkanContext::BlitFromSwapchain() {
|
||||
std::lock_guard lock(_platform->mutex);
|
||||
if(!_platform->_current || _d3dTextures.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
auto&& vkTexture = _vulkanTextures.back();
|
||||
auto image = vkTexture->GetImage();
|
||||
|
||||
auto&& texture = _d3dTextures.back();
|
||||
|
||||
auto height = texture->GetHeight();
|
||||
auto width = texture->GetWidth();
|
||||
|
||||
auto bundle = _platform->getSwapChainBundle(_platform->_current);
|
||||
VkImage swapchainImage = bundle.colors[_platform->_currentColorIndex];
|
||||
// Command buffer allocation
|
||||
VkCommandBufferAllocateInfo cmdBufInfo{};
|
||||
cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
|
||||
cmdBufInfo.commandPool = commandPool;
|
||||
cmdBufInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
||||
cmdBufInfo.commandBufferCount = 1;
|
||||
|
||||
VkCommandBuffer cmd;
|
||||
VkResult result = bluevk::vkAllocateCommandBuffers(device, &cmdBufInfo, &cmd);
|
||||
if (result != VK_SUCCESS) {
|
||||
std::cout << "Failed to allocate command buffer: " << result << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Begin command buffer
|
||||
VkCommandBufferBeginInfo beginInfo{};
|
||||
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
|
||||
result = bluevk::vkBeginCommandBuffer(cmd, &beginInfo);
|
||||
if (result != VK_SUCCESS) {
|
||||
std::cout << "Failed to begin command buffer: " << result << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// std::cout << "Starting blit operation..." << std::endl;
|
||||
|
||||
// Pre-transition barriers
|
||||
VkImageMemoryBarrier srcBarrier{};
|
||||
srcBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
srcBarrier.srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||
srcBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
srcBarrier.oldLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
||||
srcBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
srcBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
srcBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
srcBarrier.image = swapchainImage;
|
||||
srcBarrier.subresourceRange = {
|
||||
VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
0, 1, 0, 1
|
||||
};
|
||||
|
||||
VkImageMemoryBarrier dstBarrier{};
|
||||
dstBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
dstBarrier.srcAccessMask = 0;
|
||||
dstBarrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
dstBarrier.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
dstBarrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
dstBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
dstBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
dstBarrier.image = image;
|
||||
dstBarrier.subresourceRange = {
|
||||
VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
0, 1, 0, 1
|
||||
};
|
||||
|
||||
// std::cout << "Transitioning images to transfer layouts..." << std::endl;
|
||||
|
||||
// Pre-blit barriers
|
||||
VkImageMemoryBarrier preBlitBarriers[] = {srcBarrier, dstBarrier};
|
||||
vkCmdPipelineBarrier(
|
||||
cmd,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, // Changed from TRANSFER_BIT for better sync
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
2, preBlitBarriers
|
||||
);
|
||||
|
||||
// Define blit region with bounds checking
|
||||
VkImageBlit blit{};
|
||||
blit.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
||||
blit.srcOffsets[0] = {0, 0, 0};
|
||||
blit.srcOffsets[1] = {static_cast<int32_t>(width), static_cast<int32_t>(height), 1};
|
||||
blit.dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
||||
blit.dstOffsets[0] = {0, 0, 0};
|
||||
blit.dstOffsets[1] = {static_cast<int32_t>(width), static_cast<int32_t>(height), 1};
|
||||
|
||||
// std::cout << "Executing blit command..." << std::endl;
|
||||
// std::cout << "Source dimensions: " << width << "x" << height << std::endl;
|
||||
// std::cout << "Destination dimensions: " << width << "x" << height << std::endl;
|
||||
|
||||
// Perform blit with validation
|
||||
bluevk::vkCmdBlitImage(
|
||||
cmd,
|
||||
swapchainImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
1, &blit,
|
||||
VK_FILTER_NEAREST // Changed to NEAREST for debugging
|
||||
);
|
||||
|
||||
// Post-transition barriers
|
||||
srcBarrier.srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
srcBarrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||
srcBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
srcBarrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
|
||||
|
||||
dstBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
dstBarrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
|
||||
dstBarrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
|
||||
dstBarrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
|
||||
// std::cout << "Transitioning images back to original layouts..." << std::endl;
|
||||
|
||||
// Post-blit barriers
|
||||
VkImageMemoryBarrier postBlitBarriers[] = {srcBarrier, dstBarrier};
|
||||
bluevk::vkCmdPipelineBarrier(
|
||||
cmd,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, // Changed for better sync
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
2, postBlitBarriers
|
||||
);
|
||||
|
||||
// End command buffer
|
||||
result = bluevk::vkEndCommandBuffer(cmd);
|
||||
if (result != VK_SUCCESS) {
|
||||
std::cout << "Failed to end command buffer: " << result << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
// Create fence for synchronization
|
||||
// VkFenceCreateInfo fenceInfo{};
|
||||
// fenceInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
||||
|
||||
// VkFence fence;
|
||||
// result = bluevk::vkCreateFence(device, &fenceInfo, nullptr, &fence);
|
||||
// if (result != VK_SUCCESS) {
|
||||
// std::cout << "Failed to create fence: " << result << std::endl;
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Submit with fence
|
||||
VkSubmitInfo submitInfo{};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
submitInfo.commandBufferCount = 1;
|
||||
submitInfo.pCommandBuffers = &cmd;
|
||||
|
||||
result = bluevk::vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE); //fence);
|
||||
if (result != VK_SUCCESS) {
|
||||
std::cout << "Failed to submit queue: " << result << std::endl;
|
||||
// bluevk::vkDestroyFence(device, fence, nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
// // Wait for fence with timeout
|
||||
// result = bluevk::vkWaitForFences(device, 1, &fence, VK_TRUE, 5000000000); // 5 second timeout
|
||||
// if (result != VK_SUCCESS) {
|
||||
// std::cout << "Failed to wait for fence: " << result << std::endl;
|
||||
// vkDestroyFence(device, fence, nullptr);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// std::cout << "Blit operation completed successfully" << std::endl;
|
||||
|
||||
// // Cleanup
|
||||
// bluevk::vkDestroyFence(device, fence, nullptr);
|
||||
// bluevk::vkFreeCommandBuffers(device, commandPool, 1, &cmd);
|
||||
}
|
||||
|
||||
void ThermionVulkanContext::readPixelsFromImage(
|
||||
uint32_t width,
|
||||
uint32_t height,
|
||||
std::vector<uint8_t>& outPixels
|
||||
) {
|
||||
|
||||
auto&& vkTexture = _vulkanTextures.back();
|
||||
auto image = vkTexture->GetImage();
|
||||
|
||||
VkDeviceSize bufferSize = width * height * 4; // RGBA8 format
|
||||
|
||||
// Create staging buffer
|
||||
VkBuffer stagingBuffer;
|
||||
VkDeviceMemory stagingBufferMemory;
|
||||
|
||||
VkBufferCreateInfo bufferInfo{};
|
||||
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||
bufferInfo.size = bufferSize;
|
||||
bufferInfo.usage = VK_BUFFER_USAGE_TRANSFER_DST_BIT;
|
||||
bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||
|
||||
VkResult result = bluevk::vkCreateBuffer(device, &bufferInfo, nullptr, &stagingBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to create staging buffer");
|
||||
}
|
||||
|
||||
// Get memory requirements and allocate
|
||||
VkMemoryRequirements memRequirements;
|
||||
bluevk::vkGetBufferMemoryRequirements(device, stagingBuffer, &memRequirements);
|
||||
|
||||
VkMemoryAllocateInfo allocInfo{};
|
||||
allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
|
||||
allocInfo.allocationSize = memRequirements.size;
|
||||
allocInfo.memoryTypeIndex = findMemoryType(
|
||||
memRequirements.memoryTypeBits,
|
||||
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||
physicalDevice
|
||||
);
|
||||
|
||||
result = bluevk::vkAllocateMemory(device, &allocInfo, nullptr, &stagingBufferMemory);
|
||||
if (result != VK_SUCCESS) {
|
||||
bluevk::vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to allocate staging buffer memory");
|
||||
}
|
||||
|
||||
result = bluevk::vkBindBufferMemory(device, stagingBuffer, stagingBufferMemory, 0);
|
||||
if (result != VK_SUCCESS) {
|
||||
vkFreeMemory(device, stagingBufferMemory, nullptr);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
throw std::runtime_error("Failed to bind buffer memory");
|
||||
}
|
||||
|
||||
// Create command buffer
|
||||
VkCommandBufferAllocateInfo cmdBufAllocInfo{};
|
||||
cmdBufAllocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
|
||||
cmdBufAllocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
|
||||
cmdBufAllocInfo.commandPool = commandPool;
|
||||
cmdBufAllocInfo.commandBufferCount = 1;
|
||||
|
||||
VkCommandBuffer commandBuffer;
|
||||
result = bluevk::vkAllocateCommandBuffers(device, &cmdBufAllocInfo, &commandBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to allocate command buffer");
|
||||
}
|
||||
|
||||
// Begin command buffer
|
||||
VkCommandBufferBeginInfo beginInfo{};
|
||||
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
|
||||
|
||||
result = bluevk::vkBeginCommandBuffer(commandBuffer, &beginInfo);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to begin command buffer");
|
||||
}
|
||||
|
||||
// Transition image layout for transfer with proper sync
|
||||
VkImageMemoryBarrier barrier{};
|
||||
barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||
barrier.srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
barrier.oldLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL; // Assuming this is the current layout
|
||||
barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
|
||||
barrier.image = image;
|
||||
barrier.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
barrier.subresourceRange.baseMipLevel = 0;
|
||||
barrier.subresourceRange.levelCount = 1;
|
||||
barrier.subresourceRange.baseArrayLayer = 0;
|
||||
barrier.subresourceRange.layerCount = 1;
|
||||
|
||||
bluevk::vkCmdPipelineBarrier(
|
||||
commandBuffer,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
1, &barrier
|
||||
);
|
||||
|
||||
// Copy image to buffer
|
||||
VkBufferImageCopy region{};
|
||||
region.bufferOffset = 0;
|
||||
region.bufferRowLength = 0;
|
||||
region.bufferImageHeight = 0;
|
||||
region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
||||
region.imageSubresource.mipLevel = 0;
|
||||
region.imageSubresource.baseArrayLayer = 0;
|
||||
region.imageSubresource.layerCount = 1;
|
||||
region.imageOffset = {0, 0, 0};
|
||||
region.imageExtent = {width, height, 1};
|
||||
|
||||
bluevk::vkCmdCopyImageToBuffer(
|
||||
commandBuffer,
|
||||
image,
|
||||
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||
stagingBuffer,
|
||||
1,
|
||||
®ion
|
||||
);
|
||||
|
||||
// Transition image layout back
|
||||
barrier.srcAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
|
||||
barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT;
|
||||
barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
|
||||
barrier.newLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
|
||||
bluevk::vkCmdPipelineBarrier(
|
||||
commandBuffer,
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
||||
0,
|
||||
0, nullptr,
|
||||
0, nullptr,
|
||||
1, &barrier
|
||||
);
|
||||
|
||||
result = bluevk::vkEndCommandBuffer(commandBuffer);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to end command buffer");
|
||||
}
|
||||
|
||||
// Submit command buffer with fence for synchronization
|
||||
VkFenceCreateInfo fenceInfo{};
|
||||
fenceInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
||||
|
||||
VkFence fence;
|
||||
result = bluevk::vkCreateFence(device, &fenceInfo, nullptr, &fence);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to create fence");
|
||||
}
|
||||
|
||||
VkSubmitInfo submitInfo{};
|
||||
submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
|
||||
submitInfo.commandBufferCount = 1;
|
||||
submitInfo.pCommandBuffers = &commandBuffer;
|
||||
|
||||
result = bluevk::vkQueueSubmit(queue, 1, &submitInfo, fence);
|
||||
if (result != VK_SUCCESS) {
|
||||
bluevk::vkDestroyFence(device, fence, nullptr);
|
||||
throw std::runtime_error("Failed to submit queue");
|
||||
}
|
||||
|
||||
// Wait for the command buffer to complete with timeout
|
||||
result = bluevk::vkWaitForFences(device, 1, &fence, VK_TRUE, 5000000000); // 5 second timeout
|
||||
if (result != VK_SUCCESS) {
|
||||
bluevk::vkDestroyFence(device, fence, nullptr);
|
||||
throw std::runtime_error("Failed to wait for fence");
|
||||
}
|
||||
|
||||
// Map memory and copy data
|
||||
void* data;
|
||||
result = bluevk::vkMapMemory(device, stagingBufferMemory, 0, bufferSize, 0, &data);
|
||||
if (result != VK_SUCCESS) {
|
||||
throw std::runtime_error("Failed to map memory");
|
||||
}
|
||||
|
||||
outPixels.resize(bufferSize);
|
||||
memcpy(outPixels.data(), data, bufferSize);
|
||||
bluevk::vkUnmapMemory(device, stagingBufferMemory);
|
||||
|
||||
// Cleanup
|
||||
bluevk::vkDestroyFence(device, fence, nullptr);
|
||||
vkFreeCommandBuffers(device, commandPool, 1, &commandBuffer);
|
||||
vkDestroyBuffer(device, stagingBuffer, nullptr);
|
||||
vkFreeMemory(device, stagingBufferMemory, nullptr);
|
||||
|
||||
std::cout << "Successfully completed readPixelsFromImage" << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
#include "vulkan_texture.h"
|
||||
#include "bluevk/BlueVK.h"
|
||||
#include "utils.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace thermion::windows::vulkan
|
||||
{
|
||||
|
||||
VulkanTexture::VulkanTexture(VkImage image, VkDevice device, VkDeviceMemory imageMemory, uint32_t width, uint32_t height, HANDLE d3dTextureHandle) : _image(image), _device(device), _imageMemory(imageMemory), _width(width), _height(height), _d3dTextureHandle(d3dTextureHandle) {};
|
||||
|
||||
VulkanTexture::~VulkanTexture() {
|
||||
bluevk::vkDeviceWaitIdle(_device);
|
||||
if(_image != VK_NULL_HANDLE) {
|
||||
bluevk::vkDestroyImage(_device, _image, nullptr);
|
||||
} else {
|
||||
std::cout << "Warning : no vkImage found" << std::endl;
|
||||
}
|
||||
|
||||
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImportMemoryWin32HandleInfoKHR.html
|
||||
// imageMemory has been imported from D3D without transferring ownership
|
||||
// therefore we don't need to release
|
||||
}
|
||||
|
||||
|
||||
std::unique_ptr<VulkanTexture> VulkanTexture::create(VkDevice device, VkPhysicalDevice physicalDevice, uint32_t width, uint32_t height, HANDLE d3dTextureHandle)
|
||||
{
|
||||
// Create image with external memory support
|
||||
VkExternalMemoryImageCreateInfo extImageInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
|
||||
.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT};
|
||||
|
||||
VkImageCreateInfo imageInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
|
||||
.pNext = &extImageInfo,
|
||||
.flags = 0,
|
||||
.imageType = VK_IMAGE_TYPE_2D,
|
||||
.format = VK_FORMAT_B8G8R8A8_UNORM,
|
||||
.extent = {width, height, 1},
|
||||
.mipLevels = 1,
|
||||
.arrayLayers = 1,
|
||||
.samples = VK_SAMPLE_COUNT_1_BIT,
|
||||
.tiling = VK_IMAGE_TILING_OPTIMAL,
|
||||
.usage = VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
.sharingMode = VK_SHARING_MODE_EXCLUSIVE,
|
||||
.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED};
|
||||
|
||||
VkImage image;
|
||||
|
||||
VkResult result = bluevk::vkCreateImage(device, &imageInfo, nullptr, &image);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
{
|
||||
std::cout << "Failed to create iamge " << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::cout << "Created vkImage " << (int64_t)image << std::endl;
|
||||
|
||||
VkMemoryDedicatedRequirements MemoryDedicatedRequirements{
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
|
||||
.pNext = nullptr};
|
||||
VkMemoryRequirements2 MemoryRequirements2{
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
|
||||
.pNext = &MemoryDedicatedRequirements};
|
||||
const VkImageMemoryRequirementsInfo2 ImageMemoryRequirementsInfo2{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
|
||||
.pNext = nullptr,
|
||||
.image = image};
|
||||
// WARN: Memory access violation unless validation instance layer is enabled, otherwise success but...
|
||||
bluevk::vkGetImageMemoryRequirements2(device, &ImageMemoryRequirementsInfo2, &MemoryRequirements2);
|
||||
// ... if we happen to be here, MemoryRequirements2 is empty
|
||||
VkMemoryRequirements &MemoryRequirements = MemoryRequirements2.memoryRequirements;
|
||||
|
||||
const VkMemoryDedicatedAllocateInfo MemoryDedicatedAllocateInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
|
||||
.pNext = nullptr,
|
||||
.image = image,
|
||||
.buffer = VK_NULL_HANDLE};
|
||||
|
||||
const VkImportMemoryWin32HandleInfoKHR ImportMemoryWin32HandleInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
|
||||
.pNext = &MemoryDedicatedAllocateInfo,
|
||||
.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
|
||||
.handle = d3dTextureHandle,
|
||||
.name = nullptr};
|
||||
|
||||
// Find suitable memory type
|
||||
uint32_t memoryTypeIndex = findOptimalMemoryType(
|
||||
physicalDevice,
|
||||
MemoryRequirements.memoryTypeBits,
|
||||
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
|
||||
);
|
||||
|
||||
VkMemoryAllocateInfo allocInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
|
||||
.pNext = &ImportMemoryWin32HandleInfo,
|
||||
.allocationSize = MemoryRequirements.size,
|
||||
.memoryTypeIndex = memoryTypeIndex
|
||||
};
|
||||
|
||||
VkDeviceMemory imageMemory = VK_NULL_HANDLE;
|
||||
|
||||
VkResult allocResult = bluevk::vkAllocateMemory(device, &allocInfo, nullptr, &imageMemory);
|
||||
if (allocResult != VK_SUCCESS || imageMemory == VK_NULL_HANDLE)
|
||||
{
|
||||
std::cout << "IMAGE MEMORY ALLOCATION FAILED:" << std::endl;
|
||||
std::cout << " Allocation size: " << MemoryRequirements.size << " bytes" << std::endl;
|
||||
std::cout << " Memory type index: " << allocInfo.memoryTypeIndex << std::endl;
|
||||
std::cout << " Error code: " << allocResult << std::endl;
|
||||
|
||||
// Get more detailed error message based on VkResult
|
||||
const char *errorMsg;
|
||||
switch (allocResult)
|
||||
{
|
||||
case VK_ERROR_OUT_OF_HOST_MEMORY:
|
||||
errorMsg = "VK_ERROR_OUT_OF_HOST_MEMORY: Out of host memory";
|
||||
break;
|
||||
case VK_ERROR_OUT_OF_DEVICE_MEMORY:
|
||||
errorMsg = "VK_ERROR_OUT_OF_DEVICE_MEMORY: Out of device memory";
|
||||
break;
|
||||
case VK_ERROR_INVALID_EXTERNAL_HANDLE:
|
||||
errorMsg = "VK_ERROR_INVALID_EXTERNAL_HANDLE: The external handle is invalid";
|
||||
break;
|
||||
case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:
|
||||
errorMsg = "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: The requested address is not available";
|
||||
break;
|
||||
default:
|
||||
errorMsg = "Unknown error";
|
||||
}
|
||||
std::cout << " Error message: " << errorMsg << std::endl;
|
||||
|
||||
// Print memory requirements
|
||||
std::cout << " Memory requirements:" << std::endl;
|
||||
std::cout << " Size: " << MemoryRequirements.size << std::endl;
|
||||
std::cout << " Alignment: " << MemoryRequirements.alignment << std::endl;
|
||||
std::cout << " Memory type bits: 0x" << std::hex << MemoryRequirements.memoryTypeBits << std::dec << std::endl;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const VkBindImageMemoryInfo bindImageMemoryInfo{
|
||||
.sType = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
|
||||
.pNext = nullptr,
|
||||
.image = image,
|
||||
.memory = imageMemory,
|
||||
.memoryOffset = 0};
|
||||
|
||||
result = bluevk::vkBindImageMemory2(device, 1, &bindImageMemoryInfo);
|
||||
|
||||
if (result != VK_SUCCESS)
|
||||
{
|
||||
std::cout << "vkBindImageMemory2 failed" << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
return std::make_unique<VulkanTexture>(image, device, imageMemory, width, height, d3dTextureHandle);
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -189,8 +189,7 @@ class ThermionFlutterPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
}
|
||||
"destroyTexture" -> {
|
||||
val args = call.arguments as List<*>
|
||||
val textureId = (args[0] as Int).toLong()
|
||||
val textureId = (call.arguments as Int).toLong()
|
||||
val textureEntry = textures[textureId]
|
||||
if (textureEntry != null) {
|
||||
textureEntry.surface.release()
|
||||
|
||||
@@ -168,8 +168,7 @@ public class SwiftThermionFlutterPlugin: NSObject, FlutterPlugin {
|
||||
result([texture.flutterTextureId, texture.texture.metalTextureAddress, nil])
|
||||
}
|
||||
case "destroyTexture":
|
||||
let args = call.arguments as! [Any]
|
||||
let flutterTextureId = args[0] as! Int64
|
||||
let flutterTextureId = call.arguments as! Int64
|
||||
|
||||
if let texture = textures[flutterTextureId] {
|
||||
registry.unregisterTexture(flutterTextureId)
|
||||
|
||||
@@ -81,10 +81,7 @@ class _ThermionTextureWidgetState extends State<ThermionTextureWidget> {
|
||||
"Target texture dimensions ${width}x${height} (pixel ratio : $dpr)");
|
||||
|
||||
_texture = await ThermionFlutterPlatform.instance
|
||||
.createTexture(width, height);
|
||||
|
||||
await ThermionFlutterPlatform.instance
|
||||
.bind(widget.view, _texture!);
|
||||
.createTexture(widget.view, width, height);
|
||||
|
||||
_logger.info(
|
||||
"Actual texture dimensions ${_texture!.width}x${_texture!.height} (pixel ratio : $dpr)");
|
||||
@@ -151,7 +148,7 @@ class _ThermionTextureWidgetState extends State<ThermionTextureWidget> {
|
||||
if (!mounted) {
|
||||
return;
|
||||
}
|
||||
if (widget.viewer.rendering && !_rendering) {
|
||||
if (widget.viewer.rendering && !_rendering && _resizing.isEmpty) {
|
||||
_rendering = true;
|
||||
if (this == _states.first && _texture != null) {
|
||||
await widget.viewer.requestFrame();
|
||||
@@ -200,7 +197,7 @@ class _ThermionTextureWidgetState extends State<ThermionTextureWidget> {
|
||||
_logger.info(
|
||||
"Resizing texture to dimensions ${newWidth}x${newHeight} (pixel ratio : $dpr)");
|
||||
|
||||
await ThermionFlutterPlatform.instance.resizeTexture(_texture!, newWidth, newHeight);
|
||||
_texture = await ThermionFlutterPlatform.instance.resizeTexture(_texture!, widget.view, newWidth, newHeight);
|
||||
|
||||
_logger.info(
|
||||
"Resized texture to dimensions ${_texture!.width}x${_texture!.height} (pixel ratio : $dpr)");
|
||||
|
||||
@@ -116,8 +116,7 @@ public class SwiftThermionFlutterPlugin: NSObject, FlutterPlugin {
|
||||
result([texture.flutterTextureId, texture.texture.metalTextureAddress, nil])
|
||||
}
|
||||
case "destroyTexture":
|
||||
let args = call.arguments as! [Any]
|
||||
let flutterTextureId = args[0] as! Int64
|
||||
let flutterTextureId = call.arguments as! Int64
|
||||
|
||||
if let texture = textures[flutterTextureId] {
|
||||
texture.destroy()
|
||||
|
||||
@@ -9,11 +9,9 @@ set(PLUGIN_NAME "thermion_flutter_plugin")
|
||||
list(APPEND PLUGIN_SOURCES
|
||||
"thermion_flutter_plugin.cpp"
|
||||
"thermion_flutter_plugin.h"
|
||||
"flutter_egl_texture.cpp"
|
||||
"flutter_d3d_texture.cpp"
|
||||
)
|
||||
|
||||
add_subdirectory("rendering/egl")
|
||||
|
||||
add_library(${PLUGIN_NAME} SHARED
|
||||
"include/thermion_flutter/thermion_flutter_plugin_c_api.h"
|
||||
"thermion_flutter_plugin_c_api.cpp"
|
||||
@@ -30,32 +28,34 @@ target_compile_features(${PLUGIN_NAME} PUBLIC cxx_std_20)
|
||||
target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
|
||||
target_include_directories(${PLUGIN_NAME} INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include/filament"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
include_directories(
|
||||
"${CMAKE_SOURCE_DIR}/../../../../thermion_dart/native/include/filament"
|
||||
"${CMAKE_SOURCE_DIR}/../../../../thermion_dart/native/include"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/filament
|
||||
${runner_BINARY_DIR}/../../../native_assets/windows/
|
||||
)
|
||||
|
||||
get_cmake_property(_variableNames VARIABLES)
|
||||
list (SORT _variableNames)
|
||||
foreach (_variableName ${_variableNames})
|
||||
message(STATUS "FOO${_variableName}=${${_variableName}}")
|
||||
endforeach()
|
||||
|
||||
target_link_directories(${PLUGIN_NAME} PRIVATE ${runner_BINARY_DIR}/../../../native_assets/windows/)
|
||||
|
||||
target_link_libraries(${PLUGIN_NAME} PRIVATE
|
||||
flutter
|
||||
flutter_wrapper_plugin
|
||||
Shlwapi
|
||||
thermion_egl
|
||||
)
|
||||
|
||||
# Copy thermion_egl library to the Flutter build directory
|
||||
add_custom_command(TARGET ${PLUGIN_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
$<TARGET_FILE:thermion_egl>
|
||||
$<TARGET_FILE_DIR:${PLUGIN_NAME}>
|
||||
thermion_dart
|
||||
)
|
||||
|
||||
set(thermion_flutter_bundled_libraries
|
||||
${runner_BINARY_DIR}/../../../native_assets/windows/thermion_dart.dll
|
||||
$<TARGET_FILE:thermion_egl>
|
||||
${runner_BINARY_DIR}/../../../native_assets/windows/thermion_dart.lib
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
|
||||
+15
-8
@@ -6,12 +6,12 @@
|
||||
#include <flutter/texture_registrar.h>
|
||||
#include <flutter_texture_registrar.h>
|
||||
|
||||
#include "flutter_egl_texture.h"
|
||||
#include "flutter_d3d_texture.h"
|
||||
|
||||
namespace thermion::tflutter::windows
|
||||
{
|
||||
|
||||
FlutterEGLTexture::FlutterEGLTexture(HANDLE d3dTexture2DHandle, uint32_t width, uint32_t height) : _width(width), _height(height)
|
||||
FlutterD3DTexture::FlutterD3DTexture(HANDLE d3dTexture2DHandle, uint32_t width, uint32_t height) : _width(width), _height(height)
|
||||
{
|
||||
_textureDescriptor = std::make_unique<FlutterDesktopGpuSurfaceDescriptor>();
|
||||
_textureDescriptor->struct_size = sizeof(FlutterDesktopGpuSurfaceDescriptor);
|
||||
@@ -29,23 +29,30 @@ namespace thermion::tflutter::windows
|
||||
kFlutterDesktopGpuSurfaceTypeDxgiSharedHandle,
|
||||
[&](size_t width, size_t height)
|
||||
{
|
||||
if (width != this->_width || height != this->_height)
|
||||
{
|
||||
//this->_onResizeRequested(width, height);
|
||||
if(width != this->_width || height != this->_height) {
|
||||
return (FlutterDesktopGpuSurfaceDescriptor*)nullptr;
|
||||
}
|
||||
return _textureDescriptor.get();
|
||||
}));
|
||||
}
|
||||
|
||||
FlutterD3DTexture::~FlutterD3DTexture() {
|
||||
|
||||
}
|
||||
|
||||
::flutter::TextureVariant* FlutterEGLTexture::GetFlutterTexture() {
|
||||
::flutter::TextureVariant* FlutterD3DTexture::GetFlutterTexture() {
|
||||
return _texture.get();
|
||||
}
|
||||
|
||||
void FlutterEGLTexture::SetFlutterTextureId(int64_t textureId) {
|
||||
HANDLE FlutterD3DTexture::GetD3DTextureHandle() {
|
||||
return _textureDescriptor->handle;
|
||||
}
|
||||
|
||||
void FlutterD3DTexture::SetFlutterTextureId(int64_t textureId) {
|
||||
_flutterTextureId = textureId;
|
||||
}
|
||||
|
||||
int64_t FlutterEGLTexture::GetFlutterTextureId()
|
||||
int64_t FlutterD3DTexture::GetFlutterTextureId()
|
||||
{
|
||||
return _flutterTextureId;
|
||||
}
|
||||
@@ -0,0 +1,994 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**********************************************************************************************
|
||||
* Generated by bluevk/bluevk-gen.py
|
||||
* DO NOT EDIT
|
||||
**********************************************************************************************/
|
||||
|
||||
|
||||
#ifndef TNT_FILAMENT_BLUEVK_H
|
||||
#define TNT_FILAMENT_BLUEVK_H
|
||||
|
||||
#define VK_ENABLE_BETA_EXTENSIONS
|
||||
|
||||
// BlueVK dynamically loads all function pointers, so it cannot allow function prototypes, which
|
||||
// would assume static linking for Vulkan entry points.
|
||||
#if defined(VULKAN_H_) && !defined(VK_NO_PROTOTYPES)
|
||||
#error Please do not include vulkan.h when using BlueVK
|
||||
#endif
|
||||
|
||||
// Even though we don't use function prototypes, we still need to include vulkan.h for all Vulkan
|
||||
// types, including the PFN_ types.
|
||||
#ifndef VULKAN_H_
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
#define VK_NO_PROTOTYPES
|
||||
#endif
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#define VK_USE_PLATFORM_ANDROID_KHR 1
|
||||
#elif defined(IOS)
|
||||
#define VK_USE_PLATFORM_IOS_MVK 1
|
||||
#elif defined(__linux__)
|
||||
#if defined(FILAMENT_SUPPORTS_XCB)
|
||||
#define VK_USE_PLATFORM_XCB_KHR 1
|
||||
#endif
|
||||
#if defined(FILAMENT_SUPPORTS_XLIB)
|
||||
#define VK_USE_PLATFORM_XLIB_KHR 1
|
||||
#endif
|
||||
#if defined(FILAMENT_SUPPORTS_WAYLAND)
|
||||
#define VK_USE_PLATFORM_WAYLAND_KHR 1
|
||||
#endif
|
||||
#elif defined(__APPLE__)
|
||||
#define VK_USE_PLATFORM_MACOS_MVK 1
|
||||
#elif defined(WIN32)
|
||||
#define VK_USE_PLATFORM_WIN32_KHR 1
|
||||
#endif
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
#endif
|
||||
|
||||
#include <utils/unwindows.h>
|
||||
|
||||
namespace bluevk {
|
||||
|
||||
// Returns false if BlueGL could not find the Vulkan shared library.
|
||||
bool initialize();
|
||||
|
||||
void bindInstance(VkInstance instance);
|
||||
|
||||
#if defined(VK_VERSION_1_0)
|
||||
extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
|
||||
extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
|
||||
extern PFN_vkAllocateMemory vkAllocateMemory;
|
||||
extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
|
||||
extern PFN_vkBindBufferMemory vkBindBufferMemory;
|
||||
extern PFN_vkBindImageMemory vkBindImageMemory;
|
||||
extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
|
||||
extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
|
||||
extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
|
||||
extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
|
||||
extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
|
||||
extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
|
||||
extern PFN_vkCmdBlitImage vkCmdBlitImage;
|
||||
extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
|
||||
extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
|
||||
extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
|
||||
extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
|
||||
extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
|
||||
extern PFN_vkCmdCopyImage vkCmdCopyImage;
|
||||
extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
|
||||
extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
|
||||
extern PFN_vkCmdDispatch vkCmdDispatch;
|
||||
extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
|
||||
extern PFN_vkCmdDraw vkCmdDraw;
|
||||
extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
|
||||
extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
|
||||
extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
|
||||
extern PFN_vkCmdEndQuery vkCmdEndQuery;
|
||||
extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
|
||||
extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
|
||||
extern PFN_vkCmdFillBuffer vkCmdFillBuffer;
|
||||
extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
|
||||
extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
|
||||
extern PFN_vkCmdPushConstants vkCmdPushConstants;
|
||||
extern PFN_vkCmdResetEvent vkCmdResetEvent;
|
||||
extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
|
||||
extern PFN_vkCmdResolveImage vkCmdResolveImage;
|
||||
extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
|
||||
extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
|
||||
extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
|
||||
extern PFN_vkCmdSetEvent vkCmdSetEvent;
|
||||
extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
|
||||
extern PFN_vkCmdSetScissor vkCmdSetScissor;
|
||||
extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
|
||||
extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
|
||||
extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
|
||||
extern PFN_vkCmdSetViewport vkCmdSetViewport;
|
||||
extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
|
||||
extern PFN_vkCmdWaitEvents vkCmdWaitEvents;
|
||||
extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
|
||||
extern PFN_vkCreateBuffer vkCreateBuffer;
|
||||
extern PFN_vkCreateBufferView vkCreateBufferView;
|
||||
extern PFN_vkCreateCommandPool vkCreateCommandPool;
|
||||
extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
|
||||
extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
|
||||
extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
|
||||
extern PFN_vkCreateDevice vkCreateDevice;
|
||||
extern PFN_vkCreateEvent vkCreateEvent;
|
||||
extern PFN_vkCreateFence vkCreateFence;
|
||||
extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
|
||||
extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
|
||||
extern PFN_vkCreateImage vkCreateImage;
|
||||
extern PFN_vkCreateImageView vkCreateImageView;
|
||||
extern PFN_vkCreateInstance vkCreateInstance;
|
||||
extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
|
||||
extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
|
||||
extern PFN_vkCreateQueryPool vkCreateQueryPool;
|
||||
extern PFN_vkCreateRenderPass vkCreateRenderPass;
|
||||
extern PFN_vkCreateSampler vkCreateSampler;
|
||||
extern PFN_vkCreateSemaphore vkCreateSemaphore;
|
||||
extern PFN_vkCreateShaderModule vkCreateShaderModule;
|
||||
extern PFN_vkDestroyBuffer vkDestroyBuffer;
|
||||
extern PFN_vkDestroyBufferView vkDestroyBufferView;
|
||||
extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
|
||||
extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
|
||||
extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
|
||||
extern PFN_vkDestroyDevice vkDestroyDevice;
|
||||
extern PFN_vkDestroyEvent vkDestroyEvent;
|
||||
extern PFN_vkDestroyFence vkDestroyFence;
|
||||
extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
|
||||
extern PFN_vkDestroyImage vkDestroyImage;
|
||||
extern PFN_vkDestroyImageView vkDestroyImageView;
|
||||
extern PFN_vkDestroyInstance vkDestroyInstance;
|
||||
extern PFN_vkDestroyPipeline vkDestroyPipeline;
|
||||
extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
|
||||
extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
|
||||
extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
|
||||
extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
|
||||
extern PFN_vkDestroySampler vkDestroySampler;
|
||||
extern PFN_vkDestroySemaphore vkDestroySemaphore;
|
||||
extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
|
||||
extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
|
||||
extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
|
||||
extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
|
||||
extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
|
||||
extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
|
||||
extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
|
||||
extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
|
||||
extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
|
||||
extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
|
||||
extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
|
||||
extern PFN_vkFreeMemory vkFreeMemory;
|
||||
extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
|
||||
extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
|
||||
extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
|
||||
extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
|
||||
extern PFN_vkGetEventStatus vkGetEventStatus;
|
||||
extern PFN_vkGetFenceStatus vkGetFenceStatus;
|
||||
extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
|
||||
extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
|
||||
extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
|
||||
extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
|
||||
extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
|
||||
extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
|
||||
extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
|
||||
extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
|
||||
extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
|
||||
extern PFN_vkMapMemory vkMapMemory;
|
||||
extern PFN_vkMergePipelineCaches vkMergePipelineCaches;
|
||||
extern PFN_vkQueueBindSparse vkQueueBindSparse;
|
||||
extern PFN_vkQueueSubmit vkQueueSubmit;
|
||||
extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
|
||||
extern PFN_vkResetCommandBuffer vkResetCommandBuffer;
|
||||
extern PFN_vkResetCommandPool vkResetCommandPool;
|
||||
extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
|
||||
extern PFN_vkResetEvent vkResetEvent;
|
||||
extern PFN_vkResetFences vkResetFences;
|
||||
extern PFN_vkSetEvent vkSetEvent;
|
||||
extern PFN_vkUnmapMemory vkUnmapMemory;
|
||||
extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
|
||||
extern PFN_vkWaitForFences vkWaitForFences;
|
||||
#endif // defined(VK_VERSION_1_0)
|
||||
#if defined(VK_VERSION_1_1)
|
||||
extern PFN_vkBindBufferMemory2 vkBindBufferMemory2;
|
||||
extern PFN_vkBindImageMemory2 vkBindImageMemory2;
|
||||
extern PFN_vkCmdDispatchBase vkCmdDispatchBase;
|
||||
extern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;
|
||||
extern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;
|
||||
extern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;
|
||||
extern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;
|
||||
extern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;
|
||||
extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
|
||||
extern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;
|
||||
extern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;
|
||||
extern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;
|
||||
extern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;
|
||||
extern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;
|
||||
extern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;
|
||||
extern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;
|
||||
extern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;
|
||||
extern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;
|
||||
extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;
|
||||
extern PFN_vkTrimCommandPool vkTrimCommandPool;
|
||||
extern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;
|
||||
#endif // defined(VK_VERSION_1_1)
|
||||
#if defined(VK_VERSION_1_2)
|
||||
extern PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2;
|
||||
extern PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount;
|
||||
extern PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount;
|
||||
extern PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2;
|
||||
extern PFN_vkCmdNextSubpass2 vkCmdNextSubpass2;
|
||||
extern PFN_vkCreateRenderPass2 vkCreateRenderPass2;
|
||||
extern PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress;
|
||||
extern PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress;
|
||||
extern PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress;
|
||||
extern PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue;
|
||||
extern PFN_vkResetQueryPool vkResetQueryPool;
|
||||
extern PFN_vkSignalSemaphore vkSignalSemaphore;
|
||||
extern PFN_vkWaitSemaphores vkWaitSemaphores;
|
||||
#endif // defined(VK_VERSION_1_2)
|
||||
#if defined(VK_VERSION_1_3)
|
||||
extern PFN_vkCmdBeginRendering vkCmdBeginRendering;
|
||||
extern PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2;
|
||||
extern PFN_vkCmdBlitImage2 vkCmdBlitImage2;
|
||||
extern PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2;
|
||||
extern PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2;
|
||||
extern PFN_vkCmdCopyImage2 vkCmdCopyImage2;
|
||||
extern PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2;
|
||||
extern PFN_vkCmdEndRendering vkCmdEndRendering;
|
||||
extern PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2;
|
||||
extern PFN_vkCmdResetEvent2 vkCmdResetEvent2;
|
||||
extern PFN_vkCmdResolveImage2 vkCmdResolveImage2;
|
||||
extern PFN_vkCmdSetCullMode vkCmdSetCullMode;
|
||||
extern PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable;
|
||||
extern PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable;
|
||||
extern PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp;
|
||||
extern PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable;
|
||||
extern PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable;
|
||||
extern PFN_vkCmdSetEvent2 vkCmdSetEvent2;
|
||||
extern PFN_vkCmdSetFrontFace vkCmdSetFrontFace;
|
||||
extern PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable;
|
||||
extern PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology;
|
||||
extern PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable;
|
||||
extern PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount;
|
||||
extern PFN_vkCmdSetStencilOp vkCmdSetStencilOp;
|
||||
extern PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable;
|
||||
extern PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount;
|
||||
extern PFN_vkCmdWaitEvents2 vkCmdWaitEvents2;
|
||||
extern PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2;
|
||||
extern PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot;
|
||||
extern PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot;
|
||||
extern PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements;
|
||||
extern PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements;
|
||||
extern PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements;
|
||||
extern PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties;
|
||||
extern PFN_vkGetPrivateData vkGetPrivateData;
|
||||
extern PFN_vkQueueSubmit2 vkQueueSubmit2;
|
||||
extern PFN_vkSetPrivateData vkSetPrivateData;
|
||||
#endif // defined(VK_VERSION_1_3)
|
||||
#if defined(VK_AMD_buffer_marker)
|
||||
extern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
|
||||
#endif // defined(VK_AMD_buffer_marker)
|
||||
#if defined(VK_AMD_display_native_hdr)
|
||||
extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD;
|
||||
#endif // defined(VK_AMD_display_native_hdr)
|
||||
#if defined(VK_AMD_draw_indirect_count)
|
||||
extern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;
|
||||
extern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;
|
||||
#endif // defined(VK_AMD_draw_indirect_count)
|
||||
#if defined(VK_AMD_shader_info)
|
||||
extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
|
||||
#endif // defined(VK_AMD_shader_info)
|
||||
#if defined(VK_ANDROID_external_memory_android_hardware_buffer)
|
||||
extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif // defined(VK_ANDROID_external_memory_android_hardware_buffer)
|
||||
#if defined(VK_ANDROID_native_buffer)
|
||||
extern PFN_vkAcquireImageANDROID vkAcquireImageANDROID;
|
||||
extern PFN_vkGetSwapchainGrallocUsage2ANDROID vkGetSwapchainGrallocUsage2ANDROID;
|
||||
extern PFN_vkGetSwapchainGrallocUsageANDROID vkGetSwapchainGrallocUsageANDROID;
|
||||
extern PFN_vkQueueSignalReleaseImageANDROID vkQueueSignalReleaseImageANDROID;
|
||||
#endif // defined(VK_ANDROID_native_buffer)
|
||||
#if defined(VK_EXT_acquire_drm_display)
|
||||
extern PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;
|
||||
extern PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;
|
||||
#endif // defined(VK_EXT_acquire_drm_display)
|
||||
#if defined(VK_EXT_acquire_xlib_display)
|
||||
extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
|
||||
extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
|
||||
#endif // defined(VK_EXT_acquire_xlib_display)
|
||||
#if defined(VK_EXT_buffer_device_address)
|
||||
extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT;
|
||||
#endif // defined(VK_EXT_buffer_device_address)
|
||||
#if defined(VK_EXT_calibrated_timestamps)
|
||||
extern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT;
|
||||
extern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
|
||||
#endif // defined(VK_EXT_calibrated_timestamps)
|
||||
#if defined(VK_EXT_color_write_enable)
|
||||
extern PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT;
|
||||
#endif // defined(VK_EXT_color_write_enable)
|
||||
#if defined(VK_EXT_conditional_rendering)
|
||||
extern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;
|
||||
extern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;
|
||||
#endif // defined(VK_EXT_conditional_rendering)
|
||||
#if defined(VK_EXT_debug_marker)
|
||||
extern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;
|
||||
extern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;
|
||||
extern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;
|
||||
extern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;
|
||||
extern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;
|
||||
#endif // defined(VK_EXT_debug_marker)
|
||||
#if defined(VK_EXT_debug_report)
|
||||
extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
|
||||
extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
|
||||
extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
|
||||
#endif // defined(VK_EXT_debug_report)
|
||||
#if defined(VK_EXT_debug_utils)
|
||||
extern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;
|
||||
extern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;
|
||||
extern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;
|
||||
extern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
|
||||
extern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
|
||||
extern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;
|
||||
extern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;
|
||||
extern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;
|
||||
extern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;
|
||||
extern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;
|
||||
extern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;
|
||||
#endif // defined(VK_EXT_debug_utils)
|
||||
#if defined(VK_EXT_direct_mode_display)
|
||||
extern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;
|
||||
#endif // defined(VK_EXT_direct_mode_display)
|
||||
#if defined(VK_EXT_directfb_surface)
|
||||
extern PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT;
|
||||
extern PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT;
|
||||
#endif // defined(VK_EXT_directfb_surface)
|
||||
#if defined(VK_EXT_discard_rectangles)
|
||||
extern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;
|
||||
#endif // defined(VK_EXT_discard_rectangles)
|
||||
#if defined(VK_EXT_display_control)
|
||||
extern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;
|
||||
extern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;
|
||||
extern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;
|
||||
extern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;
|
||||
#endif // defined(VK_EXT_display_control)
|
||||
#if defined(VK_EXT_display_surface_counter)
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;
|
||||
#endif // defined(VK_EXT_display_surface_counter)
|
||||
#if defined(VK_EXT_extended_dynamic_state)
|
||||
extern PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT;
|
||||
extern PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT;
|
||||
extern PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT;
|
||||
extern PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT;
|
||||
extern PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT;
|
||||
extern PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT;
|
||||
extern PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT;
|
||||
extern PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT;
|
||||
extern PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT;
|
||||
extern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
|
||||
extern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
|
||||
extern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;
|
||||
#endif // defined(VK_EXT_extended_dynamic_state)
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
extern PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;
|
||||
extern PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;
|
||||
extern PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;
|
||||
extern PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;
|
||||
extern PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;
|
||||
#endif // defined(VK_EXT_extended_dynamic_state2)
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
#endif // defined(VK_EXT_external_memory_host)
|
||||
#if defined(VK_EXT_full_screen_exclusive)
|
||||
extern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT;
|
||||
extern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT;
|
||||
extern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT;
|
||||
#endif // defined(VK_EXT_full_screen_exclusive)
|
||||
#if defined(VK_EXT_hdr_metadata)
|
||||
extern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;
|
||||
#endif // defined(VK_EXT_hdr_metadata)
|
||||
#if defined(VK_EXT_headless_surface)
|
||||
extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT;
|
||||
#endif // defined(VK_EXT_headless_surface)
|
||||
#if defined(VK_EXT_host_query_reset)
|
||||
extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT;
|
||||
#endif // defined(VK_EXT_host_query_reset)
|
||||
#if defined(VK_EXT_image_compression_control)
|
||||
extern PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT;
|
||||
#endif // defined(VK_EXT_image_compression_control)
|
||||
#if defined(VK_EXT_image_drm_format_modifier)
|
||||
extern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT;
|
||||
#endif // defined(VK_EXT_image_drm_format_modifier)
|
||||
#if defined(VK_EXT_line_rasterization)
|
||||
extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
#endif // defined(VK_EXT_line_rasterization)
|
||||
#if defined(VK_EXT_metal_objects)
|
||||
extern PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT;
|
||||
#endif // defined(VK_EXT_metal_objects)
|
||||
#if defined(VK_EXT_metal_surface)
|
||||
extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
#endif // defined(VK_EXT_metal_surface)
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
extern PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;
|
||||
extern PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;
|
||||
#endif // defined(VK_EXT_multi_draw)
|
||||
#if defined(VK_EXT_pageable_device_local_memory)
|
||||
extern PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT;
|
||||
#endif // defined(VK_EXT_pageable_device_local_memory)
|
||||
#if defined(VK_EXT_pipeline_properties)
|
||||
extern PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT;
|
||||
#endif // defined(VK_EXT_pipeline_properties)
|
||||
#if defined(VK_EXT_private_data)
|
||||
extern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;
|
||||
extern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;
|
||||
extern PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT;
|
||||
extern PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT;
|
||||
#endif // defined(VK_EXT_private_data)
|
||||
#if defined(VK_EXT_sample_locations)
|
||||
extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
|
||||
extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
|
||||
#endif // defined(VK_EXT_sample_locations)
|
||||
#if defined(VK_EXT_tooling_info)
|
||||
extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT;
|
||||
#endif // defined(VK_EXT_tooling_info)
|
||||
#if defined(VK_EXT_transform_feedback)
|
||||
extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT;
|
||||
extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT;
|
||||
extern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT;
|
||||
extern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT;
|
||||
extern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT;
|
||||
extern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT;
|
||||
#endif // defined(VK_EXT_transform_feedback)
|
||||
#if defined(VK_EXT_validation_cache)
|
||||
extern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;
|
||||
extern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;
|
||||
extern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;
|
||||
extern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;
|
||||
#endif // defined(VK_EXT_validation_cache)
|
||||
#if defined(VK_EXT_vertex_input_dynamic_state)
|
||||
extern PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT;
|
||||
#endif // defined(VK_EXT_vertex_input_dynamic_state)
|
||||
#if defined(VK_FUCHSIA_buffer_collection)
|
||||
extern PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA;
|
||||
extern PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA;
|
||||
extern PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA;
|
||||
extern PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA;
|
||||
extern PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_buffer_collection)
|
||||
#if defined(VK_FUCHSIA_external_memory)
|
||||
extern PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA;
|
||||
extern PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_external_memory)
|
||||
#if defined(VK_FUCHSIA_external_semaphore)
|
||||
extern PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA;
|
||||
extern PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_external_semaphore)
|
||||
#if defined(VK_FUCHSIA_imagepipe_surface)
|
||||
extern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA;
|
||||
#endif // defined(VK_FUCHSIA_imagepipe_surface)
|
||||
#if defined(VK_GGP_stream_descriptor_surface)
|
||||
extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;
|
||||
#endif // defined(VK_GGP_stream_descriptor_surface)
|
||||
#if defined(VK_GOOGLE_display_timing)
|
||||
extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
|
||||
extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
|
||||
#endif // defined(VK_GOOGLE_display_timing)
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
extern PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;
|
||||
#endif // defined(VK_HUAWEI_invocation_mask)
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
extern PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;
|
||||
extern PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
||||
#endif // defined(VK_HUAWEI_subpass_shading)
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL;
|
||||
extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL;
|
||||
extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL;
|
||||
extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL;
|
||||
extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL;
|
||||
extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL;
|
||||
extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL;
|
||||
#endif // defined(VK_INTEL_performance_query)
|
||||
#if defined(VK_KHR_acceleration_structure)
|
||||
extern PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR;
|
||||
extern PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR;
|
||||
extern PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR;
|
||||
extern PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR;
|
||||
extern PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR;
|
||||
extern PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR;
|
||||
extern PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR;
|
||||
extern PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR;
|
||||
extern PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR;
|
||||
extern PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR;
|
||||
extern PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR;
|
||||
extern PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR;
|
||||
extern PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR;
|
||||
extern PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR;
|
||||
extern PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR;
|
||||
extern PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR;
|
||||
#endif // defined(VK_KHR_acceleration_structure)
|
||||
#if defined(VK_KHR_android_surface)
|
||||
extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
|
||||
#endif // defined(VK_KHR_android_surface)
|
||||
#if defined(VK_KHR_bind_memory2)
|
||||
extern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;
|
||||
extern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;
|
||||
#endif // defined(VK_KHR_bind_memory2)
|
||||
#if defined(VK_KHR_buffer_device_address)
|
||||
extern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR;
|
||||
extern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR;
|
||||
extern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR;
|
||||
#endif // defined(VK_KHR_buffer_device_address)
|
||||
#if defined(VK_KHR_copy_commands2)
|
||||
extern PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR;
|
||||
extern PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR;
|
||||
extern PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR;
|
||||
extern PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR;
|
||||
extern PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR;
|
||||
extern PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR;
|
||||
#endif // defined(VK_KHR_copy_commands2)
|
||||
#if defined(VK_KHR_create_renderpass2)
|
||||
extern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;
|
||||
extern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;
|
||||
extern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;
|
||||
extern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;
|
||||
#endif // defined(VK_KHR_create_renderpass2)
|
||||
#if defined(VK_KHR_deferred_host_operations)
|
||||
extern PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR;
|
||||
extern PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR;
|
||||
extern PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR;
|
||||
extern PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR;
|
||||
extern PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR;
|
||||
#endif // defined(VK_KHR_deferred_host_operations)
|
||||
#if defined(VK_KHR_descriptor_update_template)
|
||||
extern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;
|
||||
extern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;
|
||||
extern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;
|
||||
#endif // defined(VK_KHR_descriptor_update_template)
|
||||
#if defined(VK_KHR_device_group)
|
||||
extern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;
|
||||
extern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;
|
||||
extern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;
|
||||
#endif // defined(VK_KHR_device_group)
|
||||
#if defined(VK_KHR_device_group_creation)
|
||||
extern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;
|
||||
#endif // defined(VK_KHR_device_group_creation)
|
||||
#if defined(VK_KHR_display)
|
||||
extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;
|
||||
extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
|
||||
extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;
|
||||
extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
|
||||
extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;
|
||||
#endif // defined(VK_KHR_display)
|
||||
#if defined(VK_KHR_display_swapchain)
|
||||
extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
|
||||
#endif // defined(VK_KHR_display_swapchain)
|
||||
#if defined(VK_KHR_draw_indirect_count)
|
||||
extern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;
|
||||
extern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;
|
||||
#endif // defined(VK_KHR_draw_indirect_count)
|
||||
#if defined(VK_KHR_dynamic_rendering)
|
||||
extern PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR;
|
||||
extern PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR;
|
||||
#endif // defined(VK_KHR_dynamic_rendering)
|
||||
#if defined(VK_KHR_external_fence_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_fence_capabilities)
|
||||
#if defined(VK_KHR_external_fence_fd)
|
||||
extern PFN_vkGetFenceFdKHR vkGetFenceFdKHR;
|
||||
extern PFN_vkImportFenceFdKHR vkImportFenceFdKHR;
|
||||
#endif // defined(VK_KHR_external_fence_fd)
|
||||
#if defined(VK_KHR_external_fence_win32)
|
||||
extern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;
|
||||
extern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;
|
||||
#endif // defined(VK_KHR_external_fence_win32)
|
||||
#if defined(VK_KHR_external_memory_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_capabilities)
|
||||
#if defined(VK_KHR_external_memory_fd)
|
||||
extern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;
|
||||
extern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_fd)
|
||||
#if defined(VK_KHR_external_memory_win32)
|
||||
extern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;
|
||||
extern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_memory_win32)
|
||||
#if defined(VK_KHR_external_semaphore_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_capabilities)
|
||||
#if defined(VK_KHR_external_semaphore_fd)
|
||||
extern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;
|
||||
extern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_fd)
|
||||
#if defined(VK_KHR_external_semaphore_win32)
|
||||
extern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;
|
||||
extern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;
|
||||
#endif // defined(VK_KHR_external_semaphore_win32)
|
||||
#if defined(VK_KHR_fragment_shading_rate)
|
||||
extern PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR;
|
||||
extern PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR;
|
||||
#endif // defined(VK_KHR_fragment_shading_rate)
|
||||
#if defined(VK_KHR_get_display_properties2)
|
||||
extern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;
|
||||
extern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;
|
||||
#endif // defined(VK_KHR_get_display_properties2)
|
||||
#if defined(VK_KHR_get_memory_requirements2)
|
||||
extern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;
|
||||
extern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;
|
||||
extern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;
|
||||
#endif // defined(VK_KHR_get_memory_requirements2)
|
||||
#if defined(VK_KHR_get_physical_device_properties2)
|
||||
extern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
|
||||
#endif // defined(VK_KHR_get_physical_device_properties2)
|
||||
#if defined(VK_KHR_get_surface_capabilities2)
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;
|
||||
#endif // defined(VK_KHR_get_surface_capabilities2)
|
||||
#if defined(VK_KHR_maintenance1)
|
||||
extern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;
|
||||
#endif // defined(VK_KHR_maintenance1)
|
||||
#if defined(VK_KHR_maintenance3)
|
||||
extern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;
|
||||
#endif // defined(VK_KHR_maintenance3)
|
||||
#if defined(VK_KHR_maintenance4)
|
||||
extern PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR;
|
||||
extern PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR;
|
||||
extern PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR;
|
||||
#endif // defined(VK_KHR_maintenance4)
|
||||
#if defined(VK_KHR_performance_query)
|
||||
extern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR;
|
||||
extern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
|
||||
extern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
|
||||
extern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR;
|
||||
#endif // defined(VK_KHR_performance_query)
|
||||
#if defined(VK_KHR_pipeline_executable_properties)
|
||||
extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR;
|
||||
extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
#endif // defined(VK_KHR_pipeline_executable_properties)
|
||||
#if defined(VK_KHR_present_wait)
|
||||
extern PFN_vkWaitForPresentKHR vkWaitForPresentKHR;
|
||||
#endif // defined(VK_KHR_present_wait)
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
|
||||
#endif // defined(VK_KHR_push_descriptor)
|
||||
#if (defined(VK_KHR_ray_tracing_maintenance1) && defined(VK_KHR_ray_tracing_pipeline))
|
||||
extern PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR;
|
||||
#endif // (defined(VK_KHR_ray_tracing_maintenance1) && defined(VK_KHR_ray_tracing_pipeline))
|
||||
#if defined(VK_KHR_ray_tracing_pipeline)
|
||||
extern PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR;
|
||||
extern PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR;
|
||||
extern PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR;
|
||||
extern PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR;
|
||||
extern PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
|
||||
extern PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR;
|
||||
extern PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR;
|
||||
#endif // defined(VK_KHR_ray_tracing_pipeline)
|
||||
#if defined(VK_KHR_sampler_ycbcr_conversion)
|
||||
extern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;
|
||||
extern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;
|
||||
#endif // defined(VK_KHR_sampler_ycbcr_conversion)
|
||||
#if defined(VK_KHR_shared_presentable_image)
|
||||
extern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;
|
||||
#endif // defined(VK_KHR_shared_presentable_image)
|
||||
#if defined(VK_KHR_surface)
|
||||
extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
|
||||
#endif // defined(VK_KHR_surface)
|
||||
#if defined(VK_KHR_swapchain)
|
||||
extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
|
||||
extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
|
||||
extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
|
||||
extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
|
||||
extern PFN_vkQueuePresentKHR vkQueuePresentKHR;
|
||||
#endif // defined(VK_KHR_swapchain)
|
||||
#if defined(VK_KHR_synchronization2)
|
||||
extern PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR;
|
||||
extern PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR;
|
||||
extern PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR;
|
||||
extern PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR;
|
||||
extern PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR;
|
||||
extern PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR;
|
||||
#endif // defined(VK_KHR_synchronization2)
|
||||
#if (defined(VK_KHR_synchronization2) && defined(VK_AMD_buffer_marker))
|
||||
extern PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD;
|
||||
#endif // (defined(VK_KHR_synchronization2) && defined(VK_AMD_buffer_marker))
|
||||
#if (defined(VK_KHR_synchronization2) && defined(VK_NV_device_diagnostic_checkpoints))
|
||||
extern PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV;
|
||||
#endif // (defined(VK_KHR_synchronization2) && defined(VK_NV_device_diagnostic_checkpoints))
|
||||
#if defined(VK_KHR_timeline_semaphore)
|
||||
extern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR;
|
||||
extern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR;
|
||||
extern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR;
|
||||
#endif // defined(VK_KHR_timeline_semaphore)
|
||||
#if defined(VK_KHR_video_decode_queue)
|
||||
extern PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR;
|
||||
#endif // defined(VK_KHR_video_decode_queue)
|
||||
#if defined(VK_KHR_video_encode_queue)
|
||||
extern PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR;
|
||||
#endif // defined(VK_KHR_video_encode_queue)
|
||||
#if defined(VK_KHR_video_queue)
|
||||
extern PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR;
|
||||
extern PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR;
|
||||
extern PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR;
|
||||
extern PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR;
|
||||
extern PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR;
|
||||
extern PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR;
|
||||
extern PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR;
|
||||
extern PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR;
|
||||
extern PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR;
|
||||
extern PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR;
|
||||
extern PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;
|
||||
extern PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;
|
||||
#endif // defined(VK_KHR_video_queue)
|
||||
#if defined(VK_KHR_wayland_surface)
|
||||
extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_wayland_surface)
|
||||
#if defined(VK_KHR_win32_surface)
|
||||
extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_win32_surface)
|
||||
#if defined(VK_KHR_xcb_surface)
|
||||
extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_xcb_surface)
|
||||
#if defined(VK_KHR_xlib_surface)
|
||||
extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
|
||||
extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
|
||||
#endif // defined(VK_KHR_xlib_surface)
|
||||
#if defined(VK_MVK_ios_surface)
|
||||
extern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;
|
||||
#endif // defined(VK_MVK_ios_surface)
|
||||
#if defined(VK_MVK_macos_surface)
|
||||
extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
|
||||
#endif // defined(VK_MVK_macos_surface)
|
||||
#if defined(VK_NN_vi_surface)
|
||||
extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
|
||||
#endif // defined(VK_NN_vi_surface)
|
||||
#if defined(VK_NVX_binary_import)
|
||||
extern PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;
|
||||
extern PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;
|
||||
extern PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;
|
||||
extern PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;
|
||||
extern PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;
|
||||
#endif // defined(VK_NVX_binary_import)
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
extern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;
|
||||
extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
#endif // defined(VK_NVX_image_view_handle)
|
||||
#if defined(VK_NV_acquire_winrt_display)
|
||||
extern PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV;
|
||||
extern PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV;
|
||||
#endif // defined(VK_NV_acquire_winrt_display)
|
||||
#if defined(VK_NV_clip_space_w_scaling)
|
||||
extern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;
|
||||
#endif // defined(VK_NV_clip_space_w_scaling)
|
||||
#if defined(VK_NV_cooperative_matrix)
|
||||
extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV;
|
||||
#endif // defined(VK_NV_cooperative_matrix)
|
||||
#if defined(VK_NV_coverage_reduction_mode)
|
||||
extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
|
||||
#endif // defined(VK_NV_coverage_reduction_mode)
|
||||
#if defined(VK_NV_device_diagnostic_checkpoints)
|
||||
extern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
|
||||
extern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
|
||||
#endif // defined(VK_NV_device_diagnostic_checkpoints)
|
||||
#if defined(VK_NV_device_generated_commands)
|
||||
extern PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV;
|
||||
extern PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV;
|
||||
extern PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV;
|
||||
extern PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV;
|
||||
extern PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;
|
||||
extern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;
|
||||
#endif // defined(VK_NV_device_generated_commands)
|
||||
#if defined(VK_NV_external_memory_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#endif // defined(VK_NV_external_memory_capabilities)
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
extern PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;
|
||||
#endif // defined(VK_NV_external_memory_rdma)
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
|
||||
#endif // defined(VK_NV_external_memory_win32)
|
||||
#if defined(VK_NV_fragment_shading_rate_enums)
|
||||
extern PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV;
|
||||
#endif // defined(VK_NV_fragment_shading_rate_enums)
|
||||
#if defined(VK_NV_mesh_shader)
|
||||
extern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV;
|
||||
extern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV;
|
||||
extern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV;
|
||||
#endif // defined(VK_NV_mesh_shader)
|
||||
#if defined(VK_NV_ray_tracing)
|
||||
extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV;
|
||||
extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV;
|
||||
extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV;
|
||||
extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV;
|
||||
extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV;
|
||||
extern PFN_vkCompileDeferredNV vkCompileDeferredNV;
|
||||
extern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV;
|
||||
extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV;
|
||||
extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV;
|
||||
extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV;
|
||||
extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV;
|
||||
extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV;
|
||||
#endif // defined(VK_NV_ray_tracing)
|
||||
#if defined(VK_NV_scissor_exclusive)
|
||||
extern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV;
|
||||
#endif // defined(VK_NV_scissor_exclusive)
|
||||
#if defined(VK_NV_shading_rate_image)
|
||||
extern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV;
|
||||
extern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV;
|
||||
extern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV;
|
||||
#endif // defined(VK_NV_shading_rate_image)
|
||||
#if defined(VK_QNX_screen_surface)
|
||||
extern PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX;
|
||||
extern PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX;
|
||||
#endif // defined(VK_QNX_screen_surface)
|
||||
#if defined(VK_VALVE_descriptor_set_host_mapping)
|
||||
extern PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE;
|
||||
extern PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE;
|
||||
#endif // defined(VK_VALVE_descriptor_set_host_mapping)
|
||||
#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT;
|
||||
#endif // (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1))
|
||||
#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template))
|
||||
extern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;
|
||||
#endif // (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template))
|
||||
#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;
|
||||
extern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;
|
||||
extern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;
|
||||
#endif // (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
extern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;
|
||||
#endif // (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1))
|
||||
|
||||
} // namespace bluevk
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
#include <utils/Log.h>
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageLayout& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAttachmentLoadOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAttachmentStoreOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageTiling& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkImageViewType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCommandBufferLevel& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkComponentSwizzle& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDescriptorType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueryType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBorderColor& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineBindPoint& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineCacheHeaderVersion& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPrimitiveTopology& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSharingMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkIndexType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFilter& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerMipmapMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerAddressMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCompareOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPolygonMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFrontFace& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendFactor& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkStencilOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkLogicOp& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkInternalAllocationType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSystemAllocationScope& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPhysicalDeviceType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkVertexInputRate& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFormat& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkStructureType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSubpassContents& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkResult& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDynamicState& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDescriptorUpdateTemplateType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkObjectType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSemaphoreType& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPresentModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkColorSpaceKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkTimeDomainEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDebugReportObjectTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDeviceMemoryReportEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkRasterizationOrderAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationCheckEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationFeatureEnableEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationFeatureDisableEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkIndirectCommandsTokenTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDisplayPowerStateEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDeviceEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDisplayEventTypeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkViewportCoordinateSwizzleNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDiscardRectangleModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPointClippingBehavior& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerReductionMode& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkTessellationDomainOrigin& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerYcbcrModelConversion& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSamplerYcbcrRange& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkChromaLocation& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBlendOverlapEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoverageModulationModeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoverageReductionModeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkValidationCacheHeaderVersionEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderInfoTypeAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueueGlobalPriorityKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkConservativeRasterizationModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkVendorId& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkDriverId& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShadingRatePaletteEntryNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCoarseSampleOrderTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkCopyAccelerationStructureModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkBuildAccelerationStructureModeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkGeometryTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureMemoryRequirementsTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureBuildTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkRayTracingShaderGroupTypeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureCompatibilityKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderGroupShaderKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkMemoryOverallocationBehaviorAMD& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkScopeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkComponentTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterScopeKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterUnitKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceCounterStorageKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceConfigurationTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkQueryPoolSamplingModeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceOverrideTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceParameterTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPerformanceValueTypeINTEL& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkShaderFloatControlsIndependence& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkPipelineExecutableStatisticFormatKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkLineRasterizationModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateCombinerOpKHR& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkFragmentShadingRateTypeNV& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkSubpassMergeStatusEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkProvokingVertexModeEXT& value);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const VkAccelerationStructureMotionInstanceTypeNV& value);
|
||||
#endif
|
||||
|
||||
#endif // TNT_FILAMENT_BLUEVK_H
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,850 @@
|
||||
#ifndef __wglext_h_
|
||||
#define __wglext_h_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
** Copyright (c) 2013-2017 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
/*
|
||||
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
||||
** API Registry. The current version of the Registry, generator scripts
|
||||
** used to make the header, and the header can be found at
|
||||
** https://github.com/KhronosGroup/OpenGL-Registry
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#define WGL_WGLEXT_VERSION 20171125
|
||||
|
||||
/* Generated C header for:
|
||||
* API: wgl
|
||||
* Versions considered: .*
|
||||
* Versions emitted: _nomatch_^
|
||||
* Default extensions included: wgl
|
||||
* Additional extensions included: _nomatch_^
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
#ifndef WGL_ARB_buffer_region
|
||||
#define WGL_ARB_buffer_region 1
|
||||
#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
|
||||
#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
|
||||
#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
|
||||
#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
|
||||
typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
|
||||
typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
|
||||
typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
|
||||
typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType);
|
||||
VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion);
|
||||
BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height);
|
||||
BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||
#endif
|
||||
#endif /* WGL_ARB_buffer_region */
|
||||
|
||||
#ifndef WGL_ARB_context_flush_control
|
||||
#define WGL_ARB_context_flush_control 1
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
|
||||
#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
|
||||
#endif /* WGL_ARB_context_flush_control */
|
||||
|
||||
#ifndef WGL_ARB_create_context
|
||||
#define WGL_ARB_create_context 1
|
||||
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
|
||||
#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
|
||||
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
|
||||
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
|
||||
#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
|
||||
#define WGL_CONTEXT_FLAGS_ARB 0x2094
|
||||
#define ERROR_INVALID_VERSION_ARB 0x2095
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList);
|
||||
#endif
|
||||
#endif /* WGL_ARB_create_context */
|
||||
|
||||
#ifndef WGL_ARB_create_context_no_error
|
||||
#define WGL_ARB_create_context_no_error 1
|
||||
#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
|
||||
#endif /* WGL_ARB_create_context_no_error */
|
||||
|
||||
#ifndef WGL_ARB_create_context_profile
|
||||
#define WGL_ARB_create_context_profile 1
|
||||
#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
|
||||
#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
|
||||
#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
|
||||
#define ERROR_INVALID_PROFILE_ARB 0x2096
|
||||
#endif /* WGL_ARB_create_context_profile */
|
||||
|
||||
#ifndef WGL_ARB_create_context_robustness
|
||||
#define WGL_ARB_create_context_robustness 1
|
||||
#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
|
||||
#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
|
||||
#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
|
||||
#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
|
||||
#endif /* WGL_ARB_create_context_robustness */
|
||||
|
||||
#ifndef WGL_ARB_extensions_string
|
||||
#define WGL_ARB_extensions_string 1
|
||||
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
const char *WINAPI wglGetExtensionsStringARB (HDC hdc);
|
||||
#endif
|
||||
#endif /* WGL_ARB_extensions_string */
|
||||
|
||||
#ifndef WGL_ARB_framebuffer_sRGB
|
||||
#define WGL_ARB_framebuffer_sRGB 1
|
||||
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
|
||||
#endif /* WGL_ARB_framebuffer_sRGB */
|
||||
|
||||
#ifndef WGL_ARB_make_current_read
|
||||
#define WGL_ARB_make_current_read 1
|
||||
#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
|
||||
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
|
||||
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
HDC WINAPI wglGetCurrentReadDCARB (void);
|
||||
#endif
|
||||
#endif /* WGL_ARB_make_current_read */
|
||||
|
||||
#ifndef WGL_ARB_multisample
|
||||
#define WGL_ARB_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
|
||||
#define WGL_SAMPLES_ARB 0x2042
|
||||
#endif /* WGL_ARB_multisample */
|
||||
|
||||
#ifndef WGL_ARB_pbuffer
|
||||
#define WGL_ARB_pbuffer 1
|
||||
DECLARE_HANDLE(HPBUFFERARB);
|
||||
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
|
||||
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
|
||||
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
|
||||
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
|
||||
#define WGL_PBUFFER_LARGEST_ARB 0x2033
|
||||
#define WGL_PBUFFER_WIDTH_ARB 0x2034
|
||||
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
|
||||
#define WGL_PBUFFER_LOST_ARB 0x2036
|
||||
typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
|
||||
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer);
|
||||
int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC);
|
||||
BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer);
|
||||
BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_ARB_pbuffer */
|
||||
|
||||
#ifndef WGL_ARB_pixel_format
|
||||
#define WGL_ARB_pixel_format 1
|
||||
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
||||
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
|
||||
#define WGL_DRAW_TO_BITMAP_ARB 0x2002
|
||||
#define WGL_ACCELERATION_ARB 0x2003
|
||||
#define WGL_NEED_PALETTE_ARB 0x2004
|
||||
#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
|
||||
#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
|
||||
#define WGL_SWAP_METHOD_ARB 0x2007
|
||||
#define WGL_NUMBER_OVERLAYS_ARB 0x2008
|
||||
#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
|
||||
#define WGL_TRANSPARENT_ARB 0x200A
|
||||
#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
|
||||
#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
|
||||
#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
|
||||
#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
|
||||
#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
|
||||
#define WGL_SHARE_DEPTH_ARB 0x200C
|
||||
#define WGL_SHARE_STENCIL_ARB 0x200D
|
||||
#define WGL_SHARE_ACCUM_ARB 0x200E
|
||||
#define WGL_SUPPORT_GDI_ARB 0x200F
|
||||
#define WGL_SUPPORT_OPENGL_ARB 0x2010
|
||||
#define WGL_DOUBLE_BUFFER_ARB 0x2011
|
||||
#define WGL_STEREO_ARB 0x2012
|
||||
#define WGL_PIXEL_TYPE_ARB 0x2013
|
||||
#define WGL_COLOR_BITS_ARB 0x2014
|
||||
#define WGL_RED_BITS_ARB 0x2015
|
||||
#define WGL_RED_SHIFT_ARB 0x2016
|
||||
#define WGL_GREEN_BITS_ARB 0x2017
|
||||
#define WGL_GREEN_SHIFT_ARB 0x2018
|
||||
#define WGL_BLUE_BITS_ARB 0x2019
|
||||
#define WGL_BLUE_SHIFT_ARB 0x201A
|
||||
#define WGL_ALPHA_BITS_ARB 0x201B
|
||||
#define WGL_ALPHA_SHIFT_ARB 0x201C
|
||||
#define WGL_ACCUM_BITS_ARB 0x201D
|
||||
#define WGL_ACCUM_RED_BITS_ARB 0x201E
|
||||
#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
|
||||
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
|
||||
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
|
||||
#define WGL_DEPTH_BITS_ARB 0x2022
|
||||
#define WGL_STENCIL_BITS_ARB 0x2023
|
||||
#define WGL_AUX_BUFFERS_ARB 0x2024
|
||||
#define WGL_NO_ACCELERATION_ARB 0x2025
|
||||
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
|
||||
#define WGL_FULL_ACCELERATION_ARB 0x2027
|
||||
#define WGL_SWAP_EXCHANGE_ARB 0x2028
|
||||
#define WGL_SWAP_COPY_ARB 0x2029
|
||||
#define WGL_SWAP_UNDEFINED_ARB 0x202A
|
||||
#define WGL_TYPE_RGBA_ARB 0x202B
|
||||
#define WGL_TYPE_COLORINDEX_ARB 0x202C
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||
BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||
BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#endif
|
||||
#endif /* WGL_ARB_pixel_format */
|
||||
|
||||
#ifndef WGL_ARB_pixel_format_float
|
||||
#define WGL_ARB_pixel_format_float 1
|
||||
#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
|
||||
#endif /* WGL_ARB_pixel_format_float */
|
||||
|
||||
#ifndef WGL_ARB_render_texture
|
||||
#define WGL_ARB_render_texture 1
|
||||
#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
|
||||
#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
|
||||
#define WGL_TEXTURE_FORMAT_ARB 0x2072
|
||||
#define WGL_TEXTURE_TARGET_ARB 0x2073
|
||||
#define WGL_MIPMAP_TEXTURE_ARB 0x2074
|
||||
#define WGL_TEXTURE_RGB_ARB 0x2075
|
||||
#define WGL_TEXTURE_RGBA_ARB 0x2076
|
||||
#define WGL_NO_TEXTURE_ARB 0x2077
|
||||
#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
|
||||
#define WGL_TEXTURE_1D_ARB 0x2079
|
||||
#define WGL_TEXTURE_2D_ARB 0x207A
|
||||
#define WGL_MIPMAP_LEVEL_ARB 0x207B
|
||||
#define WGL_CUBE_MAP_FACE_ARB 0x207C
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
|
||||
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
|
||||
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
|
||||
#define WGL_FRONT_LEFT_ARB 0x2083
|
||||
#define WGL_FRONT_RIGHT_ARB 0x2084
|
||||
#define WGL_BACK_LEFT_ARB 0x2085
|
||||
#define WGL_BACK_RIGHT_ARB 0x2086
|
||||
#define WGL_AUX0_ARB 0x2087
|
||||
#define WGL_AUX1_ARB 0x2088
|
||||
#define WGL_AUX2_ARB 0x2089
|
||||
#define WGL_AUX3_ARB 0x208A
|
||||
#define WGL_AUX4_ARB 0x208B
|
||||
#define WGL_AUX5_ARB 0x208C
|
||||
#define WGL_AUX6_ARB 0x208D
|
||||
#define WGL_AUX7_ARB 0x208E
|
||||
#define WGL_AUX8_ARB 0x208F
|
||||
#define WGL_AUX9_ARB 0x2090
|
||||
typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
|
||||
BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList);
|
||||
#endif
|
||||
#endif /* WGL_ARB_render_texture */
|
||||
|
||||
#ifndef WGL_ARB_robustness_application_isolation
|
||||
#define WGL_ARB_robustness_application_isolation 1
|
||||
#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
|
||||
#endif /* WGL_ARB_robustness_application_isolation */
|
||||
|
||||
#ifndef WGL_ARB_robustness_share_group_isolation
|
||||
#define WGL_ARB_robustness_share_group_isolation 1
|
||||
#endif /* WGL_ARB_robustness_share_group_isolation */
|
||||
|
||||
#ifndef WGL_3DFX_multisample
|
||||
#define WGL_3DFX_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
|
||||
#define WGL_SAMPLES_3DFX 0x2061
|
||||
#endif /* WGL_3DFX_multisample */
|
||||
|
||||
#ifndef WGL_3DL_stereo_control
|
||||
#define WGL_3DL_stereo_control 1
|
||||
#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
|
||||
#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
|
||||
#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
|
||||
#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
|
||||
typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState);
|
||||
#endif
|
||||
#endif /* WGL_3DL_stereo_control */
|
||||
|
||||
#ifndef WGL_AMD_gpu_association
|
||||
#define WGL_AMD_gpu_association 1
|
||||
#define WGL_GPU_VENDOR_AMD 0x1F00
|
||||
#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
|
||||
#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
|
||||
#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
|
||||
#define WGL_GPU_RAM_AMD 0x21A3
|
||||
#define WGL_GPU_CLOCK_AMD 0x21A4
|
||||
#define WGL_GPU_NUM_PIPES_AMD 0x21A5
|
||||
#define WGL_GPU_NUM_SIMD_AMD 0x21A6
|
||||
#define WGL_GPU_NUM_RB_AMD 0x21A7
|
||||
#define WGL_GPU_NUM_SPI_AMD 0x21A8
|
||||
typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids);
|
||||
typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, int property, GLenum dataType, UINT size, void *data);
|
||||
typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
|
||||
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList);
|
||||
typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
|
||||
typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
|
||||
typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
|
||||
typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids);
|
||||
INT WINAPI wglGetGPUInfoAMD (UINT id, int property, GLenum dataType, UINT size, void *data);
|
||||
UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc);
|
||||
HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id);
|
||||
HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList);
|
||||
BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc);
|
||||
BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc);
|
||||
HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void);
|
||||
VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
#endif
|
||||
#endif /* WGL_AMD_gpu_association */
|
||||
|
||||
#ifndef WGL_ATI_pixel_format_float
|
||||
#define WGL_ATI_pixel_format_float 1
|
||||
#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
|
||||
#endif /* WGL_ATI_pixel_format_float */
|
||||
|
||||
#ifndef WGL_EXT_colorspace
|
||||
#define WGL_EXT_colorspace 1
|
||||
#define WGL_COLORSPACE_EXT 0x3087
|
||||
#define WGL_COLORSPACE_SRGB_EXT 0x3089
|
||||
#define WGL_COLORSPACE_LINEAR_EXT 0x308A
|
||||
#endif /* WGL_EXT_colorspace */
|
||||
|
||||
#ifndef WGL_EXT_create_context_es2_profile
|
||||
#define WGL_EXT_create_context_es2_profile 1
|
||||
#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
|
||||
#endif /* WGL_EXT_create_context_es2_profile */
|
||||
|
||||
#ifndef WGL_EXT_create_context_es_profile
|
||||
#define WGL_EXT_create_context_es_profile 1
|
||||
#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
|
||||
#endif /* WGL_EXT_create_context_es_profile */
|
||||
|
||||
#ifndef WGL_EXT_depth_float
|
||||
#define WGL_EXT_depth_float 1
|
||||
#define WGL_DEPTH_FLOAT_EXT 0x2040
|
||||
#endif /* WGL_EXT_depth_float */
|
||||
|
||||
#ifndef WGL_EXT_display_color_table
|
||||
#define WGL_EXT_display_color_table 1
|
||||
typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
|
||||
typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id);
|
||||
GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length);
|
||||
GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id);
|
||||
VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id);
|
||||
#endif
|
||||
#endif /* WGL_EXT_display_color_table */
|
||||
|
||||
#ifndef WGL_EXT_extensions_string
|
||||
#define WGL_EXT_extensions_string 1
|
||||
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
const char *WINAPI wglGetExtensionsStringEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_extensions_string */
|
||||
|
||||
#ifndef WGL_EXT_framebuffer_sRGB
|
||||
#define WGL_EXT_framebuffer_sRGB 1
|
||||
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
|
||||
#endif /* WGL_EXT_framebuffer_sRGB */
|
||||
|
||||
#ifndef WGL_EXT_make_current_read
|
||||
#define WGL_EXT_make_current_read 1
|
||||
#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
|
||||
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||
HDC WINAPI wglGetCurrentReadDCEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_make_current_read */
|
||||
|
||||
#ifndef WGL_EXT_multisample
|
||||
#define WGL_EXT_multisample 1
|
||||
#define WGL_SAMPLE_BUFFERS_EXT 0x2041
|
||||
#define WGL_SAMPLES_EXT 0x2042
|
||||
#endif /* WGL_EXT_multisample */
|
||||
|
||||
#ifndef WGL_EXT_pbuffer
|
||||
#define WGL_EXT_pbuffer 1
|
||||
DECLARE_HANDLE(HPBUFFEREXT);
|
||||
#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
|
||||
#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
|
||||
#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
|
||||
#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
|
||||
#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
|
||||
#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
|
||||
#define WGL_PBUFFER_LARGEST_EXT 0x2033
|
||||
#define WGL_PBUFFER_WIDTH_EXT 0x2034
|
||||
#define WGL_PBUFFER_HEIGHT_EXT 0x2035
|
||||
typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
|
||||
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||
HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer);
|
||||
int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||
BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer);
|
||||
BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_EXT_pbuffer */
|
||||
|
||||
#ifndef WGL_EXT_pixel_format
|
||||
#define WGL_EXT_pixel_format 1
|
||||
#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
|
||||
#define WGL_DRAW_TO_WINDOW_EXT 0x2001
|
||||
#define WGL_DRAW_TO_BITMAP_EXT 0x2002
|
||||
#define WGL_ACCELERATION_EXT 0x2003
|
||||
#define WGL_NEED_PALETTE_EXT 0x2004
|
||||
#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
|
||||
#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
|
||||
#define WGL_SWAP_METHOD_EXT 0x2007
|
||||
#define WGL_NUMBER_OVERLAYS_EXT 0x2008
|
||||
#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
|
||||
#define WGL_TRANSPARENT_EXT 0x200A
|
||||
#define WGL_TRANSPARENT_VALUE_EXT 0x200B
|
||||
#define WGL_SHARE_DEPTH_EXT 0x200C
|
||||
#define WGL_SHARE_STENCIL_EXT 0x200D
|
||||
#define WGL_SHARE_ACCUM_EXT 0x200E
|
||||
#define WGL_SUPPORT_GDI_EXT 0x200F
|
||||
#define WGL_SUPPORT_OPENGL_EXT 0x2010
|
||||
#define WGL_DOUBLE_BUFFER_EXT 0x2011
|
||||
#define WGL_STEREO_EXT 0x2012
|
||||
#define WGL_PIXEL_TYPE_EXT 0x2013
|
||||
#define WGL_COLOR_BITS_EXT 0x2014
|
||||
#define WGL_RED_BITS_EXT 0x2015
|
||||
#define WGL_RED_SHIFT_EXT 0x2016
|
||||
#define WGL_GREEN_BITS_EXT 0x2017
|
||||
#define WGL_GREEN_SHIFT_EXT 0x2018
|
||||
#define WGL_BLUE_BITS_EXT 0x2019
|
||||
#define WGL_BLUE_SHIFT_EXT 0x201A
|
||||
#define WGL_ALPHA_BITS_EXT 0x201B
|
||||
#define WGL_ALPHA_SHIFT_EXT 0x201C
|
||||
#define WGL_ACCUM_BITS_EXT 0x201D
|
||||
#define WGL_ACCUM_RED_BITS_EXT 0x201E
|
||||
#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
|
||||
#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
|
||||
#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
|
||||
#define WGL_DEPTH_BITS_EXT 0x2022
|
||||
#define WGL_STENCIL_BITS_EXT 0x2023
|
||||
#define WGL_AUX_BUFFERS_EXT 0x2024
|
||||
#define WGL_NO_ACCELERATION_EXT 0x2025
|
||||
#define WGL_GENERIC_ACCELERATION_EXT 0x2026
|
||||
#define WGL_FULL_ACCELERATION_EXT 0x2027
|
||||
#define WGL_SWAP_EXCHANGE_EXT 0x2028
|
||||
#define WGL_SWAP_COPY_EXT 0x2029
|
||||
#define WGL_SWAP_UNDEFINED_EXT 0x202A
|
||||
#define WGL_TYPE_RGBA_EXT 0x202B
|
||||
#define WGL_TYPE_COLORINDEX_EXT 0x202C
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||
BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||
BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||
#endif
|
||||
#endif /* WGL_EXT_pixel_format */
|
||||
|
||||
#ifndef WGL_EXT_pixel_format_packed_float
|
||||
#define WGL_EXT_pixel_format_packed_float 1
|
||||
#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
|
||||
#endif /* WGL_EXT_pixel_format_packed_float */
|
||||
|
||||
#ifndef WGL_EXT_swap_control
|
||||
#define WGL_EXT_swap_control 1
|
||||
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||
typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglSwapIntervalEXT (int interval);
|
||||
int WINAPI wglGetSwapIntervalEXT (void);
|
||||
#endif
|
||||
#endif /* WGL_EXT_swap_control */
|
||||
|
||||
#ifndef WGL_EXT_swap_control_tear
|
||||
#define WGL_EXT_swap_control_tear 1
|
||||
#endif /* WGL_EXT_swap_control_tear */
|
||||
|
||||
#ifndef WGL_I3D_digital_video_control
|
||||
#define WGL_I3D_digital_video_control 1
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
|
||||
#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
|
||||
#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
|
||||
typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_I3D_digital_video_control */
|
||||
|
||||
#ifndef WGL_I3D_gamma
|
||||
#define WGL_I3D_gamma 1
|
||||
#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
|
||||
#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
|
||||
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
|
||||
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue);
|
||||
BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
|
||||
BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
|
||||
#endif
|
||||
#endif /* WGL_I3D_gamma */
|
||||
|
||||
#ifndef WGL_I3D_genlock
|
||||
#define WGL_I3D_genlock 1
|
||||
#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
|
||||
#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
|
||||
#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
|
||||
#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
|
||||
#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
|
||||
typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
|
||||
typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
|
||||
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
|
||||
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnableGenlockI3D (HDC hDC);
|
||||
BOOL WINAPI wglDisableGenlockI3D (HDC hDC);
|
||||
BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag);
|
||||
BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource);
|
||||
BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource);
|
||||
BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge);
|
||||
BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge);
|
||||
BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate);
|
||||
BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate);
|
||||
BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay);
|
||||
BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay);
|
||||
BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
|
||||
#endif
|
||||
#endif /* WGL_I3D_genlock */
|
||||
|
||||
#ifndef WGL_I3D_image_buffer
|
||||
#define WGL_I3D_image_buffer 1
|
||||
#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
|
||||
#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
|
||||
typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
|
||||
typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
|
||||
typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags);
|
||||
BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress);
|
||||
BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
|
||||
BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count);
|
||||
#endif
|
||||
#endif /* WGL_I3D_image_buffer */
|
||||
|
||||
#ifndef WGL_I3D_swap_frame_lock
|
||||
#define WGL_I3D_swap_frame_lock 1
|
||||
typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnableFrameLockI3D (void);
|
||||
BOOL WINAPI wglDisableFrameLockI3D (void);
|
||||
BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag);
|
||||
BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag);
|
||||
#endif
|
||||
#endif /* WGL_I3D_swap_frame_lock */
|
||||
|
||||
#ifndef WGL_I3D_swap_frame_usage
|
||||
#define WGL_I3D_swap_frame_usage 1
|
||||
typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
|
||||
typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetFrameUsageI3D (float *pUsage);
|
||||
BOOL WINAPI wglBeginFrameTrackingI3D (void);
|
||||
BOOL WINAPI wglEndFrameTrackingI3D (void);
|
||||
BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
|
||||
#endif
|
||||
#endif /* WGL_I3D_swap_frame_usage */
|
||||
|
||||
#ifndef WGL_NV_DX_interop
|
||||
#define WGL_NV_DX_interop 1
|
||||
#define WGL_ACCESS_READ_ONLY_NV 0x00000000
|
||||
#define WGL_ACCESS_READ_WRITE_NV 0x00000001
|
||||
#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
|
||||
typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void *dxObject, HANDLE shareHandle);
|
||||
typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void *dxDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
|
||||
typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
|
||||
typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
|
||||
typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access);
|
||||
typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglDXSetResourceShareHandleNV (void *dxObject, HANDLE shareHandle);
|
||||
HANDLE WINAPI wglDXOpenDeviceNV (void *dxDevice);
|
||||
BOOL WINAPI wglDXCloseDeviceNV (HANDLE hDevice);
|
||||
HANDLE WINAPI wglDXRegisterObjectNV (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
|
||||
BOOL WINAPI wglDXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject);
|
||||
BOOL WINAPI wglDXObjectAccessNV (HANDLE hObject, GLenum access);
|
||||
BOOL WINAPI wglDXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
BOOL WINAPI wglDXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
|
||||
#endif
|
||||
#endif /* WGL_NV_DX_interop */
|
||||
|
||||
#ifndef WGL_NV_DX_interop2
|
||||
#define WGL_NV_DX_interop2 1
|
||||
#endif /* WGL_NV_DX_interop2 */
|
||||
|
||||
#ifndef WGL_NV_copy_image
|
||||
#define WGL_NV_copy_image 1
|
||||
typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#endif
|
||||
#endif /* WGL_NV_copy_image */
|
||||
|
||||
#ifndef WGL_NV_delay_before_swap
|
||||
#define WGL_NV_delay_before_swap 1
|
||||
typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglDelayBeforeSwapNV (HDC hDC, GLfloat seconds);
|
||||
#endif
|
||||
#endif /* WGL_NV_delay_before_swap */
|
||||
|
||||
#ifndef WGL_NV_float_buffer
|
||||
#define WGL_NV_float_buffer 1
|
||||
#define WGL_FLOAT_COMPONENTS_NV 0x20B0
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
|
||||
#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
|
||||
#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
|
||||
#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
|
||||
#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
|
||||
#endif /* WGL_NV_float_buffer */
|
||||
|
||||
#ifndef WGL_NV_gpu_affinity
|
||||
#define WGL_NV_gpu_affinity 1
|
||||
DECLARE_HANDLE(HGPUNV);
|
||||
struct _GPU_DEVICE {
|
||||
DWORD cb;
|
||||
CHAR DeviceName[32];
|
||||
CHAR DeviceString[128];
|
||||
DWORD Flags;
|
||||
RECT rcVirtualScreen;
|
||||
};
|
||||
typedef struct _GPU_DEVICE *PGPU_DEVICE;
|
||||
#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
|
||||
#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
|
||||
typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
|
||||
typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
|
||||
typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu);
|
||||
BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
|
||||
HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList);
|
||||
BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
|
||||
BOOL WINAPI wglDeleteDCNV (HDC hdc);
|
||||
#endif
|
||||
#endif /* WGL_NV_gpu_affinity */
|
||||
|
||||
#ifndef WGL_NV_multisample_coverage
|
||||
#define WGL_NV_multisample_coverage 1
|
||||
#define WGL_COVERAGE_SAMPLES_NV 0x2042
|
||||
#define WGL_COLOR_SAMPLES_NV 0x20B9
|
||||
#endif /* WGL_NV_multisample_coverage */
|
||||
|
||||
#ifndef WGL_NV_present_video
|
||||
#define WGL_NV_present_video 1
|
||||
DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
|
||||
#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
|
||||
typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
int WINAPI wglEnumerateVideoDevicesNV (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
|
||||
BOOL WINAPI wglBindVideoDeviceNV (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
|
||||
BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue);
|
||||
#endif
|
||||
#endif /* WGL_NV_present_video */
|
||||
|
||||
#ifndef WGL_NV_render_depth_texture
|
||||
#define WGL_NV_render_depth_texture 1
|
||||
#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
|
||||
#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
|
||||
#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
|
||||
#define WGL_DEPTH_COMPONENT_NV 0x20A7
|
||||
#endif /* WGL_NV_render_depth_texture */
|
||||
|
||||
#ifndef WGL_NV_render_texture_rectangle
|
||||
#define WGL_NV_render_texture_rectangle 1
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
|
||||
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
|
||||
#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
|
||||
#endif /* WGL_NV_render_texture_rectangle */
|
||||
|
||||
#ifndef WGL_NV_swap_group
|
||||
#define WGL_NV_swap_group 1
|
||||
typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count);
|
||||
typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group);
|
||||
BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier);
|
||||
BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier);
|
||||
BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
|
||||
BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count);
|
||||
BOOL WINAPI wglResetFrameCountNV (HDC hDC);
|
||||
#endif
|
||||
#endif /* WGL_NV_swap_group */
|
||||
|
||||
#ifndef WGL_NV_vertex_array_range
|
||||
#define WGL_NV_vertex_array_range 1
|
||||
typedef void *(WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
||||
typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
void *WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
||||
void WINAPI wglFreeMemoryNV (void *pointer);
|
||||
#endif
|
||||
#endif /* WGL_NV_vertex_array_range */
|
||||
|
||||
#ifndef WGL_NV_video_capture
|
||||
#define WGL_NV_video_capture 1
|
||||
DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
|
||||
#define WGL_UNIQUE_ID_NV 0x20CE
|
||||
#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
|
||||
typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
|
||||
UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
|
||||
BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
|
||||
BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
|
||||
#endif
|
||||
#endif /* WGL_NV_video_capture */
|
||||
|
||||
#ifndef WGL_NV_video_output
|
||||
#define WGL_NV_video_output 1
|
||||
DECLARE_HANDLE(HPVIDEODEV);
|
||||
#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
|
||||
#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
|
||||
#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
|
||||
#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
|
||||
#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
|
||||
#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
|
||||
#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
|
||||
#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
|
||||
#define WGL_VIDEO_OUT_FRAME 0x20C8
|
||||
#define WGL_VIDEO_OUT_FIELD_1 0x20C9
|
||||
#define WGL_VIDEO_OUT_FIELD_2 0x20CA
|
||||
#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
|
||||
#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
|
||||
typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
|
||||
typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
|
||||
typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
|
||||
BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice);
|
||||
BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer);
|
||||
BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
|
||||
BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
|
||||
#endif
|
||||
#endif /* WGL_NV_video_output */
|
||||
|
||||
#ifndef WGL_OML_sync_control
|
||||
#define WGL_OML_sync_control 1
|
||||
typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
|
||||
typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||
BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator);
|
||||
INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||
BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||
#endif
|
||||
#endif /* WGL_OML_sync_control */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,2 @@
|
||||
DisableFormat: true
|
||||
SortIncludes: false
|
||||
@@ -0,0 +1,290 @@
|
||||
#ifndef __khrplatform_h_
|
||||
#define __khrplatform_h_
|
||||
|
||||
/*
|
||||
** Copyright (c) 2008-2018 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
|
||||
/* Khronos platform-specific types and definitions.
|
||||
*
|
||||
* The master copy of khrplatform.h is maintained in the Khronos EGL
|
||||
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
|
||||
* The last semantic modification to khrplatform.h was at commit ID:
|
||||
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
|
||||
*
|
||||
* Adopters may modify this file to suit their platform. Adopters are
|
||||
* encouraged to submit platform specific modifications to the Khronos
|
||||
* group so that they can be included in future versions of this file.
|
||||
* Please submit changes by filing pull requests or issues on
|
||||
* the EGL Registry repository linked above.
|
||||
*
|
||||
*
|
||||
* See the Implementer's Guidelines for information about where this file
|
||||
* should be located on your system and for more details of its use:
|
||||
* http://www.khronos.org/registry/implementers_guide.pdf
|
||||
*
|
||||
* This file should be included as
|
||||
* #include <KHR/khrplatform.h>
|
||||
* by Khronos client API header files that use its types and defines.
|
||||
*
|
||||
* The types in khrplatform.h should only be used to define API-specific types.
|
||||
*
|
||||
* Types defined in khrplatform.h:
|
||||
* khronos_int8_t signed 8 bit
|
||||
* khronos_uint8_t unsigned 8 bit
|
||||
* khronos_int16_t signed 16 bit
|
||||
* khronos_uint16_t unsigned 16 bit
|
||||
* khronos_int32_t signed 32 bit
|
||||
* khronos_uint32_t unsigned 32 bit
|
||||
* khronos_int64_t signed 64 bit
|
||||
* khronos_uint64_t unsigned 64 bit
|
||||
* khronos_intptr_t signed same number of bits as a pointer
|
||||
* khronos_uintptr_t unsigned same number of bits as a pointer
|
||||
* khronos_ssize_t signed size
|
||||
* khronos_usize_t unsigned size
|
||||
* khronos_float_t signed 32 bit floating point
|
||||
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
|
||||
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
|
||||
* nanoseconds
|
||||
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
|
||||
* khronos_boolean_enum_t enumerated boolean type. This should
|
||||
* only be used as a base type when a client API's boolean type is
|
||||
* an enum. Client APIs which use an integer or other type for
|
||||
* booleans cannot use this as the base type for their boolean.
|
||||
*
|
||||
* Tokens defined in khrplatform.h:
|
||||
*
|
||||
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
|
||||
*
|
||||
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
|
||||
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
|
||||
*
|
||||
* Calling convention macros defined in this file:
|
||||
* KHRONOS_APICALL
|
||||
* KHRONOS_APIENTRY
|
||||
* KHRONOS_APIATTRIBUTES
|
||||
*
|
||||
* These may be used in function prototypes as:
|
||||
*
|
||||
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
|
||||
* int arg1,
|
||||
* int arg2) KHRONOS_APIATTRIBUTES;
|
||||
*/
|
||||
|
||||
#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
|
||||
# define KHRONOS_STATIC 1
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APICALL
|
||||
*-------------------------------------------------------------------------
|
||||
* This precedes the return type of the function in the function prototype.
|
||||
*/
|
||||
#if defined(KHRONOS_STATIC)
|
||||
/* If the preprocessor constant KHRONOS_STATIC is defined, make the
|
||||
* header compatible with static linking. */
|
||||
# define KHRONOS_APICALL
|
||||
#elif defined(_WIN32)
|
||||
# define KHRONOS_APICALL __declspec(dllimport)
|
||||
#elif defined (__SYMBIAN32__)
|
||||
# define KHRONOS_APICALL IMPORT_C
|
||||
#elif defined(__ANDROID__)
|
||||
# define KHRONOS_APICALL __attribute__((visibility("default")))
|
||||
#else
|
||||
# define KHRONOS_APICALL
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIENTRY
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the return type of the function and precedes the function
|
||||
* name in the function prototype.
|
||||
*/
|
||||
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
|
||||
/* Win32 but not WinCE */
|
||||
# define KHRONOS_APIENTRY __stdcall
|
||||
#else
|
||||
# define KHRONOS_APIENTRY
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Definition of KHRONOS_APIATTRIBUTES
|
||||
*-------------------------------------------------------------------------
|
||||
* This follows the closing parenthesis of the function prototype arguments.
|
||||
*/
|
||||
#if defined (__ARMCC_2__)
|
||||
#define KHRONOS_APIATTRIBUTES __softfp
|
||||
#else
|
||||
#define KHRONOS_APIATTRIBUTES
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* basic type definitions
|
||||
*-----------------------------------------------------------------------*/
|
||||
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
|
||||
|
||||
|
||||
/*
|
||||
* Using <stdint.h>
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__VMS ) || defined(__sgi)
|
||||
|
||||
/*
|
||||
* Using <inttypes.h>
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
|
||||
|
||||
/*
|
||||
* Win32
|
||||
*/
|
||||
typedef __int32 khronos_int32_t;
|
||||
typedef unsigned __int32 khronos_uint32_t;
|
||||
typedef __int64 khronos_int64_t;
|
||||
typedef unsigned __int64 khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif defined(__sun__) || defined(__digital__)
|
||||
|
||||
/*
|
||||
* Sun or Digital
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#if defined(__arch64__) || defined(_LP64)
|
||||
typedef long int khronos_int64_t;
|
||||
typedef unsigned long int khronos_uint64_t;
|
||||
#else
|
||||
typedef long long int khronos_int64_t;
|
||||
typedef unsigned long long int khronos_uint64_t;
|
||||
#endif /* __arch64__ */
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#elif 0
|
||||
|
||||
/*
|
||||
* Hypothetical platform with no float or int64 support
|
||||
*/
|
||||
typedef int khronos_int32_t;
|
||||
typedef unsigned int khronos_uint32_t;
|
||||
#define KHRONOS_SUPPORT_INT64 0
|
||||
#define KHRONOS_SUPPORT_FLOAT 0
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* Generic fallback
|
||||
*/
|
||||
#include <stdint.h>
|
||||
typedef int32_t khronos_int32_t;
|
||||
typedef uint32_t khronos_uint32_t;
|
||||
typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Types that are (so far) the same on all platforms
|
||||
*/
|
||||
typedef signed char khronos_int8_t;
|
||||
typedef unsigned char khronos_uint8_t;
|
||||
typedef signed short int khronos_int16_t;
|
||||
typedef unsigned short int khronos_uint16_t;
|
||||
|
||||
/*
|
||||
* Types that differ between LLP64 and LP64 architectures - in LLP64,
|
||||
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
|
||||
* to be the only LLP64 architecture in current use.
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
typedef signed long long int khronos_intptr_t;
|
||||
typedef unsigned long long int khronos_uintptr_t;
|
||||
typedef signed long long int khronos_ssize_t;
|
||||
typedef unsigned long long int khronos_usize_t;
|
||||
#else
|
||||
typedef signed long int khronos_intptr_t;
|
||||
typedef unsigned long int khronos_uintptr_t;
|
||||
typedef signed long int khronos_ssize_t;
|
||||
typedef unsigned long int khronos_usize_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_FLOAT
|
||||
/*
|
||||
* Float type
|
||||
*/
|
||||
typedef float khronos_float_t;
|
||||
#endif
|
||||
|
||||
#if KHRONOS_SUPPORT_INT64
|
||||
/* Time types
|
||||
*
|
||||
* These types can be used to represent a time interval in nanoseconds or
|
||||
* an absolute Unadjusted System Time. Unadjusted System Time is the number
|
||||
* of nanoseconds since some arbitrary system event (e.g. since the last
|
||||
* time the system booted). The Unadjusted System Time is an unsigned
|
||||
* 64 bit value that wraps back to 0 every 584 years. Time intervals
|
||||
* may be either signed or unsigned.
|
||||
*/
|
||||
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
|
||||
typedef khronos_int64_t khronos_stime_nanoseconds_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dummy value used to pad enum types to 32 bits.
|
||||
*/
|
||||
#ifndef KHRONOS_MAX_ENUM
|
||||
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Enumerated boolean type
|
||||
*
|
||||
* Values other than zero should be considered to be true. Therefore
|
||||
* comparisons should not be made against KHRONOS_TRUE.
|
||||
*/
|
||||
typedef enum {
|
||||
KHRONOS_FALSE = 0,
|
||||
KHRONOS_TRUE = 1,
|
||||
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
|
||||
} khronos_boolean_enum_t;
|
||||
|
||||
#endif /* __khrplatform_h_ */
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PRIVATE_ACQUIREDIMAGE_H
|
||||
#define TNT_FILAMENT_BACKEND_PRIVATE_ACQUIREDIMAGE_H
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class CallbackHandler;
|
||||
|
||||
// This lightweight POD allows us to bundle the state required to process an ACQUIRED stream.
|
||||
// Since these types of external images need to be moved around and queued up, an encapsulation is
|
||||
// very useful.
|
||||
|
||||
struct AcquiredImage {
|
||||
void* image = nullptr;
|
||||
backend::StreamCallback callback = nullptr;
|
||||
void* userData = nullptr;
|
||||
CallbackHandler* handler = nullptr;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PRIVATE_ACQUIREDIMAGE_H
|
||||
+222
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_BUFFERDESCRIPTOR_H
|
||||
#define TNT_FILAMENT_BACKEND_BUFFERDESCRIPTOR_H
|
||||
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/ostream.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class CallbackHandler;
|
||||
|
||||
/**
|
||||
* A CPU memory-buffer descriptor, typically used to transfer data from the CPU to the GPU.
|
||||
*
|
||||
* A BufferDescriptor owns the memory buffer it references, therefore BufferDescriptor cannot
|
||||
* be copied, but can be moved.
|
||||
*
|
||||
* BufferDescriptor releases ownership of the memory-buffer when it's destroyed.
|
||||
*/
|
||||
class UTILS_PUBLIC BufferDescriptor {
|
||||
public:
|
||||
/**
|
||||
* Callback used to destroy the buffer data.
|
||||
* Guarantees:
|
||||
* Called on the main filament thread.
|
||||
*
|
||||
* Limitations:
|
||||
* Must be lightweight.
|
||||
* Must not call filament APIs.
|
||||
*/
|
||||
using Callback = void(*)(void* buffer, size_t size, void* user);
|
||||
|
||||
//! creates an empty descriptor
|
||||
BufferDescriptor() noexcept = default;
|
||||
|
||||
//! calls the callback to advertise BufferDescriptor no-longer owns the buffer
|
||||
~BufferDescriptor() noexcept {
|
||||
if (mCallback) {
|
||||
mCallback(buffer, size, mUser);
|
||||
}
|
||||
}
|
||||
|
||||
BufferDescriptor(const BufferDescriptor& rhs) = delete;
|
||||
BufferDescriptor& operator=(const BufferDescriptor& rhs) = delete;
|
||||
|
||||
BufferDescriptor(BufferDescriptor&& rhs) noexcept
|
||||
: buffer(rhs.buffer), size(rhs.size),
|
||||
mCallback(rhs.mCallback), mUser(rhs.mUser), mHandler(rhs.mHandler) {
|
||||
rhs.buffer = nullptr;
|
||||
rhs.mCallback = nullptr;
|
||||
}
|
||||
|
||||
BufferDescriptor& operator=(BufferDescriptor&& rhs) noexcept {
|
||||
if (this != &rhs) {
|
||||
buffer = rhs.buffer;
|
||||
size = rhs.size;
|
||||
mCallback = rhs.mCallback;
|
||||
mUser = rhs.mUser;
|
||||
mHandler = rhs.mHandler;
|
||||
rhs.buffer = nullptr;
|
||||
rhs.mCallback = nullptr;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a BufferDescriptor that references a CPU memory-buffer
|
||||
* @param buffer Memory address of the CPU buffer to reference
|
||||
* @param size Size of the CPU buffer in bytes
|
||||
* @param callback A callback used to release the CPU buffer from this BufferDescriptor
|
||||
* @param user An opaque user pointer passed to the callback function when it's called
|
||||
*/
|
||||
BufferDescriptor(void const* buffer, size_t size,
|
||||
Callback callback = nullptr, void* user = nullptr) noexcept
|
||||
: buffer(const_cast<void*>(buffer)), size(size), mCallback(callback), mUser(user) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a BufferDescriptor that references a CPU memory-buffer
|
||||
* @param buffer Memory address of the CPU buffer to reference
|
||||
* @param size Size of the CPU buffer in bytes
|
||||
* @param callback A callback used to release the CPU buffer from this BufferDescriptor
|
||||
* @param user An opaque user pointer passed to the callback function when it's called
|
||||
*/
|
||||
BufferDescriptor(void const* buffer, size_t size,
|
||||
CallbackHandler* handler, Callback callback, void* user = nullptr) noexcept
|
||||
: buffer(const_cast<void*>(buffer)), size(size),
|
||||
mCallback(callback), mUser(user), mHandler(handler) {
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Helper to create a BufferDescriptor that uses a KNOWN method pointer w/ object passed
|
||||
* by pointer as the callback. e.g.:
|
||||
* auto bd = BufferDescriptor::make<Foo, &Foo::method>(buffer, size, foo);
|
||||
*
|
||||
* @param buffer Memory address of the CPU buffer to reference
|
||||
* @param size Size of the CPU buffer in bytes
|
||||
* @param handler Handler to use to dispatch the callback, or nullptr for the default handler
|
||||
* @return a new BufferDescriptor
|
||||
*/
|
||||
template<typename T, void(T::*method)(void const*, size_t)>
|
||||
static BufferDescriptor make(void const* buffer, size_t size, T* data,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return {
|
||||
buffer, size,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
(static_cast<T*>(u)->*method)(b, s);
|
||||
}, data
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to create a BufferDescriptor that uses a functor as the callback.
|
||||
*
|
||||
* Caveats:
|
||||
* - DO NOT CALL setCallback() when using this helper.
|
||||
* - This make a heap allocation
|
||||
*
|
||||
* @param buffer Memory address of the CPU buffer to reference
|
||||
* @param size Size of the CPU buffer in bytes
|
||||
* @param functor functor of type f(void const* buffer, size_t size)
|
||||
* @param handler Handler to use to dispatch the callback, or nullptr for the default handler
|
||||
* @return a new BufferDescriptor
|
||||
*/
|
||||
template<typename T>
|
||||
static BufferDescriptor make(void const* buffer, size_t size, T&& functor,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return {
|
||||
buffer, size,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
T* const that = static_cast<T*>(u);
|
||||
that->operator()(b, s);
|
||||
delete that;
|
||||
},
|
||||
new T(std::forward<T>(functor))
|
||||
};
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Set or replace the release callback function
|
||||
* @param callback The new callback function
|
||||
* @param user An opaque user pointer passed to the callbeck function when it's called
|
||||
*/
|
||||
void setCallback(Callback callback, void* user = nullptr) noexcept {
|
||||
this->mCallback = callback;
|
||||
this->mUser = user;
|
||||
this->mHandler = nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set or replace the release callback function
|
||||
* @param handler The Handler to use to dispatch the callback
|
||||
* @param callback The new callback function
|
||||
* @param user An opaque user pointer passed to the callbeck function when it's called
|
||||
*/
|
||||
void setCallback(CallbackHandler* handler, Callback callback, void* user = nullptr) noexcept {
|
||||
mCallback = callback;
|
||||
mUser = user;
|
||||
mHandler = handler;
|
||||
}
|
||||
|
||||
//! Returns whether a release callback is set
|
||||
bool hasCallback() const noexcept { return mCallback != nullptr; }
|
||||
|
||||
//! Returns the currently set release callback function
|
||||
Callback getCallback() const noexcept {
|
||||
return mCallback;
|
||||
}
|
||||
|
||||
//! Returns the handler for this callback or nullptr if the default handler is to be used.
|
||||
CallbackHandler* getHandler() const noexcept {
|
||||
return mHandler;
|
||||
}
|
||||
|
||||
//! Returns the user opaque pointer associated to this BufferDescriptor
|
||||
void* getUser() const noexcept {
|
||||
return mUser;
|
||||
}
|
||||
|
||||
//! CPU memory-buffer virtual address
|
||||
void* buffer = nullptr;
|
||||
|
||||
//! CPU memory-buffer size in bytes
|
||||
size_t size = 0;
|
||||
|
||||
private:
|
||||
// callback when the buffer is consumed.
|
||||
Callback mCallback = nullptr;
|
||||
void* mUser = nullptr;
|
||||
CallbackHandler* mHandler = nullptr;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const filament::backend::BufferDescriptor& b);
|
||||
#endif
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_BUFFERDESCRIPTOR_H
|
||||
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_CALLBACKHANDLER_H
|
||||
#define TNT_FILAMENT_BACKEND_CALLBACKHANDLER_H
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
/**
|
||||
* A generic interface to dispatch callbacks.
|
||||
*
|
||||
* All APIs that take a callback as argument also take a
|
||||
* CallbackHandler* which is used to dispatch the
|
||||
* callback: CallbackHandler::post() method is called from a service thread as soon
|
||||
* as possible (this will NEVER be the main thread), CallbackHandler::post()
|
||||
* is responsible for scheduling the callback onto the thread the
|
||||
* user desires.
|
||||
*
|
||||
* This is intended to make callbacks interoperate with
|
||||
* the platform/OS's own messaging system.
|
||||
*
|
||||
* CallbackHandler* can always be nullptr in which case the default handler is used. The
|
||||
* default handler always dispatches callbacks on filament's main thread opportunistically.
|
||||
*
|
||||
* Life time:
|
||||
* ---------
|
||||
*
|
||||
* Filament make no attempts to manage the life time of the CallbackHandler* and never takes
|
||||
* ownership.
|
||||
* In particular, this means that the CallbackHandler instance must stay valid until all
|
||||
* pending callbacks are been dispatched.
|
||||
*
|
||||
* Similarly, when shutting down filament, care must be taken to ensure that all pending callbacks
|
||||
* that might access filament's state have been dispatched. Filament can no longer ensure this
|
||||
* because callback execution is the responsibility of the CallbackHandler, which is external to
|
||||
* filament.
|
||||
* Typically, the concrete CallbackHandler would have a mechanism to drain and/or wait for all
|
||||
* callbacks to be processed.
|
||||
*
|
||||
*/
|
||||
class CallbackHandler {
|
||||
public:
|
||||
using Callback = void(*)(void* user);
|
||||
|
||||
/**
|
||||
* Schedules the callback to be called onto the appropriate thread.
|
||||
* Typically this will be the application's main thead.
|
||||
*
|
||||
* Must be thread-safe.
|
||||
*/
|
||||
virtual void post(void* user, Callback callback) = 0;
|
||||
|
||||
protected:
|
||||
virtual ~CallbackHandler() = default;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_CALLBACKHANDLER_H
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PRIVATE_DRIVERAPIFORWARD_H
|
||||
#define TNT_FILAMENT_BACKEND_PRIVATE_DRIVERAPIFORWARD_H
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class CommandStream;
|
||||
|
||||
using DriverApi = CommandStream;
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PRIVATE_DRIVERAPIFORWARD_H
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_HANDLE_H
|
||||
#define TNT_FILAMENT_BACKEND_HANDLE_H
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
#include <utils/ostream.h>
|
||||
#endif
|
||||
#include <utils/debug.h>
|
||||
|
||||
#include <type_traits> // FIXME: STL headers are not allowed in public headers
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
struct HwBufferObject;
|
||||
struct HwFence;
|
||||
struct HwIndexBuffer;
|
||||
struct HwProgram;
|
||||
struct HwRenderPrimitive;
|
||||
struct HwRenderTarget;
|
||||
struct HwSamplerGroup;
|
||||
struct HwStream;
|
||||
struct HwSwapChain;
|
||||
struct HwTexture;
|
||||
struct HwTimerQuery;
|
||||
struct HwVertexBufferInfo;
|
||||
struct HwVertexBuffer;
|
||||
|
||||
/*
|
||||
* A handle to a backend resource. HandleBase is for internal use only.
|
||||
* HandleBase *must* be a trivial for the purposes of calls, that is, it cannot have user-defined
|
||||
* copy or move constructors.
|
||||
*/
|
||||
|
||||
//! \privatesection
|
||||
|
||||
class HandleBase {
|
||||
public:
|
||||
using HandleId = uint32_t;
|
||||
static constexpr const HandleId nullid = HandleId{ UINT32_MAX };
|
||||
|
||||
constexpr HandleBase() noexcept: object(nullid) {}
|
||||
|
||||
// whether this Handle is initialized
|
||||
explicit operator bool() const noexcept { return object != nullid; }
|
||||
|
||||
// clear the handle, this doesn't free associated resources
|
||||
void clear() noexcept { object = nullid; }
|
||||
|
||||
// get this handle's handleId
|
||||
HandleId getId() const noexcept { return object; }
|
||||
|
||||
// initialize a handle, for internal use only.
|
||||
explicit HandleBase(HandleId id) noexcept : object(id) {
|
||||
assert_invariant(object != nullid); // usually means an uninitialized handle is used
|
||||
}
|
||||
|
||||
protected:
|
||||
HandleBase(HandleBase const& rhs) noexcept = default;
|
||||
HandleBase& operator=(HandleBase const& rhs) noexcept = default;
|
||||
|
||||
private:
|
||||
HandleId object;
|
||||
};
|
||||
|
||||
/**
|
||||
* Type-safe handle to backend resources
|
||||
* @tparam T Type of the resource
|
||||
*/
|
||||
template<typename T>
|
||||
struct Handle : public HandleBase {
|
||||
|
||||
Handle() noexcept = default;
|
||||
|
||||
Handle(Handle const& rhs) noexcept = default;
|
||||
|
||||
Handle& operator=(Handle const& rhs) noexcept = default;
|
||||
|
||||
explicit Handle(HandleId id) noexcept : HandleBase(id) { }
|
||||
|
||||
// compare handles of the same type
|
||||
bool operator==(const Handle& rhs) const noexcept { return getId() == rhs.getId(); }
|
||||
bool operator!=(const Handle& rhs) const noexcept { return getId() != rhs.getId(); }
|
||||
bool operator<(const Handle& rhs) const noexcept { return getId() < rhs.getId(); }
|
||||
bool operator<=(const Handle& rhs) const noexcept { return getId() <= rhs.getId(); }
|
||||
bool operator>(const Handle& rhs) const noexcept { return getId() > rhs.getId(); }
|
||||
bool operator>=(const Handle& rhs) const noexcept { return getId() >= rhs.getId(); }
|
||||
|
||||
// type-safe Handle cast
|
||||
template<typename B, typename = std::enable_if_t<std::is_base_of<T, B>::value> >
|
||||
Handle(Handle<B> const& base) noexcept : HandleBase(base) { } // NOLINT(hicpp-explicit-conversions,google-explicit-constructor)
|
||||
|
||||
private:
|
||||
#if !defined(NDEBUG)
|
||||
template <typename U>
|
||||
friend utils::io::ostream& operator<<(utils::io::ostream& out, const Handle<U>& h) noexcept;
|
||||
#endif
|
||||
};
|
||||
|
||||
// Types used by the command stream
|
||||
// (we use this renaming because the macro-system doesn't deal well with "<" and ">")
|
||||
using BufferObjectHandle = Handle<HwBufferObject>;
|
||||
using FenceHandle = Handle<HwFence>;
|
||||
using IndexBufferHandle = Handle<HwIndexBuffer>;
|
||||
using ProgramHandle = Handle<HwProgram>;
|
||||
using RenderPrimitiveHandle = Handle<HwRenderPrimitive>;
|
||||
using RenderTargetHandle = Handle<HwRenderTarget>;
|
||||
using SamplerGroupHandle = Handle<HwSamplerGroup>;
|
||||
using StreamHandle = Handle<HwStream>;
|
||||
using SwapChainHandle = Handle<HwSwapChain>;
|
||||
using TextureHandle = Handle<HwTexture>;
|
||||
using TimerQueryHandle = Handle<HwTimerQuery>;
|
||||
using VertexBufferHandle = Handle<HwVertexBuffer>;
|
||||
using VertexBufferInfoHandle = Handle<HwVertexBufferInfo>;
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_HANDLE_H
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PIPELINESTATE_H
|
||||
#define TNT_FILAMENT_BACKEND_PIPELINESTATE_H
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/Handle.h>
|
||||
|
||||
#include <utils/ostream.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
//! \privatesection
|
||||
|
||||
struct PipelineState {
|
||||
Handle<HwProgram> program; // 4
|
||||
Handle<HwVertexBufferInfo> vertexBufferInfo; // 4
|
||||
RasterState rasterState; // 4
|
||||
StencilState stencilState; // 12
|
||||
PolygonOffset polygonOffset; // 8
|
||||
PrimitiveType primitiveType = PrimitiveType::TRIANGLES; // 1
|
||||
uint8_t padding[3] = {}; // 3
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const filament::backend::PipelineState& ps);
|
||||
#endif
|
||||
|
||||
#endif //TNT_FILAMENT_BACKEND_PIPELINESTATE_H
|
||||
+318
@@ -0,0 +1,318 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PIXELBUFFERDESCRIPTOR_H
|
||||
#define TNT_FILAMENT_BACKEND_PIXELBUFFERDESCRIPTOR_H
|
||||
|
||||
#include <backend/BufferDescriptor.h>
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/debug.h>
|
||||
#include <utils/ostream.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
/**
|
||||
* A descriptor to an image in main memory, typically used to transfer image data from the CPU
|
||||
* to the GPU.
|
||||
*
|
||||
* A PixelBufferDescriptor owns the memory buffer it references, therefore PixelBufferDescriptor
|
||||
* cannot be copied, but can be moved.
|
||||
*
|
||||
* PixelBufferDescriptor releases ownership of the memory-buffer when it's destroyed.
|
||||
*/
|
||||
class UTILS_PUBLIC PixelBufferDescriptor : public BufferDescriptor {
|
||||
public:
|
||||
using PixelDataFormat = backend::PixelDataFormat;
|
||||
using PixelDataType = backend::PixelDataType;
|
||||
|
||||
PixelBufferDescriptor() = default;
|
||||
|
||||
/**
|
||||
* Creates a new PixelBufferDescriptor referencing an image in main memory
|
||||
*
|
||||
* @param buffer Virtual address of the buffer containing the image
|
||||
* @param size Size in bytes of the buffer containing the image
|
||||
* @param format Format of the image pixels
|
||||
* @param type Type of the image pixels
|
||||
* @param alignment Alignment in bytes of pixel rows
|
||||
* @param left Left coordinate in pixels
|
||||
* @param top Top coordinate in pixels
|
||||
* @param stride Stride of a row in pixels
|
||||
* @param handler Handler to dispatch the callback or nullptr for the default handler
|
||||
* @param callback A callback used to release the CPU buffer
|
||||
* @param user An opaque user pointer passed to the callback function when it's called
|
||||
*/
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, uint8_t alignment,
|
||||
uint32_t left, uint32_t top, uint32_t stride,
|
||||
CallbackHandler* handler, Callback callback, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, handler, callback, user),
|
||||
left(left), top(top), stride(stride),
|
||||
format(format), type(type), alignment(alignment) {
|
||||
}
|
||||
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, uint8_t alignment = 1,
|
||||
uint32_t left = 0, uint32_t top = 0, uint32_t stride = 0,
|
||||
Callback callback = nullptr, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, callback, user),
|
||||
left(left), top(top), stride(stride),
|
||||
format(format), type(type), alignment(alignment) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new PixelBufferDescriptor referencing an image in main memory
|
||||
*
|
||||
* @param buffer Virtual address of the buffer containing the image
|
||||
* @param size Size in bytes of the buffer containing the image
|
||||
* @param format Format of the image pixels
|
||||
* @param type Type of the image pixels
|
||||
* @param handler Handler to dispatch the callback or nullptr for the default handler
|
||||
* @param callback A callback used to release the CPU buffer
|
||||
* @param user An opaque user pointer passed to the callback function when it's called
|
||||
*/
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type,
|
||||
CallbackHandler* handler, Callback callback, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, handler, callback, user),
|
||||
stride(0), format(format), type(type), alignment(1) {
|
||||
}
|
||||
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type,
|
||||
Callback callback, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, callback, user),
|
||||
stride(0), format(format), type(type), alignment(1) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new PixelBufferDescriptor referencing a compressed image in main memory
|
||||
*
|
||||
* @param buffer Virtual address of the buffer containing the image
|
||||
* @param size Size in bytes of the buffer containing the image
|
||||
* @param format Compressed format of the image
|
||||
* @param imageSize Compressed size of the image
|
||||
* @param handler Handler to dispatch the callback or nullptr for the default handler
|
||||
* @param callback A callback used to release the CPU buffer
|
||||
* @param user An opaque user pointer passed to the callback function when it's called
|
||||
*/
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
backend::CompressedPixelDataType format, uint32_t imageSize,
|
||||
CallbackHandler* handler, Callback callback, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, handler, callback, user),
|
||||
imageSize(imageSize), compressedFormat(format), type(PixelDataType::COMPRESSED),
|
||||
alignment(1) {
|
||||
}
|
||||
|
||||
PixelBufferDescriptor(void const* buffer, size_t size,
|
||||
backend::CompressedPixelDataType format, uint32_t imageSize,
|
||||
Callback callback, void* user = nullptr) noexcept
|
||||
: BufferDescriptor(buffer, size, callback, user),
|
||||
imageSize(imageSize), compressedFormat(format), type(PixelDataType::COMPRESSED),
|
||||
alignment(1) {
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
template<typename T, void(T::*method)(void const*, size_t)>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, uint8_t alignment,
|
||||
uint32_t left, uint32_t top, uint32_t stride, T* data,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, type, alignment, left, top, stride,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
(static_cast<T*>(u)->*method)(b, s); }, data };
|
||||
}
|
||||
|
||||
template<typename T, void(T::*method)(void const*, size_t)>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, T* data,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, type, handler, [](void* b, size_t s, void* u) {
|
||||
(static_cast<T*>(u)->*method)(b, s); }, data };
|
||||
}
|
||||
|
||||
template<typename T, void(T::*method)(void const*, size_t)>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
backend::CompressedPixelDataType format, uint32_t imageSize, T* data,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, imageSize, handler, [](void* b, size_t s, void* u) {
|
||||
(static_cast<T*>(u)->*method)(b, s); }, data
|
||||
};
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, uint8_t alignment,
|
||||
uint32_t left, uint32_t top, uint32_t stride, T&& functor,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, type, alignment, left, top, stride,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
T* const that = static_cast<T*>(u);
|
||||
that->operator()(b, s);
|
||||
delete that;
|
||||
}, new T(std::forward<T>(functor))
|
||||
};
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
PixelDataFormat format, PixelDataType type, T&& functor,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, type,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
T* const that = static_cast<T*>(u);
|
||||
that->operator()(b, s);
|
||||
delete that;
|
||||
}, new T(std::forward<T>(functor))
|
||||
};
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static PixelBufferDescriptor make(void const* buffer, size_t size,
|
||||
backend::CompressedPixelDataType format, uint32_t imageSize, T&& functor,
|
||||
CallbackHandler* handler = nullptr) noexcept {
|
||||
return { buffer, size, format, imageSize,
|
||||
handler, [](void* b, size_t s, void* u) {
|
||||
T* const that = static_cast<T*>(u);
|
||||
that->operator()(b, s);
|
||||
delete that;
|
||||
}, new T(std::forward<T>(functor))
|
||||
};
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Computes the size in bytes needed to fit an image of given dimensions and format
|
||||
*
|
||||
* @param format Format of the image pixels
|
||||
* @param type Type of the image pixels
|
||||
* @param stride Stride of a row in pixels
|
||||
* @param height Height of the image in rows
|
||||
* @param alignment Alignment in bytes of pixel rows
|
||||
* @return The buffer size needed to fit this image in bytes
|
||||
*/
|
||||
static constexpr size_t computeDataSize(PixelDataFormat format, PixelDataType type,
|
||||
size_t stride, size_t height, size_t alignment) noexcept {
|
||||
assert_invariant(alignment);
|
||||
|
||||
if (type == PixelDataType::COMPRESSED) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t n = 0;
|
||||
switch (format) {
|
||||
case PixelDataFormat::R:
|
||||
case PixelDataFormat::R_INTEGER:
|
||||
case PixelDataFormat::DEPTH_COMPONENT:
|
||||
case PixelDataFormat::ALPHA:
|
||||
n = 1;
|
||||
break;
|
||||
case PixelDataFormat::RG:
|
||||
case PixelDataFormat::RG_INTEGER:
|
||||
case PixelDataFormat::DEPTH_STENCIL:
|
||||
n = 2;
|
||||
break;
|
||||
case PixelDataFormat::RGB:
|
||||
case PixelDataFormat::RGB_INTEGER:
|
||||
n = 3;
|
||||
break;
|
||||
case PixelDataFormat::UNUSED: // shouldn't happen (used to be rgbm)
|
||||
case PixelDataFormat::RGBA:
|
||||
case PixelDataFormat::RGBA_INTEGER:
|
||||
n = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
size_t bpp = n;
|
||||
switch (type) {
|
||||
case PixelDataType::COMPRESSED: // Impossible -- to squash the IDE warnings
|
||||
case PixelDataType::UBYTE:
|
||||
case PixelDataType::BYTE:
|
||||
// nothing to do
|
||||
break;
|
||||
case PixelDataType::USHORT:
|
||||
case PixelDataType::SHORT:
|
||||
case PixelDataType::HALF:
|
||||
bpp *= 2;
|
||||
break;
|
||||
case PixelDataType::UINT:
|
||||
case PixelDataType::INT:
|
||||
case PixelDataType::FLOAT:
|
||||
bpp *= 4;
|
||||
break;
|
||||
case PixelDataType::UINT_10F_11F_11F_REV:
|
||||
// Special case, format must be RGB and uses 4 bytes
|
||||
assert_invariant(format == PixelDataFormat::RGB);
|
||||
bpp = 4;
|
||||
break;
|
||||
case PixelDataType::UINT_2_10_10_10_REV:
|
||||
// Special case, format must be RGBA and uses 4 bytes
|
||||
assert_invariant(format == PixelDataFormat::RGBA);
|
||||
bpp = 4;
|
||||
break;
|
||||
case PixelDataType::USHORT_565:
|
||||
// Special case, format must be RGB and uses 2 bytes
|
||||
assert_invariant(format == PixelDataFormat::RGB);
|
||||
bpp = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
size_t const bpr = bpp * stride;
|
||||
size_t const bprAligned = (bpr + (alignment - 1)) & (~alignment + 1);
|
||||
return bprAligned * height;
|
||||
}
|
||||
|
||||
//! left coordinate in pixels
|
||||
uint32_t left = 0;
|
||||
//! top coordinate in pixels
|
||||
uint32_t top = 0;
|
||||
union {
|
||||
struct {
|
||||
//! stride in pixels
|
||||
uint32_t stride;
|
||||
//! Pixel data format
|
||||
PixelDataFormat format;
|
||||
};
|
||||
struct {
|
||||
//! compressed image size
|
||||
uint32_t imageSize;
|
||||
//! compressed image format
|
||||
backend::CompressedPixelDataType compressedFormat;
|
||||
};
|
||||
};
|
||||
//! pixel data type
|
||||
PixelDataType type : 4;
|
||||
//! row alignment in bytes
|
||||
uint8_t alignment : 4;
|
||||
};
|
||||
|
||||
} // namespace backend::filament
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const filament::backend::PixelBufferDescriptor& b);
|
||||
#endif
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PIXELBUFFERDESCRIPTOR_H
|
||||
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PLATFORM_H
|
||||
#define TNT_FILAMENT_BACKEND_PLATFORM_H
|
||||
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/Invocable.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class Driver;
|
||||
|
||||
/**
|
||||
* Platform is an interface that abstracts how the backend (also referred to as Driver) is
|
||||
* created. The backend provides several common Platform concrete implementations, which are
|
||||
* selected automatically. It is possible however to provide a custom Platform when creating
|
||||
* the filament Engine.
|
||||
*/
|
||||
class UTILS_PUBLIC Platform {
|
||||
public:
|
||||
struct SwapChain {};
|
||||
struct Fence {};
|
||||
struct Stream {};
|
||||
|
||||
struct DriverConfig {
|
||||
/**
|
||||
* Size of handle arena in bytes. Setting to 0 indicates default value is to be used.
|
||||
* Driver clamps to valid values.
|
||||
*/
|
||||
size_t handleArenaSize = 0;
|
||||
|
||||
/**
|
||||
* This number of most-recently destroyed textures will be tracked for use-after-free.
|
||||
* Throws an exception when a texture is freed but still bound to a SamplerGroup and used in
|
||||
* a draw call. 0 disables completely. Currently only respected by the Metal backend.
|
||||
*/
|
||||
size_t textureUseAfterFreePoolSize = 0;
|
||||
|
||||
/**
|
||||
* Set to `true` to forcibly disable parallel shader compilation in the backend.
|
||||
* Currently only honored by the GL and Metal backends.
|
||||
*/
|
||||
bool disableParallelShaderCompile = false;
|
||||
|
||||
/**
|
||||
* Disable backend handles use-after-free checks.
|
||||
*/
|
||||
bool disableHandleUseAfterFreeCheck = false;
|
||||
};
|
||||
|
||||
Platform() noexcept;
|
||||
|
||||
virtual ~Platform() noexcept;
|
||||
|
||||
/**
|
||||
* Queries the underlying OS version.
|
||||
* @return The OS version.
|
||||
*/
|
||||
virtual int getOSVersion() const noexcept = 0;
|
||||
|
||||
/**
|
||||
* Creates and initializes the low-level API (e.g. an OpenGL context or Vulkan instance),
|
||||
* then creates the concrete Driver.
|
||||
* The caller takes ownership of the returned Driver* and must destroy it with delete.
|
||||
*
|
||||
* @param sharedContext an optional shared context. This is not meaningful with all graphic
|
||||
* APIs and platforms.
|
||||
* For EGL platforms, this is an EGLContext.
|
||||
*
|
||||
* @param driverConfig specifies driver initialization parameters
|
||||
*
|
||||
* @return nullptr on failure, or a pointer to the newly created driver.
|
||||
*/
|
||||
virtual backend::Driver* UTILS_NULLABLE createDriver(void* UTILS_NULLABLE sharedContext,
|
||||
const DriverConfig& driverConfig) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Processes the platform's event queue when called from its primary event-handling thread.
|
||||
*
|
||||
* Internally, Filament might need to call this when waiting on a fence. It is only implemented
|
||||
* on platforms that need it, such as macOS + OpenGL. Returns false if this is not the main
|
||||
* thread, or if the platform does not need to perform any special processing.
|
||||
*/
|
||||
virtual bool pumpEvents() noexcept;
|
||||
|
||||
/**
|
||||
* InsertBlobFunc is an Invocable to an application-provided function that a
|
||||
* backend implementation may use to insert a key/value pair into the
|
||||
* cache.
|
||||
*/
|
||||
using InsertBlobFunc = utils::Invocable<
|
||||
void(const void* UTILS_NONNULL key, size_t keySize,
|
||||
const void* UTILS_NONNULL value, size_t valueSize)>;
|
||||
|
||||
/*
|
||||
* RetrieveBlobFunc is an Invocable to an application-provided function that a
|
||||
* backend implementation may use to retrieve a cached value from the
|
||||
* cache.
|
||||
*/
|
||||
using RetrieveBlobFunc = utils::Invocable<
|
||||
size_t(const void* UTILS_NONNULL key, size_t keySize,
|
||||
void* UTILS_NONNULL value, size_t valueSize)>;
|
||||
|
||||
/**
|
||||
* Sets the callback functions that the backend can use to interact with caching functionality
|
||||
* provided by the application.
|
||||
*
|
||||
* Cache functions may only be specified once during the lifetime of a
|
||||
* Platform. The <insert> and <retrieve> Invocables may be called at any time and
|
||||
* from any thread from the time at which setBlobFunc is called until the time that Platform
|
||||
* is destroyed. Concurrent calls to these functions from different threads is also allowed.
|
||||
* Either function can be null.
|
||||
*
|
||||
* @param insertBlob an Invocable that inserts a new value into the cache and associates
|
||||
* it with the given key
|
||||
* @param retrieveBlob an Invocable that retrieves from the cache the value associated with a
|
||||
* given key
|
||||
*/
|
||||
void setBlobFunc(InsertBlobFunc&& insertBlob, RetrieveBlobFunc&& retrieveBlob) noexcept;
|
||||
|
||||
/**
|
||||
* @return true if insertBlob is valid.
|
||||
*/
|
||||
bool hasInsertBlobFunc() const noexcept;
|
||||
|
||||
/**
|
||||
* @return true if retrieveBlob is valid.
|
||||
*/
|
||||
bool hasRetrieveBlobFunc() const noexcept;
|
||||
|
||||
/**
|
||||
* @return true if either of insertBlob or retrieveBlob are valid.
|
||||
*/
|
||||
bool hasBlobFunc() const noexcept {
|
||||
return hasInsertBlobFunc() || hasRetrieveBlobFunc();
|
||||
}
|
||||
|
||||
/**
|
||||
* To insert a new binary value into the cache and associate it with a given
|
||||
* key, the backend implementation can call the application-provided callback
|
||||
* function insertBlob.
|
||||
*
|
||||
* No guarantees are made as to whether a given key/value pair is present in
|
||||
* the cache after the set call. If a different value has been associated
|
||||
* with the given key in the past then it is undefined which value, if any, is
|
||||
* associated with the key after the set call. Note that while there are no
|
||||
* guarantees, the cache implementation should attempt to cache the most
|
||||
* recently set value for a given key.
|
||||
*
|
||||
* @param key pointer to the beginning of the key data that is to be inserted
|
||||
* @param keySize specifies the size in byte of the data pointed to by <key>
|
||||
* @param value pointer to the beginning of the value data that is to be inserted
|
||||
* @param valueSize specifies the size in byte of the data pointed to by <value>
|
||||
*/
|
||||
void insertBlob(const void* UTILS_NONNULL key, size_t keySize,
|
||||
const void* UTILS_NONNULL value, size_t valueSize);
|
||||
|
||||
/**
|
||||
* To retrieve the binary value associated with a given key from the cache, a
|
||||
* the backend implementation can call the application-provided callback
|
||||
* function retrieveBlob.
|
||||
*
|
||||
* If the cache contains a value for the given key and its size in bytes is
|
||||
* less than or equal to <valueSize> then the value is written to the memory
|
||||
* pointed to by <value>. Otherwise nothing is written to the memory pointed
|
||||
* to by <value>.
|
||||
*
|
||||
* @param key pointer to the beginning of the key
|
||||
* @param keySize specifies the size in bytes of the binary key pointed to by <key>
|
||||
* @param value pointer to a buffer to receive the cached binary data, if it exists
|
||||
* @param valueSize specifies the size in bytes of the memory pointed to by <value>
|
||||
* @return If the cache contains a value associated with the given key then the
|
||||
* size of that binary value in bytes is returned. Otherwise 0 is returned.
|
||||
*/
|
||||
size_t retrieveBlob(const void* UTILS_NONNULL key, size_t keySize,
|
||||
void* UTILS_NONNULL value, size_t valueSize);
|
||||
|
||||
using DebugUpdateStatFunc = utils::Invocable<void(const char* UTILS_NONNULL key, uint64_t value)>;
|
||||
|
||||
/**
|
||||
* Sets the callback function that the backend can use to update backend-specific statistics
|
||||
* to aid with debugging. This callback is guaranteed to be called on the Filament driver
|
||||
* thread.
|
||||
*
|
||||
* @param debugUpdateStat an Invocable that updates debug statistics
|
||||
*/
|
||||
void setDebugUpdateStatFunc(DebugUpdateStatFunc&& debugUpdateStat) noexcept;
|
||||
|
||||
/**
|
||||
* @return true if debugUpdateStat is valid.
|
||||
*/
|
||||
bool hasDebugUpdateStatFunc() const noexcept;
|
||||
|
||||
/**
|
||||
* To track backend-specific statistics, the backend implementation can call the
|
||||
* application-provided callback function debugUpdateStatFunc to associate or update a value
|
||||
* with a given key. It is possible for this function to be called multiple times with the
|
||||
* same key, in which case newer values should overwrite older values.
|
||||
*
|
||||
* This function is guaranteed to be called only on a single thread, the Filament driver
|
||||
* thread.
|
||||
*
|
||||
* @param key a null-terminated C-string with the key of the debug statistic
|
||||
* @param value the updated value of key
|
||||
*/
|
||||
void debugUpdateStat(const char* UTILS_NONNULL key, uint64_t value);
|
||||
|
||||
private:
|
||||
InsertBlobFunc mInsertBlob;
|
||||
RetrieveBlobFunc mRetrieveBlob;
|
||||
DebugUpdateStatFunc mDebugUpdateStat;
|
||||
};
|
||||
|
||||
} // namespace filament
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PLATFORM_H
|
||||
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PRESENTCALLABLE
|
||||
#define TNT_FILAMENT_BACKEND_PRESENTCALLABLE
|
||||
|
||||
#include <utils/compiler.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
/**
|
||||
* A PresentCallable is a callable object that, when called, schedules a frame for presentation on
|
||||
* a SwapChain.
|
||||
*
|
||||
* Typically, Filament's backend is responsible scheduling a frame's presentation. However, there
|
||||
* are certain cases where the application might want to control when a frame is scheduled for
|
||||
* presentation.
|
||||
*
|
||||
* For example, on iOS, UIKit elements can be synchronized to 3D content by scheduling a present
|
||||
* within a CATransation:
|
||||
*
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
* void myFrameScheduledCallback(PresentCallable presentCallable, void* user) {
|
||||
* [CATransaction begin];
|
||||
* // Update other UI elements...
|
||||
* presentCallable();
|
||||
* [CATransaction commit];
|
||||
* }
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* To obtain a PresentCallable, set a SwapChain::FrameScheduledCallback on a SwapChain with the
|
||||
* SwapChain::setFrameScheduledCallback method. The callback is called with a PresentCallable object
|
||||
* and optional user data:
|
||||
*
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
* swapChain->setFrameScheduledCallback(myFrameScheduledCallback, nullptr);
|
||||
* if (renderer->beginFrame(swapChain)) {
|
||||
* renderer->render(view);
|
||||
* renderer->endFrame();
|
||||
* }
|
||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* @remark Only Filament's Metal backend supports PresentCallables and frame callbacks. Other
|
||||
* backends ignore the callback (which will never be called) and proceed normally.
|
||||
*
|
||||
* @remark The SwapChain::FrameScheduledCallback is called on an arbitrary thread.
|
||||
*
|
||||
* Applications *must* call each PresentCallable they receive. Each PresentCallable represents a
|
||||
* frame that is waiting to be presented. If an application fails to call a PresentCallable, a
|
||||
* memory leak could occur. To "cancel" the presentation of a frame, pass false to the
|
||||
* PresentCallable, which will cancel the presentation of the frame and release associated memory.
|
||||
*
|
||||
* @see Renderer, SwapChain::setFrameScheduledCallback
|
||||
*/
|
||||
class UTILS_PUBLIC PresentCallable {
|
||||
public:
|
||||
|
||||
using PresentFn = void(*)(bool presentFrame, void* user);
|
||||
|
||||
PresentCallable(PresentFn fn, void* user) noexcept;
|
||||
~PresentCallable() noexcept = default;
|
||||
PresentCallable(const PresentCallable& rhs) = default;
|
||||
PresentCallable& operator=(const PresentCallable& rhs) = default;
|
||||
|
||||
/**
|
||||
* Call this PresentCallable, scheduling the associated frame for presentation. Pass false for
|
||||
* presentFrame to effectively "cancel" the presentation of the frame.
|
||||
*
|
||||
* @param presentFrame if false, will not present the frame but releases associated memory
|
||||
*/
|
||||
void operator()(bool presentFrame = true) noexcept;
|
||||
|
||||
private:
|
||||
|
||||
PresentFn mPresentFn;
|
||||
void* mUser = nullptr;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @deprecated, FrameFinishedCallback has been renamed to SwapChain::FrameScheduledCallback.
|
||||
*/
|
||||
using FrameFinishedCallback UTILS_DEPRECATED = void(*)(PresentCallable callable, void* user);
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PRESENTCALLABLE
|
||||
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PRIVATE_PROGRAM_H
|
||||
#define TNT_FILAMENT_BACKEND_PRIVATE_PROGRAM_H
|
||||
|
||||
#include <utils/CString.h>
|
||||
#include <utils/FixedCapacityVector.h>
|
||||
#include <utils/Invocable.h>
|
||||
#include <utils/ostream.h>
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
#include <array> // FIXME: STL headers are not allowed in public headers
|
||||
#include <utility> // FIXME: STL headers are not allowed in public headers
|
||||
#include <variant> // FIXME: STL headers are not allowed in public headers
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class Program {
|
||||
public:
|
||||
|
||||
static constexpr size_t SHADER_TYPE_COUNT = 3;
|
||||
static constexpr size_t UNIFORM_BINDING_COUNT = CONFIG_UNIFORM_BINDING_COUNT;
|
||||
static constexpr size_t SAMPLER_BINDING_COUNT = CONFIG_SAMPLER_BINDING_COUNT;
|
||||
|
||||
struct Sampler {
|
||||
utils::CString name = {}; // name of the sampler in the shader
|
||||
uint32_t binding = 0; // binding point of the sampler in the shader
|
||||
};
|
||||
|
||||
struct SamplerGroupData {
|
||||
utils::FixedCapacityVector<Sampler> samplers;
|
||||
ShaderStageFlags stageFlags = ShaderStageFlags::ALL_SHADER_STAGE_FLAGS;
|
||||
};
|
||||
|
||||
struct Uniform {
|
||||
utils::CString name; // full qualified name of the uniform field
|
||||
uint16_t offset; // offset in 'uint32_t' into the uniform buffer
|
||||
uint8_t size; // >1 for arrays
|
||||
UniformType type; // uniform type
|
||||
};
|
||||
|
||||
using UniformBlockInfo = std::array<utils::CString, UNIFORM_BINDING_COUNT>;
|
||||
using UniformInfo = utils::FixedCapacityVector<Uniform>;
|
||||
using SamplerGroupInfo = std::array<SamplerGroupData, SAMPLER_BINDING_COUNT>;
|
||||
using ShaderBlob = utils::FixedCapacityVector<uint8_t>;
|
||||
using ShaderSource = std::array<ShaderBlob, SHADER_TYPE_COUNT>;
|
||||
|
||||
Program() noexcept;
|
||||
|
||||
Program(const Program& rhs) = delete;
|
||||
Program& operator=(const Program& rhs) = delete;
|
||||
|
||||
Program(Program&& rhs) noexcept;
|
||||
Program& operator=(Program&& rhs) noexcept = delete;
|
||||
|
||||
~Program() noexcept;
|
||||
|
||||
Program& priorityQueue(CompilerPriorityQueue priorityQueue) noexcept;
|
||||
|
||||
// sets the material name and variant for diagnostic purposes only
|
||||
Program& diagnostics(utils::CString const& name,
|
||||
utils::Invocable<utils::io::ostream&(utils::io::ostream& out)>&& logger);
|
||||
|
||||
// sets one of the program's shader (e.g. vertex, fragment)
|
||||
// string-based shaders are null terminated, consequently the size parameter must include the
|
||||
// null terminating character.
|
||||
Program& shader(ShaderStage shader, void const* data, size_t size);
|
||||
|
||||
// Note: This is only needed for GLES3.0 backends, because the layout(binding=) syntax is
|
||||
// not permitted in glsl. The backend needs a way to associate a uniform block
|
||||
// to a binding point.
|
||||
Program& uniformBlockBindings(
|
||||
utils::FixedCapacityVector<std::pair<utils::CString, uint8_t>> const& uniformBlockBindings) noexcept;
|
||||
|
||||
// Note: This is only needed for GLES2.0, this is used to emulate UBO. This function tells
|
||||
// the program everything it needs to know about the uniforms at a given binding
|
||||
Program& uniforms(uint32_t index, UniformInfo const& uniforms) noexcept;
|
||||
|
||||
// Note: This is only needed for GLES2.0.
|
||||
Program& attributes(
|
||||
utils::FixedCapacityVector<std::pair<utils::CString, uint8_t>> attributes) noexcept;
|
||||
|
||||
// sets the 'bindingPoint' sampler group descriptor for this program.
|
||||
// 'samplers' can be destroyed after this call.
|
||||
// This effectively associates a set of (BindingPoints, index) to a texture unit in the shader.
|
||||
// Or more precisely, what layout(binding=) is set to in GLSL.
|
||||
Program& setSamplerGroup(size_t bindingPoint, ShaderStageFlags stageFlags,
|
||||
Sampler const* samplers, size_t count) noexcept;
|
||||
|
||||
struct SpecializationConstant {
|
||||
using Type = std::variant<int32_t, float, bool>;
|
||||
uint32_t id; // id set in glsl
|
||||
Type value; // value and type
|
||||
};
|
||||
|
||||
Program& specializationConstants(
|
||||
utils::FixedCapacityVector<SpecializationConstant> specConstants) noexcept;
|
||||
|
||||
Program& cacheId(uint64_t cacheId) noexcept;
|
||||
|
||||
Program& multiview(bool multiview) noexcept;
|
||||
|
||||
ShaderSource const& getShadersSource() const noexcept { return mShadersSource; }
|
||||
ShaderSource& getShadersSource() noexcept { return mShadersSource; }
|
||||
|
||||
UniformBlockInfo const& getUniformBlockBindings() const noexcept { return mUniformBlocks; }
|
||||
UniformBlockInfo& getUniformBlockBindings() noexcept { return mUniformBlocks; }
|
||||
|
||||
SamplerGroupInfo const& getSamplerGroupInfo() const { return mSamplerGroups; }
|
||||
SamplerGroupInfo& getSamplerGroupInfo() { return mSamplerGroups; }
|
||||
|
||||
auto const& getBindingUniformInfo() const { return mBindingUniformInfo; }
|
||||
auto& getBindingUniformInfo() { return mBindingUniformInfo; }
|
||||
|
||||
auto const& getAttributes() const { return mAttributes; }
|
||||
auto& getAttributes() { return mAttributes; }
|
||||
|
||||
utils::CString const& getName() const noexcept { return mName; }
|
||||
utils::CString& getName() noexcept { return mName; }
|
||||
|
||||
utils::FixedCapacityVector<SpecializationConstant> const& getSpecializationConstants() const noexcept {
|
||||
return mSpecializationConstants;
|
||||
}
|
||||
utils::FixedCapacityVector<SpecializationConstant>& getSpecializationConstants() noexcept {
|
||||
return mSpecializationConstants;
|
||||
}
|
||||
|
||||
uint64_t getCacheId() const noexcept { return mCacheId; }
|
||||
|
||||
bool isMultiview() const noexcept { return mMultiview; }
|
||||
|
||||
CompilerPriorityQueue getPriorityQueue() const noexcept { return mPriorityQueue; }
|
||||
|
||||
private:
|
||||
friend utils::io::ostream& operator<<(utils::io::ostream& out, const Program& builder);
|
||||
|
||||
UniformBlockInfo mUniformBlocks = {};
|
||||
SamplerGroupInfo mSamplerGroups = {};
|
||||
ShaderSource mShadersSource;
|
||||
utils::CString mName;
|
||||
uint64_t mCacheId{};
|
||||
utils::Invocable<utils::io::ostream&(utils::io::ostream& out)> mLogger;
|
||||
utils::FixedCapacityVector<SpecializationConstant> mSpecializationConstants;
|
||||
utils::FixedCapacityVector<std::pair<utils::CString, uint8_t>> mAttributes;
|
||||
std::array<UniformInfo, Program::UNIFORM_BINDING_COUNT> mBindingUniformInfo;
|
||||
CompilerPriorityQueue mPriorityQueue = CompilerPriorityQueue::HIGH;
|
||||
// Indicates the current engine was initialized with multiview stereo, and the variant for this
|
||||
// program contains STE flag. This will be referred later for the OpenGL shader compiler to
|
||||
// determine whether shader code replacement for the num_views should be performed.
|
||||
// This variable could be promoted as a more generic variable later if other similar needs occur.
|
||||
bool mMultiview = false;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PRIVATE_PROGRAM_H
|
||||
@@ -0,0 +1,4 @@
|
||||
# include/backend Headers
|
||||
|
||||
Headers in `include/backend/` are fully public, in particular they can be included in filament's
|
||||
public headers.
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_SAMPLERDESCRIPTOR_H
|
||||
#define TNT_FILAMENT_BACKEND_SAMPLERDESCRIPTOR_H
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/Handle.h>
|
||||
|
||||
#include <utils/compiler.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
struct UTILS_PUBLIC SamplerDescriptor {
|
||||
Handle<HwTexture> t;
|
||||
SamplerParams s{};
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_SAMPLERDESCRIPTOR_H
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_TARGETBUFFERINFO_H
|
||||
#define TNT_FILAMENT_BACKEND_TARGETBUFFERINFO_H
|
||||
|
||||
#include <backend/Handle.h>
|
||||
|
||||
#include <utils/ostream.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
//! \privatesection
|
||||
|
||||
struct TargetBufferInfo {
|
||||
// texture to be used as render target
|
||||
Handle<HwTexture> handle;
|
||||
|
||||
// starting layer index for multiview. This value is only used when the `layerCount` for the
|
||||
// render target is greater than 1.
|
||||
uint8_t baseViewIndex = 0;
|
||||
|
||||
// level to be used
|
||||
uint8_t level = 0;
|
||||
|
||||
// for cubemaps and 3D textures. See TextureCubemapFace for the face->layer mapping
|
||||
uint16_t layer = 0;
|
||||
};
|
||||
|
||||
class MRT {
|
||||
public:
|
||||
static constexpr uint8_t MIN_SUPPORTED_RENDER_TARGET_COUNT = 4u;
|
||||
|
||||
// When updating this, make sure to also take care of RenderTarget.java
|
||||
static constexpr uint8_t MAX_SUPPORTED_RENDER_TARGET_COUNT = 8u;
|
||||
|
||||
private:
|
||||
TargetBufferInfo mInfos[MAX_SUPPORTED_RENDER_TARGET_COUNT];
|
||||
|
||||
public:
|
||||
TargetBufferInfo const& operator[](size_t i) const noexcept {
|
||||
return mInfos[i];
|
||||
}
|
||||
|
||||
TargetBufferInfo& operator[](size_t i) noexcept {
|
||||
return mInfos[i];
|
||||
}
|
||||
|
||||
MRT() noexcept = default;
|
||||
|
||||
MRT(TargetBufferInfo const& color) noexcept // NOLINT(hicpp-explicit-conversions)
|
||||
: mInfos{ color } {
|
||||
}
|
||||
|
||||
MRT(TargetBufferInfo const& color0, TargetBufferInfo const& color1) noexcept
|
||||
: mInfos{ color0, color1 } {
|
||||
}
|
||||
|
||||
MRT(TargetBufferInfo const& color0, TargetBufferInfo const& color1,
|
||||
TargetBufferInfo const& color2) noexcept
|
||||
: mInfos{ color0, color1, color2 } {
|
||||
}
|
||||
|
||||
MRT(TargetBufferInfo const& color0, TargetBufferInfo const& color1,
|
||||
TargetBufferInfo const& color2, TargetBufferInfo const& color3) noexcept
|
||||
: mInfos{ color0, color1, color2, color3 } {
|
||||
}
|
||||
|
||||
// this is here for backward compatibility
|
||||
MRT(Handle<HwTexture> handle, uint8_t level, uint16_t layer) noexcept
|
||||
: mInfos{{ handle, 0, level, layer }} {
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#if !defined(NDEBUG)
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const filament::backend::TargetBufferInfo& tbi);
|
||||
utils::io::ostream& operator<<(utils::io::ostream& out, const filament::backend::MRT& mrt);
|
||||
#endif
|
||||
|
||||
#endif //TNT_FILAMENT_BACKEND_TARGETBUFFERINFO_H
|
||||
+372
@@ -0,0 +1,372 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_PRIVATE_OPENGLPLATFORM_H
|
||||
#define TNT_FILAMENT_BACKEND_PRIVATE_OPENGLPLATFORM_H
|
||||
|
||||
#include <backend/AcquiredImage.h>
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/Platform.h>
|
||||
|
||||
#include <utils/compiler.h>
|
||||
#include <utils/Invocable.h>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
class Driver;
|
||||
|
||||
/**
|
||||
* A Platform interface that creates an OpenGL backend.
|
||||
*
|
||||
* WARNING: None of the methods below are allowed to change the GL state and must restore it
|
||||
* upon return.
|
||||
*
|
||||
*/
|
||||
class OpenGLPlatform : public Platform {
|
||||
protected:
|
||||
|
||||
/*
|
||||
* Derived classes can use this to instantiate the default OpenGLDriver backend.
|
||||
* This is typically called from your implementation of createDriver()
|
||||
*/
|
||||
static Driver* UTILS_NULLABLE createDefaultDriver(OpenGLPlatform* UTILS_NONNULL platform,
|
||||
void* UTILS_NULLABLE sharedContext, const DriverConfig& driverConfig);
|
||||
|
||||
~OpenGLPlatform() noexcept override;
|
||||
|
||||
public:
|
||||
|
||||
struct ExternalTexture {
|
||||
unsigned int target; // GLenum target
|
||||
unsigned int id; // GLuint id
|
||||
};
|
||||
|
||||
/**
|
||||
* Called by the driver to destroy the OpenGL context. This should clean up any windows
|
||||
* or buffers from initialization. This is for instance where `eglDestroyContext` would be
|
||||
* called.
|
||||
*/
|
||||
virtual void terminate() noexcept = 0;
|
||||
|
||||
/**
|
||||
* Return whether createSwapChain supports the SWAP_CHAIN_CONFIG_SRGB_COLORSPACE flag.
|
||||
* The default implementation returns false.
|
||||
*
|
||||
* @return true if SWAP_CHAIN_CONFIG_SRGB_COLORSPACE is supported, false otherwise.
|
||||
*/
|
||||
virtual bool isSRGBSwapChainSupported() const noexcept;
|
||||
|
||||
/**
|
||||
* Return whether protected contexts are supported by this backend.
|
||||
* If protected context are supported, the SWAP_CHAIN_CONFIG_PROTECTED_CONTENT flag can be
|
||||
* used when creating a SwapChain.
|
||||
* The default implementation returns false.
|
||||
*/
|
||||
virtual bool isProtectedContextSupported() const noexcept;
|
||||
|
||||
/**
|
||||
* Called by the driver to create a SwapChain for this driver.
|
||||
*
|
||||
* @param nativeWindow a token representing the native window. See concrete implementation
|
||||
* for details.
|
||||
* @param flags extra flags used by the implementation, see filament::SwapChain
|
||||
* @return The driver's SwapChain object.
|
||||
*
|
||||
*/
|
||||
virtual SwapChain* UTILS_NULLABLE createSwapChain(
|
||||
void* UTILS_NULLABLE nativeWindow, uint64_t flags) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Called by the driver create a headless SwapChain.
|
||||
*
|
||||
* @param width width of the buffer
|
||||
* @param height height of the buffer
|
||||
* @param flags extra flags used by the implementation, see filament::SwapChain
|
||||
* @return The driver's SwapChain object.
|
||||
*
|
||||
* TODO: we need a more generic way of passing construction parameters
|
||||
* A void* might be enough.
|
||||
*/
|
||||
virtual SwapChain* UTILS_NULLABLE createSwapChain(
|
||||
uint32_t width, uint32_t height, uint64_t flags) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Called by the driver to destroys the SwapChain
|
||||
* @param swapChain SwapChain to be destroyed.
|
||||
*/
|
||||
virtual void destroySwapChain(SwapChain* UTILS_NONNULL swapChain) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Returns the set of buffers that must be preserved up to the call to commit().
|
||||
* The default value is TargetBufferFlags::NONE.
|
||||
* The color buffer is always preserved, however ancillary buffers, such as the depth buffer
|
||||
* are generally discarded. The preserve flags can be used to make sure those ancillary
|
||||
* buffers are preserved until the call to commit.
|
||||
*
|
||||
* @param swapChain
|
||||
* @return buffer that must be preserved
|
||||
* @see commit()
|
||||
*/
|
||||
virtual TargetBufferFlags getPreservedFlags(SwapChain* UTILS_NONNULL swapChain) noexcept;
|
||||
|
||||
/**
|
||||
* Returns true if the swapchain is protected
|
||||
*/
|
||||
virtual bool isSwapChainProtected(Platform::SwapChain* UTILS_NONNULL swapChain) noexcept;
|
||||
|
||||
/**
|
||||
* Called by the driver to establish the default FBO. The default implementation returns 0.
|
||||
*
|
||||
* This method can be called either on the regular or protected OpenGL contexts and can return
|
||||
* a different or identical name, since these names exist in different namespaces.
|
||||
*
|
||||
* @return a GLuint casted to a uint32_t that is an OpenGL framebuffer object.
|
||||
*/
|
||||
virtual uint32_t getDefaultFramebufferObject() noexcept;
|
||||
|
||||
|
||||
/**
|
||||
* Type of contexts available
|
||||
*/
|
||||
enum class ContextType {
|
||||
NONE, //!< No current context
|
||||
UNPROTECTED, //!< current context is unprotected
|
||||
PROTECTED //!< current context supports protected content
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the type of the context currently in use. This value is updated by makeCurrent()
|
||||
* and therefore can be cached between calls. ContextType::PROTECTED can only be returned
|
||||
* if isProtectedContextSupported() is true.
|
||||
* @return ContextType
|
||||
*/
|
||||
virtual ContextType getCurrentContextType() const noexcept;
|
||||
|
||||
/**
|
||||
* Binds the requested context to the current thread and drawSwapChain to the default FBO
|
||||
* returned by getDefaultFramebufferObject().
|
||||
*
|
||||
* @param type type of context to bind to the current thread.
|
||||
* @param drawSwapChain SwapChain to draw to. It must be bound to the default FBO.
|
||||
* @param readSwapChain SwapChain to read from (for operation like `glBlitFramebuffer`)
|
||||
* @return true on success, false on error.
|
||||
*/
|
||||
virtual bool makeCurrent(ContextType type,
|
||||
SwapChain* UTILS_NONNULL drawSwapChain,
|
||||
SwapChain* UTILS_NONNULL readSwapChain) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Called by the driver to make the OpenGL context active on the calling thread and bind
|
||||
* the drawSwapChain to the default FBO returned by getDefaultFramebufferObject().
|
||||
* The context used is either the default context or the protected context. When a context
|
||||
* change is necessary, the preContextChange and postContextChange callbacks are called,
|
||||
* before and after the context change respectively. postContextChange is given the index
|
||||
* of the new context (0 for default and 1 for protected).
|
||||
* The default implementation just calls makeCurrent(getCurrentContextType(), SwapChain*, SwapChain*).
|
||||
*
|
||||
* @param drawSwapChain SwapChain to draw to. It must be bound to the default FBO.
|
||||
* @param readSwapChain SwapChain to read from (for operation like `glBlitFramebuffer`)
|
||||
* @param preContextChange called before the context changes
|
||||
* @param postContextChange called after the context changes
|
||||
*/
|
||||
virtual void makeCurrent(
|
||||
SwapChain* UTILS_NONNULL drawSwapChain,
|
||||
SwapChain* UTILS_NONNULL readSwapChain,
|
||||
utils::Invocable<void()> preContextChange,
|
||||
utils::Invocable<void(size_t index)> postContextChange) noexcept;
|
||||
|
||||
/**
|
||||
* Called by the driver once the current frame finishes drawing. Typically, this should present
|
||||
* the drawSwapChain. This is for example where `eglMakeCurrent()` would be called.
|
||||
* @param swapChain the SwapChain to present.
|
||||
*/
|
||||
virtual void commit(SwapChain* UTILS_NONNULL swapChain) noexcept = 0;
|
||||
|
||||
/**
|
||||
* Set the time the next committed buffer should be presented to the user at.
|
||||
*
|
||||
* @param presentationTimeInNanosecond time in the future in nanosecond. The clock used depends
|
||||
* on the concrete platform implementation.
|
||||
*/
|
||||
virtual void setPresentationTime(int64_t presentationTimeInNanosecond) noexcept;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Fence support
|
||||
|
||||
/**
|
||||
* Can this implementation create a Fence.
|
||||
* @return true if supported, false otherwise. The default implementation returns false.
|
||||
*/
|
||||
virtual bool canCreateFence() noexcept;
|
||||
|
||||
/**
|
||||
* Creates a Fence (e.g. eglCreateSyncKHR). This must be implemented if `canCreateFence`
|
||||
* returns true. Fences are used for frame pacing.
|
||||
*
|
||||
* @return A Fence object. The default implementation returns nullptr.
|
||||
*/
|
||||
virtual Fence* UTILS_NULLABLE createFence() noexcept;
|
||||
|
||||
/**
|
||||
* Destroys a Fence object. The default implementation does nothing.
|
||||
*
|
||||
* @param fence Fence to destroy.
|
||||
*/
|
||||
virtual void destroyFence(Fence* UTILS_NONNULL fence) noexcept;
|
||||
|
||||
/**
|
||||
* Waits on a Fence.
|
||||
*
|
||||
* @param fence Fence to wait on.
|
||||
* @param timeout Timeout.
|
||||
* @return Whether the fence signaled or timed out. See backend::FenceStatus.
|
||||
* The default implementation always return backend::FenceStatus::ERROR.
|
||||
*/
|
||||
virtual backend::FenceStatus waitFence(Fence* UTILS_NONNULL fence, uint64_t timeout) noexcept;
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Streaming support
|
||||
|
||||
/**
|
||||
* Creates a Stream from a native Stream.
|
||||
*
|
||||
* WARNING: This is called synchronously from the application thread (NOT the Driver thread)
|
||||
*
|
||||
* @param nativeStream The native stream, this parameter depends on the concrete implementation.
|
||||
* @return A new Stream object.
|
||||
*/
|
||||
virtual Stream* UTILS_NULLABLE createStream(void* UTILS_NULLABLE nativeStream) noexcept;
|
||||
|
||||
/**
|
||||
* Destroys a Stream.
|
||||
* @param stream Stream to destroy.
|
||||
*/
|
||||
virtual void destroyStream(Stream* UTILS_NONNULL stream) noexcept;
|
||||
|
||||
/**
|
||||
* The specified stream takes ownership of the texture (tname) object
|
||||
* Once attached, the texture is automatically updated with the Stream's content, which
|
||||
* could be a video stream for instance.
|
||||
*
|
||||
* @param stream Stream to take ownership of the texture
|
||||
* @param tname GL texture id to "bind" to the Stream.
|
||||
*/
|
||||
virtual void attach(Stream* UTILS_NONNULL stream, intptr_t tname) noexcept;
|
||||
|
||||
/**
|
||||
* Destroys the texture associated to the stream
|
||||
* @param stream Stream to detach from its texture
|
||||
*/
|
||||
virtual void detach(Stream* UTILS_NONNULL stream) noexcept;
|
||||
|
||||
/**
|
||||
* Updates the content of the texture attached to the stream.
|
||||
* @param stream Stream to update
|
||||
* @param timestamp Output parameter: Timestamp of the image bound to the texture.
|
||||
*/
|
||||
virtual void updateTexImage(Stream* UTILS_NONNULL stream,
|
||||
int64_t* UTILS_NONNULL timestamp) noexcept;
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// External Image support
|
||||
|
||||
/**
|
||||
* Creates an external texture handle. External textures don't have any parameters because
|
||||
* these are undefined until setExternalImage() is called.
|
||||
* @return a pointer to an ExternalTexture structure filled with valid token. However, the
|
||||
* implementation could just return { 0, GL_TEXTURE_2D } at this point. The actual
|
||||
* values can be delayed until setExternalImage.
|
||||
*/
|
||||
virtual ExternalTexture* UTILS_NULLABLE createExternalImageTexture() noexcept;
|
||||
|
||||
/**
|
||||
* Destroys an external texture handle and associated data.
|
||||
* @param texture a pointer to the handle to destroy.
|
||||
*/
|
||||
virtual void destroyExternalImage(ExternalTexture* UTILS_NONNULL texture) noexcept;
|
||||
|
||||
// called on the application thread to allow Filament to take ownership of the image
|
||||
|
||||
/**
|
||||
* Takes ownership of the externalImage. The externalImage parameter depends on the Platform's
|
||||
* concrete implementation. Ownership is released when destroyExternalImage() is called.
|
||||
*
|
||||
* WARNING: This is called synchronously from the application thread (NOT the Driver thread)
|
||||
*
|
||||
* @param externalImage A token representing the platform's external image.
|
||||
* @see destroyExternalImage
|
||||
*/
|
||||
virtual void retainExternalImage(void* UTILS_NONNULL externalImage) noexcept;
|
||||
|
||||
/**
|
||||
* Called to bind the platform-specific externalImage to an ExternalTexture.
|
||||
* ExternalTexture::id is guaranteed to be bound when this method is called and ExternalTexture
|
||||
* is updated with new values for id/target if necessary.
|
||||
*
|
||||
* WARNING: this method is not allowed to change the bound texture, or must restore the previous
|
||||
* binding upon return. This is to avoid problem with a backend doing state caching.
|
||||
*
|
||||
* @param externalImage The platform-specific external image.
|
||||
* @param texture an in/out pointer to ExternalTexture, id and target can be updated if necessary.
|
||||
* @return true on success, false on error.
|
||||
*/
|
||||
virtual bool setExternalImage(void* UTILS_NONNULL externalImage,
|
||||
ExternalTexture* UTILS_NONNULL texture) noexcept;
|
||||
|
||||
/**
|
||||
* The method allows platforms to convert a user-supplied external image object into a new type
|
||||
* (e.g. HardwareBuffer => EGLImage). The default implementation returns source.
|
||||
* @param source Image to transform.
|
||||
* @return Transformed image.
|
||||
*/
|
||||
virtual AcquiredImage transformAcquiredImage(AcquiredImage source) noexcept;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns true if additional OpenGL contexts can be created. Default: false.
|
||||
* @return true if additional OpenGL contexts can be created.
|
||||
* @see createContext
|
||||
*/
|
||||
virtual bool isExtraContextSupported() const noexcept;
|
||||
|
||||
/**
|
||||
* Creates an OpenGL context with the same configuration than the main context and makes it
|
||||
* current to the current thread. Must not be called from the main driver thread.
|
||||
* createContext() is only supported if isExtraContextSupported() returns true.
|
||||
* These additional contexts will be automatically terminated in terminate.
|
||||
*
|
||||
* @param shared whether the new context is shared with the main context.
|
||||
* @see isExtraContextSupported()
|
||||
* @see terminate()
|
||||
*/
|
||||
virtual void createContext(bool shared);
|
||||
|
||||
/**
|
||||
* Detach and destroy the current context if any and releases all resources associated to
|
||||
* this thread.
|
||||
*/
|
||||
virtual void releaseContext() noexcept;
|
||||
};
|
||||
|
||||
} // namespace filament
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_PRIVATE_OPENGLPLATFORM_H
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_GL_H
|
||||
#define TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_GL_H
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/platforms/OpenGLPlatform.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
struct PlatformCocoaGLImpl;
|
||||
|
||||
/**
|
||||
* A concrete implementation of OpenGLPlatform that supports macOS's Cocoa.
|
||||
*/
|
||||
class PlatformCocoaGL : public OpenGLPlatform {
|
||||
public:
|
||||
PlatformCocoaGL();
|
||||
~PlatformCocoaGL() noexcept override;
|
||||
|
||||
protected:
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Platform Interface
|
||||
|
||||
Driver* createDriver(void* sharedContext,
|
||||
const Platform::DriverConfig& driverConfig) noexcept override;
|
||||
|
||||
// Currently returns 0
|
||||
int getOSVersion() const noexcept override;
|
||||
|
||||
bool pumpEvents() noexcept override;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// OpenGLPlatform Interface
|
||||
|
||||
bool isExtraContextSupported() const noexcept override;
|
||||
void createContext(bool shared) override;
|
||||
|
||||
void terminate() noexcept override;
|
||||
|
||||
SwapChain* createSwapChain(void* nativewindow, uint64_t flags) noexcept override;
|
||||
SwapChain* createSwapChain(uint32_t width, uint32_t height, uint64_t flags) noexcept override;
|
||||
void destroySwapChain(SwapChain* swapChain) noexcept override;
|
||||
bool makeCurrent(ContextType type, SwapChain* drawSwapChain, SwapChain* readSwapChain) noexcept override;
|
||||
void commit(SwapChain* swapChain) noexcept override;
|
||||
OpenGLPlatform::ExternalTexture* createExternalImageTexture() noexcept override;
|
||||
void destroyExternalImage(ExternalTexture* texture) noexcept override;
|
||||
void retainExternalImage(void* externalImage) noexcept override;
|
||||
bool setExternalImage(void* externalImage, ExternalTexture* texture) noexcept override;
|
||||
|
||||
private:
|
||||
PlatformCocoaGLImpl* pImpl = nullptr;
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_GL_H
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_TOUCH_GL_H
|
||||
#define TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_TOUCH_GL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <backend/platforms/OpenGLPlatform.h>
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
struct PlatformCocoaTouchGLImpl;
|
||||
|
||||
class PlatformCocoaTouchGL : public OpenGLPlatform {
|
||||
public:
|
||||
PlatformCocoaTouchGL();
|
||||
~PlatformCocoaTouchGL() noexcept override;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Platform Interface
|
||||
|
||||
Driver* createDriver(void* sharedGLContext,
|
||||
const Platform::DriverConfig& driverConfig) noexcept override;
|
||||
|
||||
int getOSVersion() const noexcept final { return 0; }
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// OpenGLPlatform Interface
|
||||
|
||||
void terminate() noexcept override;
|
||||
|
||||
uint32_t getDefaultFramebufferObject() noexcept override;
|
||||
|
||||
bool isExtraContextSupported() const noexcept override;
|
||||
void createContext(bool shared) override;
|
||||
|
||||
SwapChain* createSwapChain(void* nativewindow, uint64_t flags) noexcept override;
|
||||
SwapChain* createSwapChain(uint32_t width, uint32_t height, uint64_t flags) noexcept override;
|
||||
void destroySwapChain(SwapChain* swapChain) noexcept override;
|
||||
bool makeCurrent(ContextType type, SwapChain* drawSwapChain, SwapChain* readSwapChain) noexcept override;
|
||||
void commit(SwapChain* swapChain) noexcept override;
|
||||
|
||||
OpenGLPlatform::ExternalTexture* createExternalImageTexture() noexcept override;
|
||||
void destroyExternalImage(ExternalTexture* texture) noexcept override;
|
||||
void retainExternalImage(void* externalImage) noexcept override;
|
||||
bool setExternalImage(void* externalImage, ExternalTexture* texture) noexcept override;
|
||||
|
||||
private:
|
||||
PlatformCocoaTouchGLImpl* pImpl = nullptr;
|
||||
};
|
||||
|
||||
using ContextManager = PlatformCocoaTouchGL;
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_COCOA_TOUCH_GL_H
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_EGL_H
|
||||
#define TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_EGL_H
|
||||
|
||||
#include <backend/DriverEnums.h>
|
||||
#include <backend/Platform.h>
|
||||
#include <backend/platforms/OpenGLPlatform.h>
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
#include <EGL/eglplatform.h>
|
||||
|
||||
#include <utils/Invocable.h>
|
||||
|
||||
#include <initializer_list>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace filament::backend {
|
||||
|
||||
/**
|
||||
* A concrete implementation of OpenGLPlatform that supports EGL.
|
||||
*/
|
||||
class PlatformEGL : public OpenGLPlatform {
|
||||
public:
|
||||
|
||||
PlatformEGL() noexcept;
|
||||
|
||||
// Return true if we're on an OpenGL platform (as opposed to OpenGL ES). false by default.
|
||||
virtual bool isOpenGL() const noexcept;
|
||||
|
||||
protected:
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Helper for EGL configs and attributes parameters
|
||||
|
||||
class Config {
|
||||
public:
|
||||
Config();
|
||||
Config(std::initializer_list<std::pair<EGLint, EGLint>> list);
|
||||
EGLint& operator[](EGLint name);
|
||||
EGLint operator[](EGLint name) const;
|
||||
void erase(EGLint name) noexcept;
|
||||
EGLint const* data() const noexcept {
|
||||
return reinterpret_cast<EGLint const*>(mConfig.data());
|
||||
}
|
||||
size_t size() const noexcept {
|
||||
return mConfig.size();
|
||||
}
|
||||
private:
|
||||
std::vector<std::pair<EGLint, EGLint>> mConfig = {{ EGL_NONE, EGL_NONE }};
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// Platform Interface
|
||||
|
||||
/**
|
||||
* Initializes EGL, creates the OpenGL context and returns a concrete Driver implementation
|
||||
* that supports OpenGL/OpenGL ES.
|
||||
*/
|
||||
Driver* createDriver(void* sharedContext,
|
||||
const Platform::DriverConfig& driverConfig) noexcept override;
|
||||
|
||||
/**
|
||||
* This returns zero. This method can be overridden to return something more useful.
|
||||
* @return zero
|
||||
*/
|
||||
int getOSVersion() const noexcept override;
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// OpenGLPlatform Interface
|
||||
|
||||
bool isExtraContextSupported() const noexcept override;
|
||||
void createContext(bool shared) override;
|
||||
void releaseContext() noexcept override;
|
||||
|
||||
void terminate() noexcept override;
|
||||
|
||||
bool isProtectedContextSupported() const noexcept override;
|
||||
|
||||
bool isSRGBSwapChainSupported() const noexcept override;
|
||||
SwapChain* createSwapChain(void* nativewindow, uint64_t flags) noexcept override;
|
||||
SwapChain* createSwapChain(uint32_t width, uint32_t height, uint64_t flags) noexcept override;
|
||||
void destroySwapChain(SwapChain* swapChain) noexcept override;
|
||||
bool isSwapChainProtected(SwapChain* swapChain) noexcept override;
|
||||
|
||||
ContextType getCurrentContextType() const noexcept override;
|
||||
|
||||
bool makeCurrent(ContextType type,
|
||||
SwapChain* drawSwapChain,
|
||||
SwapChain* readSwapChain) noexcept override;
|
||||
|
||||
void makeCurrent(SwapChain* drawSwapChain, SwapChain* readSwapChain,
|
||||
utils::Invocable<void()> preContextChange,
|
||||
utils::Invocable<void(size_t index)> postContextChange) noexcept override;
|
||||
|
||||
void commit(SwapChain* swapChain) noexcept override;
|
||||
|
||||
bool canCreateFence() noexcept override;
|
||||
Fence* createFence() noexcept override;
|
||||
void destroyFence(Fence* fence) noexcept override;
|
||||
FenceStatus waitFence(Fence* fence, uint64_t timeout) noexcept override;
|
||||
|
||||
OpenGLPlatform::ExternalTexture* createExternalImageTexture() noexcept override;
|
||||
void destroyExternalImage(ExternalTexture* texture) noexcept override;
|
||||
bool setExternalImage(void* externalImage, ExternalTexture* texture) noexcept override;
|
||||
|
||||
/**
|
||||
* Logs glGetError() to slog.e
|
||||
* @param name a string giving some context on the error. Typically __func__.
|
||||
*/
|
||||
static void logEglError(const char* name) noexcept;
|
||||
static void logEglError(const char* name, EGLint error) noexcept;
|
||||
static const char* getEglErrorName(EGLint error) noexcept;
|
||||
|
||||
/**
|
||||
* Calls glGetError() to clear the current error flags. logs a warning to log.w if
|
||||
* an error was pending.
|
||||
*/
|
||||
static void clearGlError() noexcept;
|
||||
|
||||
/**
|
||||
* Always use this instead of eglMakeCurrent(), as it tracks some state.
|
||||
*/
|
||||
|
||||
EGLContext getContextForType(ContextType type) const noexcept;
|
||||
|
||||
// makes the draw and read surface current without changing the current context
|
||||
EGLBoolean makeCurrent(EGLSurface drawSurface, EGLSurface readSurface) noexcept {
|
||||
return egl.makeCurrent(drawSurface, readSurface);
|
||||
}
|
||||
|
||||
// makes context current and set draw and read surfaces to EGL_NO_SURFACE
|
||||
EGLBoolean makeCurrent(EGLContext context) noexcept {
|
||||
return egl.makeCurrent(context, mEGLDummySurface, mEGLDummySurface);
|
||||
}
|
||||
|
||||
// TODO: this should probably use getters instead.
|
||||
EGLDisplay mEGLDisplay = EGL_NO_DISPLAY;
|
||||
EGLContext mEGLContext = EGL_NO_CONTEXT;
|
||||
EGLContext mEGLContextProtected = EGL_NO_CONTEXT;
|
||||
EGLSurface mEGLDummySurface = EGL_NO_SURFACE;
|
||||
ContextType mCurrentContextType = ContextType::NONE;
|
||||
// mEGLConfig is valid only if ext.egl.KHR_no_config_context is false
|
||||
EGLConfig mEGLConfig = EGL_NO_CONFIG_KHR;
|
||||
Config mContextAttribs;
|
||||
std::vector<EGLContext> mAdditionalContexts;
|
||||
|
||||
// supported extensions detected at runtime
|
||||
struct {
|
||||
struct {
|
||||
bool OES_EGL_image_external_essl3 = false;
|
||||
} gl;
|
||||
struct {
|
||||
bool ANDROID_recordable = false;
|
||||
bool KHR_create_context = false;
|
||||
bool KHR_gl_colorspace = false;
|
||||
bool KHR_no_config_context = false;
|
||||
bool KHR_surfaceless_context = false;
|
||||
bool EXT_protected_content = false;
|
||||
} egl;
|
||||
} ext;
|
||||
|
||||
struct SwapChainEGL : public Platform::SwapChain {
|
||||
EGLSurface sur = EGL_NO_SURFACE;
|
||||
Config attribs{};
|
||||
EGLNativeWindowType nativeWindow{};
|
||||
EGLConfig config{};
|
||||
uint64_t flags{};
|
||||
};
|
||||
|
||||
void initializeGlExtensions() noexcept;
|
||||
|
||||
protected:
|
||||
EGLConfig findSwapChainConfig(uint64_t flags, bool window, bool pbuffer) const;
|
||||
|
||||
private:
|
||||
class EGL {
|
||||
EGLDisplay& mEGLDisplay;
|
||||
EGLSurface mCurrentDrawSurface = EGL_NO_SURFACE;
|
||||
EGLSurface mCurrentReadSurface = EGL_NO_SURFACE;
|
||||
EGLContext mCurrentContext = EGL_NO_CONTEXT;
|
||||
public:
|
||||
explicit EGL(EGLDisplay& dpy) : mEGLDisplay(dpy) {}
|
||||
EGLBoolean makeCurrent(EGLContext context,
|
||||
EGLSurface drawSurface, EGLSurface readSurface) noexcept;
|
||||
|
||||
EGLBoolean makeCurrent(EGLSurface drawSurface, EGLSurface readSurface) noexcept {
|
||||
return makeCurrent(mCurrentContext, drawSurface, readSurface);
|
||||
}
|
||||
} egl{ mEGLDisplay };
|
||||
};
|
||||
|
||||
} // namespace filament::backend
|
||||
|
||||
#endif // TNT_FILAMENT_BACKEND_OPENGL_OPENGL_PLATFORM_EGL_H
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user