[GPU] Primitive processor with Vulkan 1.0 base cases, 24-bit indices and clamping
This commit is contained in:
parent
10ff77a24f
commit
538aa91015
|
@ -1177,40 +1177,77 @@ bool CommandProcessor::ExecutePacketType3_EVENT_WRITE_ZPD(RingBuffer* reader,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandProcessor::ExecutePacketType3_DRAW_INDX(RingBuffer* reader,
|
bool CommandProcessor::ExecutePacketType3Draw(RingBuffer* reader,
|
||||||
uint32_t packet,
|
uint32_t packet,
|
||||||
uint32_t count) {
|
const char* opcode_name,
|
||||||
// initiate fetch of index buffer and draw
|
uint32_t viz_query_condition,
|
||||||
// if dword0 != 0, this is a conditional draw based on viz query.
|
uint32_t count_remaining) {
|
||||||
|
// if viz_query_condition != 0, this is a conditional draw based on viz query.
|
||||||
// This ID matches the one issued in PM4_VIZ_QUERY
|
// This ID matches the one issued in PM4_VIZ_QUERY
|
||||||
uint32_t dword0 = reader->ReadAndSwap<uint32_t>(); // viz query info
|
// uint32_t viz_id = viz_query_condition & 0x3F;
|
||||||
// uint32_t viz_id = dword0 & 0x3F;
|
|
||||||
// when true, render conditionally based on query result
|
// when true, render conditionally based on query result
|
||||||
// uint32_t viz_use = dword0 & 0x100;
|
// uint32_t viz_use = viz_query_condition & 0x100;
|
||||||
|
|
||||||
|
assert_not_zero(count_remaining);
|
||||||
|
if (!count_remaining) {
|
||||||
|
XELOGE("{}: Packet too small, can't read VGT_DRAW_INITIATOR", opcode_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
reg::VGT_DRAW_INITIATOR vgt_draw_initiator;
|
reg::VGT_DRAW_INITIATOR vgt_draw_initiator;
|
||||||
vgt_draw_initiator.value = reader->ReadAndSwap<uint32_t>();
|
vgt_draw_initiator.value = reader->ReadAndSwap<uint32_t>();
|
||||||
|
--count_remaining;
|
||||||
WriteRegister(XE_GPU_REG_VGT_DRAW_INITIATOR, vgt_draw_initiator.value);
|
WriteRegister(XE_GPU_REG_VGT_DRAW_INITIATOR, vgt_draw_initiator.value);
|
||||||
|
|
||||||
|
bool success = true;
|
||||||
|
// TODO(Triang3l): Remove IndexBufferInfo and replace handling of all this
|
||||||
|
// with PrimitiveProcessor when the old Vulkan renderer is removed.
|
||||||
bool is_indexed = false;
|
bool is_indexed = false;
|
||||||
IndexBufferInfo index_buffer_info;
|
IndexBufferInfo index_buffer_info;
|
||||||
switch (vgt_draw_initiator.source_select) {
|
switch (vgt_draw_initiator.source_select) {
|
||||||
case xenos::SourceSelect::kDMA: {
|
case xenos::SourceSelect::kDMA: {
|
||||||
// Indexed draw.
|
// Indexed draw.
|
||||||
is_indexed = true;
|
is_indexed = true;
|
||||||
index_buffer_info.guest_base = reader->ReadAndSwap<uint32_t>();
|
|
||||||
uint32_t index_size = reader->ReadAndSwap<uint32_t>();
|
// Two separate bounds checks so if there's only one missing register
|
||||||
index_buffer_info.endianness =
|
// value out of two, one uint32_t will be skipped in the command buffer,
|
||||||
static_cast<xenos::Endian>(index_size >> 30);
|
// not two.
|
||||||
index_size &= 0x00FFFFFF;
|
assert_not_zero(count_remaining);
|
||||||
|
if (!count_remaining) {
|
||||||
|
XELOGE("{}: Packet too small, can't read VGT_DMA_BASE", opcode_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint32_t vgt_dma_base = reader->ReadAndSwap<uint32_t>();
|
||||||
|
--count_remaining;
|
||||||
|
WriteRegister(XE_GPU_REG_VGT_DMA_BASE, vgt_dma_base);
|
||||||
|
reg::VGT_DMA_SIZE vgt_dma_size;
|
||||||
|
assert_not_zero(count_remaining);
|
||||||
|
if (!count_remaining) {
|
||||||
|
XELOGE("{}: Packet too small, can't read VGT_DMA_SIZE", opcode_name);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
vgt_dma_size.value = reader->ReadAndSwap<uint32_t>();
|
||||||
|
--count_remaining;
|
||||||
|
WriteRegister(XE_GPU_REG_VGT_DMA_SIZE, vgt_dma_size.value);
|
||||||
|
|
||||||
|
uint32_t index_size_bytes =
|
||||||
|
vgt_draw_initiator.index_size == xenos::IndexFormat::kInt16
|
||||||
|
? sizeof(uint16_t)
|
||||||
|
: sizeof(uint32_t);
|
||||||
|
// The base address must already be word-aligned according to the R6xx
|
||||||
|
// documentation, but for safety.
|
||||||
|
index_buffer_info.guest_base = vgt_dma_base & ~(index_size_bytes - 1);
|
||||||
|
index_buffer_info.endianness = vgt_dma_size.swap_mode;
|
||||||
index_buffer_info.format = vgt_draw_initiator.index_size;
|
index_buffer_info.format = vgt_draw_initiator.index_size;
|
||||||
index_size *=
|
index_buffer_info.length = vgt_dma_size.num_words * index_size_bytes;
|
||||||
(vgt_draw_initiator.index_size == xenos::IndexFormat::kInt32) ? 4 : 2;
|
|
||||||
index_buffer_info.length = index_size;
|
|
||||||
index_buffer_info.count = vgt_draw_initiator.num_indices;
|
index_buffer_info.count = vgt_draw_initiator.num_indices;
|
||||||
} break;
|
} break;
|
||||||
case xenos::SourceSelect::kImmediate: {
|
case xenos::SourceSelect::kImmediate: {
|
||||||
// TODO(Triang3l): VGT_IMMED_DATA.
|
// TODO(Triang3l): VGT_IMMED_DATA.
|
||||||
|
XELOGE(
|
||||||
|
"{}: Using immediate vertex indices, which are not supported yet. "
|
||||||
|
"Report the game to Xenia developers!",
|
||||||
|
opcode_name, uint32_t(vgt_draw_initiator.source_select));
|
||||||
|
success = false;
|
||||||
assert_always();
|
assert_always();
|
||||||
} break;
|
} break;
|
||||||
case xenos::SourceSelect::kAutoIndex: {
|
case xenos::SourceSelect::kAutoIndex: {
|
||||||
|
@ -1219,71 +1256,65 @@ bool CommandProcessor::ExecutePacketType3_DRAW_INDX(RingBuffer* reader,
|
||||||
index_buffer_info.length = 0;
|
index_buffer_info.length = 0;
|
||||||
} break;
|
} break;
|
||||||
default: {
|
default: {
|
||||||
// Invalid source select.
|
// Invalid source selection.
|
||||||
assert_always();
|
success = false;
|
||||||
|
assert_unhandled_case(vgt_draw_initiator.source_select);
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto viz_query = register_file_->Get<reg::PA_SC_VIZ_QUERY>();
|
// Skip to the next command, for example, if there are immediate indexes that
|
||||||
if (viz_query.viz_query_ena && viz_query.kill_pix_post_hi_z) {
|
// we don't support yet.
|
||||||
// TODO(Triang3l): Don't drop the draw call completely if the vertex shader
|
reader->AdvanceRead(count_remaining * sizeof(uint32_t));
|
||||||
// has memexport.
|
|
||||||
// TODO(Triang3l || JoelLinn): Handle this properly in the render backends.
|
if (success) {
|
||||||
return true;
|
auto viz_query = register_file_->Get<reg::PA_SC_VIZ_QUERY>();
|
||||||
|
if (!(viz_query.viz_query_ena && viz_query.kill_pix_post_hi_z)) {
|
||||||
|
// TODO(Triang3l): Don't drop the draw call completely if the vertex
|
||||||
|
// shader has memexport.
|
||||||
|
// TODO(Triang3l || JoelLinn): Handle this properly in the render
|
||||||
|
// backends.
|
||||||
|
success = IssueDraw(
|
||||||
|
vgt_draw_initiator.prim_type, vgt_draw_initiator.num_indices,
|
||||||
|
is_indexed ? &index_buffer_info : nullptr,
|
||||||
|
xenos::IsMajorModeExplicit(vgt_draw_initiator.major_mode,
|
||||||
|
vgt_draw_initiator.prim_type));
|
||||||
|
if (!success) {
|
||||||
|
XELOGE("{}({}, {}, {}): Failed in backend", opcode_name,
|
||||||
|
vgt_draw_initiator.num_indices,
|
||||||
|
uint32_t(vgt_draw_initiator.prim_type),
|
||||||
|
uint32_t(vgt_draw_initiator.source_select));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool success =
|
return success;
|
||||||
IssueDraw(vgt_draw_initiator.prim_type, vgt_draw_initiator.num_indices,
|
}
|
||||||
is_indexed ? &index_buffer_info : nullptr,
|
|
||||||
xenos::IsMajorModeExplicit(vgt_draw_initiator.major_mode,
|
|
||||||
vgt_draw_initiator.prim_type));
|
|
||||||
if (!success) {
|
|
||||||
XELOGE("PM4_DRAW_INDX({}, {}, {}): Failed in backend",
|
|
||||||
vgt_draw_initiator.num_indices,
|
|
||||||
uint32_t(vgt_draw_initiator.prim_type),
|
|
||||||
uint32_t(vgt_draw_initiator.source_select));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
bool CommandProcessor::ExecutePacketType3_DRAW_INDX(RingBuffer* reader,
|
||||||
|
uint32_t packet,
|
||||||
|
uint32_t count) {
|
||||||
|
// "initiate fetch of index buffer and draw"
|
||||||
|
// Generally used by Xbox 360 Direct3D 9 for kDMA and kAutoIndex sources.
|
||||||
|
// With a viz query token as the first one.
|
||||||
|
uint32_t count_remaining = count;
|
||||||
|
assert_not_zero(count_remaining);
|
||||||
|
if (!count_remaining) {
|
||||||
|
XELOGE("PM4_DRAW_INDX: Packet too small, can't read the viz query token");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint32_t viz_query_condition = reader->ReadAndSwap<uint32_t>();
|
||||||
|
--count_remaining;
|
||||||
|
return ExecutePacketType3Draw(reader, packet, "PM4_DRAW_INDX",
|
||||||
|
viz_query_condition, count_remaining);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandProcessor::ExecutePacketType3_DRAW_INDX_2(RingBuffer* reader,
|
bool CommandProcessor::ExecutePacketType3_DRAW_INDX_2(RingBuffer* reader,
|
||||||
uint32_t packet,
|
uint32_t packet,
|
||||||
uint32_t count) {
|
uint32_t count) {
|
||||||
// draw using supplied indices in packet
|
// "draw using supplied indices in packet"
|
||||||
reg::VGT_DRAW_INITIATOR vgt_draw_initiator;
|
// Generally used by Xbox 360 Direct3D 9 for kAutoIndex source.
|
||||||
vgt_draw_initiator.value = reader->ReadAndSwap<uint32_t>();
|
// No viz query token.
|
||||||
WriteRegister(XE_GPU_REG_VGT_DRAW_INITIATOR, vgt_draw_initiator.value);
|
return ExecutePacketType3Draw(reader, packet, "PM4_DRAW_INDX_2", 0, count);
|
||||||
assert_true(vgt_draw_initiator.source_select ==
|
|
||||||
xenos::SourceSelect::kAutoIndex);
|
|
||||||
// Index buffer unused as automatic.
|
|
||||||
// uint32_t indices_size =
|
|
||||||
// vgt_draw_initiator.num_indices *
|
|
||||||
// (vgt_draw_initiator.index_size == xenos::IndexFormat::kInt32 ? 4
|
|
||||||
// : 2);
|
|
||||||
// uint32_t index_ptr = reader->ptr();
|
|
||||||
// TODO(Triang3l): VGT_IMMED_DATA.
|
|
||||||
reader->AdvanceRead((count - 1) * sizeof(uint32_t));
|
|
||||||
|
|
||||||
auto viz_query = register_file_->Get<reg::PA_SC_VIZ_QUERY>();
|
|
||||||
if (viz_query.viz_query_ena && viz_query.kill_pix_post_hi_z) {
|
|
||||||
// TODO(Triang3l): Don't drop the draw call completely if the vertex shader
|
|
||||||
// has memexport.
|
|
||||||
// TODO(Triang3l || JoelLinn): Handle this properly in the render backends.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool success = IssueDraw(
|
|
||||||
vgt_draw_initiator.prim_type, vgt_draw_initiator.num_indices, nullptr,
|
|
||||||
xenos::IsMajorModeExplicit(vgt_draw_initiator.major_mode,
|
|
||||||
vgt_draw_initiator.prim_type));
|
|
||||||
if (!success) {
|
|
||||||
XELOGE("PM4_DRAW_INDX_IMM({}, {}): Failed in backend",
|
|
||||||
vgt_draw_initiator.num_indices,
|
|
||||||
uint32_t(vgt_draw_initiator.prim_type));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandProcessor::ExecutePacketType3_SET_CONSTANT(RingBuffer* reader,
|
bool CommandProcessor::ExecutePacketType3_SET_CONSTANT(RingBuffer* reader,
|
||||||
|
|
|
@ -218,6 +218,10 @@ class CommandProcessor {
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
bool ExecutePacketType3_EVENT_WRITE_ZPD(RingBuffer* reader, uint32_t packet,
|
bool ExecutePacketType3_EVENT_WRITE_ZPD(RingBuffer* reader, uint32_t packet,
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
|
bool ExecutePacketType3Draw(RingBuffer* reader, uint32_t packet,
|
||||||
|
const char* opcode_name,
|
||||||
|
uint32_t viz_query_condition,
|
||||||
|
uint32_t count_remaining);
|
||||||
bool ExecutePacketType3_DRAW_INDX(RingBuffer* reader, uint32_t packet,
|
bool ExecutePacketType3_DRAW_INDX(RingBuffer* reader, uint32_t packet,
|
||||||
uint32_t count);
|
uint32_t count);
|
||||||
bool ExecutePacketType3_DRAW_INDX_2(RingBuffer* reader, uint32_t packet,
|
bool ExecutePacketType3_DRAW_INDX_2(RingBuffer* reader, uint32_t packet,
|
||||||
|
|
|
@ -81,7 +81,7 @@ void D3D12CommandProcessor::RequestFrameTrace(
|
||||||
void D3D12CommandProcessor::TracePlaybackWroteMemory(uint32_t base_ptr,
|
void D3D12CommandProcessor::TracePlaybackWroteMemory(uint32_t base_ptr,
|
||||||
uint32_t length) {
|
uint32_t length) {
|
||||||
shared_memory_->MemoryInvalidationCallback(base_ptr, length, true);
|
shared_memory_->MemoryInvalidationCallback(base_ptr, length, true);
|
||||||
primitive_converter_->MemoryInvalidationCallback(base_ptr, length, true);
|
primitive_processor_->MemoryInvalidationCallback(base_ptr, length, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D12CommandProcessor::RestoreEdramSnapshot(const void* snapshot) {
|
void D3D12CommandProcessor::RestoreEdramSnapshot(const void* snapshot) {
|
||||||
|
@ -1194,6 +1194,13 @@ bool D3D12CommandProcessor::SetupContext() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
primitive_processor_ = std::make_unique<D3D12PrimitiveProcessor>(
|
||||||
|
*register_file_, *memory_, trace_writer_, *shared_memory_, *this);
|
||||||
|
if (!primitive_processor_->Initialize()) {
|
||||||
|
XELOGE("Failed to initialize the geometric primitive processor");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
texture_cache_ = std::make_unique<TextureCache>(
|
texture_cache_ = std::make_unique<TextureCache>(
|
||||||
*this, *register_file_, *shared_memory_, bindless_resources_used_,
|
*this, *register_file_, *shared_memory_, bindless_resources_used_,
|
||||||
render_target_cache_->GetResolutionScale());
|
render_target_cache_->GetResolutionScale());
|
||||||
|
@ -1210,13 +1217,6 @@ bool D3D12CommandProcessor::SetupContext() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
primitive_converter_ = std::make_unique<PrimitiveConverter>(
|
|
||||||
*this, *register_file_, *memory_, trace_writer_);
|
|
||||||
if (!primitive_converter_->Initialize()) {
|
|
||||||
XELOGE("Failed to initialize the geometric primitive converter");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
D3D12_HEAP_FLAGS heap_flag_create_not_zeroed =
|
D3D12_HEAP_FLAGS heap_flag_create_not_zeroed =
|
||||||
provider.GetHeapFlagCreateNotZeroed();
|
provider.GetHeapFlagCreateNotZeroed();
|
||||||
|
|
||||||
|
@ -1529,12 +1529,12 @@ void D3D12CommandProcessor::ShutdownContext() {
|
||||||
ui::d3d12::util::ReleaseAndNull(gamma_ramp_upload_);
|
ui::d3d12::util::ReleaseAndNull(gamma_ramp_upload_);
|
||||||
ui::d3d12::util::ReleaseAndNull(gamma_ramp_texture_);
|
ui::d3d12::util::ReleaseAndNull(gamma_ramp_texture_);
|
||||||
|
|
||||||
primitive_converter_.reset();
|
|
||||||
|
|
||||||
pipeline_cache_.reset();
|
pipeline_cache_.reset();
|
||||||
|
|
||||||
texture_cache_.reset();
|
texture_cache_.reset();
|
||||||
|
|
||||||
|
primitive_processor_.reset();
|
||||||
|
|
||||||
shared_memory_.reset();
|
shared_memory_.reset();
|
||||||
|
|
||||||
// Shut down binding - bindless descriptors may be owned by subsystems like
|
// Shut down binding - bindless descriptors may be owned by subsystems like
|
||||||
|
@ -1842,7 +1842,7 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vertex shader.
|
// Vertex shader analysis.
|
||||||
auto vertex_shader = static_cast<D3D12Shader*>(active_vertex_shader());
|
auto vertex_shader = static_cast<D3D12Shader*>(active_vertex_shader());
|
||||||
if (!vertex_shader) {
|
if (!vertex_shader) {
|
||||||
// Always need a vertex shader.
|
// Always need a vertex shader.
|
||||||
|
@ -1850,16 +1850,9 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
}
|
}
|
||||||
pipeline_cache_->AnalyzeShaderUcode(*vertex_shader);
|
pipeline_cache_->AnalyzeShaderUcode(*vertex_shader);
|
||||||
bool memexport_used_vertex = vertex_shader->is_valid_memexport_used();
|
bool memexport_used_vertex = vertex_shader->is_valid_memexport_used();
|
||||||
DxbcShaderTranslator::Modification vertex_shader_modification;
|
|
||||||
pipeline_cache_->GetCurrentShaderModification(*vertex_shader,
|
|
||||||
vertex_shader_modification);
|
|
||||||
bool tessellated =
|
|
||||||
vertex_shader_modification.vertex.host_vertex_shader_type !=
|
|
||||||
Shader::HostVertexShaderType::kVertex;
|
|
||||||
bool primitive_polygonal =
|
|
||||||
xenos::IsPrimitivePolygonal(tessellated, primitive_type);
|
|
||||||
|
|
||||||
// Pixel shader.
|
// Pixel shader analysis.
|
||||||
|
bool primitive_polygonal = draw_util::IsPrimitivePolygonal(regs);
|
||||||
bool is_rasterization_done =
|
bool is_rasterization_done =
|
||||||
draw_util::IsRasterizationPotentiallyDone(regs, primitive_polygonal);
|
draw_util::IsRasterizationPotentiallyDone(regs, primitive_polygonal);
|
||||||
D3D12Shader* pixel_shader = nullptr;
|
D3D12Shader* pixel_shader = nullptr;
|
||||||
|
@ -1884,23 +1877,31 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool memexport_used_pixel;
|
bool memexport_used_pixel =
|
||||||
DxbcShaderTranslator::Modification pixel_shader_modification;
|
pixel_shader && pixel_shader->is_valid_memexport_used();
|
||||||
if (pixel_shader) {
|
|
||||||
memexport_used_pixel = pixel_shader->is_valid_memexport_used();
|
|
||||||
if (!pipeline_cache_->GetCurrentShaderModification(
|
|
||||||
*pixel_shader, pixel_shader_modification)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
memexport_used_pixel = false;
|
|
||||||
pixel_shader_modification = DxbcShaderTranslator::Modification(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool memexport_used = memexport_used_vertex || memexport_used_pixel;
|
bool memexport_used = memexport_used_vertex || memexport_used_pixel;
|
||||||
|
|
||||||
BeginSubmission(true);
|
BeginSubmission(true);
|
||||||
|
|
||||||
|
// Process primitives.
|
||||||
|
PrimitiveProcessor::ProcessingResult primitive_processing_result;
|
||||||
|
if (!primitive_processor_->Process(primitive_processing_result)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!primitive_processing_result.host_draw_vertex_count) {
|
||||||
|
// Nothing to draw.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shader modifications.
|
||||||
|
DxbcShaderTranslator::Modification vertex_shader_modification =
|
||||||
|
pipeline_cache_->GetCurrentVertexShaderModification(
|
||||||
|
*vertex_shader, primitive_processing_result.host_vertex_shader_type);
|
||||||
|
DxbcShaderTranslator::Modification pixel_shader_modification =
|
||||||
|
pixel_shader
|
||||||
|
? pipeline_cache_->GetCurrentPixelShaderModification(*pixel_shader)
|
||||||
|
: DxbcShaderTranslator::Modification(0);
|
||||||
|
|
||||||
// Set up the render targets - this may perform dispatches and draws.
|
// Set up the render targets - this may perform dispatches and draws.
|
||||||
uint32_t pixel_shader_writes_color_targets =
|
uint32_t pixel_shader_writes_color_targets =
|
||||||
pixel_shader ? pixel_shader->writes_color_targets() : 0;
|
pixel_shader ? pixel_shader->writes_color_targets() : 0;
|
||||||
|
@ -1909,66 +1910,6 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up primitive topology.
|
|
||||||
bool indexed = index_buffer_info != nullptr && index_buffer_info->guest_base;
|
|
||||||
xenos::PrimitiveType primitive_type_converted;
|
|
||||||
D3D_PRIMITIVE_TOPOLOGY primitive_topology;
|
|
||||||
if (tessellated) {
|
|
||||||
primitive_type_converted = primitive_type;
|
|
||||||
switch (primitive_type_converted) {
|
|
||||||
// TODO(Triang3l): Support all kinds of patches if found in games.
|
|
||||||
case xenos::PrimitiveType::kTriangleList:
|
|
||||||
case xenos::PrimitiveType::kTrianglePatch:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kQuadList:
|
|
||||||
case xenos::PrimitiveType::kQuadPatch:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
primitive_type_converted =
|
|
||||||
PrimitiveConverter::GetReplacementPrimitiveType(primitive_type);
|
|
||||||
switch (primitive_type_converted) {
|
|
||||||
case xenos::PrimitiveType::kPointList:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kLineList:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINELIST;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kLineStrip:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kTriangleList:
|
|
||||||
case xenos::PrimitiveType::kRectangleList:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kTriangleStrip:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kQuadList:
|
|
||||||
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SetPrimitiveTopology(primitive_topology);
|
|
||||||
uint32_t line_loop_closing_index;
|
|
||||||
if (primitive_type == xenos::PrimitiveType::kLineLoop && !indexed &&
|
|
||||||
index_count >= 3) {
|
|
||||||
// Add a vertex to close the loop, and make the vertex shader replace its
|
|
||||||
// index (before adding the offset) with 0 to fetch the first vertex again.
|
|
||||||
// For indexed line loops, the primitive converter will add the vertex.
|
|
||||||
line_loop_closing_index = index_count;
|
|
||||||
++index_count;
|
|
||||||
} else {
|
|
||||||
// Replace index 0 with 0 (do nothing) otherwise.
|
|
||||||
line_loop_closing_index = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Translate the shaders and create the pipeline if needed.
|
// Translate the shaders and create the pipeline if needed.
|
||||||
D3D12Shader::D3D12Translation* vertex_shader_translation =
|
D3D12Shader::D3D12Translation* vertex_shader_translation =
|
||||||
static_cast<D3D12Shader::D3D12Translation*>(
|
static_cast<D3D12Shader::D3D12Translation*>(
|
||||||
|
@ -1995,9 +1936,7 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
ID3D12RootSignature* root_signature;
|
ID3D12RootSignature* root_signature;
|
||||||
if (!pipeline_cache_->ConfigurePipeline(
|
if (!pipeline_cache_->ConfigurePipeline(
|
||||||
vertex_shader_translation, pixel_shader_translation,
|
vertex_shader_translation, pixel_shader_translation,
|
||||||
primitive_type_converted,
|
primitive_processing_result, bound_depth_and_color_render_target_bits,
|
||||||
indexed ? index_buffer_info->format : xenos::IndexFormat::kInt16,
|
|
||||||
bound_depth_and_color_render_target_bits,
|
|
||||||
bound_depth_and_color_render_target_formats, &pipeline_handle,
|
bound_depth_and_color_render_target_formats, &pipeline_handle,
|
||||||
&root_signature)) {
|
&root_signature)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -2048,9 +1987,10 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
// Update system constants before uploading them.
|
// Update system constants before uploading them.
|
||||||
// TODO(Triang3l): With ROV, pass the disabled render target mask for safety.
|
// TODO(Triang3l): With ROV, pass the disabled render target mask for safety.
|
||||||
UpdateSystemConstantValues(
|
UpdateSystemConstantValues(
|
||||||
memexport_used, primitive_polygonal, line_loop_closing_index,
|
memexport_used, primitive_polygonal,
|
||||||
indexed ? index_buffer_info->endianness : xenos::Endian::kNone,
|
primitive_processing_result.line_loop_closing_index,
|
||||||
viewport_info, used_texture_mask,
|
primitive_processing_result.host_index_endian, viewport_info,
|
||||||
|
used_texture_mask,
|
||||||
pixel_shader ? GetCurrentColorMask(pixel_shader->writes_color_targets())
|
pixel_shader ? GetCurrentColorMask(pixel_shader->writes_color_targets())
|
||||||
: 0);
|
: 0);
|
||||||
|
|
||||||
|
@ -2206,112 +2146,139 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actually draw.
|
// Primitive topology.
|
||||||
if (indexed) {
|
D3D_PRIMITIVE_TOPOLOGY primitive_topology;
|
||||||
uint32_t index_size =
|
if (primitive_processing_result.IsTessellated()) {
|
||||||
index_buffer_info->format == xenos::IndexFormat::kInt32
|
switch (primitive_processing_result.host_primitive_type) {
|
||||||
? sizeof(uint32_t)
|
// TODO(Triang3l): Support all primitive types.
|
||||||
: sizeof(uint16_t);
|
case xenos::PrimitiveType::kTriangleList:
|
||||||
assert_false(index_buffer_info->guest_base & (index_size - 1));
|
case xenos::PrimitiveType::kTrianglePatch:
|
||||||
uint32_t index_base =
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST;
|
||||||
index_buffer_info->guest_base & 0x1FFFFFFF & ~(index_size - 1);
|
break;
|
||||||
D3D12_INDEX_BUFFER_VIEW index_buffer_view;
|
case xenos::PrimitiveType::kQuadList:
|
||||||
index_buffer_view.Format =
|
case xenos::PrimitiveType::kQuadPatch:
|
||||||
index_buffer_info->format == xenos::IndexFormat::kInt32
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST;
|
||||||
? DXGI_FORMAT_R32_UINT
|
break;
|
||||||
: DXGI_FORMAT_R16_UINT;
|
default:
|
||||||
PrimitiveConverter::ConversionResult conversion_result;
|
|
||||||
uint32_t converted_index_count;
|
|
||||||
if (tessellated) {
|
|
||||||
conversion_result =
|
|
||||||
PrimitiveConverter::ConversionResult::kConversionNotNeeded;
|
|
||||||
} else {
|
|
||||||
conversion_result = primitive_converter_->ConvertPrimitives(
|
|
||||||
primitive_type, index_buffer_info->guest_base, index_count,
|
|
||||||
index_buffer_info->format, index_buffer_info->endianness,
|
|
||||||
index_buffer_view.BufferLocation, converted_index_count);
|
|
||||||
if (conversion_result == PrimitiveConverter::ConversionResult::kFailed) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (conversion_result ==
|
|
||||||
PrimitiveConverter::ConversionResult::kPrimitiveEmpty) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ID3D12Resource* scratch_index_buffer = nullptr;
|
|
||||||
if (conversion_result == PrimitiveConverter::ConversionResult::kConverted) {
|
|
||||||
index_buffer_view.SizeInBytes = converted_index_count * index_size;
|
|
||||||
index_count = converted_index_count;
|
|
||||||
} else {
|
|
||||||
uint32_t index_buffer_size = index_buffer_info->count * index_size;
|
|
||||||
if (!shared_memory_->RequestRange(index_base, index_buffer_size)) {
|
|
||||||
XELOGE(
|
XELOGE(
|
||||||
"Failed to request index buffer at 0x{:08X} (size {}) in the "
|
"Host tessellated primitive type {} returned by the primitive "
|
||||||
"shared memory",
|
"processor is not supported by the Direct3D 12 command processor",
|
||||||
index_base, index_buffer_size);
|
uint32_t(primitive_processing_result.host_primitive_type));
|
||||||
|
assert_unhandled_case(primitive_processing_result.host_primitive_type);
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
if (memexport_used) {
|
|
||||||
// If the shared memory is a UAV, it can't be used as an index buffer
|
|
||||||
// (UAV is a read/write state, index buffer is a read-only state). Need
|
|
||||||
// to copy the indices to a buffer in the index buffer state.
|
|
||||||
scratch_index_buffer = RequestScratchGPUBuffer(
|
|
||||||
index_buffer_size, D3D12_RESOURCE_STATE_COPY_DEST);
|
|
||||||
if (scratch_index_buffer == nullptr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
shared_memory_->UseAsCopySource();
|
|
||||||
SubmitBarriers();
|
|
||||||
deferred_command_list_.D3DCopyBufferRegion(
|
|
||||||
scratch_index_buffer, 0, shared_memory_->GetBuffer(), index_base,
|
|
||||||
index_buffer_size);
|
|
||||||
PushTransitionBarrier(scratch_index_buffer,
|
|
||||||
D3D12_RESOURCE_STATE_COPY_DEST,
|
|
||||||
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
|
||||||
index_buffer_view.BufferLocation =
|
|
||||||
scratch_index_buffer->GetGPUVirtualAddress();
|
|
||||||
} else {
|
|
||||||
index_buffer_view.BufferLocation =
|
|
||||||
shared_memory_->GetGPUAddress() + index_base;
|
|
||||||
}
|
|
||||||
index_buffer_view.SizeInBytes = index_buffer_size;
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
switch (primitive_processing_result.host_primitive_type) {
|
||||||
|
case xenos::PrimitiveType::kPointList:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_POINTLIST;
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kLineList:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINELIST;
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kLineStrip:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP;
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kTriangleList:
|
||||||
|
case xenos::PrimitiveType::kRectangleList:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST;
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kTriangleStrip:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP;
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kQuadList:
|
||||||
|
primitive_topology = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
XELOGE(
|
||||||
|
"Host primitive type {} returned by the primitive processor is not "
|
||||||
|
"supported by the Direct3D 12 command processor",
|
||||||
|
uint32_t(primitive_processing_result.host_primitive_type));
|
||||||
|
assert_unhandled_case(primitive_processing_result.host_primitive_type);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetPrimitiveTopology(primitive_topology);
|
||||||
|
// Must not call anything that may change the primitive topology from now on!
|
||||||
|
|
||||||
|
// Draw.
|
||||||
|
if (primitive_processing_result.index_buffer_type ==
|
||||||
|
PrimitiveProcessor::ProcessedIndexBufferType::kNone) {
|
||||||
if (memexport_used) {
|
if (memexport_used) {
|
||||||
shared_memory_->UseForWriting();
|
shared_memory_->UseForWriting();
|
||||||
} else {
|
} else {
|
||||||
shared_memory_->UseForReading();
|
shared_memory_->UseForReading();
|
||||||
}
|
}
|
||||||
SubmitBarriers();
|
SubmitBarriers();
|
||||||
|
deferred_command_list_.D3DDrawInstanced(
|
||||||
|
primitive_processing_result.host_draw_vertex_count, 1, 0, 0);
|
||||||
|
} else {
|
||||||
|
D3D12_INDEX_BUFFER_VIEW index_buffer_view;
|
||||||
|
index_buffer_view.SizeInBytes =
|
||||||
|
primitive_processing_result.host_draw_vertex_count;
|
||||||
|
if (primitive_processing_result.host_index_format ==
|
||||||
|
xenos::IndexFormat::kInt16) {
|
||||||
|
index_buffer_view.SizeInBytes *= sizeof(uint16_t);
|
||||||
|
index_buffer_view.Format = DXGI_FORMAT_R16_UINT;
|
||||||
|
} else {
|
||||||
|
index_buffer_view.SizeInBytes *= sizeof(uint32_t);
|
||||||
|
index_buffer_view.Format = DXGI_FORMAT_R32_UINT;
|
||||||
|
}
|
||||||
|
ID3D12Resource* scratch_index_buffer = nullptr;
|
||||||
|
switch (primitive_processing_result.index_buffer_type) {
|
||||||
|
case PrimitiveProcessor::ProcessedIndexBufferType::kGuest: {
|
||||||
|
if (memexport_used) {
|
||||||
|
// If the shared memory is a UAV, it can't be used as an index buffer
|
||||||
|
// (UAV is a read/write state, index buffer is a read-only state).
|
||||||
|
// Need to copy the indices to a buffer in the index buffer state.
|
||||||
|
scratch_index_buffer = RequestScratchGPUBuffer(
|
||||||
|
index_buffer_view.SizeInBytes, D3D12_RESOURCE_STATE_COPY_DEST);
|
||||||
|
if (scratch_index_buffer == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
shared_memory_->UseAsCopySource();
|
||||||
|
SubmitBarriers();
|
||||||
|
deferred_command_list_.D3DCopyBufferRegion(
|
||||||
|
scratch_index_buffer, 0, shared_memory_->GetBuffer(),
|
||||||
|
primitive_processing_result.guest_index_base,
|
||||||
|
index_buffer_view.SizeInBytes);
|
||||||
|
PushTransitionBarrier(scratch_index_buffer,
|
||||||
|
D3D12_RESOURCE_STATE_COPY_DEST,
|
||||||
|
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
||||||
|
index_buffer_view.BufferLocation =
|
||||||
|
scratch_index_buffer->GetGPUVirtualAddress();
|
||||||
|
} else {
|
||||||
|
index_buffer_view.BufferLocation =
|
||||||
|
shared_memory_->GetGPUAddress() +
|
||||||
|
primitive_processing_result.guest_index_base;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
case PrimitiveProcessor::ProcessedIndexBufferType::kHostConverted:
|
||||||
|
index_buffer_view.BufferLocation =
|
||||||
|
primitive_processor_->GetConvertedIndexBufferGpuAddress(
|
||||||
|
primitive_processing_result.host_index_buffer_handle);
|
||||||
|
break;
|
||||||
|
case PrimitiveProcessor::ProcessedIndexBufferType::kHostBuiltin:
|
||||||
|
index_buffer_view.BufferLocation =
|
||||||
|
primitive_processor_->GetBuiltinIndexBufferGpuAddress(
|
||||||
|
primitive_processing_result.host_index_buffer_handle);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert_unhandled_case(primitive_processing_result.index_buffer_type);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
deferred_command_list_.D3DIASetIndexBuffer(&index_buffer_view);
|
deferred_command_list_.D3DIASetIndexBuffer(&index_buffer_view);
|
||||||
deferred_command_list_.D3DDrawIndexedInstanced(index_count, 1, 0, 0, 0);
|
if (memexport_used) {
|
||||||
|
shared_memory_->UseForWriting();
|
||||||
|
} else {
|
||||||
|
shared_memory_->UseForReading();
|
||||||
|
}
|
||||||
|
SubmitBarriers();
|
||||||
|
deferred_command_list_.D3DDrawIndexedInstanced(
|
||||||
|
primitive_processing_result.host_draw_vertex_count, 1, 0, 0, 0);
|
||||||
if (scratch_index_buffer != nullptr) {
|
if (scratch_index_buffer != nullptr) {
|
||||||
ReleaseScratchGPUBuffer(scratch_index_buffer,
|
ReleaseScratchGPUBuffer(scratch_index_buffer,
|
||||||
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// Check if need to draw using a conversion index buffer.
|
|
||||||
uint32_t converted_index_count = 0;
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS conversion_gpu_address =
|
|
||||||
tessellated ? 0
|
|
||||||
: primitive_converter_->GetStaticIndexBuffer(
|
|
||||||
primitive_type, index_count, converted_index_count);
|
|
||||||
if (memexport_used) {
|
|
||||||
shared_memory_->UseForWriting();
|
|
||||||
} else {
|
|
||||||
shared_memory_->UseForReading();
|
|
||||||
}
|
|
||||||
SubmitBarriers();
|
|
||||||
if (conversion_gpu_address) {
|
|
||||||
D3D12_INDEX_BUFFER_VIEW index_buffer_view;
|
|
||||||
index_buffer_view.BufferLocation = conversion_gpu_address;
|
|
||||||
index_buffer_view.SizeInBytes = converted_index_count * sizeof(uint16_t);
|
|
||||||
index_buffer_view.Format = DXGI_FORMAT_R16_UINT;
|
|
||||||
deferred_command_list_.D3DIASetIndexBuffer(&index_buffer_view);
|
|
||||||
deferred_command_list_.D3DDrawIndexedInstanced(converted_index_count, 1,
|
|
||||||
0, 0, 0);
|
|
||||||
} else {
|
|
||||||
deferred_command_list_.D3DDrawInstanced(index_count, 1, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (memexport_used) {
|
if (memexport_used) {
|
||||||
|
@ -2526,9 +2493,9 @@ void D3D12CommandProcessor::CheckSubmissionFence(uint64_t await_submission) {
|
||||||
|
|
||||||
shared_memory_->CompletedSubmissionUpdated();
|
shared_memory_->CompletedSubmissionUpdated();
|
||||||
|
|
||||||
render_target_cache_->CompletedSubmissionUpdated();
|
primitive_processor_->CompletedSubmissionUpdated();
|
||||||
|
|
||||||
primitive_converter_->CompletedSubmissionUpdated();
|
render_target_cache_->CompletedSubmissionUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D12CommandProcessor::BeginSubmission(bool is_guest_command) {
|
void D3D12CommandProcessor::BeginSubmission(bool is_guest_command) {
|
||||||
|
@ -2593,11 +2560,11 @@ void D3D12CommandProcessor::BeginSubmission(bool is_guest_command) {
|
||||||
}
|
}
|
||||||
primitive_topology_ = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
primitive_topology_ = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED;
|
||||||
|
|
||||||
|
primitive_processor_->BeginSubmission();
|
||||||
|
|
||||||
render_target_cache_->BeginSubmission();
|
render_target_cache_->BeginSubmission();
|
||||||
|
|
||||||
texture_cache_->BeginSubmission();
|
texture_cache_->BeginSubmission();
|
||||||
|
|
||||||
primitive_converter_->BeginSubmission();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_opening_frame) {
|
if (is_opening_frame) {
|
||||||
|
@ -2645,9 +2612,9 @@ void D3D12CommandProcessor::BeginSubmission(bool is_guest_command) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
texture_cache_->BeginFrame();
|
primitive_processor_->BeginFrame();
|
||||||
|
|
||||||
primitive_converter_->BeginFrame();
|
texture_cache_->BeginFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2676,6 +2643,8 @@ bool D3D12CommandProcessor::EndSubmission(bool is_swap) {
|
||||||
|
|
||||||
if (is_closing_frame) {
|
if (is_closing_frame) {
|
||||||
texture_cache_->EndFrame();
|
texture_cache_->EndFrame();
|
||||||
|
|
||||||
|
primitive_processor_->EndFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (submission_open_) {
|
if (submission_open_) {
|
||||||
|
@ -2762,8 +2731,6 @@ bool D3D12CommandProcessor::EndSubmission(bool is_swap) {
|
||||||
}
|
}
|
||||||
constant_buffer_pool_->ClearCache();
|
constant_buffer_pool_->ClearCache();
|
||||||
|
|
||||||
primitive_converter_->ClearCache();
|
|
||||||
|
|
||||||
pipeline_cache_->ClearCache();
|
pipeline_cache_->ClearCache();
|
||||||
|
|
||||||
render_target_cache_->ClearCache();
|
render_target_cache_->ClearCache();
|
||||||
|
@ -2775,6 +2742,8 @@ bool D3D12CommandProcessor::EndSubmission(bool is_swap) {
|
||||||
}
|
}
|
||||||
root_signatures_bindful_.clear();
|
root_signatures_bindful_.clear();
|
||||||
|
|
||||||
|
primitive_processor_->ClearCache();
|
||||||
|
|
||||||
shared_memory_->ClearCache();
|
shared_memory_->ClearCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2897,7 +2866,9 @@ void D3D12CommandProcessor::UpdateSystemConstantValues(
|
||||||
auto rb_surface_info = regs.Get<reg::RB_SURFACE_INFO>();
|
auto rb_surface_info = regs.Get<reg::RB_SURFACE_INFO>();
|
||||||
auto sq_context_misc = regs.Get<reg::SQ_CONTEXT_MISC>();
|
auto sq_context_misc = regs.Get<reg::SQ_CONTEXT_MISC>();
|
||||||
auto sq_program_cntl = regs.Get<reg::SQ_PROGRAM_CNTL>();
|
auto sq_program_cntl = regs.Get<reg::SQ_PROGRAM_CNTL>();
|
||||||
int32_t vgt_indx_offset = int32_t(regs[XE_GPU_REG_VGT_INDX_OFFSET].u32);
|
uint32_t vgt_indx_offset = regs.Get<reg::VGT_INDX_OFFSET>().indx_offset;
|
||||||
|
uint32_t vgt_max_vtx_indx = regs.Get<reg::VGT_MAX_VTX_INDX>().max_indx;
|
||||||
|
uint32_t vgt_min_vtx_indx = regs.Get<reg::VGT_MIN_VTX_INDX>().min_indx;
|
||||||
|
|
||||||
bool edram_rov_used = render_target_cache_->GetPath() ==
|
bool edram_rov_used = render_target_cache_->GetPath() ==
|
||||||
RenderTargetCache::Path::kPixelShaderInterlock;
|
RenderTargetCache::Path::kPixelShaderInterlock;
|
||||||
|
@ -3050,8 +3021,14 @@ void D3D12CommandProcessor::UpdateSystemConstantValues(
|
||||||
system_constants_.vertex_index_endian = index_endian;
|
system_constants_.vertex_index_endian = index_endian;
|
||||||
|
|
||||||
// Vertex index offset.
|
// Vertex index offset.
|
||||||
dirty |= system_constants_.vertex_base_index != vgt_indx_offset;
|
dirty |= system_constants_.vertex_index_offset != vgt_indx_offset;
|
||||||
system_constants_.vertex_base_index = vgt_indx_offset;
|
system_constants_.vertex_index_offset = vgt_indx_offset;
|
||||||
|
|
||||||
|
// Vertex index range.
|
||||||
|
dirty |= system_constants_.vertex_index_min != vgt_min_vtx_indx;
|
||||||
|
dirty |= system_constants_.vertex_index_max != vgt_max_vtx_indx;
|
||||||
|
system_constants_.vertex_index_min = vgt_min_vtx_indx;
|
||||||
|
system_constants_.vertex_index_max = vgt_max_vtx_indx;
|
||||||
|
|
||||||
// User clip planes (UCP_ENA_#), when not CLIP_DISABLE.
|
// User clip planes (UCP_ENA_#), when not CLIP_DISABLE.
|
||||||
if (!pa_cl_clip_cntl.clip_disable) {
|
if (!pa_cl_clip_cntl.clip_disable) {
|
||||||
|
@ -3082,14 +3059,14 @@ void D3D12CommandProcessor::UpdateSystemConstantValues(
|
||||||
float point_size_y = float(pa_su_point_size.height) * 0.125f;
|
float point_size_y = float(pa_su_point_size.height) * 0.125f;
|
||||||
float point_size_min = float(pa_su_point_minmax.min_size) * 0.125f;
|
float point_size_min = float(pa_su_point_minmax.min_size) * 0.125f;
|
||||||
float point_size_max = float(pa_su_point_minmax.max_size) * 0.125f;
|
float point_size_max = float(pa_su_point_minmax.max_size) * 0.125f;
|
||||||
dirty |= system_constants_.point_size[0] != point_size_x;
|
dirty |= system_constants_.point_size_x != point_size_x;
|
||||||
dirty |= system_constants_.point_size[1] != point_size_y;
|
dirty |= system_constants_.point_size_y != point_size_y;
|
||||||
dirty |= system_constants_.point_size_min_max[0] != point_size_min;
|
dirty |= system_constants_.point_size_min != point_size_min;
|
||||||
dirty |= system_constants_.point_size_min_max[1] != point_size_max;
|
dirty |= system_constants_.point_size_max != point_size_max;
|
||||||
system_constants_.point_size[0] = point_size_x;
|
system_constants_.point_size_x = point_size_x;
|
||||||
system_constants_.point_size[1] = point_size_y;
|
system_constants_.point_size_y = point_size_y;
|
||||||
system_constants_.point_size_min_max[0] = point_size_min;
|
system_constants_.point_size_min = point_size_min;
|
||||||
system_constants_.point_size_min_max[1] = point_size_max;
|
system_constants_.point_size_max = point_size_max;
|
||||||
float point_screen_to_ndc_x =
|
float point_screen_to_ndc_x =
|
||||||
(/* 0.5f * 2.0f * */ float(resolution_scale)) /
|
(/* 0.5f * 2.0f * */ float(resolution_scale)) /
|
||||||
std::max(viewport_info.xy_extent[0], uint32_t(1));
|
std::max(viewport_info.xy_extent[0], uint32_t(1));
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
#include "xenia/base/assert.h"
|
#include "xenia/base/assert.h"
|
||||||
#include "xenia/gpu/command_processor.h"
|
#include "xenia/gpu/command_processor.h"
|
||||||
#include "xenia/gpu/d3d12/d3d12_graphics_system.h"
|
#include "xenia/gpu/d3d12/d3d12_graphics_system.h"
|
||||||
|
#include "xenia/gpu/d3d12/d3d12_primitive_processor.h"
|
||||||
#include "xenia/gpu/d3d12/d3d12_render_target_cache.h"
|
#include "xenia/gpu/d3d12/d3d12_render_target_cache.h"
|
||||||
#include "xenia/gpu/d3d12/d3d12_shared_memory.h"
|
#include "xenia/gpu/d3d12/d3d12_shared_memory.h"
|
||||||
#include "xenia/gpu/d3d12/deferred_command_list.h"
|
#include "xenia/gpu/d3d12/deferred_command_list.h"
|
||||||
#include "xenia/gpu/d3d12/pipeline_cache.h"
|
#include "xenia/gpu/d3d12/pipeline_cache.h"
|
||||||
#include "xenia/gpu/d3d12/primitive_converter.h"
|
|
||||||
#include "xenia/gpu/d3d12/texture_cache.h"
|
#include "xenia/gpu/d3d12/texture_cache.h"
|
||||||
#include "xenia/gpu/draw_util.h"
|
#include "xenia/gpu/draw_util.h"
|
||||||
#include "xenia/gpu/dxbc_shader.h"
|
#include "xenia/gpu/dxbc_shader.h"
|
||||||
|
@ -490,12 +490,12 @@ class D3D12CommandProcessor : public CommandProcessor {
|
||||||
|
|
||||||
std::unique_ptr<D3D12SharedMemory> shared_memory_;
|
std::unique_ptr<D3D12SharedMemory> shared_memory_;
|
||||||
|
|
||||||
|
std::unique_ptr<D3D12PrimitiveProcessor> primitive_processor_;
|
||||||
|
|
||||||
std::unique_ptr<PipelineCache> pipeline_cache_;
|
std::unique_ptr<PipelineCache> pipeline_cache_;
|
||||||
|
|
||||||
std::unique_ptr<TextureCache> texture_cache_;
|
std::unique_ptr<TextureCache> texture_cache_;
|
||||||
|
|
||||||
std::unique_ptr<PrimitiveConverter> primitive_converter_;
|
|
||||||
|
|
||||||
// Mip 0 contains the normal gamma ramp (256 entries), mip 1 contains the PWL
|
// Mip 0 contains the normal gamma ramp (256 entries), mip 1 contains the PWL
|
||||||
// ramp (128 entries). DXGI_FORMAT_R10G10B10A2_UNORM 1D.
|
// ramp (128 entries). DXGI_FORMAT_R10G10B10A2_UNORM 1D.
|
||||||
ID3D12Resource* gamma_ramp_texture_ = nullptr;
|
ID3D12Resource* gamma_ramp_texture_ = nullptr;
|
||||||
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2021 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "xenia/gpu/d3d12/d3d12_primitive_processor.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
#include "xenia/base/assert.h"
|
||||||
|
#include "xenia/base/logging.h"
|
||||||
|
#include "xenia/gpu/d3d12/d3d12_command_processor.h"
|
||||||
|
#include "xenia/gpu/d3d12/deferred_command_list.h"
|
||||||
|
#include "xenia/ui/d3d12/d3d12_provider.h"
|
||||||
|
#include "xenia/ui/d3d12/d3d12_util.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace gpu {
|
||||||
|
namespace d3d12 {
|
||||||
|
|
||||||
|
D3D12PrimitiveProcessor::~D3D12PrimitiveProcessor() { Shutdown(true); }
|
||||||
|
|
||||||
|
bool D3D12PrimitiveProcessor::Initialize() {
|
||||||
|
if (!InitializeCommon(true, false, false, true)) {
|
||||||
|
Shutdown();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
frame_index_buffer_pool_ = std::make_unique<ui::d3d12::D3D12UploadBufferPool>(
|
||||||
|
command_processor_.GetD3D12Context().GetD3D12Provider(),
|
||||||
|
std::max(size_t(kMinRequiredConvertedIndexBufferSize),
|
||||||
|
ui::GraphicsUploadBufferPool::kDefaultPageSize));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void D3D12PrimitiveProcessor::Shutdown(bool from_destructor) {
|
||||||
|
frame_index_buffer_pool_.reset();
|
||||||
|
builtin_index_buffer_upload_.Reset();
|
||||||
|
builtin_index_buffer_gpu_address_ = 0;
|
||||||
|
builtin_index_buffer_.Reset();
|
||||||
|
if (!from_destructor) {
|
||||||
|
ShutdownCommon();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void D3D12PrimitiveProcessor::CompletedSubmissionUpdated() {
|
||||||
|
if (builtin_index_buffer_upload_ &&
|
||||||
|
command_processor_.GetCompletedSubmission() >=
|
||||||
|
builtin_index_buffer_upload_submission_) {
|
||||||
|
builtin_index_buffer_upload_.Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void D3D12PrimitiveProcessor::BeginSubmission() {
|
||||||
|
if (builtin_index_buffer_upload_ &&
|
||||||
|
builtin_index_buffer_upload_submission_ == UINT64_MAX) {
|
||||||
|
// No need to submit deferred barriers - builtin_index_buffer_ has never
|
||||||
|
// been used yet, so it's in the initial state, and
|
||||||
|
// builtin_index_buffer_upload_ is in an upload heap, so it's GENERIC_READ.
|
||||||
|
command_processor_.GetDeferredCommandList().D3DCopyResource(
|
||||||
|
builtin_index_buffer_.Get(), builtin_index_buffer_upload_.Get());
|
||||||
|
command_processor_.PushTransitionBarrier(builtin_index_buffer_.Get(),
|
||||||
|
D3D12_RESOURCE_STATE_COPY_DEST,
|
||||||
|
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
||||||
|
builtin_index_buffer_upload_submission_ =
|
||||||
|
command_processor_.GetCurrentSubmission();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void D3D12PrimitiveProcessor::BeginFrame() {
|
||||||
|
frame_index_buffer_pool_->Reclaim(command_processor_.GetCompletedFrame());
|
||||||
|
}
|
||||||
|
|
||||||
|
void D3D12PrimitiveProcessor::EndFrame() {
|
||||||
|
ClearPerFrameCache();
|
||||||
|
frame_index_buffers_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool D3D12PrimitiveProcessor::InitializeBuiltin16BitIndexBuffer(
|
||||||
|
uint32_t index_count, std::function<void(uint16_t*)> fill_callback) {
|
||||||
|
assert_not_zero(index_count);
|
||||||
|
assert_null(builtin_index_buffer_);
|
||||||
|
assert_null(builtin_index_buffer_upload_);
|
||||||
|
|
||||||
|
const ui::d3d12::D3D12Provider& provider =
|
||||||
|
command_processor_.GetD3D12Context().GetD3D12Provider();
|
||||||
|
ID3D12Device* device = provider.GetDevice();
|
||||||
|
|
||||||
|
D3D12_RESOURCE_DESC resource_desc;
|
||||||
|
ui::d3d12::util::FillBufferResourceDesc(
|
||||||
|
resource_desc, UINT64(sizeof(uint16_t) * index_count),
|
||||||
|
D3D12_RESOURCE_FLAG_NONE);
|
||||||
|
Microsoft::WRL::ComPtr<ID3D12Resource> draw_resource;
|
||||||
|
if (FAILED(device->CreateCommittedResource(
|
||||||
|
&ui::d3d12::util::kHeapPropertiesDefault,
|
||||||
|
provider.GetHeapFlagCreateNotZeroed(), &resource_desc,
|
||||||
|
D3D12_RESOURCE_STATE_COPY_DEST, nullptr,
|
||||||
|
IID_PPV_ARGS(&draw_resource)))) {
|
||||||
|
XELOGE(
|
||||||
|
"D3D12 primitive processor: Failed to create the built-in index "
|
||||||
|
"buffer GPU resource with {} 16-bit indices",
|
||||||
|
index_count);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Microsoft::WRL::ComPtr<ID3D12Resource> upload_resource;
|
||||||
|
if (FAILED(device->CreateCommittedResource(
|
||||||
|
&ui::d3d12::util::kHeapPropertiesUpload,
|
||||||
|
provider.GetHeapFlagCreateNotZeroed(), &resource_desc,
|
||||||
|
D3D12_RESOURCE_STATE_GENERIC_READ, nullptr,
|
||||||
|
IID_PPV_ARGS(&upload_resource)))) {
|
||||||
|
XELOGE(
|
||||||
|
"D3D12 primitive processor: Failed to create the built-in index "
|
||||||
|
"buffer upload resource with {} 16-bit indices",
|
||||||
|
index_count);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
D3D12_RANGE upload_read_range = {};
|
||||||
|
void* mapping;
|
||||||
|
if (FAILED(upload_resource->Map(0, &upload_read_range, &mapping))) {
|
||||||
|
XELOGE(
|
||||||
|
"D3D12 primitive processor: Failed to map the built-in index buffer "
|
||||||
|
"upload resource with {} 16-bit indices",
|
||||||
|
index_count);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fill_callback(reinterpret_cast<uint16_t*>(mapping));
|
||||||
|
upload_resource->Unmap(0, nullptr);
|
||||||
|
|
||||||
|
// Successfully created the buffer and wrote the data to upload.
|
||||||
|
builtin_index_buffer_ = std::move(draw_resource);
|
||||||
|
builtin_index_buffer_gpu_address_ =
|
||||||
|
builtin_index_buffer_->GetGPUVirtualAddress();
|
||||||
|
builtin_index_buffer_upload_ = std::move(upload_resource);
|
||||||
|
// Schedule uploading in the first submission.
|
||||||
|
builtin_index_buffer_upload_submission_ = UINT64_MAX;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* D3D12PrimitiveProcessor::RequestHostConvertedIndexBufferForCurrentFrame(
|
||||||
|
xenos::IndexFormat format, uint32_t index_count, bool coalign_for_simd,
|
||||||
|
uint32_t coalignment_original_address, size_t& backend_handle_out) {
|
||||||
|
size_t index_size = format == xenos::IndexFormat::kInt16 ? sizeof(uint16_t)
|
||||||
|
: sizeof(uint32_t);
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
||||||
|
uint8_t* mapping = frame_index_buffer_pool_->Request(
|
||||||
|
command_processor_.GetCurrentFrame(),
|
||||||
|
index_size * index_count +
|
||||||
|
(coalign_for_simd ? XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE : 0),
|
||||||
|
index_size, nullptr, nullptr, &gpu_address);
|
||||||
|
if (!mapping) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (coalign_for_simd) {
|
||||||
|
ptrdiff_t coalignment_offset =
|
||||||
|
GetSimdCoalignmentOffset(mapping, coalignment_original_address);
|
||||||
|
mapping += coalignment_offset;
|
||||||
|
gpu_address = D3D12_GPU_VIRTUAL_ADDRESS(gpu_address + coalignment_offset);
|
||||||
|
}
|
||||||
|
backend_handle_out = frame_index_buffers_.size();
|
||||||
|
frame_index_buffers_.push_back(gpu_address);
|
||||||
|
return mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace d3d12
|
||||||
|
} // namespace gpu
|
||||||
|
} // namespace xe
|
|
@ -0,0 +1,90 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2021 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_GPU_D3D12_D3D12_PRIMITIVE_PROCESSOR_H_
|
||||||
|
#define XENIA_GPU_D3D12_D3D12_PRIMITIVE_PROCESSOR_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <deque>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "xenia/base/assert.h"
|
||||||
|
#include "xenia/gpu/primitive_processor.h"
|
||||||
|
#include "xenia/ui/d3d12/d3d12_api.h"
|
||||||
|
#include "xenia/ui/d3d12/d3d12_upload_buffer_pool.h"
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace gpu {
|
||||||
|
namespace d3d12 {
|
||||||
|
|
||||||
|
class D3D12CommandProcessor;
|
||||||
|
|
||||||
|
class D3D12PrimitiveProcessor final : public PrimitiveProcessor {
|
||||||
|
public:
|
||||||
|
D3D12PrimitiveProcessor(const RegisterFile& register_file, Memory& memory,
|
||||||
|
TraceWriter& trace_writer,
|
||||||
|
SharedMemory& shared_memory,
|
||||||
|
D3D12CommandProcessor& command_processor)
|
||||||
|
: PrimitiveProcessor(register_file, memory, trace_writer, shared_memory),
|
||||||
|
command_processor_(command_processor) {}
|
||||||
|
~D3D12PrimitiveProcessor();
|
||||||
|
|
||||||
|
bool Initialize();
|
||||||
|
void Shutdown(bool from_destructor = false);
|
||||||
|
void ClearCache() { frame_index_buffer_pool_->ClearCache(); }
|
||||||
|
|
||||||
|
void CompletedSubmissionUpdated();
|
||||||
|
void BeginSubmission();
|
||||||
|
void BeginFrame();
|
||||||
|
void EndFrame();
|
||||||
|
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS GetBuiltinIndexBufferGpuAddress(
|
||||||
|
size_t handle) const {
|
||||||
|
assert_not_null(builtin_index_buffer_);
|
||||||
|
return D3D12_GPU_VIRTUAL_ADDRESS(builtin_index_buffer_gpu_address_ +
|
||||||
|
GetBuiltinIndexBufferOffsetBytes(handle));
|
||||||
|
}
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS GetConvertedIndexBufferGpuAddress(
|
||||||
|
size_t handle) const {
|
||||||
|
return frame_index_buffers_[handle];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool InitializeBuiltin16BitIndexBuffer(
|
||||||
|
uint32_t index_count,
|
||||||
|
std::function<void(uint16_t*)> fill_callback) override;
|
||||||
|
|
||||||
|
void* RequestHostConvertedIndexBufferForCurrentFrame(
|
||||||
|
xenos::IndexFormat format, uint32_t index_count, bool coalign_for_simd,
|
||||||
|
uint32_t coalignment_original_address,
|
||||||
|
size_t& backend_handle_out) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
D3D12CommandProcessor& command_processor_;
|
||||||
|
|
||||||
|
Microsoft::WRL::ComPtr<ID3D12Resource> builtin_index_buffer_;
|
||||||
|
D3D12_GPU_VIRTUAL_ADDRESS builtin_index_buffer_gpu_address_ = 0;
|
||||||
|
// Temporary buffer copied in the beginning of the first submission for
|
||||||
|
// uploading to builtin_index_buffer_, destroyed when the submission when it
|
||||||
|
// was uploaded is completed.
|
||||||
|
Microsoft::WRL::ComPtr<ID3D12Resource> builtin_index_buffer_upload_;
|
||||||
|
// UINT64_MAX means not uploaded yet and needs uploading in the first
|
||||||
|
// submission (if the upload buffer exists at all).
|
||||||
|
uint64_t builtin_index_buffer_upload_submission_ = UINT64_MAX;
|
||||||
|
|
||||||
|
std::unique_ptr<ui::d3d12::D3D12UploadBufferPool> frame_index_buffer_pool_;
|
||||||
|
// Indexed by the backend handles.
|
||||||
|
std::deque<D3D12_GPU_VIRTUAL_ADDRESS> frame_index_buffers_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace d3d12
|
||||||
|
} // namespace gpu
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
#endif // XENIA_GPU_D3D12_D3D12_PRIMITIVE_PROCESSOR_H_
|
|
@ -15,7 +15,9 @@
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <unordered_map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
|
@ -864,146 +864,66 @@ D3D12Shader* PipelineCache::LoadShader(xenos::ShaderType shader_type,
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PipelineCache::GetCurrentShaderModification(
|
DxbcShaderTranslator::Modification
|
||||||
|
PipelineCache::GetCurrentVertexShaderModification(
|
||||||
const Shader& shader,
|
const Shader& shader,
|
||||||
DxbcShaderTranslator::Modification& modification_out) const {
|
Shader::HostVertexShaderType host_vertex_shader_type) const {
|
||||||
|
assert_true(shader.type() == xenos::ShaderType::kVertex);
|
||||||
assert_true(shader.is_ucode_analyzed());
|
assert_true(shader.is_ucode_analyzed());
|
||||||
const auto& regs = register_file_;
|
const auto& regs = register_file_;
|
||||||
auto sq_program_cntl = regs.Get<reg::SQ_PROGRAM_CNTL>();
|
auto sq_program_cntl = regs.Get<reg::SQ_PROGRAM_CNTL>();
|
||||||
if (shader.type() == xenos::ShaderType::kVertex) {
|
return DxbcShaderTranslator::Modification(
|
||||||
Shader::HostVertexShaderType host_vertex_shader_type =
|
shader_translator_->GetDefaultVertexShaderModification(
|
||||||
GetCurrentHostVertexShaderTypeIfValid();
|
shader.GetDynamicAddressableRegisterCount(sq_program_cntl.vs_num_reg),
|
||||||
if (host_vertex_shader_type == Shader::HostVertexShaderType(-1)) {
|
host_vertex_shader_type));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
modification_out = DxbcShaderTranslator::Modification(
|
|
||||||
shader_translator_->GetDefaultVertexShaderModification(
|
|
||||||
shader.GetDynamicAddressableRegisterCount(
|
|
||||||
sq_program_cntl.vs_num_reg),
|
|
||||||
host_vertex_shader_type));
|
|
||||||
} else {
|
|
||||||
assert_true(shader.type() == xenos::ShaderType::kPixel);
|
|
||||||
DxbcShaderTranslator::Modification pixel_shader_modification(
|
|
||||||
shader_translator_->GetDefaultPixelShaderModification(
|
|
||||||
shader.GetDynamicAddressableRegisterCount(
|
|
||||||
sq_program_cntl.ps_num_reg)));
|
|
||||||
if (render_target_cache_.GetPath() ==
|
|
||||||
RenderTargetCache::Path::kHostRenderTargets) {
|
|
||||||
using DepthStencilMode =
|
|
||||||
DxbcShaderTranslator::Modification::DepthStencilMode;
|
|
||||||
RenderTargetCache::DepthFloat24Conversion depth_float24_conversion =
|
|
||||||
render_target_cache_.depth_float24_conversion();
|
|
||||||
if ((depth_float24_conversion ==
|
|
||||||
RenderTargetCache::DepthFloat24Conversion::kOnOutputTruncating ||
|
|
||||||
depth_float24_conversion ==
|
|
||||||
RenderTargetCache::DepthFloat24Conversion::kOnOutputRounding) &&
|
|
||||||
draw_util::GetDepthControlForCurrentEdramMode(regs).z_enable &&
|
|
||||||
regs.Get<reg::RB_DEPTH_INFO>().depth_format ==
|
|
||||||
xenos::DepthRenderTargetFormat::kD24FS8) {
|
|
||||||
pixel_shader_modification.pixel.depth_stencil_mode =
|
|
||||||
depth_float24_conversion ==
|
|
||||||
RenderTargetCache::DepthFloat24Conversion::
|
|
||||||
kOnOutputTruncating
|
|
||||||
? DepthStencilMode::kFloat24Truncating
|
|
||||||
: DepthStencilMode::kFloat24Rounding;
|
|
||||||
} else {
|
|
||||||
if (shader.implicit_early_z_write_allowed() &&
|
|
||||||
(!shader.writes_color_target(0) ||
|
|
||||||
!draw_util::DoesCoverageDependOnAlpha(
|
|
||||||
regs.Get<reg::RB_COLORCONTROL>()))) {
|
|
||||||
pixel_shader_modification.pixel.depth_stencil_mode =
|
|
||||||
DepthStencilMode::kEarlyHint;
|
|
||||||
} else {
|
|
||||||
pixel_shader_modification.pixel.depth_stencil_mode =
|
|
||||||
DepthStencilMode::kNoModifiers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
modification_out = pixel_shader_modification;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Shader::HostVertexShaderType
|
DxbcShaderTranslator::Modification
|
||||||
PipelineCache::GetCurrentHostVertexShaderTypeIfValid() const {
|
PipelineCache::GetCurrentPixelShaderModification(const Shader& shader) const {
|
||||||
// If the values this functions returns are changed, INVALIDATE THE SHADER
|
assert_true(shader.type() == xenos::ShaderType::kPixel);
|
||||||
// STORAGE (increase kVersion for BOTH shaders and pipelines)! The exception
|
assert_true(shader.is_ucode_analyzed());
|
||||||
// is when the function originally returned "unsupported", but started to
|
|
||||||
// return a valid value (in this case the shader wouldn't be cached in the
|
|
||||||
// first place). Otherwise games will not be able to locate shaders for draws
|
|
||||||
// for which the host vertex shader type has changed!
|
|
||||||
const auto& regs = register_file_;
|
const auto& regs = register_file_;
|
||||||
auto vgt_draw_initiator = regs.Get<reg::VGT_DRAW_INITIATOR>();
|
auto sq_program_cntl = regs.Get<reg::SQ_PROGRAM_CNTL>();
|
||||||
if (!xenos::IsMajorModeExplicit(vgt_draw_initiator.major_mode,
|
DxbcShaderTranslator::Modification modification(
|
||||||
vgt_draw_initiator.prim_type)) {
|
shader_translator_->GetDefaultPixelShaderModification(
|
||||||
// VGT_OUTPUT_PATH_CNTL and HOS registers are ignored in implicit major
|
shader.GetDynamicAddressableRegisterCount(
|
||||||
// mode.
|
sq_program_cntl.ps_num_reg)));
|
||||||
return Shader::HostVertexShaderType::kVertex;
|
if (render_target_cache_.GetPath() ==
|
||||||
}
|
RenderTargetCache::Path::kHostRenderTargets) {
|
||||||
if (regs.Get<reg::VGT_OUTPUT_PATH_CNTL>().path_select !=
|
using DepthStencilMode =
|
||||||
xenos::VGTOutputPath::kTessellationEnable) {
|
DxbcShaderTranslator::Modification::DepthStencilMode;
|
||||||
return Shader::HostVertexShaderType::kVertex;
|
RenderTargetCache::DepthFloat24Conversion depth_float24_conversion =
|
||||||
}
|
render_target_cache_.depth_float24_conversion();
|
||||||
xenos::TessellationMode tessellation_mode =
|
if ((depth_float24_conversion ==
|
||||||
regs.Get<reg::VGT_HOS_CNTL>().tess_mode;
|
RenderTargetCache::DepthFloat24Conversion::kOnOutputTruncating ||
|
||||||
switch (vgt_draw_initiator.prim_type) {
|
depth_float24_conversion ==
|
||||||
case xenos::PrimitiveType::kTriangleList:
|
RenderTargetCache::DepthFloat24Conversion::kOnOutputRounding) &&
|
||||||
// Also supported by triangle strips and fans according to:
|
draw_util::GetDepthControlForCurrentEdramMode(regs).z_enable &&
|
||||||
// https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt
|
regs.Get<reg::RB_DEPTH_INFO>().depth_format ==
|
||||||
// Would need to convert those to triangle lists, but haven't seen any
|
xenos::DepthRenderTargetFormat::kD24FS8) {
|
||||||
// games using tessellated strips/fans so far.
|
modification.pixel.depth_stencil_mode =
|
||||||
switch (tessellation_mode) {
|
depth_float24_conversion ==
|
||||||
case xenos::TessellationMode::kDiscrete:
|
RenderTargetCache::DepthFloat24Conversion::kOnOutputTruncating
|
||||||
// - Call of Duty 3 - nets above barrels in the beginning of the
|
? DepthStencilMode::kFloat24Truncating
|
||||||
// first mission (turn right after the end of the intro) -
|
: DepthStencilMode::kFloat24Rounding;
|
||||||
// kTriangleList.
|
} else {
|
||||||
case xenos::TessellationMode::kContinuous:
|
if (shader.implicit_early_z_write_allowed() &&
|
||||||
// - Viva Pinata - tree building with a beehive in the beginning
|
(!shader.writes_color_target(0) ||
|
||||||
// (visible on the start screen behind the logo), waterfall in the
|
!draw_util::DoesCoverageDependOnAlpha(
|
||||||
// beginning - kTriangleList.
|
regs.Get<reg::RB_COLORCONTROL>()))) {
|
||||||
return Shader::HostVertexShaderType::kTriangleDomainCPIndexed;
|
modification.pixel.depth_stencil_mode = DepthStencilMode::kEarlyHint;
|
||||||
default:
|
} else {
|
||||||
break;
|
modification.pixel.depth_stencil_mode = DepthStencilMode::kNoModifiers;
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
case xenos::PrimitiveType::kQuadList:
|
|
||||||
switch (tessellation_mode) {
|
|
||||||
// Also supported by quad strips according to:
|
|
||||||
// https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_vertex_shader_tessellator.txt
|
|
||||||
// Would need to convert those to quad lists, but haven't seen any games
|
|
||||||
// using tessellated strips so far.
|
|
||||||
case xenos::TessellationMode::kDiscrete:
|
|
||||||
// Not seen in games so far.
|
|
||||||
case xenos::TessellationMode::kContinuous:
|
|
||||||
// - Defender - retro screen and beams in the main menu - kQuadList.
|
|
||||||
return Shader::HostVertexShaderType::kQuadDomainCPIndexed;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case xenos::PrimitiveType::kTrianglePatch:
|
|
||||||
// - Banjo-Kazooie: Nuts & Bolts - water - adaptive.
|
|
||||||
// - Halo 3 - water - adaptive.
|
|
||||||
return Shader::HostVertexShaderType::kTriangleDomainPatchIndexed;
|
|
||||||
case xenos::PrimitiveType::kQuadPatch:
|
|
||||||
// - Fable II - continuous.
|
|
||||||
// - Viva Pinata - garden ground - adaptive.
|
|
||||||
return Shader::HostVertexShaderType::kQuadDomainPatchIndexed;
|
|
||||||
default:
|
|
||||||
// TODO(Triang3l): Support line patches.
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
XELOGE(
|
return modification;
|
||||||
"Unsupported tessellation mode {} for primitive type {}. Report the game "
|
|
||||||
"to Xenia developers!",
|
|
||||||
uint32_t(tessellation_mode), uint32_t(vgt_draw_initiator.prim_type));
|
|
||||||
return Shader::HostVertexShaderType(-1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PipelineCache::ConfigurePipeline(
|
bool PipelineCache::ConfigurePipeline(
|
||||||
D3D12Shader::D3D12Translation* vertex_shader,
|
D3D12Shader::D3D12Translation* vertex_shader,
|
||||||
D3D12Shader::D3D12Translation* pixel_shader,
|
D3D12Shader::D3D12Translation* pixel_shader,
|
||||||
xenos::PrimitiveType primitive_type, xenos::IndexFormat index_format,
|
const PrimitiveProcessor::ProcessingResult& primitive_processing_result,
|
||||||
uint32_t bound_depth_and_color_render_target_bits,
|
uint32_t bound_depth_and_color_render_target_bits,
|
||||||
const uint32_t* bound_depth_and_color_render_target_formats,
|
const uint32_t* bound_depth_and_color_render_target_formats,
|
||||||
void** pipeline_handle_out, ID3D12RootSignature** root_signature_out) {
|
void** pipeline_handle_out, ID3D12RootSignature** root_signature_out) {
|
||||||
|
@ -1074,7 +994,7 @@ bool PipelineCache::ConfigurePipeline(
|
||||||
|
|
||||||
PipelineRuntimeDescription runtime_description;
|
PipelineRuntimeDescription runtime_description;
|
||||||
if (!GetCurrentStateDescription(
|
if (!GetCurrentStateDescription(
|
||||||
vertex_shader, pixel_shader, primitive_type, index_format,
|
vertex_shader, pixel_shader, primitive_processing_result,
|
||||||
bound_depth_and_color_render_target_bits,
|
bound_depth_and_color_render_target_bits,
|
||||||
bound_depth_and_color_render_target_formats, runtime_description)) {
|
bound_depth_and_color_render_target_formats, runtime_description)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1340,7 +1260,7 @@ bool PipelineCache::TranslateAnalyzedShader(
|
||||||
bool PipelineCache::GetCurrentStateDescription(
|
bool PipelineCache::GetCurrentStateDescription(
|
||||||
D3D12Shader::D3D12Translation* vertex_shader,
|
D3D12Shader::D3D12Translation* vertex_shader,
|
||||||
D3D12Shader::D3D12Translation* pixel_shader,
|
D3D12Shader::D3D12Translation* pixel_shader,
|
||||||
xenos::PrimitiveType primitive_type, xenos::IndexFormat index_format,
|
const PrimitiveProcessor::ProcessingResult& primitive_processing_result,
|
||||||
uint32_t bound_depth_and_color_render_target_bits,
|
uint32_t bound_depth_and_color_render_target_bits,
|
||||||
const uint32_t* bound_depth_and_color_render_target_formats,
|
const uint32_t* bound_depth_and_color_render_target_formats,
|
||||||
PipelineRuntimeDescription& runtime_description_out) {
|
PipelineRuntimeDescription& runtime_description_out) {
|
||||||
|
@ -1357,12 +1277,11 @@ bool PipelineCache::GetCurrentStateDescription(
|
||||||
// Initialize all unused fields to zero for comparison/hashing.
|
// Initialize all unused fields to zero for comparison/hashing.
|
||||||
std::memset(&runtime_description_out, 0, sizeof(runtime_description_out));
|
std::memset(&runtime_description_out, 0, sizeof(runtime_description_out));
|
||||||
|
|
||||||
bool tessellated =
|
assert_true(DxbcShaderTranslator::Modification(vertex_shader->modification())
|
||||||
DxbcShaderTranslator::Modification(vertex_shader->modification())
|
.vertex.host_vertex_shader_type ==
|
||||||
.vertex.host_vertex_shader_type !=
|
primitive_processing_result.host_vertex_shader_type);
|
||||||
Shader::HostVertexShaderType::kVertex;
|
bool tessellated = primitive_processing_result.IsTessellated();
|
||||||
bool primitive_polygonal =
|
bool primitive_polygonal = draw_util::IsPrimitivePolygonal(regs);
|
||||||
xenos::IsPrimitivePolygonal(tessellated, primitive_type);
|
|
||||||
bool rasterization_enabled =
|
bool rasterization_enabled =
|
||||||
draw_util::IsRasterizationPotentiallyDone(regs, primitive_polygonal);
|
draw_util::IsRasterizationPotentiallyDone(regs, primitive_polygonal);
|
||||||
// In Direct3D, rasterization (along with pixel counting) is disabled by
|
// In Direct3D, rasterization (along with pixel counting) is disabled by
|
||||||
|
@ -1397,12 +1316,12 @@ bool PipelineCache::GetCurrentStateDescription(
|
||||||
description_out.vertex_shader_modification = vertex_shader->modification();
|
description_out.vertex_shader_modification = vertex_shader->modification();
|
||||||
|
|
||||||
// Index buffer strip cut value.
|
// Index buffer strip cut value.
|
||||||
if (pa_su_sc_mode_cntl.multi_prim_ib_ena) {
|
if (primitive_processing_result.host_primitive_reset_enabled) {
|
||||||
// Not using 0xFFFF with 32-bit indices because in index buffers it will be
|
description_out.strip_cut_index =
|
||||||
// 0xFFFF0000 anyway due to endianness.
|
primitive_processing_result.host_index_format ==
|
||||||
description_out.strip_cut_index = index_format == xenos::IndexFormat::kInt32
|
xenos::IndexFormat::kInt16
|
||||||
? PipelineStripCutIndex::kFFFFFFFF
|
? PipelineStripCutIndex::kFFFF
|
||||||
: PipelineStripCutIndex::kFFFF;
|
: PipelineStripCutIndex::kFFFFFFFF;
|
||||||
} else {
|
} else {
|
||||||
description_out.strip_cut_index = PipelineStripCutIndex::kNone;
|
description_out.strip_cut_index = PipelineStripCutIndex::kNone;
|
||||||
}
|
}
|
||||||
|
@ -1410,9 +1329,9 @@ bool PipelineCache::GetCurrentStateDescription(
|
||||||
// Host vertex shader type and primitive topology.
|
// Host vertex shader type and primitive topology.
|
||||||
if (tessellated) {
|
if (tessellated) {
|
||||||
description_out.primitive_topology_type_or_tessellation_mode =
|
description_out.primitive_topology_type_or_tessellation_mode =
|
||||||
uint32_t(regs.Get<reg::VGT_HOS_CNTL>().tess_mode);
|
uint32_t(primitive_processing_result.tessellation_mode);
|
||||||
} else {
|
} else {
|
||||||
switch (primitive_type) {
|
switch (primitive_processing_result.host_primitive_type) {
|
||||||
case xenos::PrimitiveType::kPointList:
|
case xenos::PrimitiveType::kPointList:
|
||||||
description_out.primitive_topology_type_or_tessellation_mode =
|
description_out.primitive_topology_type_or_tessellation_mode =
|
||||||
uint32_t(PipelinePrimitiveTopologyType::kPoint);
|
uint32_t(PipelinePrimitiveTopologyType::kPoint);
|
||||||
|
@ -1431,7 +1350,7 @@ bool PipelineCache::GetCurrentStateDescription(
|
||||||
uint32_t(PipelinePrimitiveTopologyType::kTriangle);
|
uint32_t(PipelinePrimitiveTopologyType::kTriangle);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (primitive_type) {
|
switch (primitive_processing_result.host_primitive_type) {
|
||||||
case xenos::PrimitiveType::kPointList:
|
case xenos::PrimitiveType::kPointList:
|
||||||
description_out.geometry_shader = PipelineGeometryShader::kPointList;
|
description_out.geometry_shader = PipelineGeometryShader::kPointList;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "xenia/gpu/d3d12/d3d12_shader.h"
|
#include "xenia/gpu/d3d12/d3d12_shader.h"
|
||||||
#include "xenia/gpu/dxbc_shader_translator.h"
|
#include "xenia/gpu/dxbc_shader_translator.h"
|
||||||
#include "xenia/gpu/gpu_flags.h"
|
#include "xenia/gpu/gpu_flags.h"
|
||||||
|
#include "xenia/gpu/primitive_processor.h"
|
||||||
#include "xenia/gpu/register_file.h"
|
#include "xenia/gpu/register_file.h"
|
||||||
#include "xenia/gpu/xenos.h"
|
#include "xenia/gpu/xenos.h"
|
||||||
#include "xenia/ui/d3d12/d3d12_api.h"
|
#include "xenia/ui/d3d12/d3d12_api.h"
|
||||||
|
@ -67,18 +68,21 @@ class PipelineCache {
|
||||||
shader.AnalyzeUcode(ucode_disasm_buffer_);
|
shader.AnalyzeUcode(ucode_disasm_buffer_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieves the shader modification for the current state, and returns
|
// Retrieves the shader modification for the current state. The shader must
|
||||||
// whether it is valid. The shader must have microcode analyzed.
|
// have microcode analyzed.
|
||||||
bool PipelineCache::GetCurrentShaderModification(
|
DxbcShaderTranslator::Modification
|
||||||
|
PipelineCache::GetCurrentVertexShaderModification(
|
||||||
const Shader& shader,
|
const Shader& shader,
|
||||||
DxbcShaderTranslator::Modification& modification_out) const;
|
Shader::HostVertexShaderType host_vertex_shader_type) const;
|
||||||
|
DxbcShaderTranslator::Modification
|
||||||
|
PipelineCache::GetCurrentPixelShaderModification(const Shader& shader) const;
|
||||||
|
|
||||||
// If draw_util::IsRasterizationPotentiallyDone is false, the pixel shader
|
// If draw_util::IsRasterizationPotentiallyDone is false, the pixel shader
|
||||||
// MUST be made nullptr BEFORE calling this!
|
// MUST be made nullptr BEFORE calling this!
|
||||||
bool ConfigurePipeline(
|
bool ConfigurePipeline(
|
||||||
D3D12Shader::D3D12Translation* vertex_shader,
|
D3D12Shader::D3D12Translation* vertex_shader,
|
||||||
D3D12Shader::D3D12Translation* pixel_shader,
|
D3D12Shader::D3D12Translation* pixel_shader,
|
||||||
xenos::PrimitiveType primitive_type, xenos::IndexFormat index_format,
|
const PrimitiveProcessor::ProcessingResult& primitive_processing_result,
|
||||||
uint32_t bound_depth_and_color_render_target_bits,
|
uint32_t bound_depth_and_color_render_target_bits,
|
||||||
const uint32_t* bound_depth_and_color_render_targets_formats,
|
const uint32_t* bound_depth_and_color_render_targets_formats,
|
||||||
void** pipeline_handle_out, ID3D12RootSignature** root_signature_out);
|
void** pipeline_handle_out, ID3D12RootSignature** root_signature_out);
|
||||||
|
@ -226,10 +230,6 @@ class PipelineCache {
|
||||||
PipelineDescription description;
|
PipelineDescription description;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Returns the host vertex shader type for the current draw if it's valid and
|
|
||||||
// supported, or Shader::HostVertexShaderType(-1) if not.
|
|
||||||
Shader::HostVertexShaderType GetCurrentHostVertexShaderTypeIfValid() const;
|
|
||||||
|
|
||||||
D3D12Shader* LoadShader(xenos::ShaderType shader_type,
|
D3D12Shader* LoadShader(xenos::ShaderType shader_type,
|
||||||
const uint32_t* host_address, uint32_t dword_count,
|
const uint32_t* host_address, uint32_t dword_count,
|
||||||
uint64_t data_hash);
|
uint64_t data_hash);
|
||||||
|
@ -247,7 +247,7 @@ class PipelineCache {
|
||||||
bool GetCurrentStateDescription(
|
bool GetCurrentStateDescription(
|
||||||
D3D12Shader::D3D12Translation* vertex_shader,
|
D3D12Shader::D3D12Translation* vertex_shader,
|
||||||
D3D12Shader::D3D12Translation* pixel_shader,
|
D3D12Shader::D3D12Translation* pixel_shader,
|
||||||
xenos::PrimitiveType primitive_type, xenos::IndexFormat index_format,
|
const PrimitiveProcessor::ProcessingResult& primitive_processing_result,
|
||||||
uint32_t bound_depth_and_color_render_target_bits,
|
uint32_t bound_depth_and_color_render_target_bits,
|
||||||
const uint32_t* bound_depth_and_color_render_target_formats,
|
const uint32_t* bound_depth_and_color_render_target_formats,
|
||||||
PipelineRuntimeDescription& runtime_description_out);
|
PipelineRuntimeDescription& runtime_description_out);
|
||||||
|
|
|
@ -1,762 +0,0 @@
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* Xenia : Xbox 360 Emulator Research Project *
|
|
||||||
******************************************************************************
|
|
||||||
* Copyright 2018 Ben Vanik. All rights reserved. *
|
|
||||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "xenia/gpu/d3d12/primitive_converter.h"
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
#include "xenia/base/assert.h"
|
|
||||||
#include "xenia/base/cvar.h"
|
|
||||||
#include "xenia/base/logging.h"
|
|
||||||
#include "xenia/base/math.h"
|
|
||||||
#include "xenia/base/memory.h"
|
|
||||||
#include "xenia/base/platform.h"
|
|
||||||
#include "xenia/base/profiling.h"
|
|
||||||
#include "xenia/gpu/d3d12/d3d12_command_processor.h"
|
|
||||||
#include "xenia/ui/d3d12/d3d12_util.h"
|
|
||||||
|
|
||||||
DEFINE_bool(d3d12_convert_quads_to_triangles, false,
|
|
||||||
"Convert quad lists to triangle lists on the CPU instead of using "
|
|
||||||
"a geometry shader. Not recommended for playing, for debugging "
|
|
||||||
"primarily (because PIX fails to display vertices when a geometry "
|
|
||||||
"shader is used), and this way quads can't be discarded correctly "
|
|
||||||
"when the game uses vertex kill functionality.",
|
|
||||||
"D3D12");
|
|
||||||
|
|
||||||
namespace xe {
|
|
||||||
namespace gpu {
|
|
||||||
namespace d3d12 {
|
|
||||||
|
|
||||||
PrimitiveConverter::PrimitiveConverter(D3D12CommandProcessor& command_processor,
|
|
||||||
const RegisterFile& register_file,
|
|
||||||
Memory& memory,
|
|
||||||
TraceWriter& trace_writer)
|
|
||||||
: command_processor_(command_processor),
|
|
||||||
register_file_(register_file),
|
|
||||||
memory_(memory),
|
|
||||||
trace_writer_(trace_writer) {
|
|
||||||
system_page_size_ = uint32_t(memory::page_size());
|
|
||||||
}
|
|
||||||
|
|
||||||
PrimitiveConverter::~PrimitiveConverter() { Shutdown(); }
|
|
||||||
|
|
||||||
bool PrimitiveConverter::Initialize() {
|
|
||||||
auto& provider = command_processor_.GetD3D12Context().GetD3D12Provider();
|
|
||||||
auto device = provider.GetDevice();
|
|
||||||
D3D12_HEAP_FLAGS heap_flag_create_not_zeroed =
|
|
||||||
provider.GetHeapFlagCreateNotZeroed();
|
|
||||||
|
|
||||||
// There can be at most 65535 indices in a Xenos draw call (16 bit index
|
|
||||||
// count), but they can be up to 4 bytes large, and conversion can add more
|
|
||||||
// indices (almost triple the count for triangle strips or fans, for
|
|
||||||
// instance).
|
|
||||||
buffer_pool_ = std::make_unique<ui::d3d12::D3D12UploadBufferPool>(
|
|
||||||
provider, std::max(sizeof(uint32_t) * 3 * 65535,
|
|
||||||
ui::d3d12::D3D12UploadBufferPool::kDefaultPageSize));
|
|
||||||
|
|
||||||
// Create the static index buffer for non-indexed drawing.
|
|
||||||
D3D12_RESOURCE_DESC static_ib_desc;
|
|
||||||
ui::d3d12::util::FillBufferResourceDesc(
|
|
||||||
static_ib_desc, kStaticIBTotalCount * sizeof(uint16_t),
|
|
||||||
D3D12_RESOURCE_FLAG_NONE);
|
|
||||||
if (FAILED(device->CreateCommittedResource(
|
|
||||||
&ui::d3d12::util::kHeapPropertiesUpload, heap_flag_create_not_zeroed,
|
|
||||||
&static_ib_desc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr,
|
|
||||||
IID_PPV_ARGS(&static_ib_upload_)))) {
|
|
||||||
XELOGE(
|
|
||||||
"Failed to create the upload buffer for the primitive conversion "
|
|
||||||
"static index buffer");
|
|
||||||
Shutdown();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
D3D12_RANGE static_ib_read_range;
|
|
||||||
static_ib_read_range.Begin = 0;
|
|
||||||
static_ib_read_range.End = 0;
|
|
||||||
void* static_ib_mapping;
|
|
||||||
if (FAILED(static_ib_upload_->Map(0, &static_ib_read_range,
|
|
||||||
&static_ib_mapping))) {
|
|
||||||
XELOGE(
|
|
||||||
"Failed to map the upload buffer for the primitive conversion "
|
|
||||||
"static index buffer");
|
|
||||||
Shutdown();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
uint16_t* static_ib_data = reinterpret_cast<uint16_t*>(static_ib_mapping);
|
|
||||||
// Triangle fans as triangle lists.
|
|
||||||
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
|
|
||||||
// Ordered as (v1, v2, v0), (v2, v3, v0).
|
|
||||||
uint16_t* static_ib_data_pointer =
|
|
||||||
&static_ib_data[kStaticIBTriangleFanOffset];
|
|
||||||
for (uint32_t i = 2; i < kMaxNonIndexedVertices; ++i) {
|
|
||||||
*(static_ib_data_pointer++) = i - 1;
|
|
||||||
*(static_ib_data_pointer++) = i;
|
|
||||||
*(static_ib_data_pointer++) = 0;
|
|
||||||
}
|
|
||||||
static_ib_data_pointer = &static_ib_data[kStaticIBQuadOffset];
|
|
||||||
for (uint32_t i = 0; i < (kMaxNonIndexedVertices >> 2); ++i) {
|
|
||||||
uint32_t quad_index = i << 2;
|
|
||||||
*(static_ib_data_pointer++) = quad_index;
|
|
||||||
*(static_ib_data_pointer++) = quad_index + 1;
|
|
||||||
*(static_ib_data_pointer++) = quad_index + 2;
|
|
||||||
*(static_ib_data_pointer++) = quad_index;
|
|
||||||
*(static_ib_data_pointer++) = quad_index + 2;
|
|
||||||
*(static_ib_data_pointer++) = quad_index + 3;
|
|
||||||
}
|
|
||||||
static_ib_upload_->Unmap(0, nullptr);
|
|
||||||
// Not uploaded yet.
|
|
||||||
static_ib_upload_submission_ = UINT64_MAX;
|
|
||||||
if (FAILED(device->CreateCommittedResource(
|
|
||||||
&ui::d3d12::util::kHeapPropertiesDefault, heap_flag_create_not_zeroed,
|
|
||||||
&static_ib_desc, D3D12_RESOURCE_STATE_COPY_DEST, nullptr,
|
|
||||||
IID_PPV_ARGS(&static_ib_)))) {
|
|
||||||
XELOGE("Failed to create the primitive conversion static index buffer");
|
|
||||||
Shutdown();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
static_ib_gpu_address_ = static_ib_->GetGPUVirtualAddress();
|
|
||||||
|
|
||||||
memory_regions_invalidated_.store(0ull, std::memory_order_relaxed);
|
|
||||||
memory_invalidation_callback_handle_ =
|
|
||||||
memory_.RegisterPhysicalMemoryInvalidationCallback(
|
|
||||||
MemoryInvalidationCallbackThunk, this);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrimitiveConverter::Shutdown() {
|
|
||||||
if (memory_invalidation_callback_handle_ != nullptr) {
|
|
||||||
memory_.UnregisterPhysicalMemoryInvalidationCallback(
|
|
||||||
memory_invalidation_callback_handle_);
|
|
||||||
memory_invalidation_callback_handle_ = nullptr;
|
|
||||||
}
|
|
||||||
ui::d3d12::util::ReleaseAndNull(static_ib_);
|
|
||||||
ui::d3d12::util::ReleaseAndNull(static_ib_upload_);
|
|
||||||
buffer_pool_.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrimitiveConverter::ClearCache() { buffer_pool_->ClearCache(); }
|
|
||||||
|
|
||||||
void PrimitiveConverter::CompletedSubmissionUpdated() {
|
|
||||||
if (static_ib_upload_ && command_processor_.GetCompletedSubmission() >=
|
|
||||||
static_ib_upload_submission_) {
|
|
||||||
// Completely uploaded - release the upload buffer.
|
|
||||||
static_ib_upload_->Release();
|
|
||||||
static_ib_upload_ = nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrimitiveConverter::BeginSubmission() {
|
|
||||||
// Got a command list now - upload and transition the static index buffer if
|
|
||||||
// needed.
|
|
||||||
if (static_ib_upload_ && static_ib_upload_submission_ == UINT64_MAX) {
|
|
||||||
command_processor_.GetDeferredCommandList().D3DCopyResource(
|
|
||||||
static_ib_, static_ib_upload_);
|
|
||||||
command_processor_.PushTransitionBarrier(static_ib_,
|
|
||||||
D3D12_RESOURCE_STATE_COPY_DEST,
|
|
||||||
D3D12_RESOURCE_STATE_INDEX_BUFFER);
|
|
||||||
static_ib_upload_submission_ = command_processor_.GetCurrentSubmission();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrimitiveConverter::BeginFrame() {
|
|
||||||
buffer_pool_->Reclaim(command_processor_.GetCompletedFrame());
|
|
||||||
converted_indices_cache_.clear();
|
|
||||||
memory_regions_used_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
xenos::PrimitiveType PrimitiveConverter::GetReplacementPrimitiveType(
|
|
||||||
xenos::PrimitiveType type) {
|
|
||||||
switch (type) {
|
|
||||||
case xenos::PrimitiveType::kTriangleFan:
|
|
||||||
return xenos::PrimitiveType::kTriangleList;
|
|
||||||
case xenos::PrimitiveType::kLineLoop:
|
|
||||||
return xenos::PrimitiveType::kLineStrip;
|
|
||||||
case xenos::PrimitiveType::kQuadList:
|
|
||||||
if (cvars::d3d12_convert_quads_to_triangles) {
|
|
||||||
return xenos::PrimitiveType::kTriangleList;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
PrimitiveConverter::ConversionResult PrimitiveConverter::ConvertPrimitives(
|
|
||||||
xenos::PrimitiveType source_type, uint32_t address, uint32_t index_count,
|
|
||||||
xenos::IndexFormat index_format, xenos::Endian index_endianness,
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS& gpu_address_out, uint32_t& index_count_out) {
|
|
||||||
bool index_32bit = index_format == xenos::IndexFormat::kInt32;
|
|
||||||
const auto& regs = register_file_;
|
|
||||||
bool reset = regs.Get<reg::PA_SU_SC_MODE_CNTL>().multi_prim_ib_ena;
|
|
||||||
// Swap the reset index because we will be comparing unswapped values to it.
|
|
||||||
uint32_t reset_index = xenos::GpuSwap(
|
|
||||||
regs[XE_GPU_REG_VGT_MULTI_PRIM_IB_RESET_INDX].u32, index_endianness);
|
|
||||||
// If the specified reset index is the same as the one used by Direct3D 12
|
|
||||||
// (0xFFFF or 0xFFFFFFFF - in the pipeline cache, we use the former for
|
|
||||||
// 16-bit and the latter for 32-bit indices), we can use the buffer directly.
|
|
||||||
uint32_t reset_index_host = index_32bit ? 0xFFFFFFFFu : 0xFFFFu;
|
|
||||||
|
|
||||||
// Degenerate line loops are just lines.
|
|
||||||
if (source_type == xenos::PrimitiveType::kLineLoop && index_count <= 2) {
|
|
||||||
source_type = xenos::PrimitiveType::kLineStrip;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if need to convert at all.
|
|
||||||
if (source_type == xenos::PrimitiveType::kTriangleStrip ||
|
|
||||||
source_type == xenos::PrimitiveType::kLineStrip) {
|
|
||||||
if (!reset || reset_index == reset_index_host) {
|
|
||||||
return ConversionResult::kConversionNotNeeded;
|
|
||||||
}
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kQuadList) {
|
|
||||||
if (!cvars::d3d12_convert_quads_to_triangles) {
|
|
||||||
return ConversionResult::kConversionNotNeeded;
|
|
||||||
}
|
|
||||||
} else if (source_type != xenos::PrimitiveType::kTriangleFan &&
|
|
||||||
source_type != xenos::PrimitiveType::kLineLoop) {
|
|
||||||
return ConversionResult::kConversionNotNeeded;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if XE_UI_D3D12_FINE_GRAINED_DRAW_SCOPES
|
|
||||||
SCOPE_profile_cpu_f("gpu");
|
|
||||||
#endif // XE_UI_D3D12_FINE_GRAINED_DRAW_SCOPES
|
|
||||||
|
|
||||||
// Exit early for clearly empty draws, without even reading the memory.
|
|
||||||
uint32_t index_count_min;
|
|
||||||
if (source_type == xenos::PrimitiveType::kLineStrip ||
|
|
||||||
source_type == xenos::PrimitiveType::kLineLoop) {
|
|
||||||
index_count_min = 2;
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kQuadList) {
|
|
||||||
index_count_min = 4;
|
|
||||||
} else {
|
|
||||||
index_count_min = 3;
|
|
||||||
}
|
|
||||||
if (index_count < index_count_min) {
|
|
||||||
return ConversionResult::kPrimitiveEmpty;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Invalidate the cache if data behind any entry was modified.
|
|
||||||
if (memory_regions_invalidated_.exchange(0ull, std::memory_order_acquire) &
|
|
||||||
memory_regions_used_) {
|
|
||||||
converted_indices_cache_.clear();
|
|
||||||
memory_regions_used_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
address &= index_32bit ? 0x1FFFFFFC : 0x1FFFFFFE;
|
|
||||||
uint32_t index_size = index_32bit ? sizeof(uint32_t) : sizeof(uint16_t);
|
|
||||||
uint32_t index_buffer_size = index_size * index_count;
|
|
||||||
uint32_t address_last = address + index_size * (index_count - 1);
|
|
||||||
|
|
||||||
// Create the cache entry, currently only for the key.
|
|
||||||
ConvertedIndices converted_indices;
|
|
||||||
converted_indices.key.address = address;
|
|
||||||
converted_indices.key.source_type = source_type;
|
|
||||||
converted_indices.key.format = index_format;
|
|
||||||
converted_indices.key.count = index_count;
|
|
||||||
converted_indices.key.reset = reset ? 1 : 0;
|
|
||||||
converted_indices.reset_index = reset_index;
|
|
||||||
|
|
||||||
// Try to find the previously converted index buffer.
|
|
||||||
auto found_range =
|
|
||||||
converted_indices_cache_.equal_range(converted_indices.key.value);
|
|
||||||
for (auto iter = found_range.first; iter != found_range.second; ++iter) {
|
|
||||||
const ConvertedIndices& found_converted = iter->second;
|
|
||||||
if (reset && found_converted.reset_index != reset_index) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (found_converted.converted_index_count == 0) {
|
|
||||||
return ConversionResult::kPrimitiveEmpty;
|
|
||||||
}
|
|
||||||
if (!found_converted.gpu_address) {
|
|
||||||
return ConversionResult::kConversionNotNeeded;
|
|
||||||
}
|
|
||||||
gpu_address_out = found_converted.gpu_address;
|
|
||||||
index_count_out = found_converted.converted_index_count;
|
|
||||||
return ConversionResult::kConverted;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the memory usage mask for cache invalidation.
|
|
||||||
// 1 bit = (512 / 64) MB = 8 MB.
|
|
||||||
uint64_t memory_regions_used_bits = ~((1ull << (address >> 23)) - 1);
|
|
||||||
if (address_last < (63 << 23)) {
|
|
||||||
memory_regions_used_bits = (1ull << ((address_last >> 23) + 1)) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
union {
|
|
||||||
const void* source;
|
|
||||||
const uint8_t* source_8;
|
|
||||||
const uint16_t* source_16;
|
|
||||||
const uint32_t* source_32;
|
|
||||||
uintptr_t source_uintptr;
|
|
||||||
};
|
|
||||||
source = memory_.TranslatePhysical(address);
|
|
||||||
|
|
||||||
// Calculate the new index count, and also check if there's nothing to convert
|
|
||||||
// in the buffer (for instance, if not using actually primitive reset).
|
|
||||||
uint32_t converted_index_count = 0;
|
|
||||||
bool conversion_needed = false;
|
|
||||||
bool simd = false;
|
|
||||||
// Optimization specific to primitive types - if reset index not found in the
|
|
||||||
// source index buffer, can set this to false and use a faster way of copying.
|
|
||||||
bool reset_actually_used = reset;
|
|
||||||
if (source_type == xenos::PrimitiveType::kTriangleFan) {
|
|
||||||
// Triangle fans are not supported by Direct3D 12 at all.
|
|
||||||
conversion_needed = true;
|
|
||||||
trace_writer_.WriteMemoryRead(address, index_buffer_size);
|
|
||||||
if (reset) {
|
|
||||||
uint32_t current_fan_index_count = 0;
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint32_t index = index_format == xenos::IndexFormat::kInt32
|
|
||||||
? source_32[i]
|
|
||||||
: source_16[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
current_fan_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (++current_fan_index_count >= 3) {
|
|
||||||
converted_index_count += 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
converted_index_count = 3 * (index_count - 2);
|
|
||||||
}
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kTriangleStrip ||
|
|
||||||
source_type == xenos::PrimitiveType::kLineStrip) {
|
|
||||||
converted_index_count = index_count;
|
|
||||||
// Check if the restart index is used at all in this buffer because reading
|
|
||||||
// vertices from a default heap is faster than from an upload heap.
|
|
||||||
conversion_needed = false;
|
|
||||||
trace_writer_.WriteMemoryRead(address, index_buffer_size);
|
|
||||||
#if XE_ARCH_AMD64
|
|
||||||
// Will use SIMD to copy 16-byte blocks using _mm_or_si128.
|
|
||||||
simd = true;
|
|
||||||
union {
|
|
||||||
const void* check_source;
|
|
||||||
const uint32_t* check_source_16;
|
|
||||||
const uint32_t* check_source_32;
|
|
||||||
const __m128i* check_source_128;
|
|
||||||
uintptr_t check_source_uintptr;
|
|
||||||
};
|
|
||||||
check_source = source;
|
|
||||||
uint32_t check_indices_remaining = index_count;
|
|
||||||
alignas(16) uint64_t check_result[2];
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
while (check_indices_remaining != 0 && (check_source_uintptr & 15)) {
|
|
||||||
--check_indices_remaining;
|
|
||||||
if (*(check_source_32++) == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__m128i check_reset_index_vector = _mm_set1_epi32(reset_index);
|
|
||||||
while (check_indices_remaining >= 4) {
|
|
||||||
check_indices_remaining -= 4;
|
|
||||||
_mm_store_si128(reinterpret_cast<__m128i*>(&check_result),
|
|
||||||
_mm_cmpeq_epi32(_mm_load_si128(check_source_128++),
|
|
||||||
check_reset_index_vector));
|
|
||||||
if (check_result[0] || check_result[1]) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (check_indices_remaining != 0) {
|
|
||||||
--check_indices_remaining;
|
|
||||||
if (*(check_source_32++) == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
while (check_indices_remaining != 0 && (check_source_uintptr & 15)) {
|
|
||||||
--check_indices_remaining;
|
|
||||||
if (*(check_source_16++) == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__m128i check_reset_index_vector = _mm_set1_epi16(reset_index);
|
|
||||||
while (check_indices_remaining >= 8) {
|
|
||||||
check_indices_remaining -= 8;
|
|
||||||
_mm_store_si128(reinterpret_cast<__m128i*>(&check_result),
|
|
||||||
_mm_cmpeq_epi16(_mm_load_si128(check_source_128++),
|
|
||||||
check_reset_index_vector));
|
|
||||||
if (check_result[0] || check_result[1]) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (check_indices_remaining != 0) {
|
|
||||||
--check_indices_remaining;
|
|
||||||
if (*(check_source_16++) == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
check_indices_remaining = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
if (source_32[i] == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
if (source_16[i] == reset_index) {
|
|
||||||
conversion_needed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // XE_ARCH_AMD64
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kLineLoop) {
|
|
||||||
conversion_needed = true;
|
|
||||||
trace_writer_.WriteMemoryRead(address, index_buffer_size);
|
|
||||||
if (reset) {
|
|
||||||
reset_actually_used = false;
|
|
||||||
uint32_t current_strip_index_count = 0;
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint32_t index = index_format == xenos::IndexFormat::kInt32
|
|
||||||
? source_32[i]
|
|
||||||
: source_16[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
reset_actually_used = true;
|
|
||||||
// Loop strips with more than 2 vertices.
|
|
||||||
if (current_strip_index_count > 2) {
|
|
||||||
++converted_index_count;
|
|
||||||
}
|
|
||||||
current_strip_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Start a new strip if 2 vertices, add one vertex if more.
|
|
||||||
if (++current_strip_index_count >= 2) {
|
|
||||||
converted_index_count += current_strip_index_count == 2 ? 2 : 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
converted_index_count = index_count + 1;
|
|
||||||
}
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kQuadList) {
|
|
||||||
conversion_needed = true;
|
|
||||||
trace_writer_.WriteMemoryRead(address, index_buffer_size);
|
|
||||||
converted_index_count = (index_count >> 2) * 6;
|
|
||||||
}
|
|
||||||
converted_indices.converted_index_count = converted_index_count;
|
|
||||||
|
|
||||||
// If nothing to convert, store this result so the check won't be happening
|
|
||||||
// again and again and exit.
|
|
||||||
if (!conversion_needed || converted_index_count == 0) {
|
|
||||||
converted_indices.gpu_address = 0;
|
|
||||||
converted_indices_cache_.emplace(converted_indices.key.value,
|
|
||||||
converted_indices);
|
|
||||||
memory_regions_used_ |= memory_regions_used_bits;
|
|
||||||
return converted_index_count == 0 ? ConversionResult::kPrimitiveEmpty
|
|
||||||
: ConversionResult::kConversionNotNeeded;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert.
|
|
||||||
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
|
||||||
void* target = AllocateIndices(index_format, converted_index_count,
|
|
||||||
simd ? address & 15 : 0, gpu_address);
|
|
||||||
if (target == nullptr) {
|
|
||||||
return ConversionResult::kFailed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (source_type == xenos::PrimitiveType::kTriangleFan) {
|
|
||||||
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
|
|
||||||
// Ordered as (v1, v2, v0), (v2, v3, v0).
|
|
||||||
if (reset) {
|
|
||||||
uint32_t current_fan_index_count = 0;
|
|
||||||
uint32_t current_fan_first_index = 0;
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
uint32_t* target_32 = reinterpret_cast<uint32_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint32_t index = source_32[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
current_fan_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (current_fan_index_count == 0) {
|
|
||||||
current_fan_first_index = index;
|
|
||||||
}
|
|
||||||
if (++current_fan_index_count >= 3) {
|
|
||||||
*(target_32++) = source_32[i - 1];
|
|
||||||
*(target_32++) = index;
|
|
||||||
*(target_32++) = current_fan_first_index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uint16_t* target_16 = reinterpret_cast<uint16_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint16_t index = source_16[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
current_fan_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (current_fan_index_count == 0) {
|
|
||||||
current_fan_first_index = index;
|
|
||||||
}
|
|
||||||
if (++current_fan_index_count >= 3) {
|
|
||||||
*(target_16++) = source_16[i - 1];
|
|
||||||
*(target_16++) = index;
|
|
||||||
*(target_16++) = uint16_t(current_fan_first_index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
uint32_t* target_32 = reinterpret_cast<uint32_t*>(target);
|
|
||||||
for (uint32_t i = 2; i < index_count; ++i) {
|
|
||||||
*(target_32++) = source_32[i - 1];
|
|
||||||
*(target_32++) = source_32[i];
|
|
||||||
*(target_32++) = source_32[0];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uint16_t* target_16 = reinterpret_cast<uint16_t*>(target);
|
|
||||||
for (uint32_t i = 2; i < index_count; ++i) {
|
|
||||||
*(target_16++) = source_16[i - 1];
|
|
||||||
*(target_16++) = source_16[i];
|
|
||||||
*(target_16++) = source_16[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kTriangleStrip ||
|
|
||||||
source_type == xenos::PrimitiveType::kLineStrip) {
|
|
||||||
#if XE_ARCH_AMD64
|
|
||||||
// Replace the reset index with the maximum representable value - vector OR
|
|
||||||
// gives 0 or 0xFFFF/0xFFFFFFFF, which is exactly what is needed.
|
|
||||||
// Allocations in the target index buffer are aligned with 16-byte
|
|
||||||
// granularity, and within 16-byte vectors, both the source and the target
|
|
||||||
// start at the same offset.
|
|
||||||
union {
|
|
||||||
const __m128i* source_aligned_128;
|
|
||||||
uintptr_t source_aligned_uintptr;
|
|
||||||
};
|
|
||||||
source_aligned_uintptr = source_uintptr & ~(uintptr_t(15));
|
|
||||||
union {
|
|
||||||
__m128i* target_aligned_128;
|
|
||||||
uintptr_t target_aligned_uintptr;
|
|
||||||
};
|
|
||||||
target_aligned_uintptr =
|
|
||||||
reinterpret_cast<uintptr_t>(target) & ~(uintptr_t(15));
|
|
||||||
uint32_t vector_count = (address_last >> 4) - (address >> 4) + 1;
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
__m128i reset_index_vector = _mm_set1_epi32(reset_index);
|
|
||||||
for (uint32_t i = 0; i < vector_count; ++i) {
|
|
||||||
__m128i indices_vector = _mm_load_si128(source_aligned_128++);
|
|
||||||
__m128i indices_are_reset_vector =
|
|
||||||
_mm_cmpeq_epi32(indices_vector, reset_index_vector);
|
|
||||||
_mm_store_si128(target_aligned_128++,
|
|
||||||
_mm_or_si128(indices_vector, indices_are_reset_vector));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
__m128i reset_index_vector = _mm_set1_epi16(reset_index);
|
|
||||||
for (uint32_t i = 0; i < vector_count; ++i) {
|
|
||||||
__m128i indices_vector = _mm_load_si128(source_aligned_128++);
|
|
||||||
__m128i indices_are_reset_vector =
|
|
||||||
_mm_cmpeq_epi16(indices_vector, reset_index_vector);
|
|
||||||
_mm_store_si128(target_aligned_128++,
|
|
||||||
_mm_or_si128(indices_vector, indices_are_reset_vector));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint32_t index = source_32[i];
|
|
||||||
reinterpret_cast<uint32_t*>(target)[i] =
|
|
||||||
index == reset_index ? 0xFFFFFFFFu : index;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint16_t index = source_16[i];
|
|
||||||
reinterpret_cast<uint16_t*>(target)[i] =
|
|
||||||
index == reset_index ? 0xFFFFu : index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // XE_ARCH_AMD64
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kLineLoop) {
|
|
||||||
if (reset_actually_used) {
|
|
||||||
uint32_t current_strip_index_count = 0;
|
|
||||||
uint32_t current_strip_first_index = 0;
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
uint32_t* target_32 = reinterpret_cast<uint32_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint32_t index = source_32[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
if (current_strip_index_count > 2) {
|
|
||||||
*(target_32++) = current_strip_first_index;
|
|
||||||
}
|
|
||||||
current_strip_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (current_strip_index_count == 0) {
|
|
||||||
current_strip_first_index = index;
|
|
||||||
}
|
|
||||||
++current_strip_index_count;
|
|
||||||
if (current_strip_index_count >= 2) {
|
|
||||||
if (current_strip_index_count == 2) {
|
|
||||||
*(target_32++) = current_strip_first_index;
|
|
||||||
}
|
|
||||||
*(target_32++) = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uint16_t* target_16 = reinterpret_cast<uint16_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < index_count; ++i) {
|
|
||||||
uint16_t index = source_16[i];
|
|
||||||
if (index == reset_index) {
|
|
||||||
if (current_strip_index_count > 2) {
|
|
||||||
*(target_16++) = uint16_t(current_strip_first_index);
|
|
||||||
}
|
|
||||||
current_strip_index_count = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (current_strip_index_count == 0) {
|
|
||||||
current_strip_first_index = index;
|
|
||||||
}
|
|
||||||
++current_strip_index_count;
|
|
||||||
if (current_strip_index_count >= 2) {
|
|
||||||
if (current_strip_index_count == 2) {
|
|
||||||
*(target_16++) = uint16_t(current_strip_first_index);
|
|
||||||
}
|
|
||||||
*(target_16++) = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
std::memcpy(target, source, index_count * index_size);
|
|
||||||
if (converted_index_count > index_count) {
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
reinterpret_cast<uint32_t*>(target)[index_count] = source_32[0];
|
|
||||||
} else {
|
|
||||||
reinterpret_cast<uint16_t*>(target)[index_count] = source_16[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (source_type == xenos::PrimitiveType::kQuadList) {
|
|
||||||
uint32_t quad_count = index_count >> 4;
|
|
||||||
if (index_format == xenos::IndexFormat::kInt32) {
|
|
||||||
uint32_t* target_32 = reinterpret_cast<uint32_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < quad_count; ++i) {
|
|
||||||
uint32_t quad_index = i << 2;
|
|
||||||
*(target_32++) = source_32[quad_index];
|
|
||||||
*(target_32++) = source_32[quad_index + 1];
|
|
||||||
*(target_32++) = source_32[quad_index + 2];
|
|
||||||
*(target_32++) = source_32[quad_index];
|
|
||||||
*(target_32++) = source_32[quad_index + 2];
|
|
||||||
*(target_32++) = source_32[quad_index + 3];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uint16_t* target_16 = reinterpret_cast<uint16_t*>(target);
|
|
||||||
for (uint32_t i = 0; i < quad_count; ++i) {
|
|
||||||
uint32_t quad_index = i << 2;
|
|
||||||
*(target_16++) = source_16[quad_index];
|
|
||||||
*(target_16++) = source_16[quad_index + 1];
|
|
||||||
*(target_16++) = source_16[quad_index + 2];
|
|
||||||
*(target_16++) = source_16[quad_index];
|
|
||||||
*(target_16++) = source_16[quad_index + 2];
|
|
||||||
*(target_16++) = source_16[quad_index + 3];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cache and return the indices.
|
|
||||||
converted_indices.gpu_address = gpu_address;
|
|
||||||
converted_indices_cache_.emplace(converted_indices.key.value,
|
|
||||||
converted_indices);
|
|
||||||
memory_regions_used_ |= memory_regions_used_bits;
|
|
||||||
gpu_address_out = gpu_address;
|
|
||||||
index_count_out = converted_index_count;
|
|
||||||
return ConversionResult::kConverted;
|
|
||||||
}
|
|
||||||
|
|
||||||
void* PrimitiveConverter::AllocateIndices(
|
|
||||||
xenos::IndexFormat format, uint32_t count, uint32_t simd_offset,
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS& gpu_address_out) {
|
|
||||||
if (count == 0) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
uint32_t size =
|
|
||||||
count * (format == xenos::IndexFormat::kInt32 ? sizeof(uint32_t)
|
|
||||||
: sizeof(uint16_t));
|
|
||||||
// 16-align all index data because SIMD is used to replace the reset index
|
|
||||||
// (without that, 4-alignment would be required anyway to mix 16-bit and
|
|
||||||
// 32-bit indices in one buffer page).
|
|
||||||
size = xe::align(size, uint32_t(16));
|
|
||||||
// Add some space to align SIMD register components the same way in the source
|
|
||||||
// and the buffer.
|
|
||||||
simd_offset &= 15;
|
|
||||||
if (simd_offset != 0) {
|
|
||||||
size += 16;
|
|
||||||
}
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
|
||||||
uint8_t* mapping =
|
|
||||||
buffer_pool_->Request(command_processor_.GetCurrentFrame(), size, 16,
|
|
||||||
nullptr, nullptr, &gpu_address);
|
|
||||||
if (mapping == nullptr) {
|
|
||||||
XELOGE("Failed to allocate space for {} converted {}-bit vertex indices",
|
|
||||||
count, format == xenos::IndexFormat::kInt32 ? 32 : 16);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
gpu_address_out = gpu_address + simd_offset;
|
|
||||||
return mapping + simd_offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::pair<uint32_t, uint32_t> PrimitiveConverter::MemoryInvalidationCallback(
|
|
||||||
uint32_t physical_address_start, uint32_t length, bool exact_range) {
|
|
||||||
// 1 bit = (512 / 64) MB = 8 MB. Invalidate a region of this size.
|
|
||||||
uint32_t bit_index_first = physical_address_start >> 23;
|
|
||||||
uint32_t bit_index_last = (physical_address_start + length - 1) >> 23;
|
|
||||||
uint64_t bits = ~((1ull << bit_index_first) - 1);
|
|
||||||
if (bit_index_last < 63) {
|
|
||||||
bits &= (1ull << (bit_index_last + 1)) - 1;
|
|
||||||
}
|
|
||||||
memory_regions_invalidated_ |= bits;
|
|
||||||
return std::make_pair<uint32_t, uint32_t>(0, UINT32_MAX);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::pair<uint32_t, uint32_t>
|
|
||||||
PrimitiveConverter::MemoryInvalidationCallbackThunk(
|
|
||||||
void* context_ptr, uint32_t physical_address_start, uint32_t length,
|
|
||||||
bool exact_range) {
|
|
||||||
return reinterpret_cast<PrimitiveConverter*>(context_ptr)
|
|
||||||
->MemoryInvalidationCallback(physical_address_start, length, exact_range);
|
|
||||||
}
|
|
||||||
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS PrimitiveConverter::GetStaticIndexBuffer(
|
|
||||||
xenos::PrimitiveType source_type, uint32_t index_count,
|
|
||||||
uint32_t& index_count_out) const {
|
|
||||||
if (index_count > kMaxNonIndexedVertices) {
|
|
||||||
assert_always();
|
|
||||||
return D3D12_GPU_VIRTUAL_ADDRESS(0);
|
|
||||||
}
|
|
||||||
if (source_type == xenos::PrimitiveType::kTriangleFan) {
|
|
||||||
index_count_out = (std::max(index_count, uint32_t(2)) - 2) * 3;
|
|
||||||
return static_ib_gpu_address_ +
|
|
||||||
kStaticIBTriangleFanOffset * sizeof(uint16_t);
|
|
||||||
}
|
|
||||||
if (source_type == xenos::PrimitiveType::kQuadList &&
|
|
||||||
cvars::d3d12_convert_quads_to_triangles) {
|
|
||||||
index_count_out = (index_count >> 2) * 6;
|
|
||||||
return static_ib_gpu_address_ + kStaticIBQuadOffset * sizeof(uint16_t);
|
|
||||||
}
|
|
||||||
return D3D12_GPU_VIRTUAL_ADDRESS(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrimitiveConverter::InitializeTrace() {
|
|
||||||
// WriteMemoryRead must not be skipped.
|
|
||||||
converted_indices_cache_.clear();
|
|
||||||
memory_regions_used_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace d3d12
|
|
||||||
} // namespace gpu
|
|
||||||
} // namespace xe
|
|
|
@ -1,189 +0,0 @@
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* Xenia : Xbox 360 Emulator Research Project *
|
|
||||||
******************************************************************************
|
|
||||||
* Copyright 2018 Ben Vanik. All rights reserved. *
|
|
||||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef XENIA_GPU_D3D12_PRIMITIVE_CONVERTER_H_
|
|
||||||
#define XENIA_GPU_D3D12_PRIMITIVE_CONVERTER_H_
|
|
||||||
|
|
||||||
#include <atomic>
|
|
||||||
#include <memory>
|
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
#include "xenia/gpu/register_file.h"
|
|
||||||
#include "xenia/gpu/trace_writer.h"
|
|
||||||
#include "xenia/gpu/xenos.h"
|
|
||||||
#include "xenia/memory.h"
|
|
||||||
#include "xenia/ui/d3d12/d3d12_context.h"
|
|
||||||
#include "xenia/ui/d3d12/d3d12_upload_buffer_pool.h"
|
|
||||||
|
|
||||||
namespace xe {
|
|
||||||
namespace gpu {
|
|
||||||
namespace d3d12 {
|
|
||||||
|
|
||||||
class D3D12CommandProcessor;
|
|
||||||
|
|
||||||
// Index buffer cache for primitive types not natively supported by Direct3D 12:
|
|
||||||
// - Triangle and line strips with non-0xFFFF/0xFFFFFFFF reset index.
|
|
||||||
// - Triangle fans.
|
|
||||||
// - Line loops (only indexed ones - non-indexed are better handled in vertex
|
|
||||||
// shaders, otherwise a whole index buffer would have to be created for every
|
|
||||||
// vertex count value).
|
|
||||||
// - Quad lists (for debugging since geometry shaders break PIX - as an
|
|
||||||
// alternative to the geometry shader).
|
|
||||||
class PrimitiveConverter {
|
|
||||||
public:
|
|
||||||
PrimitiveConverter(D3D12CommandProcessor& command_processor,
|
|
||||||
const RegisterFile& register_file, Memory& memory,
|
|
||||||
TraceWriter& trace_writer);
|
|
||||||
~PrimitiveConverter();
|
|
||||||
|
|
||||||
bool Initialize();
|
|
||||||
void Shutdown();
|
|
||||||
void ClearCache();
|
|
||||||
|
|
||||||
void CompletedSubmissionUpdated();
|
|
||||||
void BeginSubmission();
|
|
||||||
void BeginFrame();
|
|
||||||
|
|
||||||
// Returns the primitive type that the original type will be converted to.
|
|
||||||
static xenos::PrimitiveType GetReplacementPrimitiveType(
|
|
||||||
xenos::PrimitiveType type);
|
|
||||||
|
|
||||||
enum class ConversionResult {
|
|
||||||
// Converted to a transient buffer.
|
|
||||||
kConverted,
|
|
||||||
// Conversion not required - use the index buffer in shared memory.
|
|
||||||
kConversionNotNeeded,
|
|
||||||
// No errors, but nothing to render.
|
|
||||||
kPrimitiveEmpty,
|
|
||||||
// Total failure of the draw call.
|
|
||||||
kFailed
|
|
||||||
};
|
|
||||||
|
|
||||||
// Converts an index buffer to the primitive type returned by
|
|
||||||
// GetReplacementPrimitiveType. If conversion has been performed, the returned
|
|
||||||
// buffer will be in the GENERIC_READ state (it's in an upload heap). Only
|
|
||||||
// writing to the outputs if returning kConverted. The restart index will be
|
|
||||||
// handled internally from the register values.
|
|
||||||
ConversionResult ConvertPrimitives(xenos::PrimitiveType source_type,
|
|
||||||
uint32_t address, uint32_t index_count,
|
|
||||||
xenos::IndexFormat index_format,
|
|
||||||
xenos::Endian index_endianness,
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS& gpu_address_out,
|
|
||||||
uint32_t& index_count_out);
|
|
||||||
|
|
||||||
// Returns the 16-bit index buffer for drawing unsupported non-indexed
|
|
||||||
// primitives in INDEX_BUFFER state, for non-indexed drawing. Returns 0 if
|
|
||||||
// conversion is not available (can draw natively).
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS GetStaticIndexBuffer(
|
|
||||||
xenos::PrimitiveType source_type, uint32_t index_count,
|
|
||||||
uint32_t& index_count_out) const;
|
|
||||||
|
|
||||||
// Callback for invalidating buffers mid-frame.
|
|
||||||
std::pair<uint32_t, uint32_t> MemoryInvalidationCallback(
|
|
||||||
uint32_t physical_address_start, uint32_t length, bool exact_range);
|
|
||||||
|
|
||||||
void InitializeTrace();
|
|
||||||
|
|
||||||
private:
|
|
||||||
// simd_offset is source address & 15 - if SIMD is used, the source and the
|
|
||||||
// target must have the same alignment within one register. 0 is optimal when
|
|
||||||
// not using SIMD.
|
|
||||||
void* AllocateIndices(xenos::IndexFormat format, uint32_t count,
|
|
||||||
uint32_t simd_offset,
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS& gpu_address_out);
|
|
||||||
|
|
||||||
static std::pair<uint32_t, uint32_t> MemoryInvalidationCallbackThunk(
|
|
||||||
void* context_ptr, uint32_t physical_address_start, uint32_t length,
|
|
||||||
bool exact_range);
|
|
||||||
|
|
||||||
D3D12CommandProcessor& command_processor_;
|
|
||||||
const RegisterFile& register_file_;
|
|
||||||
Memory& memory_;
|
|
||||||
TraceWriter& trace_writer_;
|
|
||||||
|
|
||||||
std::unique_ptr<ui::d3d12::D3D12UploadBufferPool> buffer_pool_;
|
|
||||||
|
|
||||||
// Static index buffers for emulating unsupported primitive types when drawing
|
|
||||||
// without an index buffer.
|
|
||||||
// CPU-side, used only for uploading - destroyed once the copy commands have
|
|
||||||
// been completed.
|
|
||||||
ID3D12Resource* static_ib_upload_ = nullptr;
|
|
||||||
uint64_t static_ib_upload_submission_;
|
|
||||||
// GPU-side - used for drawing.
|
|
||||||
ID3D12Resource* static_ib_ = nullptr;
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS static_ib_gpu_address_;
|
|
||||||
// In PM4 draw packets, 16 bits are used for the vertex count.
|
|
||||||
static constexpr uint32_t kMaxNonIndexedVertices = 65535;
|
|
||||||
static constexpr uint32_t kStaticIBTriangleFanOffset = 0;
|
|
||||||
static constexpr uint32_t kStaticIBTriangleFanCount =
|
|
||||||
(kMaxNonIndexedVertices - 2) * 3;
|
|
||||||
static constexpr uint32_t kStaticIBQuadOffset =
|
|
||||||
kStaticIBTriangleFanOffset + kStaticIBTriangleFanCount;
|
|
||||||
static constexpr uint32_t kStaticIBQuadCount =
|
|
||||||
(kMaxNonIndexedVertices >> 2) * 6;
|
|
||||||
static constexpr uint32_t kStaticIBTotalCount =
|
|
||||||
kStaticIBQuadOffset + kStaticIBQuadCount;
|
|
||||||
|
|
||||||
// Not identifying the index buffer uniquely - reset index must also be
|
|
||||||
// checked if reset is enabled.
|
|
||||||
union ConvertedIndicesKey {
|
|
||||||
uint64_t value;
|
|
||||||
struct {
|
|
||||||
uint32_t address; // 32
|
|
||||||
xenos::PrimitiveType source_type : 6; // 38
|
|
||||||
xenos::IndexFormat format : 1; // 39
|
|
||||||
uint32_t count : 16; // 55
|
|
||||||
uint32_t reset : 1; // 56
|
|
||||||
};
|
|
||||||
|
|
||||||
// Clearing the unused bits.
|
|
||||||
ConvertedIndicesKey() : value(0) {}
|
|
||||||
ConvertedIndicesKey(const ConvertedIndicesKey& key) : value(key.value) {}
|
|
||||||
ConvertedIndicesKey& operator=(const ConvertedIndicesKey& key) {
|
|
||||||
value = key.value;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
bool operator==(const ConvertedIndicesKey& key) const {
|
|
||||||
return value == key.value;
|
|
||||||
}
|
|
||||||
bool operator!=(const ConvertedIndicesKey& key) const {
|
|
||||||
return value != key.value;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ConvertedIndices {
|
|
||||||
ConvertedIndicesKey key;
|
|
||||||
// If reset is enabled, this also must be checked to find cached indices.
|
|
||||||
uint32_t reset_index;
|
|
||||||
|
|
||||||
// Zero GPU address if conversion not needed or the resulting index buffer
|
|
||||||
// is empty.
|
|
||||||
D3D12_GPU_VIRTUAL_ADDRESS gpu_address;
|
|
||||||
// When conversion is not needed, this must be equal to the original index
|
|
||||||
// count.
|
|
||||||
uint32_t converted_index_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Cache for a single frame.
|
|
||||||
std::unordered_multimap<uint64_t, ConvertedIndices> converted_indices_cache_;
|
|
||||||
|
|
||||||
// Very coarse cache invalidation - if something is modified in a 8 MB portion
|
|
||||||
// of the physical memory and converted indices are also there, invalidate all
|
|
||||||
// the cache.
|
|
||||||
uint64_t memory_regions_used_;
|
|
||||||
std::atomic<uint64_t> memory_regions_invalidated_ = 0;
|
|
||||||
void* memory_invalidation_callback_handle_ = nullptr;
|
|
||||||
uint32_t system_page_size_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace d3d12
|
|
||||||
} // namespace gpu
|
|
||||||
} // namespace xe
|
|
||||||
|
|
||||||
#endif // XENIA_GPU_D3D12_PRIMITIVE_CONVERTER_H_
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: continuous_quad.hs.hlsl
|
// source: continuous_quad.hs.hlsl
|
||||||
const uint8_t continuous_quad_hs[] = {
|
const uint8_t continuous_quad_hs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xCE, 0xF4, 0xB8, 0x73, 0x74, 0x35, 0xD9, 0xE6,
|
0x44, 0x58, 0x42, 0x43, 0x09, 0x87, 0x23, 0xAA, 0xC0, 0xBD, 0xD4, 0x13,
|
||||||
0x42, 0x49, 0xF7, 0xF8, 0xDD, 0x91, 0xC9, 0xCD, 0x01, 0x00, 0x00, 0x00,
|
0xCA, 0xC2, 0x38, 0xBB, 0xB9, 0x58, 0x55, 0x8E, 0x01, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
0x18, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x0A, 0x00, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0x00,
|
0xE4, 0x0A, 0x00, 0x00, 0x18, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00,
|
||||||
0xB8, 0x0B, 0x00, 0x00, 0x24, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
0x10, 0x0C, 0x00, 0x00, 0x7C, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
||||||
0x4C, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
0xA4, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
||||||
0x00, 0x05, 0x00, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
0x00, 0x05, 0x00, 0x00, 0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,283 +16,290 @@ const uint8_t continuous_quad_hs[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
||||||
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x05, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x34, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x54, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x7D, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x80, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8F, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
0x38, 0x07, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00,
|
||||||
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x92, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00,
|
||||||
0xB0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x07, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xE0, 0x07, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00,
|
||||||
0xDC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x4C, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00,
|
||||||
0xF4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x82, 0x08, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x8A, 0x08, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00,
|
||||||
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xCC, 0x08, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xED, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00,
|
||||||
0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x60, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x3D, 0x09, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00,
|
||||||
0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC8, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xEC, 0x09, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0xD1, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00,
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB,
|
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x62, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
||||||
|
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
||||||
|
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74,
|
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
||||||
0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72,
|
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
||||||
0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00,
|
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
||||||
0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70,
|
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
||||||
0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64,
|
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
||||||
0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78,
|
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61,
|
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
||||||
0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F,
|
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65,
|
||||||
0x62, 0x61, 0x73, 0x65, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69,
|
0x78, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x6E, 0x74, 0x00, 0xAB, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
|
0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78,
|
||||||
|
0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E,
|
||||||
|
0x74, 0x32, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
0x95, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F,
|
||||||
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
0x63, 0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00,
|
||||||
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
|
||||||
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
|
||||||
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63,
|
|
||||||
0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66,
|
|
||||||
0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
||||||
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xDD, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72,
|
0x0D, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70,
|
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,
|
0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65,
|
0x48, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F,
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
0x65, 0x64, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E,
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65,
|
||||||
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F,
|
||||||
|
0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70,
|
||||||
|
0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F,
|
||||||
|
0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E,
|
||||||
|
0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74,
|
||||||
|
0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61,
|
||||||
|
0x72, 0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F,
|
||||||
|
0x6C, 0x6F, 0x67, 0x32, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74,
|
||||||
|
0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64,
|
||||||
|
0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34,
|
||||||
|
0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
||||||
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65,
|
||||||
0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69,
|
0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65,
|
||||||
0x6E, 0x74, 0x32, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F,
|
||||||
|
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C,
|
||||||
|
0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F,
|
||||||
|
0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0xB6, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
|
|
||||||
0x6E, 0x63, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
|
||||||
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70,
|
|
||||||
0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61,
|
|
||||||
0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69,
|
|
||||||
0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
|
||||||
0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64,
|
|
||||||
0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66,
|
|
||||||
0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F,
|
|
||||||
0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
||||||
0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72,
|
0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F,
|
||||||
0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00,
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
0x65, 0x70, 0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77,
|
||||||
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
0x6F, 0x72, 0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
|
||||||
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F,
|
||||||
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D,
|
||||||
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61,
|
||||||
|
0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65,
|
||||||
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64,
|
||||||
|
0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69,
|
||||||
|
0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20,
|
||||||
|
0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20,
|
||||||
|
0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E,
|
||||||
|
0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
||||||
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x50, 0x43, 0x53, 0x47,
|
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E,
|
||||||
0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x50, 0x43, 0x53, 0x47, 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xA6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
0x01, 0x0E, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x54,
|
0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0xAB, 0xAB,
|
0x01, 0x0E, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x48, 0x45, 0x58, 0x64, 0x01, 0x00, 0x00, 0x51, 0x00, 0x03, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||||
0x59, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01, 0x93, 0x20, 0x00, 0x01,
|
0x01, 0x0E, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46,
|
||||||
0x94, 0x20, 0x00, 0x01, 0x95, 0x18, 0x00, 0x01, 0x96, 0x20, 0x00, 0x01,
|
0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73,
|
||||||
0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07,
|
0x69, 0x64, 0x65, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
||||||
0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x53, 0x48, 0x45, 0x58, 0x64, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00,
|
0x93, 0x20, 0x00, 0x01, 0x94, 0x20, 0x00, 0x01, 0x95, 0x18, 0x00, 0x01,
|
||||||
0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x96, 0x20, 0x00, 0x01, 0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x04, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0B, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
|
0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x0E, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08,
|
||||||
|
0x12, 0x20, 0x90, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01,
|
||||||
|
0x99, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02,
|
||||||
|
0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
|
0x12, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00,
|
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x09, 0x12, 0x20, 0xD0, 0x00,
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
0x94, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
|
||||||
0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00,
|
|
||||||
0x36, 0x00, 0x00, 0x09, 0x12, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00,
|
|
||||||
0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: continuous_triangle.hs.hlsl
|
// source: continuous_triangle.hs.hlsl
|
||||||
const uint8_t continuous_triangle_hs[] = {
|
const uint8_t continuous_triangle_hs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0x02, 0xE3, 0x19, 0x10, 0x92, 0x76, 0xA5, 0xD1,
|
0x44, 0x58, 0x42, 0x43, 0x8C, 0x8D, 0x98, 0xAE, 0x11, 0x02, 0x8E, 0x6F,
|
||||||
0xC7, 0x74, 0x34, 0xD8, 0x2B, 0x4E, 0x20, 0xE1, 0x01, 0x00, 0x00, 0x00,
|
0x97, 0x58, 0x4B, 0xDD, 0xB5, 0x5C, 0xC0, 0x21, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
0x88, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x0A, 0x00, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0x00,
|
0xE4, 0x0A, 0x00, 0x00, 0x18, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00,
|
||||||
0x88, 0x0B, 0x00, 0x00, 0x94, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
0xE0, 0x0B, 0x00, 0x00, 0xEC, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
||||||
0x4C, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
0xA4, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
||||||
0x00, 0x05, 0x00, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
0x00, 0x05, 0x00, 0x00, 0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,271 +16,278 @@ const uint8_t continuous_triangle_hs[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
||||||
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x05, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x34, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x54, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x7D, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x80, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8F, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
0x38, 0x07, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00,
|
||||||
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x92, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00,
|
||||||
0xB0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x07, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xE0, 0x07, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00,
|
||||||
0xDC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x4C, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00,
|
||||||
0xF4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x82, 0x08, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x8A, 0x08, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00,
|
||||||
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xCC, 0x08, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xED, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00,
|
||||||
0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x60, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x3D, 0x09, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00,
|
||||||
0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC8, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xEC, 0x09, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0xD1, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00,
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB,
|
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x62, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
||||||
|
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
||||||
|
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74,
|
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
||||||
0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72,
|
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
||||||
0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00,
|
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
||||||
0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70,
|
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
||||||
0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64,
|
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
||||||
0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78,
|
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61,
|
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
||||||
0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F,
|
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65,
|
||||||
0x62, 0x61, 0x73, 0x65, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69,
|
0x78, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x6E, 0x74, 0x00, 0xAB, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
|
0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78,
|
||||||
|
0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E,
|
||||||
|
0x74, 0x32, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
0x95, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F,
|
||||||
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
0x63, 0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00,
|
||||||
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
|
||||||
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
|
||||||
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63,
|
|
||||||
0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66,
|
|
||||||
0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
||||||
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xDD, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72,
|
0x0D, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70,
|
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,
|
0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65,
|
0x48, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F,
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
0x65, 0x64, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E,
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65,
|
||||||
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F,
|
||||||
|
0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70,
|
||||||
|
0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F,
|
||||||
|
0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E,
|
||||||
|
0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74,
|
||||||
|
0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61,
|
||||||
|
0x72, 0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F,
|
||||||
|
0x6C, 0x6F, 0x67, 0x32, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74,
|
||||||
|
0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64,
|
||||||
|
0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34,
|
||||||
|
0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
||||||
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65,
|
||||||
0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69,
|
0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65,
|
||||||
0x6E, 0x74, 0x32, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F,
|
||||||
|
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C,
|
||||||
|
0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F,
|
||||||
|
0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0xB6, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
|
|
||||||
0x6E, 0x63, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
|
||||||
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70,
|
|
||||||
0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61,
|
|
||||||
0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69,
|
|
||||||
0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
|
||||||
0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64,
|
|
||||||
0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66,
|
|
||||||
0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F,
|
|
||||||
0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
||||||
0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72,
|
0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F,
|
||||||
0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00,
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
0x65, 0x70, 0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77,
|
||||||
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
0x6F, 0x72, 0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
|
||||||
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F,
|
||||||
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D,
|
||||||
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61,
|
||||||
|
0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65,
|
||||||
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64,
|
||||||
|
0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69,
|
||||||
|
0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20,
|
||||||
|
0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20,
|
||||||
|
0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E,
|
||||||
|
0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
||||||
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x50, 0x43, 0x53, 0x47,
|
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E,
|
||||||
0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x50, 0x43, 0x53, 0x47, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
0x01, 0x0E, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x54,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0xAB, 0xAB,
|
0x01, 0x0E, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x48, 0x45, 0x58, 0x04, 0x01, 0x00, 0x00, 0x51, 0x00, 0x03, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x41, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01, 0x93, 0x18, 0x00, 0x01,
|
0x01, 0x0E, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46,
|
||||||
0x94, 0x18, 0x00, 0x01, 0x95, 0x10, 0x00, 0x01, 0x96, 0x20, 0x00, 0x01,
|
0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73,
|
||||||
0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07,
|
0x69, 0x64, 0x65, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
||||||
0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x53, 0x48, 0x45, 0x58, 0x04, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00,
|
0x93, 0x18, 0x00, 0x01, 0x94, 0x18, 0x00, 0x01, 0x95, 0x10, 0x00, 0x01,
|
||||||
0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x96, 0x20, 0x00, 0x01, 0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
|
0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x12, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02,
|
0x03, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04,
|
0x11, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01,
|
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07,
|
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00,
|
0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, 0x04,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x36, 0x00, 0x00, 0x07, 0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
||||||
|
0x94, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: discrete_quad.hs.hlsl
|
// source: discrete_quad.hs.hlsl
|
||||||
const uint8_t discrete_quad_hs[] = {
|
const uint8_t discrete_quad_hs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xC6, 0x8B, 0x46, 0x52, 0x9F, 0x04, 0x6C, 0x5E,
|
0x44, 0x58, 0x42, 0x43, 0x2B, 0x32, 0x18, 0xFB, 0x26, 0xBB, 0xD9, 0x49,
|
||||||
0xD9, 0x89, 0xC1, 0xE5, 0xD0, 0x7D, 0x1C, 0x47, 0x01, 0x00, 0x00, 0x00,
|
0x0A, 0x3F, 0xD6, 0x18, 0xE7, 0xBE, 0x0E, 0xF2, 0x01, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
0x18, 0x0E, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x0A, 0x00, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0x00,
|
0xE4, 0x0A, 0x00, 0x00, 0x18, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00,
|
||||||
0xB8, 0x0B, 0x00, 0x00, 0x24, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
0x10, 0x0C, 0x00, 0x00, 0x7C, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
||||||
0x4C, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
0xA4, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
||||||
0x00, 0x05, 0x00, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
0x00, 0x05, 0x00, 0x00, 0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,283 +16,290 @@ const uint8_t discrete_quad_hs[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
||||||
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x05, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x34, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x54, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x7D, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x80, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8F, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
0x38, 0x07, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00,
|
||||||
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x92, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00,
|
||||||
0xB0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x07, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xE0, 0x07, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00,
|
||||||
0xDC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x4C, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00,
|
||||||
0xF4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x82, 0x08, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x8A, 0x08, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00,
|
||||||
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xCC, 0x08, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xED, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00,
|
||||||
0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x60, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x3D, 0x09, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00,
|
||||||
0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC8, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xEC, 0x09, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0xD1, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00,
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB,
|
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x62, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
||||||
|
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
||||||
|
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74,
|
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
||||||
0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72,
|
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
||||||
0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00,
|
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
||||||
0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70,
|
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
||||||
0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64,
|
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
||||||
0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78,
|
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61,
|
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
||||||
0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F,
|
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65,
|
||||||
0x62, 0x61, 0x73, 0x65, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69,
|
0x78, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x6E, 0x74, 0x00, 0xAB, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
|
0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78,
|
||||||
|
0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E,
|
||||||
|
0x74, 0x32, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
0x95, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F,
|
||||||
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
0x63, 0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00,
|
||||||
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
|
||||||
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
|
||||||
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63,
|
|
||||||
0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66,
|
|
||||||
0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
||||||
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xDD, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72,
|
0x0D, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70,
|
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,
|
0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65,
|
0x48, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F,
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
0x65, 0x64, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E,
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65,
|
||||||
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F,
|
||||||
|
0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70,
|
||||||
|
0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F,
|
||||||
|
0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E,
|
||||||
|
0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74,
|
||||||
|
0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61,
|
||||||
|
0x72, 0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F,
|
||||||
|
0x6C, 0x6F, 0x67, 0x32, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74,
|
||||||
|
0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64,
|
||||||
|
0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34,
|
||||||
|
0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
||||||
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65,
|
||||||
0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69,
|
0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65,
|
||||||
0x6E, 0x74, 0x32, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F,
|
||||||
|
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C,
|
||||||
|
0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F,
|
||||||
|
0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0xB6, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
|
|
||||||
0x6E, 0x63, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
|
||||||
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70,
|
|
||||||
0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61,
|
|
||||||
0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69,
|
|
||||||
0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
|
||||||
0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64,
|
|
||||||
0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66,
|
|
||||||
0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F,
|
|
||||||
0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
||||||
0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72,
|
0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F,
|
||||||
0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00,
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
0x65, 0x70, 0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77,
|
||||||
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
0x6F, 0x72, 0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
|
||||||
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F,
|
||||||
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D,
|
||||||
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61,
|
||||||
|
0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65,
|
||||||
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64,
|
||||||
|
0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69,
|
||||||
|
0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20,
|
||||||
|
0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20,
|
||||||
|
0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E,
|
||||||
|
0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
||||||
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x50, 0x43, 0x53, 0x47,
|
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E,
|
||||||
0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x50, 0x43, 0x53, 0x47, 0xBC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xA6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
0x01, 0x0E, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x54,
|
0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0xAB, 0xAB,
|
0x01, 0x0E, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x48, 0x45, 0x58, 0x64, 0x01, 0x00, 0x00, 0x51, 0x00, 0x03, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||||
0x59, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01, 0x93, 0x20, 0x00, 0x01,
|
0x01, 0x0E, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46,
|
||||||
0x94, 0x20, 0x00, 0x01, 0x95, 0x18, 0x00, 0x01, 0x96, 0x08, 0x00, 0x01,
|
0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73,
|
||||||
0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07,
|
0x69, 0x64, 0x65, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
||||||
0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x53, 0x48, 0x45, 0x58, 0x64, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00,
|
0x93, 0x20, 0x00, 0x01, 0x94, 0x20, 0x00, 0x01, 0x95, 0x18, 0x00, 0x01,
|
||||||
0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x96, 0x08, 0x00, 0x01, 0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x04, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0B, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
|
0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
|
0x0E, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08,
|
||||||
|
0x12, 0x20, 0x90, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01,
|
||||||
|
0x99, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02,
|
||||||
|
0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
|
0x04, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
|
0x12, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00,
|
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x09, 0x12, 0x20, 0xD0, 0x00,
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
0x94, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0F, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
|
||||||
0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00,
|
|
||||||
0x36, 0x00, 0x00, 0x09, 0x12, 0x20, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00,
|
|
||||||
0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: discrete_triangle.hs.hlsl
|
// source: discrete_triangle.hs.hlsl
|
||||||
const uint8_t discrete_triangle_hs[] = {
|
const uint8_t discrete_triangle_hs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xA7, 0x04, 0xF9, 0x77, 0xFF, 0x2F, 0x33, 0xB2,
|
0x44, 0x58, 0x42, 0x43, 0x47, 0x9D, 0x67, 0x7C, 0x61, 0x32, 0xA5, 0xB4,
|
||||||
0x42, 0xCA, 0x54, 0x8E, 0x20, 0xE8, 0xA3, 0x34, 0x01, 0x00, 0x00, 0x00,
|
0xA2, 0xBF, 0x3B, 0x82, 0x72, 0xC0, 0x2C, 0xBC, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
0x88, 0x0D, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x0A, 0x00, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0x00,
|
0xE4, 0x0A, 0x00, 0x00, 0x18, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00,
|
||||||
0x88, 0x0B, 0x00, 0x00, 0x94, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
0xE0, 0x0B, 0x00, 0x00, 0xEC, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46,
|
||||||
0x4C, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
0xA4, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x48,
|
||||||
0x00, 0x05, 0x00, 0x00, 0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
0x00, 0x05, 0x00, 0x00, 0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x28, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,271 +16,278 @@ const uint8_t discrete_triangle_hs[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
0x79, 0x73, 0x74, 0x65, 0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65,
|
||||||
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||||
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x90, 0x00, 0x00, 0x00, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x05, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x34, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x54, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x7D, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00,
|
||||||
0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x80, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8F, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
0x38, 0x07, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00,
|
||||||
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x9C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x92, 0x07, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00,
|
||||||
0xB0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x07, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xE0, 0x07, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00,
|
||||||
0xDC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x4C, 0x08, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00,
|
||||||
0xF4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE8, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x82, 0x08, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x8A, 0x08, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00,
|
||||||
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xCC, 0x08, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xED, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00,
|
||||||
0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x60, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x3D, 0x09, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
||||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00,
|
||||||
0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC8, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xEC, 0x09, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0xD1, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00,
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB,
|
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x62, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
||||||
|
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
||||||
|
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74,
|
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
||||||
0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72,
|
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
||||||
0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00,
|
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
||||||
0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70,
|
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
||||||
0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64,
|
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
||||||
0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78,
|
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61,
|
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
||||||
0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F,
|
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65,
|
||||||
0x62, 0x61, 0x73, 0x65, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69,
|
0x78, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x6E, 0x74, 0x00, 0xAB, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
|
0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78,
|
||||||
|
0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E,
|
||||||
|
0x74, 0x32, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x2B, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
0x95, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F,
|
||||||
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
0x63, 0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00,
|
||||||
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
|
||||||
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
|
||||||
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63,
|
|
||||||
0x6C, 0x69, 0x70, 0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66,
|
|
||||||
0x6C, 0x6F, 0x61, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E,
|
||||||
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
0x64, 0x63, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
0x61, 0x74, 0x33, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xDD, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72,
|
0x0D, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70,
|
0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,
|
0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65,
|
0x48, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F,
|
||||||
0x78, 0x74, 0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
0x65, 0x64, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E,
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65,
|
||||||
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F,
|
||||||
|
0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70,
|
||||||
|
0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F,
|
||||||
|
0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E,
|
||||||
|
0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74,
|
||||||
|
0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61,
|
||||||
|
0x72, 0x61, 0x6D, 0x5F, 0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73,
|
||||||
|
0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F,
|
||||||
|
0x6C, 0x6F, 0x67, 0x32, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74,
|
||||||
|
0x75, 0x72, 0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64,
|
||||||
|
0x5F, 0x73, 0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34,
|
||||||
|
0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75,
|
||||||
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
0x72, 0x65, 0x73, 0x5F, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64,
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65,
|
||||||
0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69,
|
0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65,
|
||||||
0x6E, 0x74, 0x32, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F,
|
||||||
|
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C,
|
||||||
|
0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F,
|
||||||
|
0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0xB6, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
|
|
||||||
0x6E, 0x63, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
|
||||||
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70,
|
|
||||||
0x5F, 0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61,
|
|
||||||
0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69,
|
|
||||||
0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
|
||||||
0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64,
|
|
||||||
0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66,
|
|
||||||
0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F,
|
|
||||||
0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70,
|
||||||
0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72,
|
0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F,
|
||||||
0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00,
|
0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00,
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
0x65, 0x70, 0x74, 0x68, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77,
|
||||||
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
0x6F, 0x72, 0x64, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
|
||||||
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
|
||||||
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F,
|
||||||
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D,
|
||||||
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
|
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61,
|
||||||
|
0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65,
|
||||||
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64,
|
||||||
|
0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69,
|
||||||
|
0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20,
|
||||||
|
0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20,
|
||||||
|
0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E,
|
||||||
|
0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
||||||
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x50, 0x43, 0x53, 0x47,
|
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x4F, 0x53, 0x47, 0x4E,
|
||||||
0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x50, 0x43, 0x53, 0x47, 0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
0x01, 0x0E, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
0x01, 0x0E, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x54,
|
0x0D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0xAB, 0xAB,
|
0x01, 0x0E, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x48, 0x45, 0x58, 0x04, 0x01, 0x00, 0x00, 0x51, 0x00, 0x03, 0x00,
|
0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x41, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01, 0x93, 0x18, 0x00, 0x01,
|
0x01, 0x0E, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x54, 0x65, 0x73, 0x73, 0x46,
|
||||||
0x94, 0x18, 0x00, 0x01, 0x95, 0x10, 0x00, 0x01, 0x96, 0x08, 0x00, 0x01,
|
0x61, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x53, 0x56, 0x5F, 0x49, 0x6E, 0x73,
|
||||||
0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07,
|
0x69, 0x64, 0x65, 0x54, 0x65, 0x73, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6F,
|
||||||
0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x72, 0x00, 0xAB, 0xAB, 0x53, 0x48, 0x45, 0x58, 0x04, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x51, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x01,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00,
|
0x93, 0x18, 0x00, 0x01, 0x94, 0x18, 0x00, 0x01, 0x95, 0x10, 0x00, 0x01,
|
||||||
0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x96, 0x08, 0x00, 0x01, 0x97, 0x18, 0x00, 0x01, 0x6A, 0x08, 0x00, 0x01,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00,
|
0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x12, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x01, 0x99, 0x00, 0x00, 0x02,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02,
|
0x03, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x00, 0x70, 0x01, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x04,
|
0x11, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x70, 0x01, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x04,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01,
|
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x73, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, 0x04, 0x12, 0x20, 0x10, 0x00,
|
0x36, 0x00, 0x00, 0x04, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x07,
|
0x0A, 0x70, 0x01, 0x00, 0x36, 0x00, 0x00, 0x08, 0x12, 0x20, 0x90, 0x00,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00,
|
0x3E, 0x00, 0x00, 0x01, 0x73, 0x00, 0x00, 0x01, 0x67, 0x00, 0x00, 0x04,
|
||||||
0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x36, 0x00, 0x00, 0x07, 0x12, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
||||||
|
0x94, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8 [unused]
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8 [unused]
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4 [unused]
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
@ -106,7 +108,7 @@
|
||||||
//
|
//
|
||||||
gs_5_1
|
gs_5_1
|
||||||
dcl_globalFlags refactoringAllowed
|
dcl_globalFlags refactoringAllowed
|
||||||
dcl_constantbuffer CB0[0:0][3], immediateIndexed, space=0
|
dcl_constantbuffer CB0[0:0][11], immediateIndexed, space=0
|
||||||
dcl_input v[1][0].xyzw
|
dcl_input v[1][0].xyzw
|
||||||
dcl_input v[1][1].xyzw
|
dcl_input v[1][1].xyzw
|
||||||
dcl_input v[1][2].xyzw
|
dcl_input v[1][2].xyzw
|
||||||
|
@ -164,10 +166,11 @@ if_nz r0.x
|
||||||
ret
|
ret
|
||||||
endif
|
endif
|
||||||
lt [precise(x)] r0.x, l(0.000000), v[0][16].z
|
lt [precise(x)] r0.x, l(0.000000), v[0][16].z
|
||||||
movc [precise(xy)] r0.xy, r0.xxxx, v[0][16].zzzz, CB0[0][1].zwzz
|
movc [precise(x)] r1.x, r0.x, v[0][16].z, CB0[0][8].w
|
||||||
max [precise(xy)] r0.xy, r0.xyxx, CB0[0][2].xxxx
|
movc [precise(y)] r1.y, r0.x, v[0][16].z, CB0[0][9].w
|
||||||
min [precise(xy)] r0.xy, r0.xyxx, CB0[0][2].yyyy
|
max [precise(xy)] r0.xy, r1.xyxx, CB0[0][10].xxxx
|
||||||
mul [precise(xy)] r0.xy, r0.xyxx, CB0[0][2].zwzz
|
min [precise(xy)] r0.xy, r0.xyxx, CB0[0][10].yyyy
|
||||||
|
mul [precise(xy)] r0.xy, r0.xyxx, CB0[0][10].zwzz
|
||||||
mul [precise(xy)] r0.xy, r0.xyxx, v[0][18].wwww
|
mul [precise(xy)] r0.xy, r0.xyxx, v[0][18].wwww
|
||||||
mov [precise(xyz)] r1.xyz, -r0.xxyx
|
mov [precise(xyz)] r1.xyz, -r0.xxyx
|
||||||
mov [precise(w)] r1.w, r0.y
|
mov [precise(w)] r1.w, r0.y
|
||||||
|
@ -273,4 +276,4 @@ mov o20.xy, v[0][20].xyxx
|
||||||
emit_stream m0
|
emit_stream m0
|
||||||
cut_stream m0
|
cut_stream m0
|
||||||
ret
|
ret
|
||||||
// Approximately 118 instruction slots used
|
// Approximately 119 instruction slots used
|
||||||
|
|
Binary file not shown.
|
@ -1,11 +1,11 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: primitive_quad_list.gs.hlsl
|
// source: primitive_quad_list.gs.hlsl
|
||||||
const uint8_t primitive_quad_list_gs[] = {
|
const uint8_t primitive_quad_list_gs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xB9, 0x08, 0x47, 0x01, 0xBF, 0xBC, 0x0E, 0x49,
|
0x44, 0x58, 0x42, 0x43, 0xA3, 0x4B, 0x84, 0x2E, 0xE9, 0xC9, 0x9C, 0x59,
|
||||||
0x29, 0xE1, 0x81, 0xD8, 0x7C, 0x47, 0x03, 0xBD, 0x01, 0x00, 0x00, 0x00,
|
0x92, 0xD2, 0x10, 0x45, 0xC2, 0x65, 0x8F, 0xED, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x50, 0x13, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
0xD4, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||||
0xA0, 0x00, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x7C, 0x05, 0x00, 0x00,
|
0xA0, 0x00, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x7C, 0x05, 0x00, 0x00,
|
||||||
0xB4, 0x12, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x64, 0x00, 0x00, 0x00,
|
0x38, 0x10, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x64, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x47, 0x00, 0x05, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x47, 0x00, 0x05, 0x00, 0x00,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
||||||
|
@ -59,7 +59,7 @@ const uint8_t primitive_quad_list_gs[] = {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x02, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x02, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43,
|
0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x54, 0x45, 0x58, 0x43,
|
||||||
0x4F, 0x4F, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5F, 0x50, 0x6F, 0x73, 0x69,
|
0x4F, 0x4F, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5F, 0x50, 0x6F, 0x73, 0x69,
|
||||||
0x74, 0x69, 0x6F, 0x6E, 0x00, 0x53, 0x56, 0x5F, 0x43, 0x6C, 0x69, 0x70,
|
0x74, 0x69, 0x6F, 0x6E, 0x00, 0x53, 0x56, 0x5F, 0x43, 0x6C, 0x69, 0x70,
|
||||||
0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x53, 0x56, 0x5F,
|
0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00, 0x53, 0x56, 0x5F,
|
||||||
|
@ -118,8 +118,8 @@ const uint8_t primitive_quad_list_gs[] = {
|
||||||
0x4F, 0x4F, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5F, 0x50, 0x6F, 0x73, 0x69,
|
0x4F, 0x4F, 0x52, 0x44, 0x00, 0x53, 0x56, 0x5F, 0x50, 0x6F, 0x73, 0x69,
|
||||||
0x74, 0x69, 0x6F, 0x6E, 0x00, 0x53, 0x56, 0x5F, 0x43, 0x6C, 0x69, 0x70,
|
0x74, 0x69, 0x6F, 0x6E, 0x00, 0x53, 0x56, 0x5F, 0x43, 0x6C, 0x69, 0x70,
|
||||||
0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00, 0xAB, 0xAB, 0xAB,
|
0x44, 0x69, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
0x53, 0x48, 0x45, 0x58, 0x30, 0x0D, 0x00, 0x00, 0x51, 0x00, 0x02, 0x00,
|
0x53, 0x48, 0x45, 0x58, 0xB4, 0x0A, 0x00, 0x00, 0x51, 0x00, 0x02, 0x00,
|
||||||
0x4C, 0x03, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x5F, 0x00, 0x00, 0x04,
|
0xAD, 0x02, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x5F, 0x00, 0x00, 0x04,
|
||||||
0xF2, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xF2, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x5F, 0x00, 0x00, 0x04, 0xF2, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x5F, 0x00, 0x00, 0x04, 0xF2, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x04, 0xF2, 0x10, 0x20, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x04, 0xF2, 0x10, 0x20, 0x00,
|
||||||
|
@ -149,84 +149,31 @@ const uint8_t primitive_quad_list_gs[] = {
|
||||||
0x04, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x04,
|
0x04, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x04,
|
||||||
0x32, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x32, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x5F, 0x00, 0x00, 0x04, 0x42, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x5F, 0x00, 0x00, 0x04, 0x42, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00,
|
0x14, 0x00, 0x00, 0x00, 0x5D, 0x30, 0x00, 0x01, 0x8F, 0x00, 0x00, 0x03,
|
||||||
0x5D, 0x30, 0x00, 0x01, 0x8F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0x00,
|
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x28, 0x00, 0x01,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x5C, 0x28, 0x00, 0x01, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x09, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0A, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0B, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0xF2, 0x20, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0x72, 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x20, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x65, 0x00, 0x00, 0x03, 0x32, 0x20, 0x10, 0x00, 0x11, 0x00, 0x00, 0x00,
|
||||||
0x32, 0x20, 0x10, 0x00, 0x11, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
0x67, 0x00, 0x00, 0x04, 0xF2, 0x20, 0x10, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0xF2, 0x20, 0x10, 0x00,
|
||||||
0x67, 0x00, 0x00, 0x04, 0xF2, 0x20, 0x10, 0x00, 0x13, 0x00, 0x00, 0x00,
|
0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x04, 0x32, 0x20, 0x10, 0x00,
|
0x32, 0x20, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x02,
|
0x5E, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x34, 0x00, 0x08, 0x09, 0x12, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x10, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x14, 0x00, 0x00, 0x00, 0x2A, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x14, 0x00, 0x00, 0x00, 0x34, 0x00, 0x10, 0x09, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x10, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00,
|
|
||||||
0x14, 0x00, 0x00, 0x00, 0x2A, 0x10, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
||||||
0x14, 0x00, 0x00, 0x00, 0x34, 0x00, 0x08, 0x07, 0x12, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x08, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x39, 0x00, 0x78, 0x09, 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x3C, 0x00, 0x30, 0x07, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xA6, 0x0B, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x10, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x10, 0x07, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x39, 0x00, 0x78, 0x09, 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x3C, 0x00, 0x30, 0x07, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xA6, 0x0B, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x10, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x10, 0x07, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x39, 0x00, 0x78, 0x09, 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x3C, 0x00, 0x30, 0x07, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xA6, 0x0B, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x10, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x10, 0x07, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x39, 0x00, 0x78, 0x09, 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x1E, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
|
||||||
0x3C, 0x00, 0x30, 0x07, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xA6, 0x0B, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x10, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x10, 0x07, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x08, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x06,
|
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1E, 0x20, 0x00,
|
0xF2, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1E, 0x20, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x06,
|
||||||
0xF2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1E, 0x20, 0x00,
|
0xF2, 0x20, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x1E, 0x20, 0x00,
|
||||||
|
@ -400,10 +347,10 @@ const uint8_t primitive_quad_list_gs[] = {
|
||||||
0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x03,
|
0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x03,
|
||||||
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x03,
|
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x03,
|
||||||
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01,
|
0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01,
|
||||||
0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
|
0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
// SV_Position 0 xyzw 18 POS float xyzw
|
// SV_Position 0 xyzw 18 POS float xyzw
|
||||||
// SV_ClipDistance 0 xyzw 19 CLIPDST float xyzw
|
// SV_ClipDistance 0 xyzw 19 CLIPDST float xyzw
|
||||||
// SV_ClipDistance 1 xy 20 CLIPDST float xy
|
// SV_ClipDistance 1 xy 20 CLIPDST float xy
|
||||||
// SV_CullDistance 0 z 20 CULLDST float z
|
// SV_CullDistance 0 z 20 CULLDST float
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// Output signature:
|
// Output signature:
|
||||||
|
@ -81,7 +81,6 @@ dcl_input_siv v[4][18].xyzw, position
|
||||||
dcl_input v[4][19].xyzw
|
dcl_input v[4][19].xyzw
|
||||||
dcl_input v[4][20].xy
|
dcl_input v[4][20].xy
|
||||||
dcl_input v[4][20].z
|
dcl_input v[4][20].z
|
||||||
dcl_temps 2
|
|
||||||
dcl_inputprimitive lineadj
|
dcl_inputprimitive lineadj
|
||||||
dcl_stream m0
|
dcl_stream m0
|
||||||
dcl_outputtopology trianglestrip
|
dcl_outputtopology trianglestrip
|
||||||
|
@ -107,29 +106,6 @@ dcl_output_siv o18.xyzw, position
|
||||||
dcl_output_siv o19.xyzw, clip_distance
|
dcl_output_siv o19.xyzw, clip_distance
|
||||||
dcl_output_siv o20.xy, clip_distance
|
dcl_output_siv o20.xy, clip_distance
|
||||||
dcl_maxout 4
|
dcl_maxout 4
|
||||||
max [precise(x)] r0.x, v[1][20].z, v[0][20].z
|
|
||||||
max [precise(y)] r0.y, v[3][20].z, v[2][20].z
|
|
||||||
max [precise(x)] r0.x, r0.y, r0.x
|
|
||||||
lt [precise(x)] r0.x, r0.x, l(0.000000)
|
|
||||||
ne [precise] r1.xyzw, v[0][18].xyzw, v[0][18].xyzw
|
|
||||||
or [precise(yz)] r0.yz, r1.zzwz, r1.xxyx
|
|
||||||
or [precise(y)] r0.y, r0.z, r0.y
|
|
||||||
or [precise(x)] r0.x, r0.y, r0.x
|
|
||||||
ne [precise] r1.xyzw, v[1][18].xyzw, v[1][18].xyzw
|
|
||||||
or [precise(yz)] r0.yz, r1.zzwz, r1.xxyx
|
|
||||||
or [precise(y)] r0.y, r0.z, r0.y
|
|
||||||
or [precise(x)] r0.x, r0.y, r0.x
|
|
||||||
ne [precise] r1.xyzw, v[2][18].xyzw, v[2][18].xyzw
|
|
||||||
or [precise(yz)] r0.yz, r1.zzwz, r1.xxyx
|
|
||||||
or [precise(y)] r0.y, r0.z, r0.y
|
|
||||||
or [precise(x)] r0.x, r0.y, r0.x
|
|
||||||
ne [precise] r1.xyzw, v[3][18].xyzw, v[3][18].xyzw
|
|
||||||
or [precise(yz)] r0.yz, r1.zzwz, r1.xxyx
|
|
||||||
or [precise(y)] r0.y, r0.z, r0.y
|
|
||||||
or [precise(x)] r0.x, r0.y, r0.x
|
|
||||||
if_nz r0.x
|
|
||||||
ret
|
|
||||||
endif
|
|
||||||
mov o0.xyzw, v[0][0].xyzw
|
mov o0.xyzw, v[0][0].xyzw
|
||||||
mov o1.xyzw, v[0][1].xyzw
|
mov o1.xyzw, v[0][1].xyzw
|
||||||
mov o2.xyzw, v[0][2].xyzw
|
mov o2.xyzw, v[0][2].xyzw
|
||||||
|
@ -220,4 +196,4 @@ mov o20.xy, v[2][20].xyxx
|
||||||
emit_stream m0
|
emit_stream m0
|
||||||
cut_stream m0
|
cut_stream m0
|
||||||
ret
|
ret
|
||||||
// Approximately 113 instruction slots used
|
// Approximately 90 instruction slots used
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: tessellation_adaptive.vs.hlsl
|
// source: tessellation_adaptive.vs.hlsl
|
||||||
const uint8_t tessellation_adaptive_vs[] = {
|
const uint8_t tessellation_adaptive_vs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xEA, 0xC1, 0xB3, 0x4C, 0xC8, 0x7B, 0xC8, 0x82,
|
0x44, 0x58, 0x42, 0x43, 0x82, 0xE6, 0x23, 0x43, 0x49, 0x4A, 0x7D, 0x8F,
|
||||||
0x75, 0x89, 0xF0, 0x88, 0x71, 0x69, 0x97, 0x06, 0x01, 0x00, 0x00, 0x00,
|
0xAF, 0xF1, 0x4E, 0x88, 0x20, 0xB6, 0x44, 0x86, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x94, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
0xEC, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||||
0x88, 0x0A, 0x00, 0x00, 0xBC, 0x0A, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0x00,
|
0xE0, 0x0A, 0x00, 0x00, 0x14, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x00, 0x00,
|
||||||
0xF8, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x4C, 0x0A, 0x00, 0x00,
|
0x50, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xA4, 0x0A, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0xFE, 0xFF, 0x00, 0x05, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0xFE, 0xFF, 0x00, 0x05, 0x00, 0x00,
|
||||||
0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,279 +16,286 @@ const uint8_t tessellation_adaptive_vs[] = {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x79, 0x73, 0x74, 0x65,
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x79, 0x73, 0x74, 0x65,
|
||||||
0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0xAB, 0xAB,
|
0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0xAB, 0xAB,
|
||||||
0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x54, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x06, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00,
|
||||||
0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x29, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0x00, 0x00,
|
||||||
0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
||||||
0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x08, 0x00, 0x00,
|
||||||
0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x08, 0x00, 0x00,
|
||||||
0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0x08, 0x00, 0x00,
|
||||||
0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x09, 0x00, 0x00,
|
||||||
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x09, 0x00, 0x00,
|
||||||
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x62, 0x0A, 0x00, 0x00,
|
||||||
|
0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F,
|
||||||
|
0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
|
||||||
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
|
||||||
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
|
||||||
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65,
|
||||||
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74,
|
||||||
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69, 0x6E, 0x74, 0x00, 0xAB,
|
|
||||||
0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A,
|
0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F,
|
||||||
0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73,
|
0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67,
|
||||||
0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00,
|
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65,
|
||||||
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72,
|
0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65,
|
||||||
0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78,
|
0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72,
|
||||||
0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63, 0x6C, 0x69, 0x70, 0x5F,
|
0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x6F, 0x66,
|
||||||
0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74,
|
0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74,
|
||||||
0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x6D, 0x69, 0x6E,
|
||||||
|
0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x32, 0x00, 0xAB,
|
||||||
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x06, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63, 0x6C, 0x69, 0x70,
|
||||||
|
0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
|
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x73,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x73,
|
||||||
0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x00,
|
0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x06, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x07, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61,
|
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A,
|
||||||
0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67,
|
0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
||||||
0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F,
|
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x5F, 0x67,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x07, 0x00, 0x00,
|
||||||
0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
|
0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65,
|
||||||
0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64, 0x5F, 0x73,
|
0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73,
|
||||||
0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34, 0x00, 0xAB,
|
0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
||||||
|
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
|
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
||||||
|
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70,
|
||||||
|
0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C,
|
||||||
|
0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x5F,
|
||||||
|
0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C,
|
||||||
|
0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32,
|
||||||
|
0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5F,
|
||||||
|
0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64, 0x5F, 0x73, 0x69, 0x67,
|
||||||
|
0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5F,
|
0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5F,
|
||||||
0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x00, 0x78, 0x65, 0x5F,
|
0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74,
|
0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72,
|
||||||
0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x32, 0x00,
|
0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70,
|
||||||
|
0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78,
|
||||||
|
0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70, 0x5F,
|
||||||
|
0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65, 0x73,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x72,
|
||||||
0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x00,
|
0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00,
|
0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65,
|
||||||
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x63,
|
0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00, 0x78, 0x65,
|
||||||
0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61,
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
||||||
0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x73, 0x74,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F,
|
|
||||||
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F,
|
|
||||||
0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
|
||||||
0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E,
|
|
||||||
0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
|
||||||
0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F,
|
|
||||||
0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
|
||||||
0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
|
||||||
0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x62,
|
|
||||||
0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x00, 0x78,
|
|
||||||
0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E,
|
|
||||||
0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F,
|
|
||||||
0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74,
|
|
||||||
0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70,
|
|
||||||
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
||||||
0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70,
|
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
||||||
0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62,
|
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72,
|
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
||||||
0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E,
|
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0x4F, 0x53, 0x47, 0x4E, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
|
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
|
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
||||||
|
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
||||||
|
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
||||||
|
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
||||||
|
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
||||||
|
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
||||||
|
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x54, 0x45, 0x53, 0x53, 0x46, 0x41,
|
0x01, 0x01, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x56, 0x65, 0x72, 0x74, 0x65,
|
||||||
0x43, 0x54, 0x4F, 0x52, 0x00, 0xAB, 0xAB, 0xAB, 0x53, 0x48, 0x45, 0x58,
|
0x78, 0x49, 0x44, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x30, 0x00, 0x00, 0x00,
|
||||||
0xFC, 0x01, 0x00, 0x00, 0x51, 0x00, 0x01, 0x00, 0x7F, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x54, 0x45,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x04,
|
0x53, 0x53, 0x46, 0x41, 0x43, 0x54, 0x4F, 0x52, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x53, 0x48, 0x45, 0x58, 0xFC, 0x01, 0x00, 0x00, 0x51, 0x00, 0x01, 0x00,
|
||||||
0x65, 0x00, 0x00, 0x03, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x7F, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07,
|
||||||
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C,
|
0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x30, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x60, 0x00, 0x00, 0x04, 0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03, 0x12, 0x20, 0x10, 0x00,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07,
|
0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x10, 0x00,
|
0x20, 0x00, 0x00, 0x0C, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00,
|
0x96, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A,
|
0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07,
|
||||||
0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00,
|
0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x0A, 0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
|
||||||
0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05,
|
0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00,
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x04, 0x03,
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01,
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07,
|
0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x1F, 0x00, 0x04, 0x03, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x8C, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x55, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
|
||||||
0x10, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01,
|
|
||||||
0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x80, 0x3F, 0x34, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x15, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x1A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x34, 0x00, 0x00, 0x09,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x09, 0x12, 0x20, 0x10, 0x00,
|
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x09,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
||||||
0x94, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01,
|
||||||
0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4 [unused]
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4 [unused]
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8 [unused]
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
|
Binary file not shown.
|
@ -1,14 +1,14 @@
|
||||||
// generated from `xb buildhlsl`
|
// generated from `xb buildhlsl`
|
||||||
// source: tessellation_indexed.vs.hlsl
|
// source: tessellation_indexed.vs.hlsl
|
||||||
const uint8_t tessellation_indexed_vs[] = {
|
const uint8_t tessellation_indexed_vs[] = {
|
||||||
0x44, 0x58, 0x42, 0x43, 0xE2, 0x30, 0x21, 0x1F, 0xE5, 0x49, 0x03, 0x9D,
|
0x44, 0x58, 0x42, 0x43, 0x0A, 0x47, 0xDE, 0x26, 0xEC, 0xC1, 0x8D, 0xD9,
|
||||||
0xFB, 0x8E, 0x8A, 0x7F, 0x73, 0xA7, 0x2A, 0x12, 0x01, 0x00, 0x00, 0x00,
|
0x4F, 0xCE, 0xF4, 0x09, 0xDD, 0x32, 0xCB, 0x39, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x64, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
0x20, 0x0E, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||||
0x88, 0x0A, 0x00, 0x00, 0xBC, 0x0A, 0x00, 0x00, 0xF0, 0x0A, 0x00, 0x00,
|
0xE0, 0x0A, 0x00, 0x00, 0x14, 0x0B, 0x00, 0x00, 0x48, 0x0B, 0x00, 0x00,
|
||||||
0xC8, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x4C, 0x0A, 0x00, 0x00,
|
0x84, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xA4, 0x0A, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0xFE, 0xFF, 0x00, 0x05, 0x00, 0x00,
|
0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0xFE, 0xFF, 0x00, 0x05, 0x00, 0x00,
|
||||||
0x22, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
0x7A, 0x0A, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||||
0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x24, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -16,275 +16,291 @@ const uint8_t tessellation_indexed_vs[] = {
|
||||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x79, 0x73, 0x74, 0x65,
|
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x79, 0x73, 0x74, 0x65,
|
||||||
0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0xAB, 0xAB,
|
0x6D, 0x5F, 0x63, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0xAB, 0xAB,
|
||||||
0x64, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||||
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x68, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x9C, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xEC, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE4, 0x05, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00,
|
||||||
0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x4F, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x02, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x02, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x16, 0x06, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x66, 0x06, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x54, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x06, 0x00, 0x00,
|
||||||
0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x62, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xDC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x06, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00,
|
||||||
0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x8C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xAC, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xD0, 0x06, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
0x74, 0x07, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x07, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x82, 0x07, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x29, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x92, 0x07, 0x00, 0x00,
|
||||||
0xA0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xA0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x37, 0x07, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0xA8, 0x07, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xBF, 0x07, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x07, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00,
|
||||||
0xD0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xB4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xA1, 0x07, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0xF0, 0x07, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xBC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x9C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
|
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x08, 0x00, 0x00,
|
||||||
0xE0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x5C, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
0x61, 0x08, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x6D, 0x08, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x79, 0x08, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00,
|
||||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x08, 0x00, 0x00,
|
||||||
0xF8, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xEC, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xC8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x97, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x9F, 0x08, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB2, 0x08, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xD8, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x08, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xED, 0x08, 0x00, 0x00,
|
||||||
0x10, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x08, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xE7, 0x08, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
0x08, 0x09, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x22, 0x09, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00,
|
||||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x09, 0x00, 0x00,
|
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x09, 0x00, 0x00,
|
||||||
0x50, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x20, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0x50, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x79, 0x09, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
0x74, 0x09, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x8C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB0, 0x09, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xB8, 0x09, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x09, 0x00, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x09, 0x00, 0x00,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x09, 0x00, 0x00,
|
||||||
0xC0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x60, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x3C, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xE4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x0A, 0x0A, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
0x08, 0x0A, 0x00, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x20, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x00,
|
||||||
0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00,
|
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x09, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x62, 0x0A, 0x00, 0x00,
|
||||||
|
0xD0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xB4, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x64, 0x77, 0x6F,
|
||||||
|
0x72, 0x64, 0x00, 0xAB, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x71, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74,
|
|
||||||
0x65, 0x73, 0x73, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F,
|
|
||||||
0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65,
|
|
||||||
0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xB9, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C,
|
0xC1, 0x05, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x73, 0x73, 0x65,
|
||||||
0x69, 0x6E, 0x65, 0x5F, 0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F,
|
0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x5F, 0x66, 0x61, 0x63, 0x74,
|
||||||
0x73, 0x69, 0x6E, 0x67, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78,
|
0x6F, 0x72, 0x5F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x00, 0x66, 0x6C, 0x6F,
|
||||||
0x65, 0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64,
|
0x61, 0x74, 0x32, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00,
|
||||||
0x65, 0x78, 0x5F, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65,
|
|
||||||
0x5F, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
|
||||||
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x69, 0x6E, 0x74, 0x00, 0xAB,
|
|
||||||
0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A,
|
0x09, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6C, 0x69, 0x6E, 0x65, 0x5F,
|
||||||
0x65, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73,
|
0x6C, 0x6F, 0x6F, 0x70, 0x5F, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67,
|
||||||
0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x78, 0x00,
|
0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65,
|
||||||
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x63, 0x72,
|
0x72, 0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x65,
|
||||||
0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E, 0x64, 0x63, 0x00, 0x78,
|
0x6E, 0x64, 0x69, 0x61, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72,
|
||||||
0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63, 0x6C, 0x69, 0x70, 0x5F,
|
0x74, 0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x6F, 0x66,
|
||||||
0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74,
|
0x66, 0x73, 0x65, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x76, 0x65, 0x72, 0x74,
|
||||||
0x34, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x65, 0x78, 0x5F, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, 0x6D, 0x69, 0x6E,
|
||||||
|
0x5F, 0x6D, 0x61, 0x78, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x32, 0x00, 0xAB,
|
||||||
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x06, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x75, 0x73, 0x65, 0x72, 0x5F, 0x63, 0x6C, 0x69, 0x70,
|
||||||
|
0x5F, 0x70, 0x6C, 0x61, 0x6E, 0x65, 0x73, 0x00, 0x66, 0x6C, 0x6F, 0x61,
|
||||||
|
0x74, 0x34, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x73,
|
0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x73,
|
||||||
0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x00,
|
0x63, 0x61, 0x6C, 0x65, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x00,
|
||||||
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x06, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x07, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x6C, 0x61,
|
0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A,
|
||||||
0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x69, 0x6E, 0x67,
|
0x65, 0x5F, 0x78, 0x00, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB,
|
||||||
0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x00, 0x78, 0x65, 0x5F,
|
0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x78,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x5F, 0x67,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x07, 0x00, 0x00,
|
||||||
0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72,
|
0x78, 0x65, 0x5F, 0x6E, 0x64, 0x63, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65,
|
||||||
0x65, 0x5F, 0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64, 0x5F, 0x73,
|
0x74, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x5F, 0x73,
|
||||||
0x69, 0x67, 0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34, 0x00, 0xAB,
|
0x69, 0x7A, 0x65, 0x5F, 0x79, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69,
|
||||||
|
0x6E, 0x74, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x5F, 0x6D, 0x69, 0x6E, 0x5F,
|
||||||
|
0x6D, 0x61, 0x78, 0x00, 0x78, 0x65, 0x5F, 0x70, 0x6F, 0x69, 0x6E, 0x74,
|
||||||
|
0x5F, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x5F, 0x74, 0x6F, 0x5F, 0x6E,
|
||||||
|
0x64, 0x63, 0x00, 0x78, 0x65, 0x5F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70,
|
||||||
|
0x6F, 0x6C, 0x61, 0x74, 0x6F, 0x72, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C,
|
||||||
|
0x69, 0x6E, 0x67, 0x5F, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x70, 0x73, 0x5F, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x5F,
|
||||||
|
0x67, 0x65, 0x6E, 0x00, 0x78, 0x65, 0x5F, 0x73, 0x61, 0x6D, 0x70, 0x6C,
|
||||||
|
0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x5F, 0x6C, 0x6F, 0x67, 0x32,
|
||||||
|
0x00, 0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5F,
|
||||||
|
0x73, 0x77, 0x69, 0x7A, 0x7A, 0x6C, 0x65, 0x64, 0x5F, 0x73, 0x69, 0x67,
|
||||||
|
0x6E, 0x73, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x34, 0x00, 0xAB, 0xAB, 0xAB,
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5F,
|
0x78, 0x65, 0x5F, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x73, 0x5F,
|
||||||
0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x00, 0x78, 0x65, 0x5F,
|
0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5F, 0x63, 0x6F, 0x75, 0x6E, 0x74,
|
0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x72,
|
||||||
0x5F, 0x6C, 0x6F, 0x67, 0x32, 0x00, 0x75, 0x69, 0x6E, 0x74, 0x32, 0x00,
|
0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x00, 0x78, 0x65, 0x5F,
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73,
|
||||||
|
0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70,
|
||||||
|
0x69, 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78,
|
||||||
|
0x65, 0x5F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70, 0x5F,
|
||||||
|
0x62, 0x69, 0x61, 0x73, 0x00, 0xAB, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
||||||
|
0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0x07, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x5F, 0x74, 0x65, 0x73,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x72,
|
||||||
0x74, 0x5F, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x00,
|
0x61, 0x6E, 0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x66, 0x6C, 0x6F, 0x61, 0x74, 0x00, 0xAB, 0xAB, 0x00, 0x00, 0x03, 0x00,
|
0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65,
|
||||||
0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x74, 0x5F, 0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66,
|
||||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x63,
|
0x66, 0x73, 0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00, 0x78, 0x65,
|
||||||
0x6F, 0x6C, 0x6F, 0x72, 0x5F, 0x65, 0x78, 0x70, 0x5F, 0x62, 0x69, 0x61,
|
0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68,
|
||||||
0x73, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00,
|
0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x73, 0x74,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x65, 0x6E, 0x63, 0x69, 0x6C, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
||||||
0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x61, 0x6C, 0x70, 0x68, 0x61,
|
|
||||||
0x5F, 0x74, 0x6F, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0x78, 0x65, 0x5F,
|
|
||||||
0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F,
|
|
||||||
0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
|
||||||
0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x72, 0x61, 0x6E,
|
|
||||||
0x67, 0x65, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F,
|
|
||||||
0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5F,
|
|
||||||
0x66, 0x72, 0x6F, 0x6E, 0x74, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
|
||||||
0x61, 0x6D, 0x5F, 0x70, 0x6F, 0x6C, 0x79, 0x5F, 0x6F, 0x66, 0x66, 0x73,
|
|
||||||
0x65, 0x74, 0x5F, 0x62, 0x61, 0x63, 0x6B, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, 0x62,
|
|
||||||
0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x00, 0x78,
|
|
||||||
0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x73, 0x74, 0x65, 0x6E,
|
|
||||||
0x63, 0x69, 0x6C, 0x00, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
|
||||||
0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x77, 0x6F,
|
|
||||||
0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x64, 0x00, 0xAB,
|
|
||||||
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00,
|
|
||||||
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
|
||||||
0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66, 0x6C, 0x61, 0x67, 0x73,
|
|
||||||
0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74,
|
|
||||||
0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0xA3, 0x06, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x6B, 0x65, 0x65, 0x70,
|
|
||||||
0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB, 0x01, 0x00, 0x13, 0x00,
|
|
||||||
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x07, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65,
|
||||||
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x6C, 0x65, 0x6E,
|
0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x62, 0x61, 0x73, 0x65,
|
||||||
0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x73, 0x5F, 0x6F, 0x70,
|
0x5F, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x5F, 0x73, 0x63, 0x61, 0x6C,
|
||||||
0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62,
|
0x65, 0x64, 0x00, 0xAB, 0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00,
|
||||||
0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C, 0x20, 0x53, 0x68, 0x61,
|
0x1F, 0x08, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D,
|
||||||
0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72,
|
0x5F, 0x72, 0x74, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x5F, 0x66,
|
||||||
0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB, 0x49, 0x53, 0x47, 0x4E,
|
0x6C, 0x61, 0x67, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61,
|
||||||
0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
0x6D, 0x5F, 0x72, 0x74, 0x5F, 0x63, 0x6C, 0x61, 0x6D, 0x70, 0x00, 0xAB,
|
||||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x53, 0x56, 0x5F, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x44, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x06, 0x00, 0x00,
|
||||||
0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
|
0x6B, 0x65, 0x65, 0x70, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x00, 0xAB, 0xAB,
|
||||||
|
0x01, 0x00, 0x13, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x08, 0x00, 0x00,
|
||||||
|
0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x72, 0x74, 0x5F,
|
||||||
|
0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x66, 0x61, 0x63, 0x74, 0x6F, 0x72,
|
||||||
|
0x73, 0x5F, 0x6F, 0x70, 0x73, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72,
|
||||||
|
0x61, 0x6D, 0x5F, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x5F, 0x63, 0x6F, 0x6E,
|
||||||
|
0x73, 0x74, 0x61, 0x6E, 0x74, 0x00, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
|
||||||
|
0x6F, 0x66, 0x74, 0x20, 0x28, 0x52, 0x29, 0x20, 0x48, 0x4C, 0x53, 0x4C,
|
||||||
|
0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x43, 0x6F, 0x6D, 0x70,
|
||||||
|
0x69, 0x6C, 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0xAB, 0xAB,
|
||||||
|
0x49, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58,
|
0x01, 0x01, 0x00, 0x00, 0x53, 0x56, 0x5F, 0x56, 0x65, 0x72, 0x74, 0x65,
|
||||||
0x49, 0x44, 0x00, 0xAB, 0x53, 0x48, 0x45, 0x58, 0xD0, 0x01, 0x00, 0x00,
|
0x78, 0x49, 0x44, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x2C, 0x00, 0x00, 0x00,
|
||||||
0x51, 0x00, 0x01, 0x00, 0x74, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01,
|
0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||||
0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00, 0x00, 0x58, 0x45, 0x56, 0x45,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x04, 0x12, 0x10, 0x10, 0x00,
|
0x52, 0x54, 0x45, 0x58, 0x49, 0x44, 0x00, 0xAB, 0x53, 0x48, 0x45, 0x58,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x03,
|
0x34, 0x02, 0x00, 0x00, 0x51, 0x00, 0x01, 0x00, 0x8D, 0x00, 0x00, 0x00,
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x02,
|
0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00,
|
||||||
0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C, 0x72, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x32, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
|
||||||
0x55, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
|
||||||
0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x52, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x02, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x12, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x15, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x04, 0x03, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x0B,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
|
||||||
0x10, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
|
||||||
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x00, 0x09,
|
|
||||||
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x05,
|
|
||||||
0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54,
|
|
||||||
0x94, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x04,
|
||||||
|
0x12, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||||
|
0x65, 0x00, 0x00, 0x03, 0x12, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x68, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C,
|
||||||
|
0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x30, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
|
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07,
|
||||||
|
0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
||||||
|
0x08, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A,
|
||||||
|
0x52, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x01, 0x36, 0x00, 0x00, 0x05,
|
||||||
|
0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x1F, 0x00, 0x04, 0x03,
|
||||||
|
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07,
|
||||||
|
0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||||
|
0x8C, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
||||||
|
0x10, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01,
|
||||||
|
0x1E, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x30, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x00, 0x53, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x05, 0x12, 0x20, 0x10, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00,
|
||||||
|
0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,26 +11,28 @@
|
||||||
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8 [unused]
|
// float2 xe_tessellation_factor_range;// Offset: 4 Size: 8 [unused]
|
||||||
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
// uint xe_line_loop_closing_index; // Offset: 12 Size: 4 [unused]
|
||||||
// uint xe_vertex_index_endian; // Offset: 16 Size: 4
|
// uint xe_vertex_index_endian; // Offset: 16 Size: 4
|
||||||
// int xe_vertex_base_index; // Offset: 20 Size: 4
|
// uint xe_vertex_index_offset; // Offset: 20 Size: 4
|
||||||
// float2 xe_point_size; // Offset: 24 Size: 8 [unused]
|
// uint2 xe_vertex_index_min_max; // Offset: 24 Size: 8
|
||||||
// float2 xe_point_size_min_max; // Offset: 32 Size: 8 [unused]
|
// float4 xe_user_clip_planes[6]; // Offset: 32 Size: 96 [unused]
|
||||||
// float2 xe_point_screen_to_ndc; // Offset: 40 Size: 8 [unused]
|
// float3 xe_ndc_scale; // Offset: 128 Size: 12 [unused]
|
||||||
// float4 xe_user_clip_planes[6]; // Offset: 48 Size: 96 [unused]
|
// float xe_point_size_x; // Offset: 140 Size: 4 [unused]
|
||||||
// float3 xe_ndc_scale; // Offset: 144 Size: 12 [unused]
|
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||||
// uint xe_interpolator_sampling_pattern;// Offset: 156 Size: 4 [unused]
|
// float xe_point_size_y; // Offset: 156 Size: 4 [unused]
|
||||||
// float3 xe_ndc_offset; // Offset: 160 Size: 12 [unused]
|
// float2 xe_point_size_min_max; // Offset: 160 Size: 8 [unused]
|
||||||
// uint xe_ps_param_gen; // Offset: 172 Size: 4 [unused]
|
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||||
// uint4 xe_texture_swizzled_signs[2];// Offset: 176 Size: 32 [unused]
|
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||||
// uint xe_textures_resolved; // Offset: 208 Size: 4 [unused]
|
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||||
// uint2 xe_sample_count_log2; // Offset: 212 Size: 8 [unused]
|
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||||
// float xe_alpha_test_reference; // Offset: 220 Size: 4 [unused]
|
// uint4 xe_texture_swizzled_signs[2];// Offset: 192 Size: 32 [unused]
|
||||||
// float4 xe_color_exp_bias; // Offset: 224 Size: 16 [unused]
|
// uint xe_textures_resolved; // Offset: 224 Size: 4 [unused]
|
||||||
// uint xe_alpha_to_mask; // Offset: 240 Size: 4 [unused]
|
// float xe_alpha_test_reference; // Offset: 228 Size: 4 [unused]
|
||||||
// uint xe_edram_pitch_tiles; // Offset: 244 Size: 4 [unused]
|
// uint xe_alpha_to_mask; // Offset: 232 Size: 4 [unused]
|
||||||
// float2 xe_edram_depth_range; // Offset: 248 Size: 8 [unused]
|
// uint xe_edram_pitch_tiles; // Offset: 236 Size: 4 [unused]
|
||||||
// float2 xe_edram_poly_offset_front; // Offset: 256 Size: 8 [unused]
|
// float4 xe_color_exp_bias; // Offset: 240 Size: 16 [unused]
|
||||||
// float2 xe_edram_poly_offset_back; // Offset: 264 Size: 8 [unused]
|
// float2 xe_edram_depth_range; // Offset: 256 Size: 8 [unused]
|
||||||
// uint xe_edram_depth_base_dwords; // Offset: 272 Size: 4 [unused]
|
// float2 xe_edram_poly_offset_front; // Offset: 264 Size: 8 [unused]
|
||||||
|
// float2 xe_edram_poly_offset_back; // Offset: 272 Size: 8 [unused]
|
||||||
|
// uint xe_edram_depth_base_dwords; // Offset: 280 Size: 4 [unused]
|
||||||
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
// uint4 xe_edram_stencil[2]; // Offset: 288 Size: 32 [unused]
|
||||||
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
// uint4 xe_edram_rt_base_dwords_scaled;// Offset: 320 Size: 16 [unused]
|
||||||
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
// uint4 xe_edram_rt_format_flags; // Offset: 336 Size: 16 [unused]
|
||||||
|
@ -84,6 +86,9 @@ if_nz r0.y
|
||||||
bfi r0.x, l(16), l(16), r0.x, r0.y
|
bfi r0.x, l(16), l(16), r0.x, r0.y
|
||||||
endif
|
endif
|
||||||
iadd r0.x, r0.x, CB0[0][1].y
|
iadd r0.x, r0.x, CB0[0][1].y
|
||||||
itof o0.x, r0.x
|
and r0.x, r0.x, l(0x00ffffff)
|
||||||
|
umax r0.x, r0.x, CB0[0][1].z
|
||||||
|
umin r0.x, r0.x, CB0[0][1].w
|
||||||
|
utof o0.x, r0.x
|
||||||
ret
|
ret
|
||||||
// Approximately 17 instruction slots used
|
// Approximately 20 instruction slots used
|
||||||
|
|
|
@ -22,7 +22,7 @@ void main(point XeVertexPreGS xe_in[1],
|
||||||
float2 point_size =
|
float2 point_size =
|
||||||
xe_in[0].post_gs.pre_ps.point_params.z > 0.0f
|
xe_in[0].post_gs.pre_ps.point_params.z > 0.0f
|
||||||
? xe_in[0].post_gs.pre_ps.point_params.zz
|
? xe_in[0].post_gs.pre_ps.point_params.zz
|
||||||
: xe_point_size;
|
: float2(xe_point_size_x, xe_point_size_y);
|
||||||
point_size =
|
point_size =
|
||||||
clamp(point_size, xe_point_size_min_max.xx, xe_point_size_min_max.yy) *
|
clamp(point_size, xe_point_size_min_max.xx, xe_point_size_min_max.yy) *
|
||||||
xe_point_screen_to_ndc * xe_in[0].post_gs.position.w;
|
xe_point_screen_to_ndc * xe_in[0].post_gs.position.w;
|
||||||
|
|
|
@ -3,15 +3,13 @@
|
||||||
[maxvertexcount(4)]
|
[maxvertexcount(4)]
|
||||||
void main(lineadj XeVertexPreGS xe_in[4],
|
void main(lineadj XeVertexPreGS xe_in[4],
|
||||||
inout TriangleStream<XeVertexPostGS> xe_stream) {
|
inout TriangleStream<XeVertexPostGS> xe_stream) {
|
||||||
// Must kill the whole quad if need to kill.
|
// Culling should probably be done per-triangle - while there's no
|
||||||
if (max(max(xe_in[0].cull_distance, xe_in[1].cull_distance),
|
// RETAIN_QUADS on Adreno 2xx, on R6xx it's always disabled for
|
||||||
max(xe_in[2].cull_distance, xe_in[3].cull_distance)) < 0.0f ||
|
// non-tessellated quads, so they are always decomposed into triangles.
|
||||||
any(isnan(xe_in[0].post_gs.position)) ||
|
// Therefore, not doing any cull distance or NaN position checks here.
|
||||||
any(isnan(xe_in[1].post_gs.position)) ||
|
// TODO(Triang3l): Find whether vertex killing should actually work for each
|
||||||
any(isnan(xe_in[2].post_gs.position)) ||
|
// triangle or for the entire quad.
|
||||||
any(isnan(xe_in[3].post_gs.position))) {
|
// TODO(Triang3l): Find the correct order.
|
||||||
return;
|
|
||||||
}
|
|
||||||
XeVertexPostGS xe_out;
|
XeVertexPostGS xe_out;
|
||||||
xe_out = xe_in[0].post_gs;
|
xe_out = xe_in[0].post_gs;
|
||||||
xe_stream.Append(xe_out);
|
xe_stream.Append(xe_out);
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
XeHSControlPointInputAdaptive main(uint xe_edge_factor : SV_VertexID) {
|
XeHSControlPointInputAdaptive main(uint xe_edge_factor : SV_VertexID) {
|
||||||
XeHSControlPointInputAdaptive output;
|
XeHSControlPointInputAdaptive output;
|
||||||
// The Xbox 360's GPU accepts the tessellation factors for edges through a
|
// The Xbox 360's GPU accepts the float32 tessellation factors for edges
|
||||||
// special kind of an index buffer.
|
// through a special kind of an index buffer.
|
||||||
// While Viva Pinata sets the factors to 0 for frustum-culled (quad) patches,
|
// While Viva Pinata sets the factors to 0 for frustum-culled (quad) patches,
|
||||||
// in Halo 3 only allowing patches with factors above 0 makes distant
|
// in Halo 3 only allowing patches with factors above 0 makes distant
|
||||||
// (triangle) patches disappear - it appears that there are no special values
|
// (triangle) patches disappear - it appears that there are no special values
|
||||||
|
|
|
@ -3,8 +3,13 @@
|
||||||
|
|
||||||
XeHSControlPointInputIndexed main(uint xe_vertex_id : SV_VertexID) {
|
XeHSControlPointInputIndexed main(uint xe_vertex_id : SV_VertexID) {
|
||||||
XeHSControlPointInputIndexed output;
|
XeHSControlPointInputIndexed output;
|
||||||
|
// Only the lower 24 bits of the vertex index are used (tested on an Adreno
|
||||||
|
// 200 phone). `((index & 0xFFFFFF) + offset) & 0xFFFFFF` is the same as
|
||||||
|
// `(index + offset) & 0xFFFFFF`.
|
||||||
output.index =
|
output.index =
|
||||||
float(asint(XeEndianSwap32(xe_vertex_id, xe_vertex_index_endian)) +
|
float(clamp((XeEndianSwap32(xe_vertex_id, xe_vertex_index_endian) +
|
||||||
xe_vertex_base_index);
|
xe_vertex_index_offset) &
|
||||||
|
0xFFFFFFu,
|
||||||
|
xe_vertex_index_min_max.x, xe_vertex_index_min_max.y));
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,35 +7,37 @@ cbuffer xe_system_cbuffer : register(b0) {
|
||||||
uint xe_line_loop_closing_index;
|
uint xe_line_loop_closing_index;
|
||||||
|
|
||||||
uint xe_vertex_index_endian;
|
uint xe_vertex_index_endian;
|
||||||
int xe_vertex_base_index;
|
uint xe_vertex_index_offset;
|
||||||
float2 xe_point_size;
|
uint2 xe_vertex_index_min_max;
|
||||||
|
|
||||||
float2 xe_point_size_min_max;
|
|
||||||
float2 xe_point_screen_to_ndc;
|
|
||||||
|
|
||||||
float4 xe_user_clip_planes[6];
|
float4 xe_user_clip_planes[6];
|
||||||
|
|
||||||
float3 xe_ndc_scale;
|
float3 xe_ndc_scale;
|
||||||
uint xe_interpolator_sampling_pattern;
|
float xe_point_size_x;
|
||||||
|
|
||||||
float3 xe_ndc_offset;
|
float3 xe_ndc_offset;
|
||||||
|
float xe_point_size_y;
|
||||||
|
|
||||||
|
float2 xe_point_size_min_max;
|
||||||
|
float2 xe_point_screen_to_ndc;
|
||||||
|
|
||||||
|
uint xe_interpolator_sampling_pattern;
|
||||||
uint xe_ps_param_gen;
|
uint xe_ps_param_gen;
|
||||||
|
uint2 xe_sample_count_log2;
|
||||||
|
|
||||||
uint4 xe_texture_swizzled_signs[2];
|
uint4 xe_texture_swizzled_signs[2];
|
||||||
|
|
||||||
uint xe_textures_resolved;
|
uint xe_textures_resolved;
|
||||||
uint2 xe_sample_count_log2;
|
|
||||||
float xe_alpha_test_reference;
|
float xe_alpha_test_reference;
|
||||||
|
uint xe_alpha_to_mask;
|
||||||
|
uint xe_edram_pitch_tiles;
|
||||||
|
|
||||||
float4 xe_color_exp_bias;
|
float4 xe_color_exp_bias;
|
||||||
|
|
||||||
uint xe_alpha_to_mask;
|
|
||||||
uint xe_edram_pitch_tiles;
|
|
||||||
float2 xe_edram_depth_range;
|
float2 xe_edram_depth_range;
|
||||||
|
|
||||||
float2 xe_edram_poly_offset_front;
|
float2 xe_edram_poly_offset_front;
|
||||||
float2 xe_edram_poly_offset_back;
|
|
||||||
|
|
||||||
|
float2 xe_edram_poly_offset_back;
|
||||||
uint xe_edram_depth_base_dwords;
|
uint xe_edram_depth_base_dwords;
|
||||||
|
|
||||||
uint4 xe_edram_stencil[2];
|
uint4 xe_edram_stencil[2];
|
||||||
|
|
|
@ -34,6 +34,50 @@ namespace draw_util {
|
||||||
// for use with the top-left rasterization rule later.
|
// for use with the top-left rasterization rule later.
|
||||||
int32_t FloatToD3D11Fixed16p8(float f32);
|
int32_t FloatToD3D11Fixed16p8(float f32);
|
||||||
|
|
||||||
|
// Polygonal primitive types (not including points and lines) are rasterized as
|
||||||
|
// triangles, have front and back faces, and also support face culling and fill
|
||||||
|
// modes (polymode_front_ptype, polymode_back_ptype). Other primitive types are
|
||||||
|
// always "front" (but don't support front face and back face culling, according
|
||||||
|
// to OpenGL and Vulkan specifications - even if glCullFace is
|
||||||
|
// GL_FRONT_AND_BACK, points and lines are still drawn), and may in some cases
|
||||||
|
// use the "para" registers instead of "front" or "back" (for "parallelogram" -
|
||||||
|
// like poly_offset_para_enable).
|
||||||
|
constexpr bool IsPrimitivePolygonal(bool vgt_output_path_is_tessellation_enable,
|
||||||
|
xenos::PrimitiveType type) {
|
||||||
|
if (vgt_output_path_is_tessellation_enable &&
|
||||||
|
(type == xenos::PrimitiveType::kTrianglePatch ||
|
||||||
|
type == xenos::PrimitiveType::kQuadPatch)) {
|
||||||
|
// For patch primitive types, the major mode is always explicit, so just
|
||||||
|
// checking if VGT_OUTPUT_PATH_CNTL::path_select is kTessellationEnable is
|
||||||
|
// enough.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
switch (type) {
|
||||||
|
case xenos::PrimitiveType::kTriangleList:
|
||||||
|
case xenos::PrimitiveType::kTriangleFan:
|
||||||
|
case xenos::PrimitiveType::kTriangleStrip:
|
||||||
|
case xenos::PrimitiveType::kTriangleWithWFlags:
|
||||||
|
case xenos::PrimitiveType::kQuadList:
|
||||||
|
case xenos::PrimitiveType::kQuadStrip:
|
||||||
|
case xenos::PrimitiveType::kPolygon:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// TODO(Triang3l): Investigate how kRectangleList should be treated - possibly
|
||||||
|
// actually drawn as two polygons on the console, however, the current
|
||||||
|
// geometry shader doesn't care about the winding order - allowing backface
|
||||||
|
// culling for rectangles currently breaks Gears of War 2.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool IsPrimitivePolygonal(const RegisterFile& regs) {
|
||||||
|
return IsPrimitivePolygonal(
|
||||||
|
regs.Get<reg::VGT_OUTPUT_PATH_CNTL>().path_select ==
|
||||||
|
xenos::VGTOutputPath::kTessellationEnable,
|
||||||
|
regs.Get<reg::VGT_DRAW_INITIATOR>().prim_type);
|
||||||
|
}
|
||||||
|
|
||||||
// Whether with the current state, any samples to rasterize (for any reason, not
|
// Whether with the current state, any samples to rasterize (for any reason, not
|
||||||
// only to write something to a render target, but also to do sample counting or
|
// only to write something to a render target, but also to do sample counting or
|
||||||
// pixel shader memexport) can be generated. Finally dropping draw calls can
|
// pixel shader memexport) can be generated. Finally dropping draw calls can
|
||||||
|
|
|
@ -293,7 +293,7 @@ void DxbcShaderTranslator::StartVertexShader_LoadVertexIndex() {
|
||||||
a_.OpINE(
|
a_.OpINE(
|
||||||
index_dest,
|
index_dest,
|
||||||
dxbc::Src::V(uint32_t(InOutRegister::kVSInVertexIndex), dxbc::Src::kXXXX),
|
dxbc::Src::V(uint32_t(InOutRegister::kVSInVertexIndex), dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(SystemConstantIndex::kLineLoopClosingIndex,
|
LoadSystemConstant(SystemConstants::Index::kLineLoopClosingIndex,
|
||||||
offsetof(SystemConstants, line_loop_closing_index),
|
offsetof(SystemConstants, line_loop_closing_index),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// Zero the index if processing the closing vertex of a line loop, or do
|
// Zero the index if processing the closing vertex of a line loop, or do
|
||||||
|
@ -306,7 +306,7 @@ void DxbcShaderTranslator::StartVertexShader_LoadVertexIndex() {
|
||||||
{
|
{
|
||||||
// Swap the vertex index's endianness.
|
// Swap the vertex index's endianness.
|
||||||
dxbc::Src endian_src(LoadSystemConstant(
|
dxbc::Src endian_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kVertexIndexEndian,
|
SystemConstants::Index::kVertexIndexEndian,
|
||||||
offsetof(SystemConstants, vertex_index_endian), dxbc::Src::kXXXX));
|
offsetof(SystemConstants, vertex_index_endian), dxbc::Src::kXXXX));
|
||||||
dxbc::Dest swap_temp_dest(dxbc::Dest::R(reg, 0b0010));
|
dxbc::Dest swap_temp_dest(dxbc::Dest::R(reg, 0b0010));
|
||||||
dxbc::Src swap_temp_src(dxbc::Src::R(reg, dxbc::Src::kYYYY));
|
dxbc::Src swap_temp_src(dxbc::Src::R(reg, dxbc::Src::kYYYY));
|
||||||
|
@ -346,12 +346,27 @@ void DxbcShaderTranslator::StartVertexShader_LoadVertexIndex() {
|
||||||
|
|
||||||
// Add the base vertex index.
|
// Add the base vertex index.
|
||||||
a_.OpIAdd(index_dest, index_src,
|
a_.OpIAdd(index_dest, index_src,
|
||||||
LoadSystemConstant(SystemConstantIndex::kVertexBaseIndex,
|
LoadSystemConstant(SystemConstants::Index::kVertexIndexOffset,
|
||||||
offsetof(SystemConstants, vertex_base_index),
|
offsetof(SystemConstants, vertex_index_offset),
|
||||||
|
dxbc::Src::kXXXX));
|
||||||
|
|
||||||
|
// Mask since the GPU only uses the lower 24 bits of the vertex index (tested
|
||||||
|
// on an Adreno 200 phone). `((index & 0xFFFFFF) + offset) & 0xFFFFFF` is the
|
||||||
|
// same as `(index + offset) & 0xFFFFFF`.
|
||||||
|
a_.OpAnd(index_dest, index_src, dxbc::Src::LU(xenos::kVertexIndexMask));
|
||||||
|
|
||||||
|
// Clamp the vertex index after offsetting.
|
||||||
|
a_.OpUMax(index_dest, index_src,
|
||||||
|
LoadSystemConstant(SystemConstants::Index::kVertexIndexMinMax,
|
||||||
|
offsetof(SystemConstants, vertex_index_min),
|
||||||
|
dxbc::Src::kXXXX));
|
||||||
|
a_.OpUMin(index_dest, index_src,
|
||||||
|
LoadSystemConstant(SystemConstants::Index::kVertexIndexMinMax,
|
||||||
|
offsetof(SystemConstants, vertex_index_max),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
|
||||||
// Convert to float.
|
// Convert to float.
|
||||||
a_.OpIToF(index_dest, index_src);
|
a_.OpUToF(index_dest, index_src);
|
||||||
|
|
||||||
if (uses_register_dynamic_addressing) {
|
if (uses_register_dynamic_addressing) {
|
||||||
// Store to indexed GPR 0 in x0[0].
|
// Store to indexed GPR 0 in x0[0].
|
||||||
|
@ -568,7 +583,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
||||||
uint32_t centroid_temp =
|
uint32_t centroid_temp =
|
||||||
uses_register_dynamic_addressing ? PushSystemTemp() : UINT32_MAX;
|
uses_register_dynamic_addressing ? PushSystemTemp() : UINT32_MAX;
|
||||||
dxbc::Src sampling_pattern_src(LoadSystemConstant(
|
dxbc::Src sampling_pattern_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kInterpolatorSamplingPattern,
|
SystemConstants::Index::kInterpolatorSamplingPattern,
|
||||||
offsetof(SystemConstants, interpolator_sampling_pattern),
|
offsetof(SystemConstants, interpolator_sampling_pattern),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
for (uint32_t i = 0; i < interpolator_count; ++i) {
|
for (uint32_t i = 0; i < interpolator_count; ++i) {
|
||||||
|
@ -606,7 +621,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
||||||
// absolute value) coordinates, facing (X sign bit) - to the specified
|
// absolute value) coordinates, facing (X sign bit) - to the specified
|
||||||
// interpolator register (ps_param_gen).
|
// interpolator register (ps_param_gen).
|
||||||
dxbc::Src param_gen_index_src(LoadSystemConstant(
|
dxbc::Src param_gen_index_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kPSParamGen,
|
SystemConstants::Index::kPSParamGen,
|
||||||
offsetof(SystemConstants, ps_param_gen), dxbc::Src::kXXXX));
|
offsetof(SystemConstants, ps_param_gen), dxbc::Src::kXXXX));
|
||||||
uint32_t param_gen_temp = PushSystemTemp();
|
uint32_t param_gen_temp = PushSystemTemp();
|
||||||
// Check if pixel parameters need to be written.
|
// Check if pixel parameters need to be written.
|
||||||
|
@ -660,7 +675,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
||||||
a_.OpUBFE(dxbc::Dest::R(param_gen_temp, 0b0100), dxbc::Src::LU(1),
|
a_.OpUBFE(dxbc::Dest::R(param_gen_temp, 0b0100), dxbc::Src::LU(1),
|
||||||
param_gen_index_src,
|
param_gen_index_src,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kInterpolatorSamplingPattern,
|
SystemConstants::Index::kInterpolatorSamplingPattern,
|
||||||
offsetof(SystemConstants, interpolator_sampling_pattern),
|
offsetof(SystemConstants, interpolator_sampling_pattern),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
a_.OpIf(bool(xenos::SampleLocation::kCenter),
|
a_.OpIf(bool(xenos::SampleLocation::kCenter),
|
||||||
|
@ -896,7 +911,7 @@ void DxbcShaderTranslator::CompleteVertexOrDomainShader() {
|
||||||
uint32_t(InOutRegister::kVSDSOutClipDistance0123) + (i >> 2),
|
uint32_t(InOutRegister::kVSDSOutClipDistance0123) + (i >> 2),
|
||||||
1 << (i & 3)),
|
1 << (i & 3)),
|
||||||
dxbc::Src::R(system_temp_position_),
|
dxbc::Src::R(system_temp_position_),
|
||||||
LoadSystemConstant(SystemConstantIndex::kUserClipPlanes,
|
LoadSystemConstant(SystemConstants::Index::kUserClipPlanes,
|
||||||
offsetof(SystemConstants, user_clip_planes) +
|
offsetof(SystemConstants, user_clip_planes) +
|
||||||
sizeof(float) * 4 * i,
|
sizeof(float) * 4 * i,
|
||||||
dxbc::Src::kXYZW));
|
dxbc::Src::kXYZW));
|
||||||
|
@ -908,12 +923,12 @@ void DxbcShaderTranslator::CompleteVertexOrDomainShader() {
|
||||||
// position to NaN to kill all primitives.
|
// position to NaN to kill all primitives.
|
||||||
a_.OpMul(dxbc::Dest::R(system_temp_position_, 0b0111),
|
a_.OpMul(dxbc::Dest::R(system_temp_position_, 0b0111),
|
||||||
dxbc::Src::R(system_temp_position_),
|
dxbc::Src::R(system_temp_position_),
|
||||||
LoadSystemConstant(SystemConstantIndex::kNDCScale,
|
LoadSystemConstant(SystemConstants::Index::kNDCScale,
|
||||||
offsetof(SystemConstants, ndc_scale), 0b100100));
|
offsetof(SystemConstants, ndc_scale), 0b100100));
|
||||||
|
|
||||||
// Apply offset (multiplied by W) used for the same purposes.
|
// Apply offset (multiplied by W) used for the same purposes.
|
||||||
a_.OpMAd(dxbc::Dest::R(system_temp_position_, 0b0111),
|
a_.OpMAd(dxbc::Dest::R(system_temp_position_, 0b0111),
|
||||||
LoadSystemConstant(SystemConstantIndex::kNDCOffset,
|
LoadSystemConstant(SystemConstants::Index::kNDCOffset,
|
||||||
offsetof(SystemConstants, ndc_offset), 0b100100),
|
offsetof(SystemConstants, ndc_offset), 0b100100),
|
||||||
dxbc::Src::R(system_temp_position_, dxbc::Src::kWWWW),
|
dxbc::Src::R(system_temp_position_, dxbc::Src::kWWWW),
|
||||||
dxbc::Src::R(system_temp_position_));
|
dxbc::Src::R(system_temp_position_));
|
||||||
|
@ -1889,9 +1904,6 @@ const DxbcShaderTranslator::ShaderRdefType
|
||||||
{"float4", dxbc::RdefVariableClass::kVector,
|
{"float4", dxbc::RdefVariableClass::kVector,
|
||||||
dxbc::RdefVariableType::kFloat, 1, 4, 0,
|
dxbc::RdefVariableType::kFloat, 1, 4, 0,
|
||||||
ShaderRdefTypeIndex::kUnknown},
|
ShaderRdefTypeIndex::kUnknown},
|
||||||
// kInt
|
|
||||||
{"int", dxbc::RdefVariableClass::kScalar, dxbc::RdefVariableType::kInt,
|
|
||||||
1, 1, 0, ShaderRdefTypeIndex::kUnknown},
|
|
||||||
// kUint
|
// kUint
|
||||||
{"dword", dxbc::RdefVariableClass::kScalar,
|
{"dword", dxbc::RdefVariableClass::kScalar,
|
||||||
dxbc::RdefVariableType::kUInt, 1, 1, 0, ShaderRdefTypeIndex::kUnknown},
|
dxbc::RdefVariableType::kUInt, 1, 1, 0, ShaderRdefTypeIndex::kUnknown},
|
||||||
|
@ -1928,7 +1940,7 @@ const DxbcShaderTranslator::ShaderRdefType
|
||||||
|
|
||||||
const DxbcShaderTranslator::SystemConstantRdef
|
const DxbcShaderTranslator::SystemConstantRdef
|
||||||
DxbcShaderTranslator::system_constant_rdef_[size_t(
|
DxbcShaderTranslator::system_constant_rdef_[size_t(
|
||||||
DxbcShaderTranslator::SystemConstantIndex::kCount)] = {
|
DxbcShaderTranslator::SystemConstants::Index::kCount)] = {
|
||||||
{"xe_flags", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
{"xe_flags", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
||||||
{"xe_tessellation_factor_range", ShaderRdefTypeIndex::kFloat2,
|
{"xe_tessellation_factor_range", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
|
@ -1937,46 +1949,49 @@ const DxbcShaderTranslator::SystemConstantRdef
|
||||||
|
|
||||||
{"xe_vertex_index_endian", ShaderRdefTypeIndex::kUint,
|
{"xe_vertex_index_endian", ShaderRdefTypeIndex::kUint,
|
||||||
sizeof(uint32_t)},
|
sizeof(uint32_t)},
|
||||||
{"xe_vertex_base_index", ShaderRdefTypeIndex::kInt, sizeof(int32_t)},
|
{"xe_vertex_index_offset", ShaderRdefTypeIndex::kUint, sizeof(int32_t)},
|
||||||
{"xe_point_size", ShaderRdefTypeIndex::kFloat2, sizeof(float) * 2},
|
{"xe_vertex_index_min_max", ShaderRdefTypeIndex::kUint2,
|
||||||
|
sizeof(uint32_t) * 2},
|
||||||
|
|
||||||
|
{"xe_user_clip_planes", ShaderRdefTypeIndex::kFloat4Array6,
|
||||||
|
sizeof(float) * 4 * 6},
|
||||||
|
|
||||||
|
{"xe_ndc_scale", ShaderRdefTypeIndex::kFloat3, sizeof(float) * 3},
|
||||||
|
{"xe_point_size_x", ShaderRdefTypeIndex::kFloat, sizeof(float)},
|
||||||
|
|
||||||
|
{"xe_ndc_offset", ShaderRdefTypeIndex::kFloat3, sizeof(float) * 3},
|
||||||
|
{"xe_point_size_y", ShaderRdefTypeIndex::kFloat, sizeof(float)},
|
||||||
|
|
||||||
{"xe_point_size_min_max", ShaderRdefTypeIndex::kFloat2,
|
{"xe_point_size_min_max", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
{"xe_point_screen_to_ndc", ShaderRdefTypeIndex::kFloat2,
|
{"xe_point_screen_to_ndc", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
|
|
||||||
{"xe_user_clip_planes", ShaderRdefTypeIndex::kFloat4Array6,
|
|
||||||
sizeof(float) * 4 * 6},
|
|
||||||
|
|
||||||
{"xe_ndc_scale", ShaderRdefTypeIndex::kFloat3, sizeof(float) * 3},
|
|
||||||
{"xe_interpolator_sampling_pattern", ShaderRdefTypeIndex::kUint,
|
{"xe_interpolator_sampling_pattern", ShaderRdefTypeIndex::kUint,
|
||||||
sizeof(uint32_t)},
|
sizeof(uint32_t)},
|
||||||
|
|
||||||
{"xe_ndc_offset", ShaderRdefTypeIndex::kFloat3, sizeof(float) * 3},
|
|
||||||
{"xe_ps_param_gen", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
{"xe_ps_param_gen", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
||||||
|
{"xe_sample_count_log2", ShaderRdefTypeIndex::kUint2,
|
||||||
|
sizeof(uint32_t) * 2},
|
||||||
|
|
||||||
{"xe_texture_swizzled_signs", ShaderRdefTypeIndex::kUint4Array2,
|
{"xe_texture_swizzled_signs", ShaderRdefTypeIndex::kUint4Array2,
|
||||||
sizeof(uint32_t) * 4 * 2},
|
sizeof(uint32_t) * 4 * 2},
|
||||||
|
|
||||||
{"xe_textures_resolved", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
{"xe_textures_resolved", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
||||||
{"xe_sample_count_log2", ShaderRdefTypeIndex::kUint2,
|
|
||||||
sizeof(uint32_t) * 2},
|
|
||||||
{"xe_alpha_test_reference", ShaderRdefTypeIndex::kFloat, sizeof(float)},
|
{"xe_alpha_test_reference", ShaderRdefTypeIndex::kFloat, sizeof(float)},
|
||||||
|
{"xe_alpha_to_mask", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
||||||
|
{"xe_edram_pitch_tiles", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
||||||
|
|
||||||
{"xe_color_exp_bias", ShaderRdefTypeIndex::kFloat4, sizeof(float) * 4},
|
{"xe_color_exp_bias", ShaderRdefTypeIndex::kFloat4, sizeof(float) * 4},
|
||||||
|
|
||||||
{"xe_alpha_to_mask", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
|
||||||
{"xe_edram_pitch_tiles", ShaderRdefTypeIndex::kUint, sizeof(uint32_t)},
|
|
||||||
{"xe_edram_depth_range", ShaderRdefTypeIndex::kFloat2,
|
{"xe_edram_depth_range", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
|
|
||||||
{"xe_edram_poly_offset_front", ShaderRdefTypeIndex::kFloat2,
|
{"xe_edram_poly_offset_front", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
|
|
||||||
{"xe_edram_poly_offset_back", ShaderRdefTypeIndex::kFloat2,
|
{"xe_edram_poly_offset_back", ShaderRdefTypeIndex::kFloat2,
|
||||||
sizeof(float) * 2},
|
sizeof(float) * 2},
|
||||||
|
|
||||||
{"xe_edram_depth_base_dwords", ShaderRdefTypeIndex::kUint,
|
{"xe_edram_depth_base_dwords", ShaderRdefTypeIndex::kUint,
|
||||||
sizeof(uint32_t), sizeof(float) * 3},
|
sizeof(uint32_t), sizeof(float)},
|
||||||
|
|
||||||
{"xe_edram_stencil", ShaderRdefTypeIndex::kUint4Array2,
|
{"xe_edram_stencil", ShaderRdefTypeIndex::kUint4Array2,
|
||||||
sizeof(uint32_t) * 4 * 2},
|
sizeof(uint32_t) * 4 * 2},
|
||||||
|
@ -2078,9 +2093,9 @@ void DxbcShaderTranslator::WriteResourceDefinition() {
|
||||||
// Names.
|
// Names.
|
||||||
name_ptr = (uint32_t(shader_object_.size()) - blob_position_dwords) *
|
name_ptr = (uint32_t(shader_object_.size()) - blob_position_dwords) *
|
||||||
sizeof(uint32_t);
|
sizeof(uint32_t);
|
||||||
uint32_t constant_name_ptrs_system[size_t(SystemConstantIndex::kCount)];
|
uint32_t constant_name_ptrs_system[size_t(SystemConstants::Index::kCount)];
|
||||||
if (cbuffer_index_system_constants_ != kBindingIndexUnallocated) {
|
if (cbuffer_index_system_constants_ != kBindingIndexUnallocated) {
|
||||||
for (size_t i = 0; i < size_t(SystemConstantIndex::kCount); ++i) {
|
for (size_t i = 0; i < size_t(SystemConstants::Index::kCount); ++i) {
|
||||||
constant_name_ptrs_system[i] = name_ptr;
|
constant_name_ptrs_system[i] = name_ptr;
|
||||||
name_ptr += dxbc::AppendAlignedString(shader_object_,
|
name_ptr += dxbc::AppendAlignedString(shader_object_,
|
||||||
system_constant_rdef_[i].name);
|
system_constant_rdef_[i].name);
|
||||||
|
@ -2112,11 +2127,11 @@ void DxbcShaderTranslator::WriteResourceDefinition() {
|
||||||
if (cbuffer_index_system_constants_ != kBindingIndexUnallocated) {
|
if (cbuffer_index_system_constants_ != kBindingIndexUnallocated) {
|
||||||
shader_object_.resize(constant_position_dwords_system +
|
shader_object_.resize(constant_position_dwords_system +
|
||||||
sizeof(dxbc::RdefVariable) / sizeof(uint32_t) *
|
sizeof(dxbc::RdefVariable) / sizeof(uint32_t) *
|
||||||
size_t(SystemConstantIndex::kCount));
|
size_t(SystemConstants::Index::kCount));
|
||||||
auto constants_system = reinterpret_cast<dxbc::RdefVariable*>(
|
auto constants_system = reinterpret_cast<dxbc::RdefVariable*>(
|
||||||
shader_object_.data() + constant_position_dwords_system);
|
shader_object_.data() + constant_position_dwords_system);
|
||||||
uint32_t constant_offset_system = 0;
|
uint32_t constant_offset_system = 0;
|
||||||
for (size_t i = 0; i < size_t(SystemConstantIndex::kCount); ++i) {
|
for (size_t i = 0; i < size_t(SystemConstants::Index::kCount); ++i) {
|
||||||
dxbc::RdefVariable& constant_system = constants_system[i];
|
dxbc::RdefVariable& constant_system = constants_system[i];
|
||||||
const SystemConstantRdef& translator_constant_system =
|
const SystemConstantRdef& translator_constant_system =
|
||||||
system_constant_rdef_[i];
|
system_constant_rdef_[i];
|
||||||
|
@ -2271,7 +2286,7 @@ void DxbcShaderTranslator::WriteResourceDefinition() {
|
||||||
cbuffer.type = dxbc::RdefCbufferType::kCbuffer;
|
cbuffer.type = dxbc::RdefCbufferType::kCbuffer;
|
||||||
if (i == cbuffer_index_system_constants_) {
|
if (i == cbuffer_index_system_constants_) {
|
||||||
cbuffer.name_ptr = cbuffer_name_ptr_system;
|
cbuffer.name_ptr = cbuffer_name_ptr_system;
|
||||||
cbuffer.variable_count = uint32_t(SystemConstantIndex::kCount);
|
cbuffer.variable_count = uint32_t(SystemConstants::Index::kCount);
|
||||||
cbuffer.variables_ptr =
|
cbuffer.variables_ptr =
|
||||||
(constant_position_dwords_system - blob_position_dwords) *
|
(constant_position_dwords_system - blob_position_dwords) *
|
||||||
sizeof(uint32_t);
|
sizeof(uint32_t);
|
||||||
|
|
|
@ -202,7 +202,7 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
};
|
};
|
||||||
|
|
||||||
// IF SYSTEM CONSTANTS ARE CHANGED OR ADDED, THE FOLLOWING MUST BE UPDATED:
|
// IF SYSTEM CONSTANTS ARE CHANGED OR ADDED, THE FOLLOWING MUST BE UPDATED:
|
||||||
// - SystemConstantIndex enum.
|
// - SystemConstants::Index enum.
|
||||||
// - system_constant_rdef_.
|
// - system_constant_rdef_.
|
||||||
// - d3d12/shaders/xenos_draw.hlsli (for geometry shaders).
|
// - d3d12/shaders/xenos_draw.hlsli (for geometry shaders).
|
||||||
struct SystemConstants {
|
struct SystemConstants {
|
||||||
|
@ -217,20 +217,38 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
uint32_t line_loop_closing_index;
|
uint32_t line_loop_closing_index;
|
||||||
|
|
||||||
xenos::Endian vertex_index_endian;
|
xenos::Endian vertex_index_endian;
|
||||||
int32_t vertex_base_index;
|
uint32_t vertex_index_offset;
|
||||||
float point_size[2];
|
union {
|
||||||
|
struct {
|
||||||
float point_size_min_max[2];
|
uint32_t vertex_index_min;
|
||||||
// Screen point size * 2 (but not supersampled) -> size in NDC.
|
uint32_t vertex_index_max;
|
||||||
float point_screen_to_ndc[2];
|
};
|
||||||
|
uint32_t vertex_index_min_max[2];
|
||||||
|
};
|
||||||
|
|
||||||
float user_clip_planes[6][4];
|
float user_clip_planes[6][4];
|
||||||
|
|
||||||
float ndc_scale[3];
|
float ndc_scale[3];
|
||||||
uint32_t interpolator_sampling_pattern;
|
float point_size_x;
|
||||||
|
|
||||||
float ndc_offset[3];
|
float ndc_offset[3];
|
||||||
|
float point_size_y;
|
||||||
|
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
float point_size_min;
|
||||||
|
float point_size_max;
|
||||||
|
};
|
||||||
|
float point_size_min_max[2];
|
||||||
|
};
|
||||||
|
// Screen point size * 2 (but not supersampled) -> size in NDC.
|
||||||
|
float point_screen_to_ndc[2];
|
||||||
|
|
||||||
|
uint32_t interpolator_sampling_pattern;
|
||||||
uint32_t ps_param_gen;
|
uint32_t ps_param_gen;
|
||||||
|
// Log2 of X and Y sample size. Used for alpha to mask, and for MSAA with
|
||||||
|
// ROV, this is used for EDRAM address calculation.
|
||||||
|
uint32_t sample_count_log2[2];
|
||||||
|
|
||||||
// Each byte contains post-swizzle TextureSign values for each of the needed
|
// Each byte contains post-swizzle TextureSign values for each of the needed
|
||||||
// components of each of the 32 used texture fetch constants.
|
// components of each of the 32 used texture fetch constants.
|
||||||
|
@ -239,18 +257,15 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
// Whether the contents of each texture in fetch constants comes from a
|
// Whether the contents of each texture in fetch constants comes from a
|
||||||
// resolve operation.
|
// resolve operation.
|
||||||
uint32_t textures_resolved;
|
uint32_t textures_resolved;
|
||||||
// Log2 of X and Y sample size. Used for alpha to mask, and for MSAA with
|
|
||||||
// ROV, this is used for EDRAM address calculation.
|
|
||||||
uint32_t sample_count_log2[2];
|
|
||||||
float alpha_test_reference;
|
float alpha_test_reference;
|
||||||
|
|
||||||
float color_exp_bias[4];
|
|
||||||
|
|
||||||
// If alpha to mask is disabled, the entire alpha_to_mask value must be 0.
|
// If alpha to mask is disabled, the entire alpha_to_mask value must be 0.
|
||||||
// If alpha to mask is enabled, bits 0:7 are sample offsets, and bit 8 must
|
// If alpha to mask is enabled, bits 0:7 are sample offsets, and bit 8 must
|
||||||
// be 1.
|
// be 1.
|
||||||
uint32_t alpha_to_mask;
|
uint32_t alpha_to_mask;
|
||||||
uint32_t edram_pitch_tiles;
|
uint32_t edram_pitch_tiles;
|
||||||
|
|
||||||
|
float color_exp_bias[4];
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
float edram_depth_range_scale;
|
float edram_depth_range_scale;
|
||||||
|
@ -258,7 +273,6 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
};
|
};
|
||||||
float edram_depth_range[2];
|
float edram_depth_range[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
float edram_poly_offset_front_scale;
|
float edram_poly_offset_front_scale;
|
||||||
|
@ -266,6 +280,7 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
};
|
};
|
||||||
float edram_poly_offset_front[2];
|
float edram_poly_offset_front[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
float edram_poly_offset_back_scale;
|
float edram_poly_offset_back_scale;
|
||||||
|
@ -273,9 +288,8 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
};
|
};
|
||||||
float edram_poly_offset_back[2];
|
float edram_poly_offset_back[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t edram_depth_base_dwords;
|
uint32_t edram_depth_base_dwords;
|
||||||
uint32_t padding_edram_depth_base_dwords[3];
|
uint32_t padding_edram_depth_base_dwords;
|
||||||
|
|
||||||
// In stencil function/operations (they match the layout of the
|
// In stencil function/operations (they match the layout of the
|
||||||
// function/operations in RB_DEPTHCONTROL):
|
// function/operations in RB_DEPTHCONTROL):
|
||||||
|
@ -326,6 +340,68 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
|
|
||||||
// The constant blend factor for the respective modes.
|
// The constant blend factor for the respective modes.
|
||||||
float edram_blend_constant[4];
|
float edram_blend_constant[4];
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class DxbcShaderTranslator;
|
||||||
|
|
||||||
|
enum class Index : uint32_t {
|
||||||
|
kFlags,
|
||||||
|
kTessellationFactorRange,
|
||||||
|
kLineLoopClosingIndex,
|
||||||
|
|
||||||
|
kVertexIndexEndian,
|
||||||
|
kVertexIndexOffset,
|
||||||
|
kVertexIndexMinMax,
|
||||||
|
|
||||||
|
kUserClipPlanes,
|
||||||
|
|
||||||
|
kNDCScale,
|
||||||
|
kPointSizeX,
|
||||||
|
|
||||||
|
kNDCOffset,
|
||||||
|
kPointSizeY,
|
||||||
|
|
||||||
|
kPointSizeMinMax,
|
||||||
|
kPointScreenToNDC,
|
||||||
|
|
||||||
|
kInterpolatorSamplingPattern,
|
||||||
|
kPSParamGen,
|
||||||
|
kSampleCountLog2,
|
||||||
|
|
||||||
|
kTextureSwizzledSigns,
|
||||||
|
|
||||||
|
kTexturesResolved,
|
||||||
|
kAlphaTestReference,
|
||||||
|
kAlphaToMask,
|
||||||
|
kEdramPitchTiles,
|
||||||
|
|
||||||
|
kColorExpBias,
|
||||||
|
|
||||||
|
kEdramDepthRange,
|
||||||
|
kEdramPolyOffsetFront,
|
||||||
|
|
||||||
|
kEdramPolyOffsetBack,
|
||||||
|
kEdramDepthBaseDwords,
|
||||||
|
|
||||||
|
kEdramStencil,
|
||||||
|
|
||||||
|
kEdramRTBaseDwordsScaled,
|
||||||
|
|
||||||
|
kEdramRTFormatFlags,
|
||||||
|
|
||||||
|
kEdramRTClamp,
|
||||||
|
|
||||||
|
kEdramRTKeepMask,
|
||||||
|
|
||||||
|
kEdramRTBlendFactorsOps,
|
||||||
|
|
||||||
|
kEdramBlendConstant,
|
||||||
|
|
||||||
|
kCount,
|
||||||
|
};
|
||||||
|
static_assert(
|
||||||
|
uint32_t(Index::kCount) <= 64,
|
||||||
|
"Too many system constants, can't use uint64_t for usage bits");
|
||||||
};
|
};
|
||||||
|
|
||||||
// Shader resource view binding spaces.
|
// Shader resource view binding spaces.
|
||||||
|
@ -507,44 +583,6 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
void ProcessAluInstruction(const ParsedAluInstruction& instr) override;
|
void ProcessAluInstruction(const ParsedAluInstruction& instr) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class SystemConstantIndex : uint32_t {
|
|
||||||
kFlags,
|
|
||||||
kTessellationFactorRange,
|
|
||||||
kLineLoopClosingIndex,
|
|
||||||
kVertexIndexEndian,
|
|
||||||
kVertexBaseIndex,
|
|
||||||
kPointSize,
|
|
||||||
kPointSizeMinMax,
|
|
||||||
kPointScreenToNDC,
|
|
||||||
kUserClipPlanes,
|
|
||||||
kNDCScale,
|
|
||||||
kInterpolatorSamplingPattern,
|
|
||||||
kNDCOffset,
|
|
||||||
kPSParamGen,
|
|
||||||
kTextureSwizzledSigns,
|
|
||||||
kTexturesResolved,
|
|
||||||
kSampleCountLog2,
|
|
||||||
kAlphaTestReference,
|
|
||||||
kColorExpBias,
|
|
||||||
kAlphaToMask,
|
|
||||||
kEdramPitchTiles,
|
|
||||||
kEdramDepthRange,
|
|
||||||
kEdramPolyOffsetFront,
|
|
||||||
kEdramPolyOffsetBack,
|
|
||||||
kEdramDepthBaseDwords,
|
|
||||||
kEdramStencil,
|
|
||||||
kEdramRTBaseDwordsScaled,
|
|
||||||
kEdramRTFormatFlags,
|
|
||||||
kEdramRTClamp,
|
|
||||||
kEdramRTKeepMask,
|
|
||||||
kEdramRTBlendFactorsOps,
|
|
||||||
kEdramBlendConstant,
|
|
||||||
|
|
||||||
kCount,
|
|
||||||
};
|
|
||||||
static_assert(uint32_t(SystemConstantIndex::kCount) <= 64,
|
|
||||||
"Too many system constants, can't use uint64_t for usage bits");
|
|
||||||
|
|
||||||
static constexpr uint32_t kPointParametersTexCoord = xenos::kMaxInterpolators;
|
static constexpr uint32_t kPointParametersTexCoord = xenos::kMaxInterpolators;
|
||||||
static constexpr uint32_t kClipSpaceZWTexCoord = kPointParametersTexCoord + 1;
|
static constexpr uint32_t kClipSpaceZWTexCoord = kPointParametersTexCoord + 1;
|
||||||
|
|
||||||
|
@ -580,7 +618,7 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
// GetSystemConstantSrc + MarkSystemConstantUsed is for special cases of
|
// GetSystemConstantSrc + MarkSystemConstantUsed is for special cases of
|
||||||
// building the source unconditionally - in general, LoadSystemConstant must
|
// building the source unconditionally - in general, LoadSystemConstant must
|
||||||
// be used instead.
|
// be used instead.
|
||||||
void MarkSystemConstantUsed(SystemConstantIndex index) {
|
void MarkSystemConstantUsed(SystemConstants::Index index) {
|
||||||
system_constants_used_ |= uint64_t(1) << uint32_t(index);
|
system_constants_used_ |= uint64_t(1) << uint32_t(index);
|
||||||
}
|
}
|
||||||
// Offset should be offsetof(SystemConstants, field). Swizzle values are
|
// Offset should be offsetof(SystemConstants, field). Swizzle values are
|
||||||
|
@ -599,13 +637,13 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
std::min(((swizzle >> 4) & 3) + first_component, uint32_t(3)) << 4 |
|
std::min(((swizzle >> 4) & 3) + first_component, uint32_t(3)) << 4 |
|
||||||
std::min(((swizzle >> 6) & 3) + first_component, uint32_t(3)) << 6);
|
std::min(((swizzle >> 6) & 3) + first_component, uint32_t(3)) << 6);
|
||||||
}
|
}
|
||||||
dxbc::Src LoadSystemConstant(SystemConstantIndex index, size_t offset,
|
dxbc::Src LoadSystemConstant(SystemConstants::Index index, size_t offset,
|
||||||
uint32_t swizzle) {
|
uint32_t swizzle) {
|
||||||
MarkSystemConstantUsed(index);
|
MarkSystemConstantUsed(index);
|
||||||
return GetSystemConstantSrc(offset, swizzle);
|
return GetSystemConstantSrc(offset, swizzle);
|
||||||
}
|
}
|
||||||
dxbc::Src LoadFlagsSystemConstant() {
|
dxbc::Src LoadFlagsSystemConstant() {
|
||||||
return LoadSystemConstant(SystemConstantIndex::kFlags,
|
return LoadSystemConstant(SystemConstants::Index::kFlags,
|
||||||
offsetof(SystemConstants, flags),
|
offsetof(SystemConstants, flags),
|
||||||
dxbc::Src::kXXXX);
|
dxbc::Src::kXXXX);
|
||||||
}
|
}
|
||||||
|
@ -928,7 +966,6 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
kFloat2,
|
kFloat2,
|
||||||
kFloat3,
|
kFloat3,
|
||||||
kFloat4,
|
kFloat4,
|
||||||
kInt,
|
|
||||||
kUint,
|
kUint,
|
||||||
kUint2,
|
kUint2,
|
||||||
kUint4,
|
kUint4,
|
||||||
|
@ -982,9 +1019,9 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
uint32_t padding_after;
|
uint32_t padding_after;
|
||||||
};
|
};
|
||||||
static const SystemConstantRdef
|
static const SystemConstantRdef
|
||||||
system_constant_rdef_[size_t(SystemConstantIndex::kCount)];
|
system_constant_rdef_[size_t(SystemConstants::Index::kCount)];
|
||||||
// Mask of system constants (1 << SystemConstantIndex) used in the shader, so
|
// Mask of system constants (1 << SystemConstants::Index) used in the shader,
|
||||||
// the remaining ones can be marked as unused in RDEF.
|
// so the remaining ones can be marked as unused in RDEF.
|
||||||
uint64_t system_constants_used_;
|
uint64_t system_constants_used_;
|
||||||
|
|
||||||
// Mask of domain location actually used in the domain shader.
|
// Mask of domain location actually used in the domain shader.
|
||||||
|
|
|
@ -945,7 +945,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// calculations.
|
// calculations.
|
||||||
assert_zero(used_result_nonzero_components & 0b1000);
|
assert_zero(used_result_nonzero_components & 0b1000);
|
||||||
a_.OpAnd(dxbc::Dest::R(system_temp_result_, 0b1000),
|
a_.OpAnd(dxbc::Dest::R(system_temp_result_, 0b1000),
|
||||||
LoadSystemConstant(SystemConstantIndex::kTexturesResolved,
|
LoadSystemConstant(SystemConstants::Index::kTexturesResolved,
|
||||||
offsetof(SystemConstants, textures_resolved),
|
offsetof(SystemConstants, textures_resolved),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
||||||
|
@ -1006,7 +1006,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
uint32_t signs_temp = UINT32_MAX;
|
uint32_t signs_temp = UINT32_MAX;
|
||||||
if (instr.opcode == FetchOpcode::kTextureFetch) {
|
if (instr.opcode == FetchOpcode::kTextureFetch) {
|
||||||
signs_temp = PushSystemTemp();
|
signs_temp = PushSystemTemp();
|
||||||
MarkSystemConstantUsed(SystemConstantIndex::kTextureSwizzledSigns);
|
MarkSystemConstantUsed(SystemConstants::Index::kTextureSwizzledSigns);
|
||||||
a_.OpUBFE(dxbc::Dest::R(signs_temp, used_result_nonzero_components),
|
a_.OpUBFE(dxbc::Dest::R(signs_temp, used_result_nonzero_components),
|
||||||
dxbc::Src::LU(2),
|
dxbc::Src::LU(2),
|
||||||
dxbc::Src::LU(signs_shift, signs_shift + 2, signs_shift + 4,
|
dxbc::Src::LU(signs_shift, signs_shift + 2, signs_shift + 4,
|
||||||
|
@ -1069,7 +1069,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// resolution scale inverse - sampler not loaded yet.
|
// resolution scale inverse - sampler not loaded yet.
|
||||||
a_.OpAnd(
|
a_.OpAnd(
|
||||||
dxbc::Dest::R(coord_and_sampler_temp, 0b1000),
|
dxbc::Dest::R(coord_and_sampler_temp, 0b1000),
|
||||||
LoadSystemConstant(SystemConstantIndex::kTexturesResolved,
|
LoadSystemConstant(SystemConstants::Index::kTexturesResolved,
|
||||||
offsetof(SystemConstants, textures_resolved),
|
offsetof(SystemConstants, textures_resolved),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
||||||
|
@ -1135,7 +1135,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// resolution scale inverse - sampler not loaded yet.
|
// resolution scale inverse - sampler not loaded yet.
|
||||||
a_.OpAnd(
|
a_.OpAnd(
|
||||||
dxbc::Dest::R(coord_and_sampler_temp, 0b1000),
|
dxbc::Dest::R(coord_and_sampler_temp, 0b1000),
|
||||||
LoadSystemConstant(SystemConstantIndex::kTexturesResolved,
|
LoadSystemConstant(SystemConstants::Index::kTexturesResolved,
|
||||||
offsetof(SystemConstants, textures_resolved),
|
offsetof(SystemConstants, textures_resolved),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
||||||
|
@ -1312,7 +1312,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// Check which SRV needs to be accessed - signed or unsigned. If there is
|
// Check which SRV needs to be accessed - signed or unsigned. If there is
|
||||||
// at least one non-signed component, will be using the unsigned one.
|
// at least one non-signed component, will be using the unsigned one.
|
||||||
uint32_t is_unsigned_temp = PushSystemTemp();
|
uint32_t is_unsigned_temp = PushSystemTemp();
|
||||||
MarkSystemConstantUsed(SystemConstantIndex::kTextureSwizzledSigns);
|
MarkSystemConstantUsed(SystemConstants::Index::kTextureSwizzledSigns);
|
||||||
a_.OpUBFE(dxbc::Dest::R(is_unsigned_temp, 0b0001), dxbc::Src::LU(8),
|
a_.OpUBFE(dxbc::Dest::R(is_unsigned_temp, 0b0001), dxbc::Src::LU(8),
|
||||||
dxbc::Src::LU(signs_shift), signs_uint_src);
|
dxbc::Src::LU(signs_shift), signs_uint_src);
|
||||||
a_.OpINE(
|
a_.OpINE(
|
||||||
|
@ -2055,7 +2055,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// `if`, with `else` for sRGB resolved render targets.
|
// `if`, with `else` for sRGB resolved render targets.
|
||||||
a_.OpAnd(
|
a_.OpAnd(
|
||||||
dxbc::Dest::R(gamma_temp, 0b0001),
|
dxbc::Dest::R(gamma_temp, 0b0001),
|
||||||
LoadSystemConstant(SystemConstantIndex::kTexturesResolved,
|
LoadSystemConstant(SystemConstants::Index::kTexturesResolved,
|
||||||
offsetof(SystemConstants, textures_resolved),
|
offsetof(SystemConstants, textures_resolved),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
dxbc::Src::LU(uint32_t(1) << tfetch_index));
|
||||||
|
|
|
@ -224,7 +224,7 @@ void DxbcShaderTranslator::StartPixelShader_LoadROVParameters() {
|
||||||
// system_temp_rov_params_.w = Y guest sample 0 position
|
// system_temp_rov_params_.w = Y guest sample 0 position
|
||||||
a_.OpIShL(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
a_.OpIShL(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
||||||
dxbc::Src::R(system_temp_rov_params_),
|
dxbc::Src::R(system_temp_rov_params_),
|
||||||
LoadSystemConstant(SystemConstantIndex::kSampleCountLog2,
|
LoadSystemConstant(SystemConstants::Index::kSampleCountLog2,
|
||||||
offsetof(SystemConstants, sample_count_log2),
|
offsetof(SystemConstants, sample_count_log2),
|
||||||
0b0100 << 4));
|
0b0100 << 4));
|
||||||
// Get 80x16 samples tile index - start dividing X by 80 by getting the high
|
// Get 80x16 samples tile index - start dividing X by 80 by getting the high
|
||||||
|
@ -251,7 +251,7 @@ void DxbcShaderTranslator::StartPixelShader_LoadROVParameters() {
|
||||||
// system_temp_rov_params_.w = Y guest sample 0 position
|
// system_temp_rov_params_.w = Y guest sample 0 position
|
||||||
a_.OpUMAd(dxbc::Dest::R(system_temp_rov_params_, 0b0010),
|
a_.OpUMAd(dxbc::Dest::R(system_temp_rov_params_, 0b0010),
|
||||||
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kYYYY),
|
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kYYYY),
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramPitchTiles,
|
LoadSystemConstant(SystemConstants::Index::kEdramPitchTiles,
|
||||||
offsetof(SystemConstants, edram_pitch_tiles),
|
offsetof(SystemConstants, edram_pitch_tiles),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kXXXX));
|
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kXXXX));
|
||||||
|
@ -330,7 +330,7 @@ void DxbcShaderTranslator::StartPixelShader_LoadROVParameters() {
|
||||||
a_.OpIAdd(
|
a_.OpIAdd(
|
||||||
dxbc::Dest::R(system_temp_rov_params_, 0b0010),
|
dxbc::Dest::R(system_temp_rov_params_, 0b0010),
|
||||||
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kYYYY),
|
dxbc::Src::R(system_temp_rov_params_, dxbc::Src::kYYYY),
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramDepthBaseDwords,
|
LoadSystemConstant(SystemConstants::Index::kEdramDepthBaseDwords,
|
||||||
offsetof(SystemConstants, edram_depth_base_dwords),
|
offsetof(SystemConstants, edram_depth_base_dwords),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
if (draw_resolution_scale_ > 1) {
|
if (draw_resolution_scale_ > 1) {
|
||||||
|
@ -371,7 +371,7 @@ void DxbcShaderTranslator::StartPixelShader_LoadROVParameters() {
|
||||||
// MSAA, handling samples 0 and 3 (upper-left and lower-right) as 0 and 1.
|
// MSAA, handling samples 0 and 3 (upper-left and lower-right) as 0 and 1.
|
||||||
|
|
||||||
// Check if 4x MSAA is enabled.
|
// Check if 4x MSAA is enabled.
|
||||||
a_.OpIf(true, LoadSystemConstant(SystemConstantIndex::kSampleCountLog2,
|
a_.OpIf(true, LoadSystemConstant(SystemConstants::Index::kSampleCountLog2,
|
||||||
offsetof(SystemConstants, sample_count_log2),
|
offsetof(SystemConstants, sample_count_log2),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
{
|
{
|
||||||
|
@ -473,11 +473,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
// temp.x? = first sample's viewport space Z
|
// temp.x? = first sample's viewport space Z
|
||||||
a_.OpMAd(sample_depth_stencil_dest, sample_depth_stencil_src,
|
a_.OpMAd(sample_depth_stencil_dest, sample_depth_stencil_src,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_scale),
|
offsetof(SystemConstants, edram_depth_range_scale),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_offset),
|
offsetof(SystemConstants, edram_depth_range_offset),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
true);
|
true);
|
||||||
|
@ -508,11 +508,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramPolyOffsetFront,
|
SystemConstants::Index::kEdramPolyOffsetFront,
|
||||||
offsetof(SystemConstants, edram_poly_offset_front),
|
offsetof(SystemConstants, edram_poly_offset_front),
|
||||||
0b0100 << 4),
|
0b0100 << 4),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramPolyOffsetBack,
|
SystemConstants::Index::kEdramPolyOffsetBack,
|
||||||
offsetof(SystemConstants, edram_poly_offset_back),
|
offsetof(SystemConstants, edram_poly_offset_back),
|
||||||
0b0100 << 4));
|
0b0100 << 4));
|
||||||
// Apply the slope scale and the constant bias to the offset.
|
// Apply the slope scale and the constant bias to the offset.
|
||||||
|
@ -528,11 +528,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
// temp.z = viewport maximum depth
|
// temp.z = viewport maximum depth
|
||||||
a_.OpAdd(temp_z_dest,
|
a_.OpAdd(temp_z_dest,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_offset),
|
offsetof(SystemConstants, edram_depth_range_offset),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_scale),
|
offsetof(SystemConstants, edram_depth_range_scale),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
}
|
}
|
||||||
|
@ -583,7 +583,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
a_.OpMovC(
|
a_.OpMovC(
|
||||||
sample_depth_stencil_dest,
|
sample_depth_stencil_dest,
|
||||||
LoadSystemConstant(SystemConstantIndex::kSampleCountLog2,
|
LoadSystemConstant(SystemConstants::Index::kSampleCountLog2,
|
||||||
offsetof(SystemConstants, sample_count_log2),
|
offsetof(SystemConstants, sample_count_log2),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
dxbc::Src::LU(3), dxbc::Src::LU(2));
|
dxbc::Src::LU(3), dxbc::Src::LU(2));
|
||||||
|
@ -611,11 +611,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
// temp.z = viewport maximum depth if not writing to oDepth
|
// temp.z = viewport maximum depth if not writing to oDepth
|
||||||
a_.OpMAd(sample_depth_stencil_dest, sample_depth_stencil_src,
|
a_.OpMAd(sample_depth_stencil_dest, sample_depth_stencil_src,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_scale),
|
offsetof(SystemConstants, edram_depth_range_scale),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_offset),
|
offsetof(SystemConstants, edram_depth_range_offset),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
true);
|
true);
|
||||||
|
@ -631,7 +631,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
// temp.z = viewport maximum depth if not writing to oDepth
|
// temp.z = viewport maximum depth if not writing to oDepth
|
||||||
a_.OpMax(sample_depth_stencil_dest, sample_depth_stencil_src,
|
a_.OpMax(sample_depth_stencil_dest, sample_depth_stencil_src,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramDepthRange,
|
SystemConstants::Index::kEdramDepthRange,
|
||||||
offsetof(SystemConstants, edram_depth_range_offset),
|
offsetof(SystemConstants, edram_depth_range_offset),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// Clamp the biased depth to the upper viewport depth bound.
|
// Clamp the biased depth to the upper viewport depth bound.
|
||||||
|
@ -763,7 +763,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
a_.OpElse();
|
a_.OpElse();
|
||||||
}
|
}
|
||||||
dxbc::Src stencil_read_mask_src(LoadSystemConstant(
|
dxbc::Src stencil_read_mask_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
j ? offsetof(SystemConstants, edram_stencil_back_read_mask)
|
j ? offsetof(SystemConstants, edram_stencil_back_read_mask)
|
||||||
: offsetof(SystemConstants, edram_stencil_front_read_mask),
|
: offsetof(SystemConstants, edram_stencil_front_read_mask),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -772,7 +772,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
a_.OpAnd(
|
a_.OpAnd(
|
||||||
sample_temp_x_dest,
|
sample_temp_x_dest,
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
j ? offsetof(SystemConstants, edram_stencil_back_reference)
|
j ? offsetof(SystemConstants, edram_stencil_back_reference)
|
||||||
: offsetof(SystemConstants, edram_stencil_front_reference),
|
: offsetof(SystemConstants, edram_stencil_front_reference),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
|
@ -813,11 +813,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_front_func_ops),
|
offsetof(SystemConstants, edram_stencil_front_func_ops),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_back_func_ops),
|
offsetof(SystemConstants, edram_stencil_back_func_ops),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// Mask the resulting bits with the ones that should pass (the comparison
|
// Mask the resulting bits with the ones that should pass (the comparison
|
||||||
|
@ -885,11 +885,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_front_reference),
|
offsetof(SystemConstants, edram_stencil_front_reference),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_back_reference),
|
offsetof(SystemConstants, edram_stencil_back_reference),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -945,11 +945,11 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
||||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_front_write_mask),
|
offsetof(SystemConstants, edram_stencil_front_write_mask),
|
||||||
dxbc::Src::kXXXX),
|
dxbc::Src::kXXXX),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramStencil,
|
SystemConstants::Index::kEdramStencil,
|
||||||
offsetof(SystemConstants, edram_stencil_back_write_mask),
|
offsetof(SystemConstants, edram_stencil_back_write_mask),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// Apply the write mask to the new stencil, also dropping the upper 24
|
// Apply the write mask to the new stencil, also dropping the upper 24
|
||||||
|
@ -1138,7 +1138,7 @@ void DxbcShaderTranslator::ROV_UnpackColor(
|
||||||
|
|
||||||
// Choose the packing based on the render target's format.
|
// Choose the packing based on the render target's format.
|
||||||
a_.OpSwitch(
|
a_.OpSwitch(
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramRTFormatFlags,
|
LoadSystemConstant(SystemConstants::Index::kEdramRTFormatFlags,
|
||||||
offsetof(SystemConstants, edram_rt_format_flags) +
|
offsetof(SystemConstants, edram_rt_format_flags) +
|
||||||
sizeof(uint32_t) * rt_index,
|
sizeof(uint32_t) * rt_index,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -1299,7 +1299,7 @@ void DxbcShaderTranslator::ROV_PackPreClampedColor(
|
||||||
|
|
||||||
// Choose the packing based on the render target's format.
|
// Choose the packing based on the render target's format.
|
||||||
a_.OpSwitch(
|
a_.OpSwitch(
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramRTFormatFlags,
|
LoadSystemConstant(SystemConstants::Index::kEdramRTFormatFlags,
|
||||||
offsetof(SystemConstants, edram_rt_format_flags) +
|
offsetof(SystemConstants, edram_rt_format_flags) +
|
||||||
sizeof(uint32_t) * rt_index,
|
sizeof(uint32_t) * rt_index,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -1515,7 +1515,7 @@ void DxbcShaderTranslator::ROV_HandleColorBlendFactorCases(
|
||||||
// kConstantColor
|
// kConstantColor
|
||||||
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantColor)));
|
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantColor)));
|
||||||
a_.OpMov(factor_dest,
|
a_.OpMov(factor_dest,
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kXYZW));
|
dxbc::Src::kXYZW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1524,7 +1524,7 @@ void DxbcShaderTranslator::ROV_HandleColorBlendFactorCases(
|
||||||
a_.OpCase(
|
a_.OpCase(
|
||||||
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantColor)));
|
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantColor)));
|
||||||
a_.OpAdd(factor_dest, one_src,
|
a_.OpAdd(factor_dest, one_src,
|
||||||
-LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
-LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kXYZW));
|
dxbc::Src::kXYZW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1532,7 +1532,7 @@ void DxbcShaderTranslator::ROV_HandleColorBlendFactorCases(
|
||||||
// kConstantAlpha
|
// kConstantAlpha
|
||||||
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantAlpha)));
|
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantAlpha)));
|
||||||
a_.OpMov(factor_dest,
|
a_.OpMov(factor_dest,
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kWWWW));
|
dxbc::Src::kWWWW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1541,7 +1541,7 @@ void DxbcShaderTranslator::ROV_HandleColorBlendFactorCases(
|
||||||
a_.OpCase(
|
a_.OpCase(
|
||||||
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantAlpha)));
|
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantAlpha)));
|
||||||
a_.OpAdd(factor_dest, one_src,
|
a_.OpAdd(factor_dest, one_src,
|
||||||
-LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
-LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kWWWW));
|
dxbc::Src::kWWWW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1606,7 +1606,7 @@ void DxbcShaderTranslator::ROV_HandleAlphaBlendFactorCases(
|
||||||
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantColor)));
|
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantColor)));
|
||||||
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantAlpha)));
|
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::BlendFactor::kConstantAlpha)));
|
||||||
a_.OpMov(factor_dest,
|
a_.OpMov(factor_dest,
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kWWWW));
|
dxbc::Src::kWWWW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1617,7 +1617,7 @@ void DxbcShaderTranslator::ROV_HandleAlphaBlendFactorCases(
|
||||||
a_.OpCase(
|
a_.OpCase(
|
||||||
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantAlpha)));
|
dxbc::Src::LU(uint32_t(xenos::BlendFactor::kOneMinusConstantAlpha)));
|
||||||
a_.OpAdd(factor_dest, one_src,
|
a_.OpAdd(factor_dest, one_src,
|
||||||
-LoadSystemConstant(SystemConstantIndex::kEdramBlendConstant,
|
-LoadSystemConstant(SystemConstants::Index::kEdramBlendConstant,
|
||||||
offsetof(SystemConstants, edram_blend_constant),
|
offsetof(SystemConstants, edram_blend_constant),
|
||||||
dxbc::Src::kWWWW));
|
dxbc::Src::kWWWW));
|
||||||
a_.OpBreak();
|
a_.OpBreak();
|
||||||
|
@ -1644,7 +1644,7 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToRTVs() {
|
||||||
// unbiased alpha from the shader
|
// unbiased alpha from the shader
|
||||||
a_.OpMul(dxbc::Dest::R(system_temps_color_[i]),
|
a_.OpMul(dxbc::Dest::R(system_temps_color_[i]),
|
||||||
dxbc::Src::R(system_temps_color_[i]),
|
dxbc::Src::R(system_temps_color_[i]),
|
||||||
LoadSystemConstant(SystemConstantIndex::kColorExpBias,
|
LoadSystemConstant(SystemConstants::Index::kColorExpBias,
|
||||||
offsetof(SystemConstants, color_exp_bias) +
|
offsetof(SystemConstants, color_exp_bias) +
|
||||||
sizeof(uint32_t) * i,
|
sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -1834,7 +1834,7 @@ void DxbcShaderTranslator::CompletePixelShader_AlphaToMask() {
|
||||||
|
|
||||||
// Check if alpha to coverage is enabled.
|
// Check if alpha to coverage is enabled.
|
||||||
dxbc::Src alpha_to_mask_constant_src(LoadSystemConstant(
|
dxbc::Src alpha_to_mask_constant_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kAlphaToMask,
|
SystemConstants::Index::kAlphaToMask,
|
||||||
offsetof(SystemConstants, alpha_to_mask), dxbc::Src::kXXXX));
|
offsetof(SystemConstants, alpha_to_mask), dxbc::Src::kXXXX));
|
||||||
a_.OpIf(true, alpha_to_mask_constant_src);
|
a_.OpIf(true, alpha_to_mask_constant_src);
|
||||||
|
|
||||||
|
@ -1866,13 +1866,13 @@ void DxbcShaderTranslator::CompletePixelShader_AlphaToMask() {
|
||||||
uint32_t coverage_temp_component = edram_rov_used_ ? 0 : 2;
|
uint32_t coverage_temp_component = edram_rov_used_ ? 0 : 2;
|
||||||
|
|
||||||
// Check if MSAA is enabled.
|
// Check if MSAA is enabled.
|
||||||
a_.OpIf(true, LoadSystemConstant(SystemConstantIndex::kSampleCountLog2,
|
a_.OpIf(true, LoadSystemConstant(SystemConstants::Index::kSampleCountLog2,
|
||||||
offsetof(SystemConstants, sample_count_log2),
|
offsetof(SystemConstants, sample_count_log2),
|
||||||
dxbc::Src::kYYYY));
|
dxbc::Src::kYYYY));
|
||||||
{
|
{
|
||||||
// Check if MSAA is 4x or 2x.
|
// Check if MSAA is 4x or 2x.
|
||||||
a_.OpIf(true,
|
a_.OpIf(true,
|
||||||
LoadSystemConstant(SystemConstantIndex::kSampleCountLog2,
|
LoadSystemConstant(SystemConstants::Index::kSampleCountLog2,
|
||||||
offsetof(SystemConstants, sample_count_log2),
|
offsetof(SystemConstants, sample_count_log2),
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// 4x MSAA.
|
// 4x MSAA.
|
||||||
|
@ -2010,7 +2010,7 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToROV() {
|
||||||
// This includes a swizzle to choose XY for even render targets or ZW for
|
// This includes a swizzle to choose XY for even render targets or ZW for
|
||||||
// odd ones - use SelectFromSwizzled and SwizzleSwizzled.
|
// odd ones - use SelectFromSwizzled and SwizzleSwizzled.
|
||||||
dxbc::Src keep_mask_src(
|
dxbc::Src keep_mask_src(
|
||||||
LoadSystemConstant(SystemConstantIndex::kEdramRTKeepMask,
|
LoadSystemConstant(SystemConstants::Index::kEdramRTKeepMask,
|
||||||
offsetof(SystemConstants, edram_rt_keep_mask) +
|
offsetof(SystemConstants, edram_rt_keep_mask) +
|
||||||
sizeof(uint32_t) * 2 * i,
|
sizeof(uint32_t) * 2 * i,
|
||||||
0b0100));
|
0b0100));
|
||||||
|
@ -2044,7 +2044,7 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToROV() {
|
||||||
// unbiased alpha from the shader.
|
// unbiased alpha from the shader.
|
||||||
a_.OpMul(dxbc::Dest::R(system_temps_color_[i]),
|
a_.OpMul(dxbc::Dest::R(system_temps_color_[i]),
|
||||||
dxbc::Src::R(system_temps_color_[i]),
|
dxbc::Src::R(system_temps_color_[i]),
|
||||||
LoadSystemConstant(SystemConstantIndex::kColorExpBias,
|
LoadSystemConstant(SystemConstants::Index::kColorExpBias,
|
||||||
offsetof(SystemConstants, color_exp_bias) +
|
offsetof(SystemConstants, color_exp_bias) +
|
||||||
sizeof(uint32_t) * i,
|
sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -2053,22 +2053,22 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToROV() {
|
||||||
a_.OpIAdd(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
a_.OpIAdd(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
||||||
dxbc::Src::R(system_temp_rov_params_),
|
dxbc::Src::R(system_temp_rov_params_),
|
||||||
LoadSystemConstant(
|
LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramRTBaseDwordsScaled,
|
SystemConstants::Index::kEdramRTBaseDwordsScaled,
|
||||||
offsetof(SystemConstants, edram_rt_base_dwords_scaled) +
|
offsetof(SystemConstants, edram_rt_base_dwords_scaled) +
|
||||||
sizeof(uint32_t) * i,
|
sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
|
||||||
dxbc::Src rt_blend_factors_ops_src(LoadSystemConstant(
|
dxbc::Src rt_blend_factors_ops_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramRTBlendFactorsOps,
|
SystemConstants::Index::kEdramRTBlendFactorsOps,
|
||||||
offsetof(SystemConstants, edram_rt_blend_factors_ops) +
|
offsetof(SystemConstants, edram_rt_blend_factors_ops) +
|
||||||
sizeof(uint32_t) * i,
|
sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
dxbc::Src rt_clamp_vec_src(LoadSystemConstant(
|
dxbc::Src rt_clamp_vec_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramRTClamp,
|
SystemConstants::Index::kEdramRTClamp,
|
||||||
offsetof(SystemConstants, edram_rt_clamp) + sizeof(uint32_t) * 4 * i,
|
offsetof(SystemConstants, edram_rt_clamp) + sizeof(uint32_t) * 4 * i,
|
||||||
dxbc::Src::kXYZW));
|
dxbc::Src::kXYZW));
|
||||||
dxbc::Src rt_format_flags_src(LoadSystemConstant(
|
dxbc::Src rt_format_flags_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramRTFormatFlags,
|
SystemConstants::Index::kEdramRTFormatFlags,
|
||||||
offsetof(SystemConstants, edram_rt_format_flags) + sizeof(uint32_t) * i,
|
offsetof(SystemConstants, edram_rt_format_flags) + sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
// Get if not blending to pack the color once for all 4 samples.
|
// Get if not blending to pack the color once for all 4 samples.
|
||||||
|
@ -2800,7 +2800,7 @@ void DxbcShaderTranslator::CompletePixelShader_WriteToROV() {
|
||||||
a_.OpIAdd(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
a_.OpIAdd(dxbc::Dest::R(system_temp_rov_params_, 0b1100),
|
||||||
dxbc::Src::R(system_temp_rov_params_),
|
dxbc::Src::R(system_temp_rov_params_),
|
||||||
-LoadSystemConstant(
|
-LoadSystemConstant(
|
||||||
SystemConstantIndex::kEdramRTBaseDwordsScaled,
|
SystemConstants::Index::kEdramRTBaseDwordsScaled,
|
||||||
offsetof(SystemConstants, edram_rt_base_dwords_scaled) +
|
offsetof(SystemConstants, edram_rt_base_dwords_scaled) +
|
||||||
sizeof(uint32_t) * i,
|
sizeof(uint32_t) * i,
|
||||||
dxbc::Src::kXXXX));
|
dxbc::Src::kXXXX));
|
||||||
|
@ -2853,7 +2853,7 @@ void DxbcShaderTranslator::CompletePixelShader() {
|
||||||
dxbc::Src alpha_src(
|
dxbc::Src alpha_src(
|
||||||
dxbc::Src::R(system_temps_color_[0], dxbc::Src::kWWWW));
|
dxbc::Src::R(system_temps_color_[0], dxbc::Src::kWWWW));
|
||||||
dxbc::Src alpha_test_reference_src(LoadSystemConstant(
|
dxbc::Src alpha_test_reference_src(LoadSystemConstant(
|
||||||
SystemConstantIndex::kAlphaTestReference,
|
SystemConstants::Index::kAlphaTestReference,
|
||||||
offsetof(SystemConstants, alpha_test_reference), dxbc::Src::kXXXX));
|
offsetof(SystemConstants, alpha_test_reference), dxbc::Src::kXXXX));
|
||||||
// Less than.
|
// Less than.
|
||||||
a_.OpLT(alpha_test_op_dest, alpha_src, alpha_test_reference_src);
|
a_.OpLT(alpha_test_op_dest, alpha_src, alpha_test_reference_src);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,869 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2021 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_GPU_PRIMITIVE_PROCESSOR_H_
|
||||||
|
#define XENIA_GPU_PRIMITIVE_PROCESSOR_H_
|
||||||
|
|
||||||
|
#include <climits>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
#include <deque>
|
||||||
|
#include <functional>
|
||||||
|
#include <mutex>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
#include "xenia/base/assert.h"
|
||||||
|
#include "xenia/base/cvar.h"
|
||||||
|
#include "xenia/base/math.h"
|
||||||
|
#include "xenia/base/mutex.h"
|
||||||
|
#include "xenia/base/platform.h"
|
||||||
|
#include "xenia/gpu/register_file.h"
|
||||||
|
#include "xenia/gpu/shader.h"
|
||||||
|
#include "xenia/gpu/shared_memory.h"
|
||||||
|
#include "xenia/gpu/trace_writer.h"
|
||||||
|
#include "xenia/gpu/xenos.h"
|
||||||
|
#include "xenia/memory.h"
|
||||||
|
|
||||||
|
#if XE_ARCH_AMD64
|
||||||
|
// 128-bit SSSE3-level (SSE2+ for integer comparison, SSSE3 for pshufb) or AVX
|
||||||
|
// (256-bit AVX only got integer operations such as comparison in AVX2, which is
|
||||||
|
// above the minimum requirements of Xenia).
|
||||||
|
#include <tmmintrin.h>
|
||||||
|
#define XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE 16
|
||||||
|
#elif XE_ARCH_ARM64
|
||||||
|
#include <arm_neon.h>
|
||||||
|
#define XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE 16
|
||||||
|
#else
|
||||||
|
#define XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE 0
|
||||||
|
#endif // XE_ARCH
|
||||||
|
|
||||||
|
// The idea behind this config variable is to force both indirection without
|
||||||
|
// primitive reset and pre-masking / pre-swapping with primitive reset,
|
||||||
|
// therefore this is supposed to be checked only by the host if it supports
|
||||||
|
// indirection. It's pretty pointless to do only half of this on backends that
|
||||||
|
// support full 32-bit indices unconditionally.
|
||||||
|
DECLARE_bool(ignore_32bit_vertex_index_support);
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace gpu {
|
||||||
|
|
||||||
|
// Normalizes primitive data in various ways for use with Direct3D 12 and Vulkan
|
||||||
|
// (down to its minimum requirements plus the portability subset).
|
||||||
|
//
|
||||||
|
// This solves various issues:
|
||||||
|
// - Triangle fans not supported on Direct3D 10+ and the Vulkan portability
|
||||||
|
// subset.
|
||||||
|
// - Converts to triangle lists, both with and without primitive reset.
|
||||||
|
// - Line loops are not supported on Direct3D 12 or Vulkan.
|
||||||
|
// - Converts to line strips.
|
||||||
|
// - Quads not reproducible with line lists with adjacency without geometry
|
||||||
|
// shaders (some Vulkan implementations), as well as being hard to debug in
|
||||||
|
// PIX due to "catastrophic failures".
|
||||||
|
// - Converts to triangle lists.
|
||||||
|
// - Vulkan requiring 0xFFFF primitive restart index for 16-bit indices and
|
||||||
|
// 0xFFFFFFFF for 32-bit (Direct3D 12 slightly relaxes this, allowing 0xFFFF
|
||||||
|
// for 32-bit also, but it's of no use to Xenia since guest indices are
|
||||||
|
// big-endian usually. Also, only 24 lower bits of the vertex index being used
|
||||||
|
// on the guest (tested on an Adreno 200 phone with drawing, though not with
|
||||||
|
// primitive restart as OpenGL ES 2.0 doesn't expose it), so the upper 8 bits
|
||||||
|
// likely shouldn't have effect on primitive restart (guest reset index
|
||||||
|
// 0xFFFFFF likely working for 0xFFFFFF, 0xFFFFFFFF, and 254 more indices),
|
||||||
|
// while Vulkan and Direct3D 12 require exactly 0xFFFFFFFF.
|
||||||
|
// - For 16-bit indices with guest reset index other than 0xFFFF (passing
|
||||||
|
// 0xFFFF directly to the host is fine because it's the same irrespective of
|
||||||
|
// endianness), there are two possible solutions:
|
||||||
|
// - If the index buffer otherwise doesn't contain 0xFFFF otherwise (since
|
||||||
|
// it's a valid vertex index in this case), replacing the primitive reset
|
||||||
|
// index with 0xFFFF in the 16-bit buffer.
|
||||||
|
// - If the index buffer contains any usage of 0xFFFF as a real vertex
|
||||||
|
// index, converting the index buffer to 32-bit, and replacing the
|
||||||
|
// primitive reset index with 0xFFFFFFFF.
|
||||||
|
// - For 32-bit indices, there are two paths:
|
||||||
|
// - If the guest reset index is 0xFFFFFF, and the index buffer actually
|
||||||
|
// uses only 0xFFFFFFFF for reset, using it without changes.
|
||||||
|
// - If the guest uses something other than 0xFFFFFFFF for primitive reset,
|
||||||
|
// replacing elements with (index & 0xFFFFFF) == reset_index with
|
||||||
|
// 0xFFFFFFFF.
|
||||||
|
// - Some Vulkan implementations only support 24-bit indices. The guests usually
|
||||||
|
// pass big-endian vertices, so we need all 32 bits (as the least significant
|
||||||
|
// bits will be in 24...31) to perform the byte swapping. For this reason, we
|
||||||
|
// load 32-bit indices indirectly, doing non-indexed draws and fetching the
|
||||||
|
// indices from the shared memory. This, however, is not compatible with
|
||||||
|
// primitive restart.
|
||||||
|
// - Pre-swapping, masking to 24 bits, and converting the reset index to
|
||||||
|
// 0xFFFFFFFF, resulting in an index buffer that can be used directly.
|
||||||
|
|
||||||
|
class PrimitiveProcessor {
|
||||||
|
public:
|
||||||
|
enum ProcessedIndexBufferType {
|
||||||
|
// Auto-indexed on the host.
|
||||||
|
kNone,
|
||||||
|
// GPU DMA, from the shared memory.
|
||||||
|
// For 32-bit, indirection is needed if the host only supports 24-bit
|
||||||
|
// indices (even for non-endian-swapped, as the GPU should be ignoring the
|
||||||
|
// upper 8 bits completely, rather than exhibiting undefined behavior.
|
||||||
|
kGuest,
|
||||||
|
// Converted and stored in the primitive converter for the current draw
|
||||||
|
// command. For 32-bit indices, if the host doesn't support all 32 bits,
|
||||||
|
// this kind of an index buffer will always be pre-masked and pre-swapped.
|
||||||
|
kHostConverted,
|
||||||
|
// Auto-indexed on the guest, but with an adapter index buffer on the host.
|
||||||
|
kHostBuiltin,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ProcessingResult {
|
||||||
|
xenos::PrimitiveType guest_primitive_type;
|
||||||
|
xenos::PrimitiveType host_primitive_type;
|
||||||
|
// Includes whether tessellation is enabled (not kVertex) and the type of
|
||||||
|
// tessellation.
|
||||||
|
Shader::HostVertexShaderType host_vertex_shader_type;
|
||||||
|
// Only used for non-kVertex host_vertex_shader_type. For kAdaptive, the
|
||||||
|
// index buffer is always from the guest and fully 32-bit, and contains the
|
||||||
|
// floating-point tessellation factors.
|
||||||
|
xenos::TessellationMode tessellation_mode;
|
||||||
|
// TODO(Triang3l): If important, split into the index count and the actual
|
||||||
|
// index buffer size, using zeros for out-of-bounds indices.
|
||||||
|
uint32_t host_draw_vertex_count;
|
||||||
|
uint32_t line_loop_closing_index;
|
||||||
|
ProcessedIndexBufferType index_buffer_type;
|
||||||
|
uint32_t guest_index_base;
|
||||||
|
xenos::IndexFormat host_index_format;
|
||||||
|
xenos::Endian host_index_endian;
|
||||||
|
// The reset index, if enabled, is always 0xFFFF for host_index_format
|
||||||
|
// kInt16 and 0xFFFFFFFF for kInt32.
|
||||||
|
bool host_primitive_reset_enabled;
|
||||||
|
// Backend-specific handle for the index buffer valid for the current draw,
|
||||||
|
// only valid for index_buffer_type kHostConverted and kHostBuiltin.
|
||||||
|
size_t host_index_buffer_handle;
|
||||||
|
bool IsTessellated() const {
|
||||||
|
return host_vertex_shader_type != Shader::HostVertexShaderType::kVertex;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual ~PrimitiveProcessor();
|
||||||
|
|
||||||
|
bool AreFull32BitVertexIndicesUsed() const {
|
||||||
|
return full_32bit_vertex_indices_used_;
|
||||||
|
}
|
||||||
|
bool IsConvertingTriangleFansToLists() const {
|
||||||
|
return convert_triangle_fans_to_lists_;
|
||||||
|
}
|
||||||
|
bool IsConvertingLineLoopsToStrips() const {
|
||||||
|
return convert_line_loops_to_strips_;
|
||||||
|
}
|
||||||
|
// Quad lists may be emulated as line lists with adjacency and a geometry
|
||||||
|
// shader, but geometry shaders must be supported for this.
|
||||||
|
bool IsConvertingQuadListsToTriangleLists() const {
|
||||||
|
return convert_quad_lists_to_triangle_lists_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submission must be open to call (may request the index buffer in the shared
|
||||||
|
// memory).
|
||||||
|
bool Process(ProcessingResult& result_out);
|
||||||
|
|
||||||
|
// Invalidates the cache within the range.
|
||||||
|
std::pair<uint32_t, uint32_t> MemoryInvalidationCallback(
|
||||||
|
uint32_t physical_address_start, uint32_t length, bool exact_range);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// For host-side index buffer creation, the biggest possibly needed contiguous
|
||||||
|
// allocation, in indices.
|
||||||
|
// - No conversion: up to 0xFFFF vertices (as the vertex count in
|
||||||
|
// VGT_DRAW_INITIATOR is 16-bit).
|
||||||
|
// - Triangle fans to lists: since the 3rd vertex, every guest vertex creates
|
||||||
|
// a triangle, thus the maximum is 3 * (UINT16_MAX - 2), or 0x2FFF7.
|
||||||
|
// Primitive reset can only slow down the amplification - the 3 vertices
|
||||||
|
// after a reset add 1 host vertex each, not 3 each.
|
||||||
|
// - Line loops to strips: adding 1 vertex if there are at least 2 vertices in
|
||||||
|
// the original primitive, either replacing the primitive reset index with
|
||||||
|
// this new closing vertex, or in case of the final primitive, just adding a
|
||||||
|
// vertex - thus the absolute limit is UINT16_MAX + 1, or 0x10000.
|
||||||
|
// - Quad lists to triangle lists: vertices are processed in groups of 4, each
|
||||||
|
// group converted to 6 vertices, so the limit is 1.5 * 0xFFFC, or 0x17FFA.
|
||||||
|
// Thus, the maximum vertex count is defined by triangle fan to list
|
||||||
|
// conversion.
|
||||||
|
// Also include padding for co-alignment of the source and the destination for
|
||||||
|
// SIMD.
|
||||||
|
static constexpr uint32_t kMinRequiredConvertedIndexBufferSize =
|
||||||
|
sizeof(uint32_t) * (UINT16_MAX - 2) * 3 *
|
||||||
|
+XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE;
|
||||||
|
|
||||||
|
PrimitiveProcessor(const RegisterFile& register_file, Memory& memory,
|
||||||
|
TraceWriter& trace_writer, SharedMemory& shared_memory)
|
||||||
|
: register_file_(register_file),
|
||||||
|
memory_(memory),
|
||||||
|
trace_writer_(trace_writer),
|
||||||
|
shared_memory_(shared_memory) {}
|
||||||
|
|
||||||
|
// Call from the backend-specific initialization function.
|
||||||
|
// - full_32bit_vertex_indices_supported:
|
||||||
|
// - If the backend supports 32-bit indices unconditionally, and doesn't
|
||||||
|
// generate indirection logic in vertex shaders, pass hard-coded `true`.
|
||||||
|
// - Otherwise:
|
||||||
|
// - If the host doesn't support full 32-bit indices (but supports at
|
||||||
|
// least 24-bit indices), pass `false`.
|
||||||
|
// - If the host supports 32-bit indices, but the backend can handle both
|
||||||
|
// cases, pass `cvars::ignore_32bit_vertex_index_support`, and
|
||||||
|
// afterwards, check `AreFull32BitVertexIndicesUsed()` externally to see
|
||||||
|
// if indirection may be needed.
|
||||||
|
// - When full 32-bit indices are not supported, the host must be using
|
||||||
|
// auto-indexed draws for 32-bit indices of ProcessedIndexBufferType
|
||||||
|
// kGuest, while fetching the index data manually from the shared memory
|
||||||
|
// buffer and endian-swapping it.
|
||||||
|
// - Indirection, however, precludes primitive reset usage - so if
|
||||||
|
// primitive reset is needed, the primitive processor will pre-swap and
|
||||||
|
// pre-mask the index buffer so there are only host-endian 0x00###### or
|
||||||
|
// 0xFFFFFFFF values in it. In this case, a kHostConverted index buffer
|
||||||
|
// is returned from Process, and indirection is not needed (and
|
||||||
|
// impossible since the index buffer is not in the shared memory buffer
|
||||||
|
// anymore), though byte swap is still needed as 16-bit indices may also
|
||||||
|
// be kHostConverted, while they are completely unaffected by this. The
|
||||||
|
// same applies to primitive type conversion - if it happens for 32-bit
|
||||||
|
// guest indices, and kHostConverted is returned, they will be
|
||||||
|
// pre-swapped and pre-masked.
|
||||||
|
// - triangle_fans_supported, line_loops_supported, quad_lists_supported:
|
||||||
|
// - Pass true or false depending on whether the host actually supports
|
||||||
|
// those guest primitive types directly or through geometry shader
|
||||||
|
// emulation. Debug overriding will be resolved in the common code if
|
||||||
|
// needed.
|
||||||
|
bool InitializeCommon(bool full_32bit_vertex_indices_supported,
|
||||||
|
bool triangle_fans_supported, bool line_loops_supported,
|
||||||
|
bool quad_lists_supported);
|
||||||
|
// If any primitive type conversion is needed for auto-indexed draws, called
|
||||||
|
// from InitializeCommon (thus only once in the primitive processor's
|
||||||
|
// lifetime) to set up the backend's index buffer containing indices for
|
||||||
|
// primitive type remapping. The backend must allocate a `sizeof(uint16_t) *
|
||||||
|
// index_count` buffer and call fill_callback for its mapping if creation is
|
||||||
|
// successful. 16-bit indices are enough even if the backend has primitive
|
||||||
|
// reset enabled all the time (Metal) as auto-indexed draws are limited to
|
||||||
|
// UINT16_MAX vertices, not UINT16_MAX + 1.
|
||||||
|
virtual bool InitializeBuiltin16BitIndexBuffer(
|
||||||
|
uint32_t index_count, std::function<void(uint16_t*)> fill_callback) = 0;
|
||||||
|
// Call last in implementation-specific shutdown, also callable from the
|
||||||
|
// destructor.
|
||||||
|
void ShutdownCommon();
|
||||||
|
|
||||||
|
// Call at boundaries of lifespans of converted data (between frames,
|
||||||
|
// preferably in the end of a frame so between the swap and the next draw,
|
||||||
|
// access violation handlers need to do less work).
|
||||||
|
void ClearPerFrameCache();
|
||||||
|
|
||||||
|
static constexpr size_t GetBuiltinIndexBufferOffsetBytes(size_t handle) {
|
||||||
|
// For simplicity, just using the handles as byte offsets.
|
||||||
|
return handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The destination allocation must have XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
// excess bytes.
|
||||||
|
static ptrdiff_t GetSimdCoalignmentOffset(const void* host_index_ptr,
|
||||||
|
uint32_t guest_index_base) {
|
||||||
|
#if XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
// Always moving the host pointer only forward into the allocation padding
|
||||||
|
// space of XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE bytes. Without relying on
|
||||||
|
// two's complement wrapping overflow behavior, the logic would look like:
|
||||||
|
// uintptr_t host_subalignment =
|
||||||
|
// reinterpret_cast<uintptr_t>(host_index_ptr) &
|
||||||
|
// (XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE - 1);
|
||||||
|
// uint32_t guest_subalignment = guest_index_base &
|
||||||
|
// (XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE - 1);
|
||||||
|
// uintptr_t host_index_address_aligned = host_index_address;
|
||||||
|
// if (guest_subalignment >= host_subalignment) {
|
||||||
|
// return guest_subalignment - host_subalignment;
|
||||||
|
// }
|
||||||
|
// return XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE -
|
||||||
|
// (host_subalignment - guest_subalignment);
|
||||||
|
return ptrdiff_t(
|
||||||
|
(guest_index_base - reinterpret_cast<uintptr_t>(host_index_ptr)) &
|
||||||
|
(XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE - 1));
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// Requests a buffer to write the new transformed indices to. The lifetime of
|
||||||
|
// the returned buffer must be that of the current frame. Returns the mapping
|
||||||
|
// of the buffer to write to, or nullptr in case of failure, in addition to,
|
||||||
|
// if successful, a handle that can be used by the backend's command processor
|
||||||
|
// to access the backend-specific data for binding the buffer.
|
||||||
|
virtual void* RequestHostConvertedIndexBufferForCurrentFrame(
|
||||||
|
xenos::IndexFormat format, uint32_t index_count, bool coalign_for_simd,
|
||||||
|
uint32_t coalignment_original_address, size_t& backend_handle_out) = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
#if XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
#if XE_ARCH_AMD64
|
||||||
|
// SSSE3 or AVX.
|
||||||
|
using SimdVectorU16 = __m128i;
|
||||||
|
using SimdVectorU32 = __m128i;
|
||||||
|
static SimdVectorU16 ReplicateU16(uint16_t value) {
|
||||||
|
return _mm_set1_epi16(int16_t(value));
|
||||||
|
}
|
||||||
|
static SimdVectorU32 ReplicateU32(uint32_t value) {
|
||||||
|
return _mm_set1_epi32(int32_t(value));
|
||||||
|
}
|
||||||
|
static SimdVectorU16 LoadAlignedVectorU16(const uint16_t* source) {
|
||||||
|
return _mm_load_si128(reinterpret_cast<const __m128i*>(source));
|
||||||
|
}
|
||||||
|
static SimdVectorU32 LoadAlignedVectorU32(const uint32_t* source) {
|
||||||
|
return _mm_load_si128(reinterpret_cast<const __m128i*>(source));
|
||||||
|
}
|
||||||
|
static void StoreUnalignedVectorU16(uint16_t* dest, SimdVectorU16 source) {
|
||||||
|
_mm_storeu_si128(reinterpret_cast<__m128i*>(dest), source);
|
||||||
|
}
|
||||||
|
static void StoreUnalignedVectorU32(uint32_t* dest, SimdVectorU32 source) {
|
||||||
|
_mm_storeu_si128(reinterpret_cast<__m128i*>(dest), source);
|
||||||
|
}
|
||||||
|
#elif XE_ARCH_ARM64
|
||||||
|
// NEON.
|
||||||
|
using SimdVectorU16 = uint16x8_t;
|
||||||
|
using SimdVectorU32 = uint32x4_t;
|
||||||
|
static SimdVectorU16 ReplicateU16(uint16_t value) {
|
||||||
|
return vdupq_n_u16(value);
|
||||||
|
}
|
||||||
|
static SimdVectorU32 ReplicateU32(uint32_t value) {
|
||||||
|
return vdupq_n_u32(value);
|
||||||
|
}
|
||||||
|
static SimdVectorU16 LoadAlignedVectorU16(const uint16_t* source) {
|
||||||
|
#if XE_COMPILER_MSVC
|
||||||
|
return vld1q_u16_ex(source, sizeof(uint16x8_t) * CHAR_BIT);
|
||||||
|
#else
|
||||||
|
return vld1q_u16(reinterpret_cast<const uint16_t*>(
|
||||||
|
__builtin_assume_aligned(source, sizeof(uint16x8_t))));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
static SimdVectorU32 LoadAlignedVectorU32(const uint32_t* source) {
|
||||||
|
#if XE_COMPILER_MSVC
|
||||||
|
return vld1q_u32_ex(source, sizeof(uint16x8_t) * CHAR_BIT);
|
||||||
|
#else
|
||||||
|
return vld1q_u32(reinterpret_cast<const uint32_t*>(
|
||||||
|
__builtin_assume_aligned(source, sizeof(uint32x4_t))));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
static void StoreUnalignedVectorU16(uint16_t* dest, SimdVectorU16 source) {
|
||||||
|
vst1q_u16(dest, source);
|
||||||
|
}
|
||||||
|
static void StoreUnalignedVectorU32(uint32_t* dest, SimdVectorU32 source) {
|
||||||
|
vst1q_u32(dest, source);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error SIMD vector types and constant loads not specified.
|
||||||
|
#endif // XE_ARCH
|
||||||
|
static_assert(
|
||||||
|
sizeof(SimdVectorU16) == XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE,
|
||||||
|
"XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE must reflect the vector size "
|
||||||
|
"actually used");
|
||||||
|
static_assert(
|
||||||
|
sizeof(SimdVectorU32) == XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE,
|
||||||
|
"XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE must reflect the vector size "
|
||||||
|
"actually used");
|
||||||
|
static constexpr uint32_t kSimdVectorU16Elements =
|
||||||
|
sizeof(SimdVectorU16) / sizeof(uint16_t);
|
||||||
|
static constexpr uint32_t kSimdVectorU32Elements =
|
||||||
|
sizeof(SimdVectorU32) / sizeof(uint32_t);
|
||||||
|
#endif // XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
|
||||||
|
static bool IsResetUsed(const uint16_t* source, uint32_t count,
|
||||||
|
uint16_t reset_index_guest_endian);
|
||||||
|
static void Get16BitResetIndexUsage(const uint16_t* source, uint32_t count,
|
||||||
|
uint16_t reset_index_guest_endian,
|
||||||
|
bool& is_reset_index_used_out,
|
||||||
|
bool& is_ffff_used_as_vertex_index_out);
|
||||||
|
static bool IsResetUsed(const uint32_t* source, uint32_t count,
|
||||||
|
uint32_t reset_index_guest_endian,
|
||||||
|
uint32_t low_bits_mask_guest_endian);
|
||||||
|
static void ReplaceResetIndex16To16(uint16_t* dest, const uint16_t* source,
|
||||||
|
uint32_t count,
|
||||||
|
uint16_t reset_index_guest_endian);
|
||||||
|
// For use when the reset index is not 0xFFFF, and 0xFFFF is also used as a
|
||||||
|
// valid index - keeps 0xFFFF as a real index and replaces the reset index
|
||||||
|
// with 0xFFFFFFFF instead.
|
||||||
|
static void ReplaceResetIndex16To24(uint32_t* dest, const uint16_t* source,
|
||||||
|
uint32_t count,
|
||||||
|
uint16_t reset_index_guest_endian);
|
||||||
|
// The reset index and the low 24 bits mask are taken explicitly because this
|
||||||
|
// function may be used two ways:
|
||||||
|
// - Passthrough - when the vertex shader swaps the indices (when 32-bit
|
||||||
|
// indices are supported on the host), in this case HostSwap is kNone, but
|
||||||
|
// the reset index and the guest low bits mask can be swapped according to
|
||||||
|
// the guest endian.
|
||||||
|
// - Swapping for the host - when only 24 bits of an index are supported on
|
||||||
|
// the host. In this case, masking and comparison are done before applying
|
||||||
|
// HostSwap, but according to HostSwap, if needed, the data is swapped from
|
||||||
|
// the PowerPC's big endianness to the host GPU little endianness that we
|
||||||
|
// assume, which matches the Xenos's little endianness.
|
||||||
|
template <xenos::Endian HostSwap>
|
||||||
|
static void ReplaceResetIndex32To24(uint32_t* dest, const uint32_t* source,
|
||||||
|
uint32_t count,
|
||||||
|
uint32_t reset_index_guest_endian,
|
||||||
|
uint32_t low_bits_mask_guest_endian) {
|
||||||
|
// The Xbox 360's GPU only uses the low 24 bits of the index - masking.
|
||||||
|
#if XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
while (count && (reinterpret_cast<uintptr_t>(source) &
|
||||||
|
(XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE - 1))) {
|
||||||
|
--count;
|
||||||
|
uint32_t index = *(source++) & low_bits_mask_guest_endian;
|
||||||
|
*(dest++) = index != reset_index_guest_endian
|
||||||
|
? xenos::GpuSwap(index, HostSwap)
|
||||||
|
: UINT32_MAX;
|
||||||
|
}
|
||||||
|
if (count >= kSimdVectorU32Elements) {
|
||||||
|
SimdVectorU32 reset_index_guest_endian_simd =
|
||||||
|
ReplicateU32(reset_index_guest_endian);
|
||||||
|
SimdVectorU32 low_bits_mask_guest_endian_simd =
|
||||||
|
ReplicateU32(low_bits_mask_guest_endian);
|
||||||
|
#if XE_ARCH_AMD64
|
||||||
|
__m128i host_swap_shuffle;
|
||||||
|
if constexpr (HostSwap != xenos::Endian::kNone) {
|
||||||
|
host_swap_shuffle = _mm_set_epi32(
|
||||||
|
int32_t(xenos::GpuSwap(uint32_t(0x0F0E0D0C), HostSwap)),
|
||||||
|
int32_t(xenos::GpuSwap(uint32_t(0x0B0A0908), HostSwap)),
|
||||||
|
int32_t(xenos::GpuSwap(uint32_t(0x07060504), HostSwap)),
|
||||||
|
int32_t(xenos::GpuSwap(uint32_t(0x03020100), HostSwap)));
|
||||||
|
}
|
||||||
|
#endif // XE_ARCH_AMD64
|
||||||
|
while (count >= kSimdVectorU32Elements) {
|
||||||
|
count -= kSimdVectorU32Elements;
|
||||||
|
// Comparison produces 0 or 0xFFFF on AVX and Neon - we need 0xFFFF as
|
||||||
|
// the result for the primitive reset indices, so the result is
|
||||||
|
// `index | (index == reset_index)`.
|
||||||
|
SimdVectorU32 source_simd = LoadAlignedVectorU32(source);
|
||||||
|
source += kSimdVectorU32Elements;
|
||||||
|
SimdVectorU32 result_simd;
|
||||||
|
#if XE_ARCH_AMD64
|
||||||
|
source_simd =
|
||||||
|
_mm_and_si128(source_simd, low_bits_mask_guest_endian_simd);
|
||||||
|
result_simd = _mm_or_si128(
|
||||||
|
source_simd,
|
||||||
|
_mm_cmpeq_epi32(source_simd, reset_index_guest_endian_simd));
|
||||||
|
if constexpr (HostSwap != xenos::Endian::kNone) {
|
||||||
|
result_simd = _mm_shuffle_epi8(result_simd, host_swap_shuffle);
|
||||||
|
}
|
||||||
|
#elif XE_ARCH_ARM64
|
||||||
|
source_simd = vandq_u32(source_simd, low_bits_mask_guest_endian_simd);
|
||||||
|
result_simd = vorrq_u32(
|
||||||
|
source_simd, vceqq_u32(source_simd, reset_index_guest_endian_simd));
|
||||||
|
if constexpr (HostSwap == xenos::Endian::k8in16) {
|
||||||
|
result_simd = vreinterpretq_u32_u8(
|
||||||
|
vrev16q_u8(vreinterpretq_u8_u32(result_simd)));
|
||||||
|
} else if constexpr (HostSwap == xenos::Endian::k8in32) {
|
||||||
|
result_simd = vreinterpretq_u32_u8(
|
||||||
|
vrev32q_u8(vreinterpretq_u8_u32(result_simd)));
|
||||||
|
} else if constexpr (HostSwap == xenos::Endian::k16in32) {
|
||||||
|
result_simd = vreinterpretq_u32_u16(
|
||||||
|
vrev32q_u16(vreinterpretq_u16_u32(result_simd)));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error SIMD ReplaceResetIndex32To24 not implemented.
|
||||||
|
#endif // XE_ARCH
|
||||||
|
StoreUnalignedVectorU32(dest, result_simd);
|
||||||
|
dest += kSimdVectorU32Elements;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // XE_GPU_PRIMITIVE_PROCESSOR_SIMD_SIZE
|
||||||
|
while (count--) {
|
||||||
|
uint32_t index = *(source++) & low_bits_mask_guest_endian;
|
||||||
|
*(dest++) = index != reset_index_guest_endian
|
||||||
|
? xenos::GpuSwap(index, HostSwap)
|
||||||
|
: UINT32_MAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(Triang3l): 16-bit > 32-bit primitive type conversion for Metal, where
|
||||||
|
// primitive reset is always enabled, if UINT16_MAX is used as a real vertex
|
||||||
|
// index.
|
||||||
|
|
||||||
|
struct PassthroughIndexTransform {
|
||||||
|
uint16_t operator()(uint16_t index) const { return index; }
|
||||||
|
uint32_t operator()(uint32_t index) const { return index; }
|
||||||
|
};
|
||||||
|
struct To24NonSwappingIndexTransform {
|
||||||
|
uint32_t operator()(uint32_t index) const {
|
||||||
|
return index & xenos::kVertexIndexMask;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct To24Swapping8In16IndexTransform {
|
||||||
|
uint32_t operator()(uint32_t index) const {
|
||||||
|
return xenos::GpuSwap(index, xenos::Endian::k8in16) &
|
||||||
|
xenos::kVertexIndexMask;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct To24Swapping8In32IndexTransform {
|
||||||
|
uint32_t operator()(uint32_t index) const {
|
||||||
|
return xenos::GpuSwap(index, xenos::Endian::k8in32) &
|
||||||
|
xenos::kVertexIndexMask;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct To24Swapping16In32IndexTransform {
|
||||||
|
uint32_t operator()(uint32_t index) const {
|
||||||
|
return xenos::GpuSwap(index, xenos::Endian::k16in32) &
|
||||||
|
xenos::kVertexIndexMask;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Triangle fans as triangle lists.
|
||||||
|
// Ordered as (v1, v2, v0), (v2, v3, v0) in Direct3D.
|
||||||
|
// https://docs.microsoft.com/en-us/windows/desktop/direct3d9/triangle-fans
|
||||||
|
static constexpr uint32_t GetTriangleFanListIndexCount(
|
||||||
|
uint32_t fan_index_count) {
|
||||||
|
return fan_index_count > 2 ? (fan_index_count - 2) * 3 : 0;
|
||||||
|
}
|
||||||
|
template <typename Index, typename IndexTransform>
|
||||||
|
static void TriangleFanToList(Index* dest, const Index* source,
|
||||||
|
uint32_t source_index_count,
|
||||||
|
const IndexTransform& index_transform) {
|
||||||
|
if (source_index_count <= 2) {
|
||||||
|
// To match GetTriangleFanListIndexCount.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Index index_first = index_transform(source[0]);
|
||||||
|
Index index_previous = index_transform(source[1]);
|
||||||
|
for (uint32_t i = 2; i < source_index_count; ++i) {
|
||||||
|
Index index_current = index_transform(source[i]);
|
||||||
|
*(dest++) = index_previous;
|
||||||
|
*(dest++) = index_current;
|
||||||
|
*(dest++) = index_first;
|
||||||
|
index_previous = index_current;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr uint32_t GetLineLoopStripIndexCount(
|
||||||
|
uint32_t loop_index_count) {
|
||||||
|
// Even if 2 vertices are supplied, two lines are still drawn between them.
|
||||||
|
// https://www.khronos.org/opengl/wiki/Primitive
|
||||||
|
// "You get n lines for n input vertices"
|
||||||
|
// "If the user only specifies 1 vertex, the drawing command is ignored"
|
||||||
|
return loop_index_count > 1 ? loop_index_count + 1 : 0;
|
||||||
|
}
|
||||||
|
template <typename Index, typename IndexTransform>
|
||||||
|
static void LineLoopToStrip(Index* dest, const Index* source,
|
||||||
|
uint32_t source_index_count,
|
||||||
|
const IndexTransform& index_transform) {
|
||||||
|
if (source_index_count <= 1) {
|
||||||
|
// To match GetLineLoopStripIndexCount.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Index index_first = index_transform(source[0]);
|
||||||
|
dest[0] = index_first;
|
||||||
|
for (uint32_t i = 1; i < source_index_count; ++i) {
|
||||||
|
dest[i] = index_transform(source[i]);
|
||||||
|
}
|
||||||
|
dest[source_index_count] = index_first;
|
||||||
|
}
|
||||||
|
static void LineLoopToStrip(uint16_t* dest, const uint16_t* source,
|
||||||
|
uint32_t source_index_count,
|
||||||
|
const PassthroughIndexTransform& index_transform);
|
||||||
|
static void LineLoopToStrip(uint32_t* dest, const uint32_t* source,
|
||||||
|
uint32_t source_index_count,
|
||||||
|
const PassthroughIndexTransform& index_transform);
|
||||||
|
|
||||||
|
static constexpr uint32_t GetQuadListTriangleListIndexCount(
|
||||||
|
uint32_t quad_list_index_count) {
|
||||||
|
return (quad_list_index_count / 4) * 6;
|
||||||
|
}
|
||||||
|
template <typename Index, typename IndexTransform>
|
||||||
|
static void QuadListToTriangleList(Index* dest, const Index* source,
|
||||||
|
uint32_t source_index_count,
|
||||||
|
const IndexTransform& index_transform) {
|
||||||
|
uint32_t quad_count = source_index_count / 4;
|
||||||
|
for (uint32_t i = 0; i < quad_count; ++i) {
|
||||||
|
// TODO(Triang3l): Find the correct order.
|
||||||
|
// v0, v1, v2.
|
||||||
|
Index common_index_0 = index_transform(*(source++));
|
||||||
|
*(dest++) = common_index_0;
|
||||||
|
*(dest++) = index_transform(*(source++));
|
||||||
|
Index common_index_2 = index_transform(*(source++));
|
||||||
|
*(dest++) = common_index_2;
|
||||||
|
// v0, v2, v3.
|
||||||
|
*(dest++) = common_index_0;
|
||||||
|
*(dest++) = common_index_2;
|
||||||
|
*(dest++) = index_transform(*(source++));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pre-gathering the ranges allows for usage of the same functions for
|
||||||
|
// conversion with and without reset. In addition, this increases safety in
|
||||||
|
// weird cases - there won't be mismatch between the pre-calculation of the
|
||||||
|
// post-conversion index count and the actual conversion if the game for some
|
||||||
|
// reason modifies the index buffer between the two and adds or removes reset
|
||||||
|
// indices in it.
|
||||||
|
struct SinglePrimitiveRange {
|
||||||
|
SinglePrimitiveRange(uint32_t guest_offset, uint32_t guest_index_count,
|
||||||
|
uint32_t host_index_count)
|
||||||
|
: guest_offset(guest_offset),
|
||||||
|
guest_index_count(guest_index_count),
|
||||||
|
host_index_count(host_index_count) {}
|
||||||
|
uint32_t guest_offset;
|
||||||
|
uint32_t guest_index_count;
|
||||||
|
uint32_t host_index_count;
|
||||||
|
};
|
||||||
|
static uint32_t GetMultiPrimitiveHostIndexCountAndRanges(
|
||||||
|
std::function<uint32_t(uint32_t)> single_primitive_guest_to_host_count,
|
||||||
|
const uint16_t* source, uint32_t source_index_count,
|
||||||
|
uint16_t reset_index_guest_endian,
|
||||||
|
std::deque<SinglePrimitiveRange>& ranges_append_out);
|
||||||
|
static uint32_t GetMultiPrimitiveHostIndexCountAndRanges(
|
||||||
|
std::function<uint32_t(uint32_t)> single_primitive_guest_to_host_count,
|
||||||
|
const uint32_t* source, uint32_t source_index_count,
|
||||||
|
uint32_t reset_index_guest_endian, uint32_t low_bits_mask_guest_endian,
|
||||||
|
std::deque<SinglePrimitiveRange>& ranges_append_out);
|
||||||
|
|
||||||
|
template <typename Index, typename IndexTransform,
|
||||||
|
typename PrimitiveRangeIterator>
|
||||||
|
static void ConvertSinglePrimitiveRanges(
|
||||||
|
Index* dest, const Index* source,
|
||||||
|
xenos::PrimitiveType source_primitive_type,
|
||||||
|
const IndexTransform& index_transform,
|
||||||
|
PrimitiveRangeIterator ranges_beginning,
|
||||||
|
PrimitiveRangeIterator ranges_end) {
|
||||||
|
Index* dest_write_ptr = dest;
|
||||||
|
switch (source_primitive_type) {
|
||||||
|
case xenos::PrimitiveType::kTriangleFan:
|
||||||
|
for (PrimitiveRangeIterator range_it = ranges_beginning;
|
||||||
|
range_it != ranges_end; ++range_it) {
|
||||||
|
TriangleFanToList(dest_write_ptr, source + range_it->guest_offset,
|
||||||
|
range_it->guest_index_count, index_transform);
|
||||||
|
dest_write_ptr += range_it->host_index_count;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kLineLoop:
|
||||||
|
for (PrimitiveRangeIterator range_it = ranges_beginning;
|
||||||
|
range_it != ranges_end; ++range_it) {
|
||||||
|
LineLoopToStrip(dest_write_ptr, source + range_it->guest_offset,
|
||||||
|
range_it->guest_index_count, index_transform);
|
||||||
|
dest_write_ptr += range_it->host_index_count;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case xenos::PrimitiveType::kQuadList:
|
||||||
|
for (PrimitiveRangeIterator range_it = ranges_beginning;
|
||||||
|
range_it != ranges_end; ++range_it) {
|
||||||
|
QuadListToTriangleList(dest_write_ptr,
|
||||||
|
source + range_it->guest_offset,
|
||||||
|
range_it->guest_index_count, index_transform);
|
||||||
|
dest_write_ptr += range_it->host_index_count;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert_unhandled_case(source_primitive_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const RegisterFile& register_file_;
|
||||||
|
Memory& memory_;
|
||||||
|
TraceWriter& trace_writer_;
|
||||||
|
SharedMemory& shared_memory_;
|
||||||
|
|
||||||
|
bool full_32bit_vertex_indices_used_ = false;
|
||||||
|
bool convert_triangle_fans_to_lists_ = false;
|
||||||
|
bool convert_line_loops_to_strips_ = false;
|
||||||
|
bool convert_quad_lists_to_triangle_lists_ = false;
|
||||||
|
|
||||||
|
// Byte offsets used, for simplicity, directly as handles.
|
||||||
|
size_t builtin_ib_offset_triangle_fans_to_lists_ = SIZE_MAX;
|
||||||
|
size_t builtin_ib_offset_quad_lists_to_triangle_lists_ = SIZE_MAX;
|
||||||
|
|
||||||
|
std::deque<SinglePrimitiveRange> single_primitive_ranges_;
|
||||||
|
|
||||||
|
// Caching for reuse of converted indices within a frame.
|
||||||
|
|
||||||
|
// 256 KB as the largest possible guest index buffer - 0xFFFF 32-bit indices -
|
||||||
|
// is slightly smaller than 256 KB, thus cache entries need store links within
|
||||||
|
// at most 2 buckets.
|
||||||
|
static constexpr uint32_t kCacheBucketSizeBytesLog2 = 18;
|
||||||
|
static constexpr uint32_t kCacheBucketSizeBytes =
|
||||||
|
uint32_t(1) << kCacheBucketSizeBytesLog2;
|
||||||
|
static constexpr uint32_t kCacheBucketCount =
|
||||||
|
xe::align(SharedMemory::kBufferSize, kCacheBucketSizeBytes) /
|
||||||
|
kCacheBucketSizeBytes;
|
||||||
|
|
||||||
|
union CacheKey {
|
||||||
|
struct {
|
||||||
|
uint32_t base; // 32 total
|
||||||
|
uint32_t count : 16; // 48
|
||||||
|
xenos::IndexFormat format : 1; // 49
|
||||||
|
xenos::Endian endian : 2; // 52
|
||||||
|
uint32_t is_reset_enabled : 1; // 53
|
||||||
|
// kNone if not changing the type (like only processing the reset index).
|
||||||
|
xenos::PrimitiveType conversion_guest_primitive_type : 6; // 59
|
||||||
|
};
|
||||||
|
uint64_t key = 0;
|
||||||
|
|
||||||
|
CacheKey() = default;
|
||||||
|
CacheKey(uint32_t base, uint32_t count, xenos::IndexFormat format,
|
||||||
|
xenos::Endian endian, bool is_reset_enabled,
|
||||||
|
xenos::PrimitiveType conversion_guest_primitive_type =
|
||||||
|
xenos::PrimitiveType::kNone)
|
||||||
|
: base(base),
|
||||||
|
count(count),
|
||||||
|
format(format),
|
||||||
|
endian(endian),
|
||||||
|
is_reset_enabled(is_reset_enabled),
|
||||||
|
conversion_guest_primitive_type(conversion_guest_primitive_type) {}
|
||||||
|
|
||||||
|
struct Hasher {
|
||||||
|
size_t operator()(const CacheKey& key) const {
|
||||||
|
return std::hash<uint64_t>{}(key.key);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
bool operator==(const CacheKey& other_key) const {
|
||||||
|
return key == other_key.key;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t GetSizeBytes() const {
|
||||||
|
return count * (format == xenos::IndexFormat::kInt16 ? sizeof(uint16_t)
|
||||||
|
: sizeof(uint32_t));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Subset of ConversionResult that can be reused for different primitive types
|
||||||
|
// if the same result is used irrespective of one (like when only processing
|
||||||
|
// the reset index).
|
||||||
|
struct CachedResult {
|
||||||
|
uint32_t host_draw_vertex_count;
|
||||||
|
ProcessedIndexBufferType index_buffer_type;
|
||||||
|
xenos::IndexFormat host_index_format;
|
||||||
|
xenos::Endian host_index_endian;
|
||||||
|
bool host_primitive_reset_enabled;
|
||||||
|
size_t host_index_buffer_handle;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CacheEntry {
|
||||||
|
static_assert(
|
||||||
|
UINT16_MAX * sizeof(uint32_t) <=
|
||||||
|
(size_t(1) << kCacheBucketSizeBytesLog2),
|
||||||
|
"Assuming that primitive processor cache entries need to store to the "
|
||||||
|
"previous and to the next entries only within up to 2 buckets, so the "
|
||||||
|
"size of the cache buckets must be not smaller than the maximum guest "
|
||||||
|
"index buffer size");
|
||||||
|
union {
|
||||||
|
size_t free_next;
|
||||||
|
size_t buckets_prev[2];
|
||||||
|
};
|
||||||
|
size_t buckets_next[2];
|
||||||
|
CacheKey key;
|
||||||
|
CachedResult result;
|
||||||
|
static uint32_t GetBucketCount(CacheKey key) {
|
||||||
|
uint32_t count =
|
||||||
|
((key.base + (key.GetSizeBytes() - 1)) >> kCacheBucketSizeBytesLog2) -
|
||||||
|
(key.base >> kCacheBucketSizeBytesLog2) + 1;
|
||||||
|
assert_true(count <= 2,
|
||||||
|
"Cache entries only store list links within two buckets");
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
uint32_t GetBucketCount() const { return GetBucketCount(key); }
|
||||||
|
};
|
||||||
|
|
||||||
|
// A cache transaction performs a few operations in a RAII-like way (so
|
||||||
|
// processing may return an error for any reason, and won't have to clean up
|
||||||
|
// cache_currently_processing_base_ / size_bytes_ explicitly):
|
||||||
|
// - Transaction initialization:
|
||||||
|
// - Lookup of previously processed indices in the cache.
|
||||||
|
// - If not found, beginning to add a new entry that is going to be
|
||||||
|
// processed:
|
||||||
|
// - Marking the range as currently being processed, for slightly safer
|
||||||
|
// race condition handling if one happens - if invalidation happens
|
||||||
|
// during the transaction (but outside a global critical region lock,
|
||||||
|
// since processing may take a long time), the new cache entry won't be
|
||||||
|
// stored as it will already be invalid at the time of the completion of
|
||||||
|
// the transaction.
|
||||||
|
// - Enabling an access callback for the range.
|
||||||
|
// - Setting the new result after processing (if not found in the cache
|
||||||
|
// previously).
|
||||||
|
// - Transaction completion:
|
||||||
|
// - If the range wasn't invalidated during the transaction, storing the new
|
||||||
|
// entry in the cache.
|
||||||
|
// If an entry was found in the cache (GetFoundResult results non-null), it
|
||||||
|
// MUST be used instead of processing - this class doesn't provide the
|
||||||
|
// possibility replace existing entries.
|
||||||
|
class CacheTransaction final {
|
||||||
|
public:
|
||||||
|
CacheTransaction(PrimitiveProcessor& processor, CacheKey key);
|
||||||
|
const CachedResult* GetFoundResult() const {
|
||||||
|
return result_type_ == ResultType::kExisting ? &result_ : nullptr;
|
||||||
|
}
|
||||||
|
void SetNewResult(const CachedResult& new_result) {
|
||||||
|
// Replacement of an existing entry is not allowed.
|
||||||
|
assert_true(result_type_ != ResultType::kExisting);
|
||||||
|
result_ = new_result;
|
||||||
|
result_type_ = ResultType::kNewSet;
|
||||||
|
}
|
||||||
|
~CacheTransaction();
|
||||||
|
|
||||||
|
private:
|
||||||
|
PrimitiveProcessor& processor_;
|
||||||
|
// If key_.count == 0, this transaction shouldn't do anything - for empty
|
||||||
|
// ranges it's pointless, and it's unsafe to get the end pointer without
|
||||||
|
// special logic, and count == 0 is also used as a special indicator for
|
||||||
|
// vertex count below the cache usage threshold.
|
||||||
|
CacheKey key_;
|
||||||
|
CachedResult result_;
|
||||||
|
enum class ResultType {
|
||||||
|
kNewUnset,
|
||||||
|
kNewSet,
|
||||||
|
kExisting,
|
||||||
|
};
|
||||||
|
ResultType result_type_ = ResultType::kNewUnset;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::deque<CacheEntry> cache_entry_pool_;
|
||||||
|
|
||||||
|
void* memory_invalidation_callback_handle_ = nullptr;
|
||||||
|
|
||||||
|
xe::global_critical_region global_critical_region_;
|
||||||
|
// Modified by both the processor and the invalidation callback.
|
||||||
|
std::unordered_map<CacheKey, size_t, CacheKey::Hasher> cache_map_;
|
||||||
|
// The conversion is performed while the lock is released since it may take a
|
||||||
|
// long time.
|
||||||
|
// If during the conversion the region currently being converted is
|
||||||
|
// invalidated, the current entry will not be added to the cache.
|
||||||
|
// Modified by the processor, read by the invalidation callback.
|
||||||
|
uint32_t cache_currently_processing_base_ = 0;
|
||||||
|
// 0 if not in a cache transaction that hasn't found an existing entry
|
||||||
|
// currently.
|
||||||
|
uint32_t cache_currently_processing_size_bytes_ = 0;
|
||||||
|
// Modified by both the processor and the invalidation callback.
|
||||||
|
size_t cache_bucket_free_first_entry_ = SIZE_MAX;
|
||||||
|
// Modified by both the processor and the invalidation callback.
|
||||||
|
uint64_t cache_buckets_non_empty_l1_[(kCacheBucketCount + 63) / 64] = {};
|
||||||
|
// For even faster handling of memory invalidation - whether any bit is set in
|
||||||
|
// each cache_buckets_non_empty_l1_.
|
||||||
|
// Modified by both the processor and the invalidation callback.
|
||||||
|
uint64_t cache_buckets_non_empty_l2_[(kCacheBucketCount + (64 * 64 - 1)) /
|
||||||
|
(64 * 64)] = {};
|
||||||
|
// Must be called in a global critical region.
|
||||||
|
void UpdateCacheBucketsNonEmptyL2(
|
||||||
|
uint32_t bucket_index_div_64,
|
||||||
|
[[maybe_unused]] const std::unique_lock<std::recursive_mutex>&
|
||||||
|
global_lock) {
|
||||||
|
uint64_t& cache_buckets_non_empty_l2_ref =
|
||||||
|
cache_buckets_non_empty_l2_[bucket_index_div_64 >> 6];
|
||||||
|
uint64_t cache_buckets_non_empty_l2_bit = uint64_t(1)
|
||||||
|
<< (bucket_index_div_64 & 63);
|
||||||
|
if (cache_buckets_non_empty_l1_[bucket_index_div_64]) {
|
||||||
|
cache_buckets_non_empty_l2_ref |= cache_buckets_non_empty_l2_bit;
|
||||||
|
} else {
|
||||||
|
cache_buckets_non_empty_l2_ref &= ~cache_buckets_non_empty_l2_bit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// cache_buckets_non_empty_l1_ (along with cache_buckets_non_empty_l2_, which
|
||||||
|
// must be kept in sync) used for indication whether each entry is non-empty,
|
||||||
|
// for faster clearing (there's no special index here for an empty entry).
|
||||||
|
// Huge, so it's the last in the class.
|
||||||
|
// Modified by both the processor and the invalidation callback.
|
||||||
|
size_t cache_bucket_first_entries_[kCacheBucketCount];
|
||||||
|
static std::pair<uint32_t, uint32_t> MemoryInvalidationCallbackThunk(
|
||||||
|
void* context_ptr, uint32_t physical_address_start, uint32_t length,
|
||||||
|
bool exact_range);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gpu
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
#endif // XENIA_GPU_PRIMITIVE_PROCESSOR_H_
|
|
@ -342,6 +342,8 @@ XE_GPU_REGISTER(0x2184, kDword, SQ_WRAPPING_1)
|
||||||
|
|
||||||
// These three registers are set by the command processor.
|
// These three registers are set by the command processor.
|
||||||
XE_GPU_REGISTER(0x21F9, kDword, VGT_EVENT_INITIATOR)
|
XE_GPU_REGISTER(0x21F9, kDword, VGT_EVENT_INITIATOR)
|
||||||
|
XE_GPU_REGISTER(0x21FA, kDword, VGT_DMA_BASE)
|
||||||
|
XE_GPU_REGISTER(0x21FB, kDword, VGT_DMA_SIZE)
|
||||||
XE_GPU_REGISTER(0x21FC, kDword, VGT_DRAW_INITIATOR)
|
XE_GPU_REGISTER(0x21FC, kDword, VGT_DRAW_INITIATOR)
|
||||||
XE_GPU_REGISTER(0x21FD, kDword, VGT_IMMED_DATA)
|
XE_GPU_REGISTER(0x21FD, kDword, VGT_IMMED_DATA)
|
||||||
|
|
||||||
|
|
|
@ -185,6 +185,16 @@ static_assert_size(SQ_INTERPOLATOR_CNTL, sizeof(uint32_t));
|
||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
union alignas(uint32_t) VGT_DMA_SIZE {
|
||||||
|
struct {
|
||||||
|
uint32_t num_words : 24; // +0
|
||||||
|
uint32_t : 6; // +24
|
||||||
|
xenos::Endian swap_mode : 2; // +30
|
||||||
|
};
|
||||||
|
uint32_t value;
|
||||||
|
static constexpr Register register_index = XE_GPU_REG_VGT_DMA_SIZE;
|
||||||
|
};
|
||||||
|
|
||||||
union alignas(uint32_t) VGT_DRAW_INITIATOR {
|
union alignas(uint32_t) VGT_DRAW_INITIATOR {
|
||||||
// Different than on A2xx and R6xx/R7xx.
|
// Different than on A2xx and R6xx/R7xx.
|
||||||
struct {
|
struct {
|
||||||
|
@ -202,6 +212,69 @@ union alignas(uint32_t) VGT_DRAW_INITIATOR {
|
||||||
};
|
};
|
||||||
static_assert_size(VGT_DRAW_INITIATOR, sizeof(uint32_t));
|
static_assert_size(VGT_DRAW_INITIATOR, sizeof(uint32_t));
|
||||||
|
|
||||||
|
// Unlike on R6xx (but closer to R5xx), and according to the Adreno 200 header,
|
||||||
|
// the registers related to the vertex index are 24-bit. Vertex indices are
|
||||||
|
// unsigned, and only the lower 24 bits of them are actually used by the GPU -
|
||||||
|
// this has been verified on an Adreno 200 phone (LG Optimus L7) on OpenGL ES
|
||||||
|
// using a GL_UNSIGNED_INT element array buffer with junk in the upper 8 bits
|
||||||
|
// that had no effect on drawing.
|
||||||
|
|
||||||
|
// The order of operations is primitive reset index checking -> offsetting ->
|
||||||
|
// clamping.
|
||||||
|
|
||||||
|
union alignas(uint32_t) VGT_MULTI_PRIM_IB_RESET_INDX {
|
||||||
|
struct {
|
||||||
|
// The upper 8 bits of the value from the index buffer are confirmed to be
|
||||||
|
// ignored. So, though this specifically is untested (because
|
||||||
|
// GL_PRIMITIVE_RESTART_FIXED_INDEX was added only in OpenGL ES 3.0, though
|
||||||
|
// it behaves conceptually close to our expectations anyway - uses the
|
||||||
|
// 0xFFFFFFFF restart index while GL_MAX_ELEMENT_INDEX may be 0xFFFFFF),
|
||||||
|
// the restart index check likely only involves the lower 24 bit of the
|
||||||
|
// vertex index - therefore, if reset_indx is 0xFFFFFF, likely 0xFFFFFF,
|
||||||
|
// 0x1FFFFFF, 0xFFFFFFFF all cause primitive reset.
|
||||||
|
uint32_t reset_indx : 24;
|
||||||
|
};
|
||||||
|
uint32_t value;
|
||||||
|
static constexpr Register register_index =
|
||||||
|
XE_GPU_REG_VGT_MULTI_PRIM_IB_RESET_INDX;
|
||||||
|
};
|
||||||
|
static_assert_size(VGT_MULTI_PRIM_IB_RESET_INDX, sizeof(uint32_t));
|
||||||
|
|
||||||
|
union alignas(uint32_t) VGT_INDX_OFFSET {
|
||||||
|
struct {
|
||||||
|
// Unlike R5xx's VAP_INDEX_OFFSET, which is signed 25-bit, this is 24-bit -
|
||||||
|
// and signedness doesn't matter as index calculations are done in 24-bit
|
||||||
|
// integers, and ((0xFFFFFE + 3) & 0xFFFFFF) == 1 anyway, just like
|
||||||
|
// ((0xFFFFFFFE + 3) & 0xFFFFFF) == 1 if we treated it as signed by
|
||||||
|
// sign-extending on the host. Direct3D 9 just writes BaseVertexIndex as a
|
||||||
|
// signed int32 to the entire register, but the upper 8 bits are ignored
|
||||||
|
// anyway, and that has no effect on offsets that fit in 24 bits.
|
||||||
|
uint32_t indx_offset : 24;
|
||||||
|
};
|
||||||
|
uint32_t value;
|
||||||
|
static constexpr Register register_index = XE_GPU_REG_VGT_INDX_OFFSET;
|
||||||
|
};
|
||||||
|
static_assert_size(VGT_INDX_OFFSET, sizeof(uint32_t));
|
||||||
|
|
||||||
|
union alignas(uint32_t) VGT_MIN_VTX_INDX {
|
||||||
|
struct {
|
||||||
|
uint32_t min_indx : 24;
|
||||||
|
};
|
||||||
|
uint32_t value;
|
||||||
|
static constexpr Register register_index = XE_GPU_REG_VGT_MIN_VTX_INDX;
|
||||||
|
};
|
||||||
|
static_assert_size(VGT_MIN_VTX_INDX, sizeof(uint32_t));
|
||||||
|
|
||||||
|
union alignas(uint32_t) VGT_MAX_VTX_INDX {
|
||||||
|
struct {
|
||||||
|
// Usually 0xFFFF or 0xFFFFFF.
|
||||||
|
uint32_t max_indx : 24;
|
||||||
|
};
|
||||||
|
uint32_t value;
|
||||||
|
static constexpr Register register_index = XE_GPU_REG_VGT_MAX_VTX_INDX;
|
||||||
|
};
|
||||||
|
static_assert_size(VGT_MAX_VTX_INDX, sizeof(uint32_t));
|
||||||
|
|
||||||
union alignas(uint32_t) VGT_OUTPUT_PATH_CNTL {
|
union alignas(uint32_t) VGT_OUTPUT_PATH_CNTL {
|
||||||
struct {
|
struct {
|
||||||
xenos::VGTOutputPath path_select : 2; // +0
|
xenos::VGTOutputPath path_select : 2; // +0
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <functional>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
|
@ -129,11 +129,11 @@ class SharedMemory {
|
||||||
bool written_by_gpu_resolve);
|
bool written_by_gpu_resolve);
|
||||||
|
|
||||||
// Uploads a range of host pages - only called if host GPU sparse memory
|
// Uploads a range of host pages - only called if host GPU sparse memory
|
||||||
// allocation succeeded if needed. While uploading, MarkRangeValid must be
|
// allocation succeeded if needed. While uploading, MakeRangeValid must be
|
||||||
// called for each successfully uploaded range as early as possible, before
|
// called for each successfully uploaded range as early as possible, before
|
||||||
// the memcpy, to make sure invalidation that happened during the CPU -> GPU
|
// the memcpy, to make sure invalidation that happened during the CPU -> GPU
|
||||||
// memcpy isn't missed (upload_page_ranges is in pages because of this -
|
// memcpy isn't missed (upload_page_ranges is in pages because of this -
|
||||||
// MarkRangeValid has page granularity). upload_page_ranges are sorted in
|
// MakeRangeValid has page granularity). upload_page_ranges are sorted in
|
||||||
// ascending address order, so front and back can be used to determine the
|
// ascending address order, so front and back can be used to determine the
|
||||||
// overall bounds of pages to be uploaded.
|
// overall bounds of pages to be uploaded.
|
||||||
virtual bool UploadRanges(
|
virtual bool UploadRanges(
|
||||||
|
|
|
@ -35,6 +35,12 @@ enum class ShaderType : uint32_t {
|
||||||
kPixel = 1,
|
kPixel = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Only the lower 24 bits of the vertex index are used (tested on an Adreno 200
|
||||||
|
// phone using a GL_UNSIGNED_INT element array buffer with junk in the upper 8
|
||||||
|
// bits that had no effect on drawing).
|
||||||
|
constexpr uint32_t kVertexIndexBits = 24;
|
||||||
|
constexpr uint32_t kVertexIndexMask = (uint32_t(1) << kVertexIndexBits) - 1;
|
||||||
|
|
||||||
enum class PrimitiveType : uint32_t {
|
enum class PrimitiveType : uint32_t {
|
||||||
kNone = 0x00,
|
kNone = 0x00,
|
||||||
kPointList = 0x01,
|
kPointList = 0x01,
|
||||||
|
@ -73,38 +79,6 @@ enum class PrimitiveType : uint32_t {
|
||||||
kQuadPatch = 0x12,
|
kQuadPatch = 0x12,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Polygonal primitive types (not including points and lines) are rasterized as
|
|
||||||
// triangles, have front and back faces, and also support face culling and fill
|
|
||||||
// modes (polymode_front_ptype, polymode_back_ptype). Other primitive types are
|
|
||||||
// always "front" (but don't support front face and back face culling, according
|
|
||||||
// to OpenGL and Vulkan specifications - even if glCullFace is
|
|
||||||
// GL_FRONT_AND_BACK, points and lines are still drawn), and may in some cases
|
|
||||||
// use the "para" registers instead of "front" or "back" (for "parallelogram" -
|
|
||||||
// like poly_offset_para_enable).
|
|
||||||
constexpr bool IsPrimitivePolygonal(bool tessellated, PrimitiveType type) {
|
|
||||||
if (tessellated && (type == PrimitiveType::kTrianglePatch ||
|
|
||||||
type == PrimitiveType::kQuadPatch)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
switch (type) {
|
|
||||||
case PrimitiveType::kTriangleList:
|
|
||||||
case PrimitiveType::kTriangleFan:
|
|
||||||
case PrimitiveType::kTriangleStrip:
|
|
||||||
case PrimitiveType::kTriangleWithWFlags:
|
|
||||||
case PrimitiveType::kQuadList:
|
|
||||||
case PrimitiveType::kQuadStrip:
|
|
||||||
case PrimitiveType::kPolygon:
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// TODO(Triang3l): Investigate how kRectangleList should be treated - possibly
|
|
||||||
// actually drawn as two polygons on the console, however, the current
|
|
||||||
// geometry shader doesn't care about the winding order - allowing backface
|
|
||||||
// culling for rectangles currently breaks Gears of War 2.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For the texture fetch constant (not the tfetch instruction), stacked stored
|
// For the texture fetch constant (not the tfetch instruction), stacked stored
|
||||||
// as 2D.
|
// as 2D.
|
||||||
enum class DataDimension : uint32_t {
|
enum class DataDimension : uint32_t {
|
||||||
|
|
Loading…
Reference in New Issue