Merge branch 'master' into vulkan
This commit is contained in:
commit
b9256fcdbd
|
@ -13,7 +13,7 @@ drivers.
|
|||
* For Visual Studio 2022, MSBuild `v142` must be used due to a compiler bug; See [#2003](https://github.com/xenia-project/xenia/issues/2003).
|
||||
* [Python 3.6+](https://www.python.org/downloads/)
|
||||
* Ensure Python is in PATH.
|
||||
* Windows 10 SDK version 10.0.19041.0 (for Visual Studio 2019, this or any newer version)
|
||||
* Windows 11 SDK version 10.0.22000.0 (for Visual Studio 2019, this or any newer version)
|
||||
|
||||
```
|
||||
git clone https://github.com/xenia-project/xenia.git
|
||||
|
|
|
@ -225,8 +225,9 @@ workspace("xenia")
|
|||
platforms({"Windows"})
|
||||
-- 10.0.15063.0: ID3D12GraphicsCommandList1::SetSamplePositions.
|
||||
-- 10.0.19041.0: D3D12_HEAP_FLAG_CREATE_NOT_ZEROED.
|
||||
-- 10.0.22000.0: DWMWA_WINDOW_CORNER_PREFERENCE.
|
||||
filter("action:vs2017")
|
||||
systemversion("10.0.19041.0")
|
||||
systemversion("10.0.22000.0")
|
||||
filter("action:vs2019")
|
||||
systemversion("10.0")
|
||||
filter({})
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <algorithm>
|
||||
#include <cinttypes>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
#include "third_party/fmt/include/fmt/format.h"
|
||||
#include "xenia/base/byte_stream.h"
|
||||
|
@ -49,22 +50,23 @@ CommandProcessor::~CommandProcessor() = default;
|
|||
|
||||
bool CommandProcessor::Initialize() {
|
||||
// Initialize the gamma ramps to their default (linear) values - taken from
|
||||
// what games set when starting.
|
||||
// what games set when starting with the sRGB (return value 1)
|
||||
// VdGetCurrentDisplayGamma.
|
||||
for (uint32_t i = 0; i < 256; ++i) {
|
||||
uint32_t value = i * 1023 / 255;
|
||||
gamma_ramp_.table[i].value = value | (value << 10) | (value << 20);
|
||||
uint32_t value = i * 0x3FF / 0xFF;
|
||||
reg::DC_LUT_30_COLOR& gamma_ramp_entry = gamma_ramp_256_entry_table_[i];
|
||||
gamma_ramp_entry.color_10_blue = value;
|
||||
gamma_ramp_entry.color_10_green = value;
|
||||
gamma_ramp_entry.color_10_red = value;
|
||||
}
|
||||
for (uint32_t i = 0; i < 128; ++i) {
|
||||
uint32_t value = (i * 65535 / 127) & ~63;
|
||||
if (i < 127) {
|
||||
value |= 0x200 << 16;
|
||||
}
|
||||
reg::DC_LUT_PWL_DATA gamma_ramp_entry = {};
|
||||
gamma_ramp_entry.base = (i * 0xFFFF / 0x7F) & ~UINT32_C(0x3F);
|
||||
gamma_ramp_entry.delta = i < 0x7F ? 0x200 : 0;
|
||||
for (uint32_t j = 0; j < 3; ++j) {
|
||||
gamma_ramp_.pwl[i].values[j].value = value;
|
||||
gamma_ramp_pwl_rgb_[i][j] = gamma_ramp_entry;
|
||||
}
|
||||
}
|
||||
dirty_gamma_ramp_table_ = true;
|
||||
dirty_gamma_ramp_pwl_ = true;
|
||||
|
||||
worker_running_ = true;
|
||||
worker_thread_ = kernel::object_ref<kernel::XHostThread>(
|
||||
|
@ -128,6 +130,46 @@ void CommandProcessor::EndTracing() {
|
|||
trace_writer_.Close();
|
||||
}
|
||||
|
||||
void CommandProcessor::RestoreRegisters(uint32_t first_register,
|
||||
const uint32_t* register_values,
|
||||
uint32_t register_count,
|
||||
bool execute_callbacks) {
|
||||
if (first_register > RegisterFile::kRegisterCount ||
|
||||
RegisterFile::kRegisterCount - first_register < register_count) {
|
||||
XELOGW(
|
||||
"CommandProcessor::RestoreRegisters out of bounds (0x{:X} registers "
|
||||
"starting with 0x{:X}, while a total of 0x{:X} registers are stored)",
|
||||
register_count, first_register, RegisterFile::kRegisterCount);
|
||||
if (first_register > RegisterFile::kRegisterCount) {
|
||||
return;
|
||||
}
|
||||
register_count =
|
||||
std::min(uint32_t(RegisterFile::kRegisterCount) - first_register,
|
||||
register_count);
|
||||
}
|
||||
if (execute_callbacks) {
|
||||
for (uint32_t i = 0; i < register_count; ++i) {
|
||||
WriteRegister(first_register + i, register_values[i]);
|
||||
}
|
||||
} else {
|
||||
std::memcpy(register_file_->values + first_register, register_values,
|
||||
sizeof(uint32_t) * register_count);
|
||||
}
|
||||
}
|
||||
|
||||
void CommandProcessor::RestoreGammaRamp(
|
||||
const reg::DC_LUT_30_COLOR* new_gamma_ramp_256_entry_table,
|
||||
const reg::DC_LUT_PWL_DATA* new_gamma_ramp_pwl_rgb,
|
||||
uint32_t new_gamma_ramp_rw_component) {
|
||||
std::memcpy(gamma_ramp_256_entry_table_, new_gamma_ramp_256_entry_table,
|
||||
sizeof(reg::DC_LUT_30_COLOR) * 256);
|
||||
std::memcpy(gamma_ramp_pwl_rgb_, new_gamma_ramp_pwl_rgb,
|
||||
sizeof(reg::DC_LUT_PWL_DATA) * 3 * 128);
|
||||
gamma_ramp_rw_component_ = new_gamma_ramp_rw_component;
|
||||
OnGammaRamp256EntryTableValueWritten();
|
||||
OnGammaRampPWLValueWritten();
|
||||
}
|
||||
|
||||
void CommandProcessor::CallInThread(std::function<void()> fn) {
|
||||
if (pending_fns_.empty() &&
|
||||
kernel::XThread::IsInThread(worker_thread_.get())) {
|
||||
|
@ -286,68 +328,141 @@ void CommandProcessor::UpdateWritePointer(uint32_t value) {
|
|||
}
|
||||
|
||||
void CommandProcessor::WriteRegister(uint32_t index, uint32_t value) {
|
||||
RegisterFile* regs = register_file_;
|
||||
RegisterFile& regs = *register_file_;
|
||||
if (index >= RegisterFile::kRegisterCount) {
|
||||
XELOGW("CommandProcessor::WriteRegister index out of bounds: {}", index);
|
||||
return;
|
||||
}
|
||||
|
||||
regs->values[index].u32 = value;
|
||||
if (!regs->GetRegisterInfo(index)) {
|
||||
regs.values[index].u32 = value;
|
||||
if (!regs.GetRegisterInfo(index)) {
|
||||
XELOGW("GPU: Write to unknown register ({:04X} = {:08X})", index, value);
|
||||
}
|
||||
|
||||
// If this is a COHER register, set the dirty flag.
|
||||
// This will block the command processor the next time it WAIT_MEM_REGs and
|
||||
// allow us to synchronize the memory.
|
||||
if (index == XE_GPU_REG_COHER_STATUS_HOST) {
|
||||
regs->values[index].u32 |= 0x80000000ul;
|
||||
}
|
||||
|
||||
// Scratch register writeback.
|
||||
if (index >= XE_GPU_REG_SCRATCH_REG0 && index <= XE_GPU_REG_SCRATCH_REG7) {
|
||||
uint32_t scratch_reg = index - XE_GPU_REG_SCRATCH_REG0;
|
||||
if ((1 << scratch_reg) & regs->values[XE_GPU_REG_SCRATCH_UMSK].u32) {
|
||||
if ((1 << scratch_reg) & regs.values[XE_GPU_REG_SCRATCH_UMSK].u32) {
|
||||
// Enabled - write to address.
|
||||
uint32_t scratch_addr = regs->values[XE_GPU_REG_SCRATCH_ADDR].u32;
|
||||
uint32_t scratch_addr = regs.values[XE_GPU_REG_SCRATCH_ADDR].u32;
|
||||
uint32_t mem_addr = scratch_addr + (scratch_reg * 4);
|
||||
xe::store_and_swap<uint32_t>(memory_->TranslatePhysical(mem_addr), value);
|
||||
}
|
||||
} else {
|
||||
switch (index) {
|
||||
// If this is a COHER register, set the dirty flag.
|
||||
// This will block the command processor the next time it WAIT_MEM_REGs
|
||||
// and allow us to synchronize the memory.
|
||||
case XE_GPU_REG_COHER_STATUS_HOST: {
|
||||
regs.values[index].u32 |= UINT32_C(0x80000000);
|
||||
} break;
|
||||
|
||||
case XE_GPU_REG_DC_LUT_RW_INDEX: {
|
||||
// Reset the sequential read / write component index (see the M56
|
||||
// DC_LUT_SEQ_COLOR documentation).
|
||||
gamma_ramp_rw_component_ = 0;
|
||||
} break;
|
||||
|
||||
case XE_GPU_REG_DC_LUT_SEQ_COLOR: {
|
||||
// Should be in the 256-entry table writing mode.
|
||||
assert_zero(regs[XE_GPU_REG_DC_LUT_RW_MODE].u32 & 0b1);
|
||||
auto& gamma_ramp_rw_index = regs.Get<reg::DC_LUT_RW_INDEX>();
|
||||
// DC_LUT_SEQ_COLOR is in the red, green, blue order, but the write
|
||||
// enable mask is blue, green, red.
|
||||
bool write_gamma_ramp_component =
|
||||
(regs[XE_GPU_REG_DC_LUT_WRITE_EN_MASK].u32 &
|
||||
(UINT32_C(1) << (2 - gamma_ramp_rw_component_))) != 0;
|
||||
if (write_gamma_ramp_component) {
|
||||
reg::DC_LUT_30_COLOR& gamma_ramp_entry =
|
||||
gamma_ramp_256_entry_table_[gamma_ramp_rw_index.rw_index];
|
||||
// Bits 0:5 are hardwired to zero.
|
||||
uint32_t gamma_ramp_seq_color =
|
||||
regs.Get<reg::DC_LUT_SEQ_COLOR>().seq_color >> 6;
|
||||
switch (gamma_ramp_rw_component_) {
|
||||
case 0:
|
||||
gamma_ramp_entry.color_10_red = gamma_ramp_seq_color;
|
||||
break;
|
||||
case 1:
|
||||
gamma_ramp_entry.color_10_green = gamma_ramp_seq_color;
|
||||
break;
|
||||
case 2:
|
||||
gamma_ramp_entry.color_10_blue = gamma_ramp_seq_color;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (++gamma_ramp_rw_component_ >= 3) {
|
||||
gamma_ramp_rw_component_ = 0;
|
||||
++gamma_ramp_rw_index.rw_index;
|
||||
}
|
||||
if (write_gamma_ramp_component) {
|
||||
OnGammaRamp256EntryTableValueWritten();
|
||||
}
|
||||
} break;
|
||||
|
||||
void CommandProcessor::UpdateGammaRampValue(GammaRampType type,
|
||||
uint32_t value) {
|
||||
RegisterFile* regs = register_file_;
|
||||
case XE_GPU_REG_DC_LUT_PWL_DATA: {
|
||||
// Should be in the PWL writing mode.
|
||||
assert_not_zero(regs[XE_GPU_REG_DC_LUT_RW_MODE].u32 & 0b1);
|
||||
auto& gamma_ramp_rw_index = regs.Get<reg::DC_LUT_RW_INDEX>();
|
||||
// Bit 7 of the index is ignored for PWL.
|
||||
uint32_t gamma_ramp_rw_index_pwl = gamma_ramp_rw_index.rw_index & 0x7F;
|
||||
// DC_LUT_PWL_DATA is likely in the red, green, blue order because
|
||||
// DC_LUT_SEQ_COLOR is, but the write enable mask is blue, green, red.
|
||||
bool write_gamma_ramp_component =
|
||||
(regs[XE_GPU_REG_DC_LUT_WRITE_EN_MASK].u32 &
|
||||
(UINT32_C(1) << (2 - gamma_ramp_rw_component_))) != 0;
|
||||
if (write_gamma_ramp_component) {
|
||||
reg::DC_LUT_PWL_DATA& gamma_ramp_entry =
|
||||
gamma_ramp_pwl_rgb_[gamma_ramp_rw_index_pwl]
|
||||
[gamma_ramp_rw_component_];
|
||||
auto gamma_ramp_value = regs.Get<reg::DC_LUT_PWL_DATA>();
|
||||
// Bits 0:5 are hardwired to zero.
|
||||
gamma_ramp_entry.base = gamma_ramp_value.base & ~UINT32_C(0x3F);
|
||||
gamma_ramp_entry.delta = gamma_ramp_value.delta & ~UINT32_C(0x3F);
|
||||
}
|
||||
if (++gamma_ramp_rw_component_ >= 3) {
|
||||
gamma_ramp_rw_component_ = 0;
|
||||
// TODO(Triang3l): Should this increase beyond 7 bits for PWL?
|
||||
// Direct3D 9 explicitly sets rw_index to 0x80 after writing the last
|
||||
// PWL entry. However, the DC_LUT_RW_INDEX documentation says that for
|
||||
// PWL, the bit 7 is ignored.
|
||||
gamma_ramp_rw_index.rw_index =
|
||||
(gamma_ramp_rw_index.rw_index & ~UINT32_C(0x7F)) |
|
||||
((gamma_ramp_rw_index_pwl + 1) & 0x7F);
|
||||
}
|
||||
if (write_gamma_ramp_component) {
|
||||
OnGammaRampPWLValueWritten();
|
||||
}
|
||||
} break;
|
||||
|
||||
auto index = regs->values[XE_GPU_REG_DC_LUT_RW_INDEX].u32;
|
||||
|
||||
auto mask = regs->values[XE_GPU_REG_DC_LUT_WRITE_EN_MASK].u32;
|
||||
auto mask_lo = (mask >> 0) & 0x7;
|
||||
auto mask_hi = (mask >> 3) & 0x7;
|
||||
|
||||
// If games update individual components we're going to have a problem.
|
||||
assert_true(mask_lo == 0 || mask_lo == 7);
|
||||
assert_true(mask_hi == 0);
|
||||
|
||||
if (mask_lo) {
|
||||
switch (type) {
|
||||
case GammaRampType::kTable:
|
||||
assert_true(regs->values[XE_GPU_REG_DC_LUT_RW_MODE].u32 == 0);
|
||||
gamma_ramp_.table[index].value = value;
|
||||
dirty_gamma_ramp_table_ = true;
|
||||
break;
|
||||
case GammaRampType::kPWL:
|
||||
assert_true(regs->values[XE_GPU_REG_DC_LUT_RW_MODE].u32 == 1);
|
||||
// The lower 6 bits are hardwired to 0.
|
||||
// https://developer.amd.com/wordpress/media/2012/10/RRG-216M56-03oOEM.pdf
|
||||
gamma_ramp_.pwl[index].values[gamma_ramp_rw_subindex_].value =
|
||||
value & ~(uint32_t(63) | (uint32_t(63) << 16));
|
||||
gamma_ramp_rw_subindex_ = (gamma_ramp_rw_subindex_ + 1) % 3;
|
||||
dirty_gamma_ramp_pwl_ = true;
|
||||
break;
|
||||
default:
|
||||
assert_unhandled_case(type);
|
||||
case XE_GPU_REG_DC_LUT_30_COLOR: {
|
||||
// Should be in the 256-entry table writing mode.
|
||||
assert_zero(regs[XE_GPU_REG_DC_LUT_RW_MODE].u32 & 0b1);
|
||||
auto& gamma_ramp_rw_index = regs.Get<reg::DC_LUT_RW_INDEX>();
|
||||
uint32_t gamma_ramp_write_enable_mask =
|
||||
regs[XE_GPU_REG_DC_LUT_WRITE_EN_MASK].u32 & 0b111;
|
||||
if (gamma_ramp_write_enable_mask) {
|
||||
reg::DC_LUT_30_COLOR& gamma_ramp_entry =
|
||||
gamma_ramp_256_entry_table_[gamma_ramp_rw_index.rw_index];
|
||||
auto gamma_ramp_value = regs.Get<reg::DC_LUT_30_COLOR>();
|
||||
if (gamma_ramp_write_enable_mask & 0b001) {
|
||||
gamma_ramp_entry.color_10_blue = gamma_ramp_value.color_10_blue;
|
||||
}
|
||||
if (gamma_ramp_write_enable_mask & 0b010) {
|
||||
gamma_ramp_entry.color_10_green = gamma_ramp_value.color_10_green;
|
||||
}
|
||||
if (gamma_ramp_write_enable_mask & 0b100) {
|
||||
gamma_ramp_entry.color_10_red = gamma_ramp_value.color_10_red;
|
||||
}
|
||||
}
|
||||
++gamma_ramp_rw_index.rw_index;
|
||||
// TODO(Triang3l): Should this reset the component write index? If this
|
||||
// increase is assumed to behave like a full DC_LUT_RW_INDEX write, it
|
||||
// probably should.
|
||||
gamma_ramp_rw_component_ = 0;
|
||||
if (gamma_ramp_write_enable_mask) {
|
||||
OnGammaRamp256EntryTableValueWritten();
|
||||
}
|
||||
} break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1493,5 +1608,17 @@ bool CommandProcessor::ExecutePacketType3_VIZ_QUERY(RingBuffer* reader,
|
|||
return true;
|
||||
}
|
||||
|
||||
void CommandProcessor::InitializeTrace() {
|
||||
// Write the initial register values, to be loaded directly into the
|
||||
// RegisterFile since all registers, including those that may have side
|
||||
// effects on setting, will be saved.
|
||||
trace_writer_.WriteRegisters(
|
||||
0, reinterpret_cast<const uint32_t*>(register_file_->values),
|
||||
RegisterFile::kRegisterCount, false);
|
||||
|
||||
trace_writer_.WriteGammaRamp(gamma_ramp_256_entry_table(),
|
||||
gamma_ramp_pwl_rgb(), gamma_ramp_rw_component_);
|
||||
}
|
||||
|
||||
} // namespace gpu
|
||||
} // namespace xe
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "xenia/base/ring_buffer.h"
|
||||
#include "xenia/base/threading.h"
|
||||
#include "xenia/gpu/register_file.h"
|
||||
#include "xenia/gpu/registers.h"
|
||||
#include "xenia/gpu/trace_writer.h"
|
||||
#include "xenia/gpu/xenos.h"
|
||||
#include "xenia/kernel/xthread.h"
|
||||
|
@ -64,61 +65,6 @@ enum class GammaRampType {
|
|||
kPWL,
|
||||
};
|
||||
|
||||
struct GammaRamp {
|
||||
// A lot of gamma ramp (DC_LUT) documentation:
|
||||
// https://developer.amd.com/wordpress/media/2012/10/RRG-216M56-03oOEM.pdf
|
||||
// The ramps entries are BGR, not RGB.
|
||||
// For the 256-entry table (used by Direct3D 9 for a 8bpc front buffer),
|
||||
// 535107D4 has in-game settings allowing separate configuration.
|
||||
// The component order of the PWL table is untested, however, it's likely BGR
|
||||
// too, since DC_LUTA/B registers have values for blue first, and for red
|
||||
// last.
|
||||
struct TableEntry {
|
||||
union {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t b : 10;
|
||||
uint32_t g : 10;
|
||||
uint32_t r : 10;
|
||||
uint32_t : 2;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct PWLValue {
|
||||
union {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// The lower 6 bits are always zero (these are 10-bit in the upper bits
|
||||
// thus, not fully 16-bit).
|
||||
// See DC_LUTA/B_CONTROL for information about the way they should be
|
||||
// interpreted (`output = base + (multiplier * delta) / 2^increment`,
|
||||
// where the increment is the value specified in DC_LUTA/B_CONTROL for
|
||||
// the specific color channel, the base is 7 bits of the front buffer
|
||||
// value above `increment` bits, the multiplier is the lower `increment`
|
||||
// bits of it; the increment is nonzero, otherwise the 256-entry table
|
||||
// should be used instead).
|
||||
uint16_t base;
|
||||
uint16_t delta;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct PWLEntry {
|
||||
union {
|
||||
PWLValue values[3];
|
||||
struct {
|
||||
PWLValue b;
|
||||
PWLValue g;
|
||||
PWLValue r;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
TableEntry table[256];
|
||||
PWLEntry pwl[128];
|
||||
};
|
||||
|
||||
class CommandProcessor {
|
||||
public:
|
||||
enum class SwapPostEffect {
|
||||
|
@ -170,6 +116,13 @@ class CommandProcessor {
|
|||
|
||||
virtual void TracePlaybackWroteMemory(uint32_t base_ptr, uint32_t length) = 0;
|
||||
|
||||
void RestoreRegisters(uint32_t first_register,
|
||||
const uint32_t* register_values,
|
||||
uint32_t register_count, bool execute_callbacks);
|
||||
void RestoreGammaRamp(
|
||||
const reg::DC_LUT_30_COLOR* new_gamma_ramp_256_entry_table,
|
||||
const reg::DC_LUT_PWL_DATA* new_gamma_ramp_pwl_rgb,
|
||||
uint32_t new_gamma_ramp_rw_component);
|
||||
virtual void RestoreEdramSnapshot(const void* snapshot) = 0;
|
||||
|
||||
void InitializeRingBuffer(uint32_t ptr, uint32_t size_log2);
|
||||
|
@ -201,7 +154,14 @@ class CommandProcessor {
|
|||
|
||||
virtual void WriteRegister(uint32_t index, uint32_t value);
|
||||
|
||||
void UpdateGammaRampValue(GammaRampType type, uint32_t value);
|
||||
const reg::DC_LUT_30_COLOR* gamma_ramp_256_entry_table() const {
|
||||
return gamma_ramp_256_entry_table_;
|
||||
}
|
||||
const reg::DC_LUT_PWL_DATA* gamma_ramp_pwl_rgb() const {
|
||||
return gamma_ramp_pwl_rgb_[0];
|
||||
}
|
||||
virtual void OnGammaRamp256EntryTableValueWritten() {}
|
||||
virtual void OnGammaRampPWLValueWritten() {}
|
||||
|
||||
virtual void MakeCoherent();
|
||||
virtual void PrepareForWait();
|
||||
|
@ -285,9 +245,7 @@ class CommandProcessor {
|
|||
return swap_post_effect_actual_;
|
||||
}
|
||||
|
||||
// TODO(Triang3l): Write the gamma ramp (including the display controller
|
||||
// write pointers) in the common code.
|
||||
virtual void InitializeTrace() = 0;
|
||||
virtual void InitializeTrace();
|
||||
|
||||
Memory* memory_ = nullptr;
|
||||
kernel::KernelState* kernel_state_ = nullptr;
|
||||
|
@ -334,15 +292,15 @@ class CommandProcessor {
|
|||
|
||||
bool paused_ = false;
|
||||
|
||||
GammaRamp gamma_ramp_ = {};
|
||||
int gamma_ramp_rw_subindex_ = 0;
|
||||
bool dirty_gamma_ramp_table_ = true;
|
||||
bool dirty_gamma_ramp_pwl_ = true;
|
||||
|
||||
// By default (such as for tools), post-processing is disabled.
|
||||
// "Desired" is for the external thread managing the post-processing effect.
|
||||
SwapPostEffect swap_post_effect_desired_ = SwapPostEffect::kNone;
|
||||
SwapPostEffect swap_post_effect_actual_ = SwapPostEffect::kNone;
|
||||
|
||||
private:
|
||||
reg::DC_LUT_30_COLOR gamma_ramp_256_entry_table_[256] = {};
|
||||
reg::DC_LUT_PWL_DATA gamma_ramp_pwl_rgb_[128][3] = {};
|
||||
uint32_t gamma_ramp_rw_component_ = 0;
|
||||
};
|
||||
|
||||
} // namespace gpu
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <utility>
|
||||
|
||||
#include "xenia/base/assert.h"
|
||||
#include "xenia/base/byte_order.h"
|
||||
#include "xenia/base/cvar.h"
|
||||
#include "xenia/base/logging.h"
|
||||
#include "xenia/base/math.h"
|
||||
|
@ -1161,8 +1162,8 @@ bool D3D12CommandProcessor::SetupContext() {
|
|||
provider.GetHeapFlagCreateNotZeroed();
|
||||
|
||||
// Create gamma ramp resources.
|
||||
dirty_gamma_ramp_table_ = true;
|
||||
dirty_gamma_ramp_pwl_ = true;
|
||||
gamma_ramp_256_entry_table_up_to_date_ = false;
|
||||
gamma_ramp_pwl_up_to_date_ = false;
|
||||
D3D12_RESOURCE_DESC gamma_ramp_buffer_desc;
|
||||
ui::d3d12::util::FillBufferResourceDesc(
|
||||
gamma_ramp_buffer_desc, (256 + 128 * 3) * 4, D3D12_RESOURCE_FLAG_NONE);
|
||||
|
@ -1699,15 +1700,17 @@ void D3D12CommandProcessor::WriteRegister(uint32_t index, uint32_t value) {
|
|||
texture_cache_->TextureFetchConstantWritten(
|
||||
(index - XE_GPU_REG_SHADER_CONSTANT_FETCH_00_0) / 6);
|
||||
}
|
||||
} else if (index == XE_GPU_REG_DC_LUT_PWL_DATA) {
|
||||
UpdateGammaRampValue(GammaRampType::kPWL, value);
|
||||
} else if (index == XE_GPU_REG_DC_LUT_30_COLOR) {
|
||||
UpdateGammaRampValue(GammaRampType::kTable, value);
|
||||
} else if (index == XE_GPU_REG_DC_LUT_RW_MODE) {
|
||||
gamma_ramp_rw_subindex_ = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void D3D12CommandProcessor::OnGammaRamp256EntryTableValueWritten() {
|
||||
gamma_ramp_256_entry_table_up_to_date_ = false;
|
||||
}
|
||||
|
||||
void D3D12CommandProcessor::OnGammaRampPWLValueWritten() {
|
||||
gamma_ramp_pwl_up_to_date_ = false;
|
||||
}
|
||||
|
||||
void D3D12CommandProcessor::IssueSwap(uint32_t frontbuffer_ptr,
|
||||
uint32_t frontbuffer_width,
|
||||
uint32_t frontbuffer_height) {
|
||||
|
@ -1801,6 +1804,9 @@ void D3D12CommandProcessor::IssueSwap(uint32_t frontbuffer_ptr,
|
|||
// This is according to D3D::InitializePresentationParameters from a
|
||||
// game executable, which initializes the 256-entry table gamma ramp for
|
||||
// 8_8_8_8 output and the PWL gamma ramp for 2_10_10_10.
|
||||
// TODO(Triang3l): Choose between the table and PWL based on
|
||||
// DC_LUTA_CONTROL, support both for all formats (and also different
|
||||
// increments for PWL).
|
||||
bool use_pwl_gamma_ramp =
|
||||
frontbuffer_format == xenos::TextureFormat::k_2_10_10_10 ||
|
||||
frontbuffer_format ==
|
||||
|
@ -1811,20 +1817,43 @@ void D3D12CommandProcessor::IssueSwap(uint32_t frontbuffer_ptr,
|
|||
// Upload the new gamma ramp, using the upload buffer for the current
|
||||
// frame (will close the frame after this anyway, so can't write
|
||||
// multiple times per frame).
|
||||
if (use_pwl_gamma_ramp ? dirty_gamma_ramp_pwl_
|
||||
: dirty_gamma_ramp_table_) {
|
||||
if (!(use_pwl_gamma_ramp ? gamma_ramp_pwl_up_to_date_
|
||||
: gamma_ramp_256_entry_table_up_to_date_)) {
|
||||
uint32_t gamma_ramp_offset_bytes = use_pwl_gamma_ramp ? 256 * 4 : 0;
|
||||
uint32_t gamma_ramp_upload_offset_bytes =
|
||||
uint32_t(frame_current_ % kQueueFrames) * ((256 + 128 * 3) * 4) +
|
||||
gamma_ramp_offset_bytes;
|
||||
uint32_t gamma_ramp_size_bytes =
|
||||
(use_pwl_gamma_ramp ? 128 * 3 : 256) * 4;
|
||||
std::memcpy(gamma_ramp_upload_buffer_mapping_ +
|
||||
if (std::endian::native != std::endian::little &&
|
||||
use_pwl_gamma_ramp) {
|
||||
// R16G16 is first R16, where the shader expects the base, and
|
||||
// second G16, where the delta should be, but gamma_ramp_pwl_rgb()
|
||||
// is an array of 32-bit DC_LUT_PWL_DATA registers - swap 16 bits in
|
||||
// each 32.
|
||||
auto gamma_ramp_pwl_upload_buffer =
|
||||
reinterpret_cast<reg::DC_LUT_PWL_DATA*>(
|
||||
gamma_ramp_upload_buffer_mapping_ +
|
||||
gamma_ramp_upload_offset_bytes);
|
||||
const reg::DC_LUT_PWL_DATA* gamma_ramp_pwl = gamma_ramp_pwl_rgb();
|
||||
for (size_t i = 0; i < 128 * 3; ++i) {
|
||||
reg::DC_LUT_PWL_DATA& gamma_ramp_pwl_upload_buffer_entry =
|
||||
gamma_ramp_pwl_upload_buffer[i];
|
||||
reg::DC_LUT_PWL_DATA gamma_ramp_pwl_entry = gamma_ramp_pwl[i];
|
||||
gamma_ramp_pwl_upload_buffer_entry.base =
|
||||
gamma_ramp_pwl_entry.delta;
|
||||
gamma_ramp_pwl_upload_buffer_entry.delta =
|
||||
gamma_ramp_pwl_entry.base;
|
||||
}
|
||||
} else {
|
||||
std::memcpy(
|
||||
gamma_ramp_upload_buffer_mapping_ +
|
||||
gamma_ramp_upload_offset_bytes,
|
||||
use_pwl_gamma_ramp
|
||||
? static_cast<const void*>(gamma_ramp_.pwl)
|
||||
: static_cast<const void*>(gamma_ramp_.table),
|
||||
? static_cast<const void*>(gamma_ramp_pwl_rgb())
|
||||
: static_cast<const void*>(gamma_ramp_256_entry_table()),
|
||||
gamma_ramp_size_bytes);
|
||||
}
|
||||
PushTransitionBarrier(gamma_ramp_buffer_.Get(),
|
||||
gamma_ramp_buffer_state_,
|
||||
D3D12_RESOURCE_STATE_COPY_DEST);
|
||||
|
@ -1834,8 +1863,8 @@ void D3D12CommandProcessor::IssueSwap(uint32_t frontbuffer_ptr,
|
|||
gamma_ramp_buffer_.Get(), gamma_ramp_offset_bytes,
|
||||
gamma_ramp_upload_buffer_.Get(), gamma_ramp_upload_offset_bytes,
|
||||
gamma_ramp_size_bytes);
|
||||
(use_pwl_gamma_ramp ? dirty_gamma_ramp_pwl_
|
||||
: dirty_gamma_ramp_table_) = false;
|
||||
(use_pwl_gamma_ramp ? gamma_ramp_pwl_up_to_date_
|
||||
: gamma_ramp_256_entry_table_up_to_date_) = true;
|
||||
}
|
||||
|
||||
// Destination, source, and if bindful, gamma ramp.
|
||||
|
@ -2589,6 +2618,8 @@ bool D3D12CommandProcessor::IssueDraw(xenos::PrimitiveType primitive_type,
|
|||
}
|
||||
|
||||
void D3D12CommandProcessor::InitializeTrace() {
|
||||
CommandProcessor::InitializeTrace();
|
||||
|
||||
if (!BeginSubmission(false)) {
|
||||
return;
|
||||
}
|
||||
|
@ -3330,32 +3361,39 @@ void D3D12CommandProcessor::UpdateSystemConstantValues(
|
|||
float(pa_su_point_minmax.min_size) * (2.0f / 16.0f);
|
||||
float point_vertex_diameter_max =
|
||||
float(pa_su_point_minmax.max_size) * (2.0f / 16.0f);
|
||||
float point_constant_radius_x =
|
||||
float(pa_su_point_size.width) * (1.0f / 16.0f);
|
||||
float point_constant_radius_y =
|
||||
float(pa_su_point_size.height) * (1.0f / 16.0f);
|
||||
float point_constant_diameter_x =
|
||||
float(pa_su_point_size.width) * (2.0f / 16.0f);
|
||||
float point_constant_diameter_y =
|
||||
float(pa_su_point_size.height) * (2.0f / 16.0f);
|
||||
dirty |=
|
||||
system_constants_.point_vertex_diameter_min != point_vertex_diameter_min;
|
||||
dirty |=
|
||||
system_constants_.point_vertex_diameter_max != point_vertex_diameter_max;
|
||||
dirty |=
|
||||
system_constants_.point_constant_radius[0] != point_constant_radius_x;
|
||||
system_constants_.point_constant_diameter[0] != point_constant_diameter_x;
|
||||
dirty |=
|
||||
system_constants_.point_constant_radius[1] != point_constant_radius_y;
|
||||
system_constants_.point_constant_diameter[1] != point_constant_diameter_y;
|
||||
system_constants_.point_vertex_diameter_min = point_vertex_diameter_min;
|
||||
system_constants_.point_vertex_diameter_max = point_vertex_diameter_max;
|
||||
system_constants_.point_constant_radius[0] = point_constant_radius_x;
|
||||
system_constants_.point_constant_radius[1] = point_constant_radius_y;
|
||||
float point_screen_to_ndc_x =
|
||||
system_constants_.point_constant_diameter[0] = point_constant_diameter_x;
|
||||
system_constants_.point_constant_diameter[1] = point_constant_diameter_y;
|
||||
// 2 because 1 in the NDC is half of the viewport's axis, 0.5 for diameter to
|
||||
// radius conversion to avoid multiplying the per-vertex diameter by an
|
||||
// additional constant in the shader.
|
||||
float point_screen_diameter_to_ndc_radius_x =
|
||||
(/* 0.5f * 2.0f * */ float(resolution_scale_x)) /
|
||||
std::max(viewport_info.xy_extent[0], uint32_t(1));
|
||||
float point_screen_to_ndc_y =
|
||||
float point_screen_diameter_to_ndc_radius_y =
|
||||
(/* 0.5f * 2.0f * */ float(resolution_scale_y)) /
|
||||
std::max(viewport_info.xy_extent[1], uint32_t(1));
|
||||
dirty |= system_constants_.point_screen_to_ndc[0] != point_screen_to_ndc_x;
|
||||
dirty |= system_constants_.point_screen_to_ndc[1] != point_screen_to_ndc_y;
|
||||
system_constants_.point_screen_to_ndc[0] = point_screen_to_ndc_x;
|
||||
system_constants_.point_screen_to_ndc[1] = point_screen_to_ndc_y;
|
||||
dirty |= system_constants_.point_screen_diameter_to_ndc_radius[0] !=
|
||||
point_screen_diameter_to_ndc_radius_x;
|
||||
dirty |= system_constants_.point_screen_diameter_to_ndc_radius[1] !=
|
||||
point_screen_diameter_to_ndc_radius_y;
|
||||
system_constants_.point_screen_diameter_to_ndc_radius[0] =
|
||||
point_screen_diameter_to_ndc_radius_x;
|
||||
system_constants_.point_screen_diameter_to_ndc_radius[1] =
|
||||
point_screen_diameter_to_ndc_radius_y;
|
||||
|
||||
// Interpolator sampling pattern, centroid or center.
|
||||
uint32_t interpolator_sampling_pattern =
|
||||
|
|
|
@ -209,6 +209,9 @@ class D3D12CommandProcessor : public CommandProcessor {
|
|||
|
||||
void WriteRegister(uint32_t index, uint32_t value) override;
|
||||
|
||||
void OnGammaRamp256EntryTableValueWritten() override;
|
||||
void OnGammaRampPWLValueWritten() override;
|
||||
|
||||
void IssueSwap(uint32_t frontbuffer_ptr, uint32_t frontbuffer_width,
|
||||
uint32_t frontbuffer_height) override;
|
||||
|
||||
|
@ -496,17 +499,18 @@ class D3D12CommandProcessor : public CommandProcessor {
|
|||
|
||||
std::unique_ptr<TextureCache> texture_cache_;
|
||||
|
||||
// Bytes 0x0...0x3FF - 256-entry R10G10B10X2 gamma ramp (red and blue must be
|
||||
// read as swapped - 535107D4 has settings allowing separate configuration).
|
||||
// Bytes 0x0...0x3FF - 256-entry gamma ramp table with B10G10R10X2 data (read
|
||||
// as R10G10B10X2 with swizzle).
|
||||
// Bytes 0x400...0x9FF - 128-entry PWL R16G16 gamma ramp (R - base, G - delta,
|
||||
// low 6 bits of each are zero, 3 elements per entry).
|
||||
// https://www.x.org/docs/AMD/old/42590_m76_rrg_1.01o.pdf
|
||||
Microsoft::WRL::ComPtr<ID3D12Resource> gamma_ramp_buffer_;
|
||||
D3D12_RESOURCE_STATES gamma_ramp_buffer_state_;
|
||||
// Upload buffer for an image that is the same as gamma_ramp_, but with
|
||||
// kQueueFrames array layers.
|
||||
Microsoft::WRL::ComPtr<ID3D12Resource> gamma_ramp_upload_buffer_;
|
||||
uint8_t* gamma_ramp_upload_buffer_mapping_ = nullptr;
|
||||
bool gamma_ramp_256_entry_table_up_to_date_ = false;
|
||||
bool gamma_ramp_pwl_up_to_date_ = false;
|
||||
|
||||
struct ApplyGammaConstants {
|
||||
uint32_t size[2];
|
||||
|
|
|
@ -2943,10 +2943,10 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) {
|
|||
kTransferSRVRegisterHostDepth));
|
||||
}
|
||||
a.OpDclInputPSSIV(dxbc::InterpolationMode::kLinearNoPerspective,
|
||||
dxbc::Dest::V(kInputRegisterPosition, 0b0011),
|
||||
dxbc::Dest::V1D(kInputRegisterPosition, 0b0011),
|
||||
dxbc::Name::kPosition);
|
||||
if (key.dest_msaa_samples != xenos::MsaaSamples::k1X) {
|
||||
a.OpDclInputPSSGV(dxbc::Dest::V(kInputRegisterSampleIndex, 0b0001),
|
||||
a.OpDclInputPSSGV(dxbc::Dest::V1D(kInputRegisterSampleIndex, 0b0001),
|
||||
dxbc::Name::kSampleIndex);
|
||||
}
|
||||
if (osgn_parameter_index_sv_target != UINT32_MAX) {
|
||||
|
@ -2971,7 +2971,7 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) {
|
|||
// Split the destination pixel index into 32bpp tile in r0.z and
|
||||
// 32bpp-tile-relative pixel index in r0.xy.
|
||||
// r0.xy = pixel XY as uint
|
||||
a.OpFToU(dxbc::Dest::R(0, 0b0011), dxbc::Src::V(kInputRegisterPosition));
|
||||
a.OpFToU(dxbc::Dest::R(0, 0b0011), dxbc::Src::V1D(kInputRegisterPosition));
|
||||
uint32_t dest_sample_width_log2 =
|
||||
uint32_t(dest_is_64bpp) +
|
||||
uint32_t(key.dest_msaa_samples >= xenos::MsaaSamples::k4X);
|
||||
|
@ -3057,7 +3057,7 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) {
|
|||
// If 64bpp -> 32bpp, also the needed half in r0.w.
|
||||
|
||||
dxbc::Src dest_sample(
|
||||
dxbc::Src::V(kInputRegisterSampleIndex, dxbc::Src::kXXXX));
|
||||
dxbc::Src::V1D(kInputRegisterSampleIndex, dxbc::Src::kXXXX));
|
||||
dxbc::Src source_sample(dest_sample);
|
||||
uint32_t source_tile_pixel_x_reg = 0;
|
||||
uint32_t source_tile_pixel_y_reg = 0;
|
||||
|
@ -3086,7 +3086,7 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) {
|
|||
source_sample = dxbc::Src::R(1, dxbc::Src::kZZZZ);
|
||||
a.OpBFI(dxbc::Dest::R(1, 0b0001), dxbc::Src::LU(31), dxbc::Src::LU(1),
|
||||
dxbc::Src::R(0, dxbc::Src::kXXXX),
|
||||
dxbc::Src::V(kInputRegisterSampleIndex, dxbc::Src::kXXXX));
|
||||
dxbc::Src::V1D(kInputRegisterSampleIndex, dxbc::Src::kXXXX));
|
||||
source_tile_pixel_x_reg = 1;
|
||||
} else if (key.dest_msaa_samples == xenos::MsaaSamples::k2X) {
|
||||
// 32bpp -> 64bpp, 4x -> 2x.
|
||||
|
@ -3128,7 +3128,7 @@ D3D12RenderTargetCache::GetOrCreateTransferPipelines(TransferShaderKey key) {
|
|||
a.OpIShL(dxbc::Dest::R(1, 0b0001), dxbc::Src::R(0, dxbc::Src::kXXXX),
|
||||
dxbc::Src::LU(2));
|
||||
a.OpBFI(dxbc::Dest::R(1, 0b0001), dxbc::Src::LU(1), dxbc::Src::LU(1),
|
||||
dxbc::Src::V(kInputRegisterSampleIndex, dxbc::Src::kXXXX),
|
||||
dxbc::Src::V1D(kInputRegisterSampleIndex, dxbc::Src::kXXXX),
|
||||
dxbc::Src::R(1, dxbc::Src::kXXXX));
|
||||
source_tile_pixel_x_reg = 1;
|
||||
// Y is handled by common code.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
|||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2018 Ben Vanik. All rights reserved. *
|
||||
* Copyright 2022 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
@ -13,6 +13,7 @@
|
|||
#include <condition_variable>
|
||||
#include <cstdio>
|
||||
#include <deque>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
|
@ -21,6 +22,7 @@
|
|||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "xenia/base/assert.h"
|
||||
#include "xenia/base/hash.h"
|
||||
#include "xenia/base/platform.h"
|
||||
#include "xenia/base/string_buffer.h"
|
||||
|
@ -230,9 +232,37 @@ class PipelineCache {
|
|||
ID3D12RootSignature* root_signature;
|
||||
D3D12Shader::D3D12Translation* vertex_shader;
|
||||
D3D12Shader::D3D12Translation* pixel_shader;
|
||||
const std::vector<uint32_t>* geometry_shader;
|
||||
PipelineDescription description;
|
||||
};
|
||||
|
||||
union GeometryShaderKey {
|
||||
uint32_t key;
|
||||
struct {
|
||||
PipelineGeometryShader type : 2;
|
||||
uint32_t interpolator_count : 5;
|
||||
uint32_t user_clip_plane_count : 3;
|
||||
uint32_t user_clip_plane_cull : 1;
|
||||
uint32_t has_vertex_kill_and : 1;
|
||||
uint32_t has_point_size : 1;
|
||||
uint32_t has_point_coordinates : 1;
|
||||
};
|
||||
|
||||
GeometryShaderKey() : key(0) { static_assert_size(*this, sizeof(key)); }
|
||||
|
||||
struct Hasher {
|
||||
size_t operator()(const GeometryShaderKey& key) const {
|
||||
return std::hash<uint32_t>{}(key.key);
|
||||
}
|
||||
};
|
||||
bool operator==(const GeometryShaderKey& other_key) const {
|
||||
return key == other_key.key;
|
||||
}
|
||||
bool operator!=(const GeometryShaderKey& other_key) const {
|
||||
return !(*this == other_key);
|
||||
}
|
||||
};
|
||||
|
||||
D3D12Shader* LoadShader(xenos::ShaderType shader_type,
|
||||
const uint32_t* host_address, uint32_t dword_count,
|
||||
uint64_t data_hash);
|
||||
|
@ -257,6 +287,12 @@ class PipelineCache {
|
|||
const uint32_t* bound_depth_and_color_render_target_formats,
|
||||
PipelineRuntimeDescription& runtime_description_out);
|
||||
|
||||
static bool GetGeometryShaderKey(PipelineGeometryShader geometry_shader_type,
|
||||
GeometryShaderKey& key_out);
|
||||
static void CreateDxbcGeometryShader(GeometryShaderKey key,
|
||||
std::vector<uint32_t>& shader_out);
|
||||
const std::vector<uint32_t>& GetGeometryShader(GeometryShaderKey key);
|
||||
|
||||
ID3D12PipelineState* CreateD3D12Pipeline(
|
||||
const PipelineRuntimeDescription& runtime_description);
|
||||
|
||||
|
@ -302,6 +338,11 @@ class PipelineCache {
|
|||
xe::hash::IdentityHasher<uint64_t>>
|
||||
bindless_sampler_layout_map_;
|
||||
|
||||
// Geometry shaders for Xenos primitive types not supported by Direct3D 12.
|
||||
std::unordered_map<GeometryShaderKey, std::vector<uint32_t>,
|
||||
GeometryShaderKey::Hasher>
|
||||
geometry_shaders_;
|
||||
|
||||
// Empty depth-only pixel shader for writing to depth buffer via ROV when no
|
||||
// Xenos pixel shader provided.
|
||||
std::vector<uint8_t> depth_only_pixel_shader_;
|
||||
|
|
|
@ -166,8 +166,11 @@ struct alignas(uint32_t) BlobHeader {
|
|||
// In order of appearance in a container.
|
||||
kResourceDefinition = MakeFourCC('R', 'D', 'E', 'F'),
|
||||
kInputSignature = MakeFourCC('I', 'S', 'G', 'N'),
|
||||
kInputSignature_11_1 = MakeFourCC('I', 'S', 'G', '1'),
|
||||
kPatchConstantSignature = MakeFourCC('P', 'C', 'S', 'G'),
|
||||
kOutputSignature = MakeFourCC('O', 'S', 'G', 'N'),
|
||||
kOutputSignatureForGS = MakeFourCC('O', 'S', 'G', '5'),
|
||||
kOutputSignature_11_1 = MakeFourCC('O', 'S', 'G', '1'),
|
||||
kShaderEx = MakeFourCC('S', 'H', 'E', 'X'),
|
||||
kShaderFeatureInfo = MakeFourCC('S', 'F', 'I', '0'),
|
||||
kStatistics = MakeFourCC('S', 'T', 'A', 'T'),
|
||||
|
@ -320,6 +323,7 @@ enum RdefInputFlags : uint32_t {
|
|||
enum class RdefShaderModel : uint32_t {
|
||||
kPixelShader5_1 = 0xFFFF0501u,
|
||||
kVertexShader5_1 = 0xFFFE0501u,
|
||||
kGeometryShader5_1 = 0x47530501u,
|
||||
kDomainShader5_1 = 0x44530501u,
|
||||
kComputeShader5_1 = 0x43530501u,
|
||||
};
|
||||
|
@ -467,8 +471,7 @@ enum class SignatureRegisterComponentType : uint32_t {
|
|||
};
|
||||
|
||||
// D3D_MIN_PRECISION
|
||||
// uint8_t as it's used as one byte in SignatureParameter.
|
||||
enum class MinPrecision : uint8_t {
|
||||
enum class MinPrecision : uint32_t {
|
||||
kDefault,
|
||||
kFloat16,
|
||||
kFloat2_8,
|
||||
|
@ -478,7 +481,7 @@ enum class MinPrecision : uint8_t {
|
|||
kAny10,
|
||||
};
|
||||
|
||||
// D3D11_INTERNALSHADER_PARAMETER_11_1
|
||||
// D3D10_INTERNALSHADER_PARAMETER
|
||||
struct alignas(uint32_t) SignatureParameter {
|
||||
uint32_t semantic_name_ptr;
|
||||
uint32_t semantic_index;
|
||||
|
@ -496,10 +499,45 @@ struct alignas(uint32_t) SignatureParameter {
|
|||
// For an input signature.
|
||||
uint8_t always_reads_mask;
|
||||
};
|
||||
MinPrecision min_precision;
|
||||
};
|
||||
static_assert_size(SignatureParameter, sizeof(uint32_t) * 6);
|
||||
|
||||
// D3D11_INTERNALSHADER_PARAMETER_FOR_GS
|
||||
// Extends SignatureParameter, see it for more information.
|
||||
struct alignas(uint32_t) SignatureParameterForGS {
|
||||
// Stream index (parameters must appear in non-decreasing stream order).
|
||||
uint32_t stream;
|
||||
uint32_t semantic_name_ptr;
|
||||
uint32_t semantic_index;
|
||||
Name system_value;
|
||||
SignatureRegisterComponentType component_type;
|
||||
uint32_t register_index;
|
||||
uint8_t mask;
|
||||
union {
|
||||
uint8_t never_writes_mask;
|
||||
uint8_t always_reads_mask;
|
||||
};
|
||||
};
|
||||
static_assert_size(SignatureParameterForGS, sizeof(uint32_t) * 7);
|
||||
|
||||
// D3D11_INTERNALSHADER_PARAMETER_11_1
|
||||
// Extends SignatureParameterForGS, see it for more information.
|
||||
struct alignas(uint32_t) SignatureParameter_11_1 {
|
||||
uint32_t stream;
|
||||
uint32_t semantic_name_ptr;
|
||||
uint32_t semantic_index;
|
||||
Name system_value;
|
||||
SignatureRegisterComponentType component_type;
|
||||
uint32_t register_index;
|
||||
uint8_t mask;
|
||||
union {
|
||||
uint8_t never_writes_mask;
|
||||
uint8_t always_reads_mask;
|
||||
};
|
||||
MinPrecision min_precision;
|
||||
};
|
||||
static_assert_size(SignatureParameter_11_1, sizeof(uint32_t) * 8);
|
||||
|
||||
// D3D10_INTERNALSHADER_SIGNATURE
|
||||
struct alignas(uint32_t) Signature {
|
||||
uint32_t parameter_count;
|
||||
|
@ -543,6 +581,62 @@ enum class TessellatorDomain : uint32_t {
|
|||
kQuad,
|
||||
};
|
||||
|
||||
// D3D10_SB_PRIMITIVE_TOPOLOGY
|
||||
enum class PrimitiveTopology : uint32_t {
|
||||
kUndefined = 0,
|
||||
kPointList = 1,
|
||||
kLineList = 2,
|
||||
kLineStrip = 3,
|
||||
kTriangleList = 4,
|
||||
kTriangleStrip = 5,
|
||||
kLineListWithAdjacency = 10,
|
||||
kLineStripWithAdjacency = 11,
|
||||
kTriangleListWithAdjacency = 12,
|
||||
kTriangleStripWithAdjacency = 13,
|
||||
};
|
||||
|
||||
// D3D10_SB_PRIMITIVE
|
||||
enum class Primitive : uint32_t {
|
||||
kUndefined = 0,
|
||||
kPoint = 1,
|
||||
kLine = 2,
|
||||
kTriangle = 3,
|
||||
kLineWithAdjacency = 6,
|
||||
kTriangleWithAdjacency = 7,
|
||||
k1ControlPointPatch = 8,
|
||||
k2ControlPointPatch = 9,
|
||||
k3ControlPointPatch = 10,
|
||||
k4ControlPointPatch = 11,
|
||||
k5ControlPointPatch = 12,
|
||||
k6ControlPointPatch = 13,
|
||||
k7ControlPointPatch = 14,
|
||||
k8ControlPointPatch = 15,
|
||||
k9ControlPointPatch = 16,
|
||||
k10ControlPointPatch = 17,
|
||||
k11ControlPointPatch = 18,
|
||||
k12ControlPointPatch = 19,
|
||||
k13ControlPointPatch = 20,
|
||||
k14ControlPointPatch = 21,
|
||||
k15ControlPointPatch = 22,
|
||||
k16ControlPointPatch = 23,
|
||||
k17ControlPointPatch = 24,
|
||||
k18ControlPointPatch = 25,
|
||||
k19ControlPointPatch = 26,
|
||||
k20ControlPointPatch = 27,
|
||||
k21ControlPointPatch = 28,
|
||||
k22ControlPointPatch = 29,
|
||||
k23ControlPointPatch = 30,
|
||||
k24ControlPointPatch = 31,
|
||||
k25ControlPointPatch = 32,
|
||||
k26ControlPointPatch = 33,
|
||||
k27ControlPointPatch = 34,
|
||||
k28ControlPointPatch = 35,
|
||||
k29ControlPointPatch = 36,
|
||||
k30ControlPointPatch = 37,
|
||||
k31ControlPointPatch = 38,
|
||||
k32ControlPointPatch = 39,
|
||||
};
|
||||
|
||||
// The STAT blob (based on Wine d3dcompiler_parse_stat).
|
||||
struct alignas(uint32_t) Statistics {
|
||||
// Not increased by declarations and labels.
|
||||
|
@ -577,8 +671,8 @@ struct alignas(uint32_t) Statistics {
|
|||
uint32_t conversion_instruction_count; // +54
|
||||
// Unknown in Wine.
|
||||
uint32_t unknown_22; // +58
|
||||
uint32_t input_primitive; // +5C
|
||||
uint32_t gs_output_topology; // +60
|
||||
Primitive input_primitive; // +5C
|
||||
PrimitiveTopology gs_output_topology; // +60
|
||||
uint32_t gs_max_output_vertex_count; // +64
|
||||
uint32_t unknown_26; // +68
|
||||
// Unknown in Wine, but confirmed by testing.
|
||||
|
@ -644,6 +738,7 @@ enum class OperandType : uint32_t {
|
|||
kOutputDepth = 12,
|
||||
kNull = 13,
|
||||
kOutputCoverageMask = 15,
|
||||
kStream = 16,
|
||||
kInputControlPoint = 25,
|
||||
kInputDomainPoint = 28,
|
||||
kUnorderedAccessView = 30,
|
||||
|
@ -655,33 +750,6 @@ enum class OperandType : uint32_t {
|
|||
kOutputStencilRef = 41,
|
||||
};
|
||||
|
||||
// D3D10_SB_OPERAND_INDEX_DIMENSION
|
||||
constexpr uint32_t GetOperandIndexDimension(OperandType type,
|
||||
bool in_dcl = false) {
|
||||
switch (type) {
|
||||
case OperandType::kTemp:
|
||||
case OperandType::kInput:
|
||||
// FIXME(Triang3l): kInput has a dimensionality of 2 in the control point
|
||||
// phase of hull shaders, however, currently the translator isn't used to
|
||||
// emit them - if code where this matters is emitted by Xenia, the actual
|
||||
// dimensionality will need to be stored in OperandAddress itself.
|
||||
case OperandType::kOutput:
|
||||
case OperandType::kLabel:
|
||||
return 1;
|
||||
case OperandType::kIndexableTemp:
|
||||
case OperandType::kInputControlPoint:
|
||||
return 2;
|
||||
case OperandType::kSampler:
|
||||
case OperandType::kResource:
|
||||
case OperandType::kUnorderedAccessView:
|
||||
return in_dcl ? 3 : 2;
|
||||
case OperandType::kConstantBuffer:
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// D3D10_SB_OPERAND_NUM_COMPONENTS
|
||||
enum class OperandDimension : uint32_t {
|
||||
kNoData, // D3D10_SB_OPERAND_0_COMPONENT
|
||||
|
@ -696,6 +764,7 @@ constexpr OperandDimension GetOperandDimension(OperandType type,
|
|||
return in_dcl ? OperandDimension::kVector : OperandDimension::kNoData;
|
||||
case OperandType::kLabel:
|
||||
case OperandType::kNull:
|
||||
case OperandType::kStream:
|
||||
return OperandDimension::kNoData;
|
||||
case OperandType::kInputPrimitiveID:
|
||||
case OperandType::kOutputDepth:
|
||||
|
@ -766,11 +835,22 @@ struct Index {
|
|||
|
||||
struct OperandAddress {
|
||||
OperandType type_;
|
||||
uint32_t index_dimension_;
|
||||
Index index_1d_, index_2d_, index_3d_;
|
||||
|
||||
explicit OperandAddress(OperandType type, Index index_1d = Index(),
|
||||
Index index_2d = Index(), Index index_3d = Index())
|
||||
explicit OperandAddress(OperandType type)
|
||||
: type_(type), index_dimension_(0) {}
|
||||
explicit OperandAddress(OperandType type, Index index_1d)
|
||||
: type_(type), index_dimension_(1), index_1d_(index_1d) {}
|
||||
explicit OperandAddress(OperandType type, Index index_1d, Index index_2d)
|
||||
: type_(type),
|
||||
index_dimension_(2),
|
||||
index_1d_(index_1d),
|
||||
index_2d_(index_2d) {}
|
||||
explicit OperandAddress(OperandType type, Index index_1d, Index index_2d,
|
||||
Index index_3d)
|
||||
: type_(type),
|
||||
index_dimension_(3),
|
||||
index_1d_(index_1d),
|
||||
index_2d_(index_2d),
|
||||
index_3d_(index_3d) {}
|
||||
|
@ -778,44 +858,38 @@ struct OperandAddress {
|
|||
OperandDimension GetDimension(bool in_dcl = false) const {
|
||||
return GetOperandDimension(type_, in_dcl);
|
||||
}
|
||||
uint32_t GetIndexDimension(bool in_dcl = false) const {
|
||||
return GetOperandIndexDimension(type_, in_dcl);
|
||||
}
|
||||
uint32_t GetOperandTokenTypeAndIndex(bool in_dcl = false) const {
|
||||
uint32_t index_dimension = GetIndexDimension(in_dcl);
|
||||
uint32_t operand_token = (uint32_t(type_) << 12) | (index_dimension << 20);
|
||||
if (index_dimension > 0) {
|
||||
uint32_t GetOperandTokenTypeAndIndex() const {
|
||||
uint32_t operand_token = (uint32_t(type_) << 12) | (index_dimension_ << 20);
|
||||
if (index_dimension_ > 0) {
|
||||
operand_token |= uint32_t(index_1d_.GetRepresentation()) << 22;
|
||||
if (index_dimension > 1) {
|
||||
if (index_dimension_ > 1) {
|
||||
operand_token |= uint32_t(index_2d_.GetRepresentation()) << 25;
|
||||
if (index_dimension > 2) {
|
||||
if (index_dimension_ > 2) {
|
||||
operand_token |= uint32_t(index_3d_.GetRepresentation()) << 28;
|
||||
}
|
||||
}
|
||||
}
|
||||
return operand_token;
|
||||
}
|
||||
uint32_t GetLength(bool in_dcl = false) const {
|
||||
uint32_t GetLength() const {
|
||||
uint32_t length = 0;
|
||||
uint32_t index_dimension = GetIndexDimension(in_dcl);
|
||||
if (index_dimension > 0) {
|
||||
if (index_dimension_ > 0) {
|
||||
length += index_1d_.GetLength();
|
||||
if (index_dimension > 1) {
|
||||
if (index_dimension_ > 1) {
|
||||
length += index_2d_.GetLength();
|
||||
if (index_dimension > 2) {
|
||||
if (index_dimension_ > 2) {
|
||||
length += index_3d_.GetLength();
|
||||
}
|
||||
}
|
||||
}
|
||||
return length;
|
||||
}
|
||||
void Write(std::vector<uint32_t>& code, bool in_dcl = false) const {
|
||||
uint32_t index_dimension = GetIndexDimension(in_dcl);
|
||||
if (index_dimension > 0) {
|
||||
void Write(std::vector<uint32_t>& code) const {
|
||||
if (index_dimension_ > 0) {
|
||||
index_1d_.Write(code);
|
||||
if (index_dimension > 1) {
|
||||
if (index_dimension_ > 1) {
|
||||
index_2d_.Write(code);
|
||||
if (index_dimension > 2) {
|
||||
if (index_dimension_ > 2) {
|
||||
index_3d_.Write(code);
|
||||
}
|
||||
}
|
||||
|
@ -845,18 +919,28 @@ struct Dest : OperandAddress {
|
|||
// declarations use read masks instead of swizzle (resource declarations still
|
||||
// use swizzle when they're vector, however).
|
||||
|
||||
explicit Dest(OperandType type, uint32_t write_mask = 0b1111,
|
||||
Index index_1d = Index(), Index index_2d = Index(),
|
||||
Index index_3d = Index())
|
||||
explicit Dest(OperandType type, uint32_t write_mask)
|
||||
: OperandAddress(type), write_mask_(write_mask) {}
|
||||
explicit Dest(OperandType type, uint32_t write_mask, Index index_1d)
|
||||
: OperandAddress(type, index_1d), write_mask_(write_mask) {}
|
||||
explicit Dest(OperandType type, uint32_t write_mask, Index index_1d,
|
||||
Index index_2d)
|
||||
: OperandAddress(type, index_1d, index_2d), write_mask_(write_mask) {}
|
||||
explicit Dest(OperandType type, uint32_t write_mask, Index index_1d,
|
||||
Index index_2d, Index index_3d)
|
||||
: OperandAddress(type, index_1d, index_2d, index_3d),
|
||||
write_mask_(write_mask) {}
|
||||
|
||||
static Dest R(uint32_t index, uint32_t write_mask = 0b1111) {
|
||||
return Dest(OperandType::kTemp, write_mask, index);
|
||||
}
|
||||
static Dest V(uint32_t index, uint32_t read_mask = 0b1111) {
|
||||
static Dest V1D(uint32_t index, uint32_t read_mask = 0b1111) {
|
||||
return Dest(OperandType::kInput, read_mask, index);
|
||||
}
|
||||
static Dest V2D(uint32_t index_1d, uint32_t index_2d,
|
||||
uint32_t read_mask = 0b1111) {
|
||||
return Dest(OperandType::kInput, read_mask, index_1d, index_2d);
|
||||
}
|
||||
static Dest O(Index index, uint32_t write_mask = 0b1111) {
|
||||
return Dest(OperandType::kOutput, write_mask, index);
|
||||
}
|
||||
|
@ -868,6 +952,9 @@ struct Dest : OperandAddress {
|
|||
static Dest ODepth() { return Dest(OperandType::kOutputDepth, 0b0001); }
|
||||
static Dest Null() { return Dest(OperandType::kNull, 0b0000); }
|
||||
static Dest OMask() { return Dest(OperandType::kOutputCoverageMask, 0b0001); }
|
||||
static Dest M(uint32_t index) {
|
||||
return Dest(OperandType::kStream, 0b0000, index);
|
||||
}
|
||||
static Dest VICP(uint32_t control_point_count, uint32_t element,
|
||||
uint32_t read_mask = 0b1111) {
|
||||
return Dest(OperandType::kInputControlPoint, read_mask, control_point_count,
|
||||
|
@ -915,11 +1002,14 @@ struct Dest : OperandAddress {
|
|||
}
|
||||
}
|
||||
[[nodiscard]] Dest Mask(uint32_t write_mask) const {
|
||||
return Dest(type_, write_mask, index_1d_, index_2d_, index_3d_);
|
||||
Dest new_dest(*this);
|
||||
new_dest.write_mask_ = write_mask;
|
||||
return new_dest;
|
||||
}
|
||||
[[nodiscard]] Dest MaskMasked(uint32_t write_mask) const {
|
||||
return Dest(type_, write_mask_ & write_mask, index_1d_, index_2d_,
|
||||
index_3d_);
|
||||
Dest new_dest(*this);
|
||||
new_dest.write_mask_ &= write_mask;
|
||||
return new_dest;
|
||||
}
|
||||
static uint32_t GetMaskSingleComponent(uint32_t write_mask) {
|
||||
uint32_t component;
|
||||
|
@ -934,11 +1024,9 @@ struct Dest : OperandAddress {
|
|||
return GetMaskSingleComponent(GetMask(in_dcl));
|
||||
}
|
||||
|
||||
uint32_t GetLength(bool in_dcl = false) const {
|
||||
return 1 + OperandAddress::GetLength(in_dcl);
|
||||
}
|
||||
uint32_t GetLength() const { return 1 + OperandAddress::GetLength(); }
|
||||
void Write(std::vector<uint32_t>& code, bool in_dcl = false) const {
|
||||
uint32_t operand_token = GetOperandTokenTypeAndIndex(in_dcl);
|
||||
uint32_t operand_token = GetOperandTokenTypeAndIndex();
|
||||
OperandDimension dimension = GetDimension(in_dcl);
|
||||
operand_token |= uint32_t(dimension);
|
||||
if (dimension == OperandDimension::kVector) {
|
||||
|
@ -947,7 +1035,7 @@ struct Dest : OperandAddress {
|
|||
(uint32_t(ComponentSelection::kMask) << 2) | (write_mask_ << 4);
|
||||
}
|
||||
code.push_back(operand_token);
|
||||
OperandAddress::Write(code, in_dcl);
|
||||
OperandAddress::Write(code);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -962,18 +1050,21 @@ struct Src : OperandAddress {
|
|||
|
||||
// Ignored for 0-component and 1-component operand types.
|
||||
uint32_t swizzle_;
|
||||
bool absolute_;
|
||||
bool negate_;
|
||||
bool absolute_ = false;
|
||||
bool negate_ = false;
|
||||
// Only valid for OperandType::kImmediate32.
|
||||
uint32_t immediate_[4];
|
||||
|
||||
explicit Src(OperandType type, uint32_t swizzle = kXYZW,
|
||||
Index index_1d = Index(), Index index_2d = Index(),
|
||||
Index index_3d = Index())
|
||||
: OperandAddress(type, index_1d, index_2d, index_3d),
|
||||
swizzle_(swizzle),
|
||||
absolute_(false),
|
||||
negate_(false) {}
|
||||
explicit Src(OperandType type, uint32_t swizzle)
|
||||
: OperandAddress(type), swizzle_(swizzle) {}
|
||||
explicit Src(OperandType type, uint32_t swizzle, Index index_1d)
|
||||
: OperandAddress(type, index_1d), swizzle_(swizzle) {}
|
||||
explicit Src(OperandType type, uint32_t swizzle, Index index_1d,
|
||||
Index index_2d)
|
||||
: OperandAddress(type, index_1d, index_2d), swizzle_(swizzle) {}
|
||||
explicit Src(OperandType type, uint32_t swizzle, Index index_1d,
|
||||
Index index_2d, Index index_3d)
|
||||
: OperandAddress(type, index_1d, index_2d, index_3d), swizzle_(swizzle) {}
|
||||
|
||||
// For creating instances for use in declarations.
|
||||
struct DclT {};
|
||||
|
@ -982,9 +1073,12 @@ struct Src : OperandAddress {
|
|||
static Src R(uint32_t index, uint32_t swizzle = kXYZW) {
|
||||
return Src(OperandType::kTemp, swizzle, index);
|
||||
}
|
||||
static Src V(Index index, uint32_t swizzle = kXYZW) {
|
||||
static Src V1D(Index index, uint32_t swizzle = kXYZW) {
|
||||
return Src(OperandType::kInput, swizzle, index);
|
||||
}
|
||||
static Src V2D(Index index_1d, Index index_2d, uint32_t swizzle = kXYZW) {
|
||||
return Src(OperandType::kInput, swizzle, index_1d, index_2d);
|
||||
}
|
||||
static Src X(uint32_t index_1d, Index index_2d, uint32_t swizzle = kXYZW) {
|
||||
return Src(OperandType::kIndexableTemp, swizzle, index_1d, index_2d);
|
||||
}
|
||||
|
@ -1108,15 +1202,14 @@ struct Src : OperandAddress {
|
|||
return new_src;
|
||||
}
|
||||
|
||||
uint32_t GetLength(uint32_t mask, bool force_vector = false,
|
||||
bool in_dcl = false) const {
|
||||
uint32_t GetLength(uint32_t mask, bool force_vector = false) const {
|
||||
bool is_vector =
|
||||
force_vector ||
|
||||
(mask != 0b0000 && Dest::GetMaskSingleComponent(mask) == UINT32_MAX);
|
||||
if (type_ == OperandType::kImmediate32) {
|
||||
return is_vector ? 5 : 2;
|
||||
}
|
||||
return ((absolute_ || negate_) ? 2 : 1) + OperandAddress::GetLength(in_dcl);
|
||||
return ((absolute_ || negate_) ? 2 : 1) + OperandAddress::GetLength();
|
||||
}
|
||||
static constexpr uint32_t GetModifiedImmediate(uint32_t value,
|
||||
bool is_integer, bool absolute,
|
||||
|
@ -1147,7 +1240,7 @@ struct Src : OperandAddress {
|
|||
}
|
||||
void Write(std::vector<uint32_t>& code, bool is_integer, uint32_t mask,
|
||||
bool force_vector = false, bool in_dcl = false) const {
|
||||
uint32_t operand_token = GetOperandTokenTypeAndIndex(in_dcl);
|
||||
uint32_t operand_token = GetOperandTokenTypeAndIndex();
|
||||
uint32_t mask_single_component = Dest::GetMaskSingleComponent(mask);
|
||||
uint32_t select_component =
|
||||
mask_single_component != UINT32_MAX ? mask_single_component : 0;
|
||||
|
@ -1220,7 +1313,7 @@ struct Src : OperandAddress {
|
|||
code.push_back(uint32_t(ExtendedOperandType::kModifier) |
|
||||
(uint32_t(modifier) << 6));
|
||||
}
|
||||
OperandAddress::Write(code, in_dcl);
|
||||
OperandAddress::Write(code);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1372,8 +1465,12 @@ enum class Opcode : uint32_t {
|
|||
kDclResource = 88,
|
||||
kDclConstantBuffer = 89,
|
||||
kDclSampler = 90,
|
||||
kDclOutputTopology = 92,
|
||||
kDclInputPrimitive = 93,
|
||||
kDclMaxOutputVertexCount = 94,
|
||||
kDclInput = 95,
|
||||
kDclInputSGV = 96,
|
||||
kDclInputSIV = 97,
|
||||
kDclInputPS = 98,
|
||||
kDclInputPSSGV = 99,
|
||||
kDclInputPSSIV = 100,
|
||||
|
@ -1383,6 +1480,9 @@ enum class Opcode : uint32_t {
|
|||
kDclIndexableTemp = 105,
|
||||
kDclGlobalFlags = 106,
|
||||
kLOD = 108,
|
||||
kEmitStream = 117,
|
||||
kCutStream = 118,
|
||||
kEmitThenCutStream = 119,
|
||||
kDerivRTXCoarse = 122,
|
||||
kDerivRTXFine = 123,
|
||||
kDerivRTYCoarse = 124,
|
||||
|
@ -1396,6 +1496,7 @@ enum class Opcode : uint32_t {
|
|||
kIBFE = 139,
|
||||
kBFI = 140,
|
||||
kBFRev = 141,
|
||||
kDclStream = 143,
|
||||
kDclInputControlPointCount = 147,
|
||||
kDclTessDomain = 149,
|
||||
kDclThreadGroup = 155,
|
||||
|
@ -1426,6 +1527,10 @@ constexpr uint32_t OpcodeToken(Opcode opcode, uint32_t operands_length,
|
|||
(extended_opcode_count ? (uint32_t(1) << 31) : 0);
|
||||
}
|
||||
|
||||
constexpr uint32_t GetOpcodeTokenInstructionLength(uint32_t opcode_token) {
|
||||
return (opcode_token >> 24) & ((UINT32_C(1) << 7) - 1);
|
||||
}
|
||||
|
||||
constexpr uint32_t SampleControlsExtendedOpcodeToken(int32_t aoffimmi_u,
|
||||
int32_t aoffimmi_v,
|
||||
int32_t aoffimmi_w,
|
||||
|
@ -1915,7 +2020,7 @@ class Assembler {
|
|||
}
|
||||
void OpDclResource(ResourceDimension dimension, uint32_t return_type_token,
|
||||
const Src& operand, uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 3 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclResource, 2 + operands_length) |
|
||||
(uint32_t(dimension) << 11));
|
||||
|
@ -1929,7 +2034,7 @@ class Assembler {
|
|||
ConstantBufferAccessPattern access_pattern =
|
||||
ConstantBufferAccessPattern::kImmediateIndexed,
|
||||
uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 3 + operands_length);
|
||||
code_.push_back(
|
||||
OpcodeToken(Opcode::kDclConstantBuffer, 2 + operands_length) |
|
||||
|
@ -1941,30 +2046,60 @@ class Assembler {
|
|||
void OpDclSampler(const Src& operand,
|
||||
SamplerMode mode = SamplerMode::kDefault,
|
||||
uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclSampler, 1 + operands_length) |
|
||||
(uint32_t(mode) << 11));
|
||||
operand.Write(code_, false, 0b1111, false, true);
|
||||
code_.push_back(space);
|
||||
}
|
||||
// In geometry shaders, only kPointList, kLineStrip and kTriangleStrip are
|
||||
// allowed.
|
||||
void OpDclOutputTopology(PrimitiveTopology output_topology) {
|
||||
code_.push_back(OpcodeToken(Opcode::kDclOutputTopology, 0) |
|
||||
(uint32_t(output_topology) << 11));
|
||||
stat_.gs_output_topology = output_topology;
|
||||
}
|
||||
// In geometry shaders, only kPoint, kLine, kTriangle, kLineWithAdjacency and
|
||||
// kTriangleWithAdjacency are allowed.
|
||||
void OpDclInputPrimitive(Primitive input_primitive) {
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputPrimitive, 0) |
|
||||
(uint32_t(input_primitive) << 11));
|
||||
stat_.input_primitive = input_primitive;
|
||||
}
|
||||
// Returns the index of the count written in the code_ vector.
|
||||
size_t OpDclMaxOutputVertexCount(uint32_t count) {
|
||||
code_.reserve(code_.size() + 2);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclMaxOutputVertexCount, 1));
|
||||
code_.push_back(count);
|
||||
stat_.gs_max_output_vertex_count = count;
|
||||
return code_.size() - 1;
|
||||
}
|
||||
void OpDclInput(const Dest& operand) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInput, operands_length));
|
||||
operand.Write(code_, true);
|
||||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclInputSGV(const Dest& operand, Name name) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputSGV, 1 + operands_length));
|
||||
operand.Write(code_, true);
|
||||
code_.push_back(uint32_t(name));
|
||||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclInputSIV(const Dest& operand, Name name) {
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputSIV, 1 + operands_length));
|
||||
operand.Write(code_, true);
|
||||
code_.push_back(uint32_t(name));
|
||||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclInputPS(InterpolationMode interpolation_mode, const Dest& operand) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputPS, operands_length) |
|
||||
(uint32_t(interpolation_mode) << 11));
|
||||
|
@ -1972,7 +2107,7 @@ class Assembler {
|
|||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclInputPSSGV(const Dest& operand, Name name) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
// Constant interpolation mode is set in FXC output at least for
|
||||
// SV_IsFrontFace, despite the comment in d3d12TokenizedProgramFormat.hpp
|
||||
|
@ -1985,7 +2120,7 @@ class Assembler {
|
|||
}
|
||||
void OpDclInputPSSIV(InterpolationMode interpolation_mode,
|
||||
const Dest& operand, Name name) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputPSSIV, 1 + operands_length) |
|
||||
(uint32_t(interpolation_mode) << 11));
|
||||
|
@ -1994,14 +2129,14 @@ class Assembler {
|
|||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclOutput(const Dest& operand) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclOutput, operands_length));
|
||||
operand.Write(code_, true);
|
||||
++stat_.dcl_count;
|
||||
}
|
||||
void OpDclOutputSIV(const Dest& operand, Name name) {
|
||||
uint32_t operands_length = operand.GetLength(true);
|
||||
uint32_t operands_length = operand.GetLength();
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclOutputSIV, 1 + operands_length));
|
||||
operand.Write(code_, true);
|
||||
|
@ -2045,6 +2180,34 @@ class Assembler {
|
|||
++stat_.instruction_count;
|
||||
++stat_.lod_instructions;
|
||||
}
|
||||
void OpEmitStream(const Dest& stream) {
|
||||
uint32_t operands_length = stream.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kEmitStream, operands_length));
|
||||
stream.Write(code_);
|
||||
++stat_.instruction_count;
|
||||
++stat_.emit_instruction_count;
|
||||
}
|
||||
void OpCutStream(const Dest& stream) {
|
||||
uint32_t operands_length = stream.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kCutStream, operands_length));
|
||||
stream.Write(code_);
|
||||
++stat_.instruction_count;
|
||||
++stat_.cut_instruction_count;
|
||||
}
|
||||
void OpEmitThenCutStream(const Dest& stream) {
|
||||
uint32_t operands_length = stream.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kEmitThenCutStream, operands_length));
|
||||
stream.Write(code_);
|
||||
++stat_.instruction_count;
|
||||
// TODO(Triang3l): Verify if the instruction counts should be incremented
|
||||
// this way (haven't been able to obtain this from FXC because it generates
|
||||
// separate emit_stream and cut_stream, at least for Shader Model 5.1).
|
||||
++stat_.emit_instruction_count;
|
||||
++stat_.cut_instruction_count;
|
||||
}
|
||||
void OpDerivRTXCoarse(const Dest& dest, const Src& src,
|
||||
bool saturate = false) {
|
||||
EmitAluOp(Opcode::kDerivRTXCoarse, 0b0, dest, src, saturate);
|
||||
|
@ -2102,6 +2265,12 @@ class Assembler {
|
|||
EmitAluOp(Opcode::kBFRev, 0b1, dest, src);
|
||||
++stat_.uint_instruction_count;
|
||||
}
|
||||
void OpDclStream(const Dest& stream) {
|
||||
uint32_t operands_length = stream.GetLength();
|
||||
code_.reserve(code_.size() + 1 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclStream, operands_length));
|
||||
stream.Write(code_, true);
|
||||
}
|
||||
void OpDclInputControlPointCount(uint32_t count) {
|
||||
code_.push_back(OpcodeToken(Opcode::kDclInputControlPointCount, 0) |
|
||||
(count << 11));
|
||||
|
@ -2124,7 +2293,7 @@ class Assembler {
|
|||
void OpDclUnorderedAccessViewTyped(ResourceDimension dimension,
|
||||
uint32_t flags, uint32_t return_type_token,
|
||||
const Src& operand, uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 3 + operands_length);
|
||||
code_.push_back(
|
||||
OpcodeToken(Opcode::kDclUnorderedAccessViewTyped, 2 + operands_length) |
|
||||
|
@ -2137,7 +2306,7 @@ class Assembler {
|
|||
// kUAVFlagRasterizerOrderedAccess.
|
||||
void OpDclUnorderedAccessViewRaw(uint32_t flags, const Src& operand,
|
||||
uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(
|
||||
OpcodeToken(Opcode::kDclUnorderedAccessViewRaw, 1 + operands_length) |
|
||||
|
@ -2146,7 +2315,7 @@ class Assembler {
|
|||
code_.push_back(space);
|
||||
}
|
||||
void OpDclResourceRaw(const Src& operand, uint32_t space = 0) {
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false, true);
|
||||
uint32_t operands_length = operand.GetLength(0b1111, false);
|
||||
code_.reserve(code_.size() + 2 + operands_length);
|
||||
code_.push_back(OpcodeToken(Opcode::kDclResourceRaw, 1 + operands_length));
|
||||
operand.Write(code_, true, 0b1111, false, true);
|
||||
|
|
|
@ -326,15 +326,16 @@ void DxbcShaderTranslator::StartVertexShader_LoadVertexIndex() {
|
|||
// Check if the closing vertex of a non-indexed line loop is being processed.
|
||||
a_.OpINE(
|
||||
index_dest,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kVSInVertexIndex), dxbc::Src::kXXXX),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kVSInVertexIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
LoadSystemConstant(SystemConstants::Index::kLineLoopClosingIndex,
|
||||
offsetof(SystemConstants, line_loop_closing_index),
|
||||
dxbc::Src::kXXXX));
|
||||
// Zero the index if processing the closing vertex of a line loop, or do
|
||||
// nothing (replace 0 with 0) if not needed.
|
||||
a_.OpAnd(
|
||||
index_dest,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kVSInVertexIndex), dxbc::Src::kXXXX),
|
||||
a_.OpAnd(index_dest,
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kVSInVertexIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
index_src);
|
||||
|
||||
{
|
||||
|
@ -590,7 +591,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
|||
// system_temp_depth_stencil_ before any return statement is possibly
|
||||
// reached.
|
||||
assert_true(system_temp_depth_stencil_ != UINT32_MAX);
|
||||
dxbc::Src in_position_z(dxbc::Src::V(
|
||||
dxbc::Src in_position_z(dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInPosition), dxbc::Src::kZZZZ));
|
||||
in_position_used_ |= 0b0100;
|
||||
a_.OpDerivRTXCoarse(dxbc::Dest::R(system_temp_depth_stencil_, 0b0001),
|
||||
|
@ -633,14 +634,14 @@ void DxbcShaderTranslator::StartPixelShader() {
|
|||
// At center.
|
||||
a_.OpMov(uses_register_dynamic_addressing ? dxbc::Dest::X(0, i)
|
||||
: dxbc::Dest::R(i),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
a_.OpElse();
|
||||
// At centroid. Not really important that 2x MSAA is emulated using
|
||||
// ForcedSampleCount 4 - what matters is that the sample position will
|
||||
// be within the primitive, and the value will not be extrapolated.
|
||||
a_.OpEvalCentroid(
|
||||
dxbc::Dest::R(centroid_register),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
if (uses_register_dynamic_addressing) {
|
||||
a_.OpMov(dxbc::Dest::X(0, i), dxbc::Src::R(centroid_register));
|
||||
}
|
||||
|
@ -677,7 +678,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
|||
// have correct derivative magnitude and LODs.
|
||||
in_position_used_ |= 0b0011;
|
||||
a_.OpRoundNI(dxbc::Dest::R(param_gen_temp, 0b0011),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition)));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPosition)));
|
||||
uint32_t resolution_scaled_axes =
|
||||
uint32_t(draw_resolution_scale_x_ > 1) |
|
||||
(uint32_t(draw_resolution_scale_y_ > 1) << 1);
|
||||
|
@ -701,9 +702,9 @@ void DxbcShaderTranslator::StartPixelShader() {
|
|||
// Negate modifier flips the sign bit even for 0 - set it to minus for
|
||||
// backfaces.
|
||||
in_front_face_used_ = true;
|
||||
a_.OpMovC(
|
||||
dxbc::Dest::R(param_gen_temp, 0b0001),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
a_.OpMovC(dxbc::Dest::R(param_gen_temp, 0b0001),
|
||||
dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
dxbc::Src::R(param_gen_temp, dxbc::Src::kXXXX),
|
||||
-dxbc::Src::R(param_gen_temp, dxbc::Src::kXXXX));
|
||||
|
@ -713,7 +714,7 @@ void DxbcShaderTranslator::StartPixelShader() {
|
|||
// Saturate to avoid negative point coordinates if the center of the pixel
|
||||
// is not covered, and extrapolation is done.
|
||||
a_.OpMov(dxbc::Dest::R(param_gen_temp, 0b1100),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPointParameters),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPointParameters),
|
||||
0b0100 << 4),
|
||||
true);
|
||||
// Primitive type.
|
||||
|
@ -1814,12 +1815,26 @@ void DxbcShaderTranslator::ProcessLoopStartInstruction(
|
|||
2 + (instr.loop_constant_index >> 2))
|
||||
.Select(instr.loop_constant_index & 3));
|
||||
|
||||
// Push the count to the loop count stack - move XYZ to YZW and set X to this
|
||||
// loop count.
|
||||
{
|
||||
uint32_t loop_count_temp = PushSystemTemp();
|
||||
a_.OpAnd(dxbc::Dest::R(loop_count_temp, 0b0001), loop_constant_src,
|
||||
dxbc::Src::LU(UINT8_MAX));
|
||||
|
||||
// Skip the loop without pushing if the count is zero from the beginning.
|
||||
a_.OpIf(false, dxbc::Src::R(loop_count_temp, dxbc::Src::kXXXX));
|
||||
JumpToLabel(instr.loop_skip_address);
|
||||
a_.OpEndIf();
|
||||
|
||||
// Push the count to the loop count stack - move XYZ to YZW and set X to the
|
||||
// new loop count.
|
||||
a_.OpMov(dxbc::Dest::R(system_temp_loop_count_, 0b1110),
|
||||
dxbc::Src::R(system_temp_loop_count_, 0b10010000));
|
||||
a_.OpAnd(dxbc::Dest::R(system_temp_loop_count_, 0b0001), loop_constant_src,
|
||||
dxbc::Src::LU(UINT8_MAX));
|
||||
a_.OpMov(dxbc::Dest::R(system_temp_loop_count_, 0b0001),
|
||||
dxbc::Src::R(loop_count_temp, dxbc::Src::kXXXX));
|
||||
|
||||
// Release loop_count_temp.
|
||||
PopSystemTemp();
|
||||
}
|
||||
|
||||
// Push aL - keep the same value as in the previous loop if repeating, or the
|
||||
// new one otherwise.
|
||||
|
@ -1829,13 +1844,6 @@ void DxbcShaderTranslator::ProcessLoopStartInstruction(
|
|||
a_.OpUBFE(dxbc::Dest::R(system_temp_aL_, 0b0001), dxbc::Src::LU(8),
|
||||
dxbc::Src::LU(8), loop_constant_src);
|
||||
}
|
||||
|
||||
// Break if the loop counter is 0 (since the condition is checked in the end).
|
||||
// TODO(Triang3l): Move this before pushing and address loading. This won't
|
||||
// pop if the counter is 0.
|
||||
a_.OpIf(false, dxbc::Src::R(system_temp_loop_count_, dxbc::Src::kXXXX));
|
||||
JumpToLabel(instr.loop_skip_address);
|
||||
a_.OpEndIf();
|
||||
}
|
||||
|
||||
void DxbcShaderTranslator::ProcessLoopEndInstruction(
|
||||
|
@ -2040,9 +2048,9 @@ const DxbcShaderTranslator::SystemConstantRdef
|
|||
{"xe_point_vertex_diameter_max", ShaderRdefTypeIndex::kFloat,
|
||||
sizeof(float)},
|
||||
|
||||
{"xe_point_constant_radius", ShaderRdefTypeIndex::kFloat2,
|
||||
{"xe_point_constant_diameter", ShaderRdefTypeIndex::kFloat2,
|
||||
sizeof(float) * 2},
|
||||
{"xe_point_screen_to_ndc", ShaderRdefTypeIndex::kFloat2,
|
||||
{"xe_point_screen_diameter_to_ndc_radius", ShaderRdefTypeIndex::kFloat2,
|
||||
sizeof(float) * 2},
|
||||
|
||||
{"xe_interpolator_sampling_pattern", ShaderRdefTypeIndex::kUint,
|
||||
|
@ -3492,7 +3500,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
|||
if (register_count()) {
|
||||
// Unswapped vertex index input (only X component).
|
||||
ao_.OpDclInputSGV(
|
||||
dxbc::Dest::V(uint32_t(InOutRegister::kVSInVertexIndex), 0b0001),
|
||||
dxbc::Dest::V1D(uint32_t(InOutRegister::kVSInVertexIndex), 0b0001),
|
||||
dxbc::Name::kVertexID);
|
||||
}
|
||||
}
|
||||
|
@ -3530,13 +3538,13 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
|||
for (uint32_t i = 0; i < interpolator_count; ++i) {
|
||||
ao_.OpDclInputPS(
|
||||
dxbc::InterpolationMode::kLinear,
|
||||
dxbc::Dest::V(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
dxbc::Dest::V1D(uint32_t(InOutRegister::kPSInInterpolators) + i));
|
||||
}
|
||||
if (register_count()) {
|
||||
// Point parameters input (only coordinates, not size, needed).
|
||||
ao_.OpDclInputPS(
|
||||
dxbc::InterpolationMode::kLinear,
|
||||
dxbc::Dest::V(uint32_t(InOutRegister::kPSInPointParameters),
|
||||
dxbc::Dest::V1D(uint32_t(InOutRegister::kPSInPointParameters),
|
||||
0b0011));
|
||||
}
|
||||
}
|
||||
|
@ -3553,7 +3561,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
|||
(is_writing_float24_depth && !shader_writes_depth)
|
||||
? dxbc::InterpolationMode::kLinearNoPerspectiveSample
|
||||
: dxbc::InterpolationMode::kLinearNoPerspective,
|
||||
dxbc::Dest::V(uint32_t(InOutRegister::kPSInPosition),
|
||||
dxbc::Dest::V1D(uint32_t(InOutRegister::kPSInPosition),
|
||||
in_position_used_),
|
||||
dxbc::Name::kPosition);
|
||||
}
|
||||
|
@ -3568,7 +3576,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
|||
if (front_face_and_sample_index_mask) {
|
||||
// Is front face, sample index.
|
||||
ao_.OpDclInputPSSGV(
|
||||
dxbc::Dest::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Dest::V1D(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
front_face_and_sample_index_mask),
|
||||
dxbc::Name::kIsFrontFace);
|
||||
}
|
||||
|
|
|
@ -242,9 +242,10 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
|||
float ndc_offset[3];
|
||||
float point_vertex_diameter_max;
|
||||
|
||||
float point_constant_radius[2];
|
||||
// Screen point size * 2 (but not supersampled) -> size in NDC.
|
||||
float point_screen_to_ndc[2];
|
||||
float point_constant_diameter[2];
|
||||
// Diameter in guest screen coordinates > radius (0.5 * diameter) in the NDC
|
||||
// for the host viewport.
|
||||
float point_screen_diameter_to_ndc_radius[2];
|
||||
|
||||
uint32_t interpolator_sampling_pattern;
|
||||
uint32_t ps_param_gen;
|
||||
|
@ -356,8 +357,8 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
|||
kNDCOffset,
|
||||
kPointVertexDiameterMax,
|
||||
|
||||
kPointConstantRadius,
|
||||
kPointScreenToNDC,
|
||||
kPointConstantDiameter,
|
||||
kPointScreenDiameterToNDCRadius,
|
||||
|
||||
kInterpolatorSamplingPattern,
|
||||
kPSParamGen,
|
||||
|
|
|
@ -139,7 +139,7 @@ void DxbcShaderTranslator::ExportToMemory() {
|
|||
in_position_used_ |= resolution_scaled_axes;
|
||||
a_.OpFToU(
|
||||
dxbc::Dest::R(control_temp, resolution_scaled_axes << 1),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition), 0b0100 << 2));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPosition), 0b0100 << 2));
|
||||
dxbc::Dest resolution_scaling_temp_dest(
|
||||
dxbc::Dest::R(control_temp, 0b1000));
|
||||
dxbc::Src resolution_scaling_temp_src(
|
||||
|
@ -201,7 +201,7 @@ void DxbcShaderTranslator::ExportToMemory() {
|
|||
a_.OpIEq(
|
||||
dxbc::Dest::R(control_temp,
|
||||
inner_condition_provided ? 0b0010 : 0b0001),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kYYYY),
|
||||
dxbc::Src::R(control_temp, dxbc::Src::kYYYY));
|
||||
if (inner_condition_provided) {
|
||||
|
|
|
@ -172,7 +172,7 @@ void DxbcShaderTranslator::StartPixelShader_LoadROVParameters() {
|
|||
// system_temp_rov_params_.y = Y host pixel position as uint
|
||||
in_position_used_ |= 0b0011;
|
||||
a_.OpFToU(dxbc::Dest::R(system_temp_rov_params_, 0b0011),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition)));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPosition)));
|
||||
// Convert the position from pixels to samples.
|
||||
// system_temp_rov_params_.x = X sample 0 position
|
||||
// system_temp_rov_params_.y = Y sample 0 position
|
||||
|
@ -605,8 +605,8 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
ROV_DepthTo24Bit(system_temp_depth_stencil_, 0, system_temp_depth_stencil_,
|
||||
0, temp, 0);
|
||||
} else {
|
||||
dxbc::Src in_position_z(
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition), dxbc::Src::kZZZZ));
|
||||
dxbc::Src in_position_z(dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInPosition), dxbc::Src::kZZZZ));
|
||||
// Get the derivatives of the screen-space (but not clamped to the viewport
|
||||
// depth bounds yet - this happens after the pixel shader in Direct3D 11+;
|
||||
// also linear within the triangle - thus constant derivatives along the
|
||||
|
@ -645,8 +645,8 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
a_.OpMax(temp_z_dest, z_ddx_src.Abs(), z_ddy_src.Abs());
|
||||
// Calculate the depth bias for the needed faceness.
|
||||
in_front_face_used_ = true;
|
||||
a_.OpIf(true,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
a_.OpIf(true, dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX));
|
||||
// temp.x if early = ddx(z)
|
||||
// temp.y if early = ddy(z)
|
||||
|
@ -949,7 +949,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
{
|
||||
// Check the current face to get the reference and apply the read mask.
|
||||
in_front_face_used_ = true;
|
||||
a_.OpIf(true, dxbc::Src::V(
|
||||
a_.OpIf(true, dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX));
|
||||
for (uint32_t j = 0; j < 2; ++j) {
|
||||
|
@ -1012,7 +1012,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
in_front_face_used_ = true;
|
||||
a_.OpMovC(
|
||||
sample_temp_z_dest,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
LoadSystemConstant(
|
||||
SystemConstants::Index::kEdramStencil,
|
||||
|
@ -1090,9 +1090,9 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
// Replace.
|
||||
a_.OpCase(dxbc::Src::LU(uint32_t(xenos::StencilOp::kReplace)));
|
||||
in_front_face_used_ = true;
|
||||
a_.OpMovC(
|
||||
sample_temp_y_dest,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
a_.OpMovC(sample_temp_y_dest,
|
||||
dxbc::Src::V1D(
|
||||
uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
LoadSystemConstant(
|
||||
SystemConstants::Index::kEdramStencil,
|
||||
|
@ -1155,7 +1155,7 @@ void DxbcShaderTranslator::ROV_DepthStencilTest() {
|
|||
in_front_face_used_ = true;
|
||||
a_.OpMovC(
|
||||
sample_temp_z_dest,
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInFrontFaceAndSampleIndex),
|
||||
dxbc::Src::kXXXX),
|
||||
LoadSystemConstant(
|
||||
SystemConstants::Index::kEdramStencil,
|
||||
|
@ -1924,9 +1924,9 @@ void DxbcShaderTranslator::CompletePixelShader_DSV_DepthTo24Bit() {
|
|||
// assumption of it being clamped while working with the bit representation.
|
||||
temp = PushSystemTemp();
|
||||
in_position_used_ |= 0b0100;
|
||||
a_.OpMul(
|
||||
dxbc::Dest::R(temp, 0b0001),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition), dxbc::Src::kZZZZ),
|
||||
a_.OpMul(dxbc::Dest::R(temp, 0b0001),
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPosition),
|
||||
dxbc::Src::kZZZZ),
|
||||
dxbc::Src::LF(2.0f), true);
|
||||
}
|
||||
|
||||
|
@ -2068,7 +2068,7 @@ void DxbcShaderTranslator::CompletePixelShader_AlphaToMask() {
|
|||
// temp.x = alpha to coverage offset as float 0.0...3.0.
|
||||
in_position_used_ |= 0b0011;
|
||||
a_.OpFToU(dxbc::Dest::R(temp, 0b0011),
|
||||
dxbc::Src::V(uint32_t(InOutRegister::kPSInPosition)));
|
||||
dxbc::Src::V1D(uint32_t(InOutRegister::kPSInPosition)));
|
||||
a_.OpAnd(dxbc::Dest::R(temp, 0b0010), dxbc::Src::R(temp, dxbc::Src::kYYYY),
|
||||
dxbc::Src::LU(1));
|
||||
a_.OpBFI(temp_x_dest, dxbc::Src::LU(1), dxbc::Src::LU(1), temp_x_src,
|
||||
|
|
|
@ -33,7 +33,7 @@ class RegisterFile {
|
|||
|
||||
static const RegisterInfo* GetRegisterInfo(uint32_t index);
|
||||
|
||||
static const size_t kRegisterCount = 0x5003;
|
||||
static constexpr size_t kRegisterCount = 0x5003;
|
||||
union RegisterValue {
|
||||
uint32_t u32;
|
||||
float f32;
|
||||
|
|
|
@ -275,14 +275,183 @@ XE_GPU_REGISTER(0x1844, kDword, D1GRPH_PRIMARY_SURFACE_ADDRESS)
|
|||
|
||||
XE_GPU_REGISTER(0x1852, kDword, D1GRPH_FLIP_CONTROL)
|
||||
|
||||
XE_GPU_REGISTER(0x1921, kDword, DC_LUT_RW_MODE)
|
||||
XE_GPU_REGISTER(0x1922, kDword, DC_LUT_RW_INDEX)
|
||||
// In 4B4F07FE, the 256-entry gamma ramp for the 8bpc framebuffer is set to
|
||||
// different values in multiple places in the game. For VdGetCurrentDisplayGamma
|
||||
// returning 1 (sRGB), it's set up in the beginning as:
|
||||
// DC_LUTA_CONTROL = 0x00000000 (256-entry unsigned fixed-point)
|
||||
// DC_LUT_RW_MODE = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000000
|
||||
// DC_LUT_WRITE_EN_MASK = 0x00000007
|
||||
// DC_LUT_30_COLOR = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_30_COLOR = 0x04812048
|
||||
// DC_LUT_RW_INDEX = 0x00000002
|
||||
// DC_LUT_30_COLOR = 0x05916459
|
||||
// DC_LUT_RW_INDEX = 0x00000003
|
||||
// DC_LUT_30_COLOR = 0x06519465
|
||||
// ...
|
||||
// DC_LUT_RW_INDEX = 0x000000FE
|
||||
// DC_LUT_30_COLOR = 0x3FBFEFFB
|
||||
// DC_LUT_RW_INDEX = 0x000000FF
|
||||
// DC_LUT_30_COLOR = 0x3FFFFFFF
|
||||
// DC_LUT_RW_INDEX = 0x00000100
|
||||
//
|
||||
// One another possible setup in 4B4F07FE is:
|
||||
// DC_LUTA_CONTROL = 0x00000000 (256-entry unsigned fixed-point)
|
||||
// DC_LUT_RW_MODE = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000000
|
||||
// DC_LUT_WRITE_EN_MASK = 0x00000007
|
||||
// DC_LUT_30_COLOR = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_30_COLOR = 0x01A0681A
|
||||
// DC_LUT_RW_INDEX = 0x00000002
|
||||
// DC_LUT_30_COLOR = 0x02709C27
|
||||
// ...
|
||||
// DC_LUT_RW_INDEX = 0x000000FE
|
||||
// DC_LUT_30_COLOR = 0x3FBFEFFB
|
||||
// DC_LUT_RW_INDEX = 0x000000FF
|
||||
// DC_LUT_30_COLOR = 0x3FFFFFFF
|
||||
// DC_LUT_RW_INDEX = 0x00000100
|
||||
//
|
||||
// In 4D5307E6, the 128-entry PWL gamma ramp for the 10bpc framebuffer, for
|
||||
// VdGetCurrentDisplayGamma returning 1 (sRGB), is set up right after launching
|
||||
// the game as:
|
||||
// DC_LUTA_CONTROL = 0x00000003 (8-increment unsigned fixed-point)
|
||||
// DC_LUT_RW_MODE = 0x00000001
|
||||
// DC_LUT_RW_INDEX = 0x00000000
|
||||
// DC_LUT_WRITE_EN_MASK = 0x00000007
|
||||
// DC_LUT_PWL_DATA = 0x02000000
|
||||
// DC_LUT_PWL_DATA = 0x02000000
|
||||
// DC_LUT_PWL_DATA = 0x02000000
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_PWL_DATA = 0x02000200
|
||||
// DC_LUT_PWL_DATA = 0x02000200
|
||||
// DC_LUT_PWL_DATA = 0x02000200
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_PWL_DATA = 0x02000400
|
||||
// DC_LUT_PWL_DATA = 0x02000400
|
||||
// DC_LUT_PWL_DATA = 0x02000400
|
||||
// ...
|
||||
// DC_LUT_RW_INDEX = 0x0000007D
|
||||
// DC_LUT_PWL_DATA = 0x0200FBC0
|
||||
// DC_LUT_PWL_DATA = 0x0200FBC0
|
||||
// DC_LUT_PWL_DATA = 0x0200FBC0
|
||||
// DC_LUT_RW_INDEX = 0x0000007E
|
||||
// DC_LUT_PWL_DATA = 0x0200FDC0
|
||||
// DC_LUT_PWL_DATA = 0x0200FDC0
|
||||
// DC_LUT_PWL_DATA = 0x0200FDC0
|
||||
// DC_LUT_RW_INDEX = 0x0000007F
|
||||
// DC_LUT_PWL_DATA = 0x0000FFC0
|
||||
// DC_LUT_PWL_DATA = 0x0000FFC0
|
||||
// DC_LUT_PWL_DATA = 0x0000FFC0
|
||||
// DC_LUT_RW_INDEX = 0x00000080
|
||||
//
|
||||
// Later in 4D5307E6, for the game itself (apparently for conversion of the bit
|
||||
// representation of 7e3 floating-point data in the front buffer to 10-bit fixed
|
||||
// point, as the game draws the final passes to a 7e3 framebuffer), with
|
||||
// VdGetCurrentDisplayGamma returning 1 (sRGB) and the normal brightness in the
|
||||
// game settings, it's:
|
||||
// DC_LUTA_CONTROL = 0x00000003 (8-increment unsigned fixed-point)
|
||||
// DC_LUT_RW_MODE = 0x00000001
|
||||
// DC_LUT_RW_INDEX = 0x00000000
|
||||
// DC_LUT_WRITE_EN_MASK = 0x00000007
|
||||
// DC_LUT_PWL_DATA = 0x05000000
|
||||
// DC_LUT_PWL_DATA = 0x05000000
|
||||
// DC_LUT_PWL_DATA = 0x05000000
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_PWL_DATA = 0x02000500
|
||||
// DC_LUT_PWL_DATA = 0x02000500
|
||||
// DC_LUT_PWL_DATA = 0x02000500
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_PWL_DATA = 0x01800740
|
||||
// DC_LUT_PWL_DATA = 0x01800740
|
||||
// DC_LUT_PWL_DATA = 0x01800740
|
||||
// ...
|
||||
// DC_LUT_RW_INDEX = 0x0000007D
|
||||
// DC_LUT_PWL_DATA = 0x0440F340
|
||||
// DC_LUT_PWL_DATA = 0x0440F340
|
||||
// DC_LUT_PWL_DATA = 0x0440F340
|
||||
// DC_LUT_RW_INDEX = 0x0000007E
|
||||
// DC_LUT_PWL_DATA = 0x0400F780
|
||||
// DC_LUT_PWL_DATA = 0x0400F780
|
||||
// DC_LUT_PWL_DATA = 0x0400F780
|
||||
// DC_LUT_RW_INDEX = 0x0000007F
|
||||
// DC_LUT_PWL_DATA = 0x0400FBC0
|
||||
// DC_LUT_PWL_DATA = 0x0400FBC0
|
||||
// DC_LUT_PWL_DATA = 0x0400FBC0
|
||||
// DC_LUT_RW_INDEX = 0x00000080
|
||||
//
|
||||
// In 535107D4, the 256-entry gamma ramp for the 8bpc framebuffer is
|
||||
// configurable from the game's settings menu for each channel independently.
|
||||
// For VdGetCurrentDisplayGamma returning 1 (sRGB), when in the settings, the
|
||||
// red gamma is at the maximum of 5.56, green is at 1.00, and blue is at the
|
||||
// minimum of 0.17, the setup is done as:
|
||||
// DC_LUT_RW_MODE = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000000
|
||||
// DC_LUT_WRITE_EN_MASK = 0x00000007
|
||||
// DC_LUT_30_COLOR = 0x00000000
|
||||
// DC_LUT_RW_INDEX = 0x00000001
|
||||
// DC_LUT_30_COLOR = 0x17901000
|
||||
// DC_LUT_RW_INDEX = 0x00000002
|
||||
// DC_LUT_30_COLOR = 0x1AB02000
|
||||
// ...
|
||||
// DC_LUT_RW_INDEX = 0x000000FE
|
||||
// DC_LUT_30_COLOR = 0x3FEFE3D2
|
||||
// DC_LUT_RW_INDEX = 0x000000FF
|
||||
// DC_LUT_30_COLOR = 0x3FFFF3E9
|
||||
// DC_LUT_RW_INDEX = 0x00000100
|
||||
|
||||
// Read / write mode in bit 0: 0 - 256-entry table, 1 - PWL.
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1921, kDword, DC_LUT_RW_MODE)
|
||||
// Read / write index. No lower and upper halves on the Xenos apparently, for
|
||||
// the 256-entry table, the bits 0:7 are the index directly (unlike on the M56,
|
||||
// not split into the index in 1:7 and the lower or upper 10 bits selection in
|
||||
// 0:0, instead, on the Xenos, the index in 0:7 is just increased
|
||||
// monotonically). For some reason though Direct3D 9 writes an index that
|
||||
// overflows by one (0x100 for the 256-entry table, 0x80 for the 128-entry PWL
|
||||
// gamma ramp) after setting up all the values. However, the index is 8-bit, and
|
||||
// for PWL, according to the M56 documentation, the bit 7 is not used.
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1922, kDword, DC_LUT_RW_INDEX)
|
||||
// Sequential 10-bit R, G, B host read / write for the 256-entry table. After
|
||||
// reset or writing DC_LUT_RW_INDEX, the first access is for the red component,
|
||||
// the second is for green, the third is for blue, and after blue is accessed,
|
||||
// the LUT index is increased by 1 (without having to explicitly change
|
||||
// DC_LUT_RW_INDEX). Bits 0:5 are hardwired to zero.
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1923, kDword, DC_LUT_SEQ_COLOR)
|
||||
// Read / write, 0:15 - base, 16:31 - delta. Bits 0:5 of both the base and the
|
||||
// delta are hardwired to zero. The LUT index is increased by 1 when
|
||||
// DC_LUT_PWL_DATA is accessed, though three DC_LUT_PWL_DATA writes are done for
|
||||
// one entry (the order is likely R, G, B, similar to DC_LUT_SEQ_COLOR, but this
|
||||
// hasn't been verified yet as no games using the PWL gamma ramp with separate
|
||||
// settings for each channel have been found yet).
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1924, kDword, DC_LUT_PWL_DATA)
|
||||
// Read / write, 0:9 - blue, 10:19 - green, 20:29 - red. The LUT index is
|
||||
// increased by 1 when DC_LUT_30_COLOR is accessed.
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1925, kDword, DC_LUT_30_COLOR)
|
||||
|
||||
// Only LUT pipe 1 on the Xenos apparently (Direct3D 9 sets DC_LUT_WRITE_EN_MASK
|
||||
// to 0b111 before writing the gamma ramp), 3 bits set, rather than 6 on the
|
||||
// M56.
|
||||
// Bit 0 - blue write enable mask.
|
||||
// Bit 1 - green write enable mask.
|
||||
// Bit 2 - red write enable mask.
|
||||
// Default: 0x00000007 (though 0x0000003F on the M56 where there are two pipes).
|
||||
XE_GPU_REGISTER(0x1927, kDword, DC_LUT_WRITE_EN_MASK)
|
||||
|
||||
// Single set of parameters for all channels apparently unlike on the M56
|
||||
// (4D5307E6 sets DC_LUTA_CONTROL to 0x00000003 for the data increment of 8 in
|
||||
// the 128-entry PWL gamma ramp for a 10bpc framebuffer). Also set not only
|
||||
// during setup, but also apparently during every swap by Direct3D 9, though not
|
||||
// directly in all games (happens in 4B4F07FE and 4D5307E6 even without proper
|
||||
// VdSwap emulation, but in 535107D4, with a fake VdSwap packet rather than the
|
||||
// real ones, the register is not set at all, though the expected behavior is
|
||||
// that of the value of 0x00000000).
|
||||
// Default: 0x00000000.
|
||||
XE_GPU_REGISTER(0x1930, kDword, DC_LUTA_CONTROL)
|
||||
|
||||
XE_GPU_REGISTER(0x1961, kDword, AVIVO_D1MODE_VIEWPORT_SIZE)
|
||||
|
|
|
@ -130,16 +130,16 @@ union alignas(uint32_t) SQ_CONTEXT_MISC {
|
|||
uint32_t sc_output_screen_xy : 1; // +1
|
||||
xenos::SampleControl sc_sample_cntl : 2; // +2
|
||||
uint32_t : 4; // +4
|
||||
// Pixel shader interpolator (according to the XNA microcode compiler -
|
||||
// Pixel shader interpolator (according to the XNA microcode validator -
|
||||
// limited to the interpolator count, 16, not the total register count of
|
||||
// 64) index to write pixel parameters to.
|
||||
// See https://portal.unifiedpatents.com/ptab/case/IPR2015-00325 Exhibit
|
||||
// 2039 R400 Sequencer Specification 2.11 (a significantly early version of
|
||||
// the specification, however) section 19.2 "Sprites/ XY screen coordinates/
|
||||
// FB information" for additional details.
|
||||
// * |XY| - position on screen (vPos - the XNA microcode compiler translates
|
||||
// ps_3_0 vPos directly to this, so at least in Direct3D 9 pixel center
|
||||
// mode, this contains 0, 1, 2, not 0.5, 1.5, 2.5). flto also said in the
|
||||
// * |XY| - position on screen (vPos - the XNA assembler translates ps_3_0
|
||||
// vPos directly to this, so at least in Direct3D 9 pixel center mode,
|
||||
// this contains 0, 1, 2, not 0.5, 1.5, 2.5). flto also said in the
|
||||
// Freedreno IRC that it's .0 even in OpenGL:
|
||||
// https://dri.freedesktop.org/~cbrill/dri-log/?channel=freedreno&date=2020-04-19
|
||||
// According to the actual usage, in the final version of the hardware,
|
||||
|
@ -825,6 +825,68 @@ union alignas(uint32_t) RB_COPY_DEST_PITCH {
|
|||
};
|
||||
static_assert_size(RB_COPY_DEST_PITCH, sizeof(uint32_t));
|
||||
|
||||
/*******************************************************************************
|
||||
___ ___ ___ ___ _ ___ __
|
||||
| \_ _/ __| _ \ | /_\ \ / /
|
||||
| |) | |\__ \ _/ |__ / _ \ V /
|
||||
|___/___|___/_| |____/_/ \_\_|
|
||||
|
||||
___ ___ _ _ _____ ___ ___ _ _ ___ ___
|
||||
/ __/ _ \| \| |_ _| _ \/ _ \| | | | | __| _ \
|
||||
| (_| (_) | .` | | | | / (_) | |__| |__| _|| /
|
||||
\___\___/|_|\_| |_| |_|_\\___/|____|____|___|_|_\
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
union alignas(uint32_t) DC_LUT_RW_INDEX {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// Unlike in the M56 documentation, for the 256-table entry, this is the
|
||||
// absolute index, without the lower or upper 10 bits selection in the
|
||||
// bit 0. For PWL, the bit 7 is ignored.
|
||||
uint32_t rw_index : 8; // +0
|
||||
};
|
||||
static constexpr Register register_index = XE_GPU_REG_DC_LUT_RW_INDEX;
|
||||
};
|
||||
static_assert_size(DC_LUT_RW_INDEX, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) DC_LUT_SEQ_COLOR {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t seq_color : 16; // +0, bits 0:5 are hardwired to zero
|
||||
};
|
||||
static constexpr Register register_index = XE_GPU_REG_DC_LUT_SEQ_COLOR;
|
||||
};
|
||||
static_assert_size(DC_LUT_SEQ_COLOR, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) DC_LUT_PWL_DATA {
|
||||
uint32_t value;
|
||||
struct {
|
||||
// See the M56 DC_LUTA_CONTROL for information about the way these should be
|
||||
// interpreted (`output = base + (multiplier * delta) / 2^increment`, where
|
||||
// the increment is the value specified in DC_LUTA_CONTROL for the specific
|
||||
// color channel, the base is 7 bits of the front buffer value above
|
||||
// `increment` bits, the multiplier is the lower `increment` bits of it; the
|
||||
// increment is nonzero, otherwise the 256-entry table should be used
|
||||
// instead).
|
||||
uint32_t base : 16; // +0, bits 0:5 are hardwired to zero
|
||||
uint32_t delta : 16; // +16, bits 0:5 are hardwired to zero
|
||||
};
|
||||
static constexpr Register register_index = XE_GPU_REG_DC_LUT_PWL_DATA;
|
||||
};
|
||||
static_assert_size(DC_LUT_PWL_DATA, sizeof(uint32_t));
|
||||
|
||||
union alignas(uint32_t) DC_LUT_30_COLOR {
|
||||
uint32_t value;
|
||||
struct {
|
||||
uint32_t color_10_blue : 10; // +0
|
||||
uint32_t color_10_green : 10; // +10
|
||||
uint32_t color_10_red : 10; // +20
|
||||
};
|
||||
static constexpr Register register_index = XE_GPU_REG_DC_LUT_30_COLOR;
|
||||
};
|
||||
static_assert_size(DC_LUT_30_COLOR, sizeof(uint32_t));
|
||||
|
||||
} // namespace reg
|
||||
|
||||
} // namespace gpu
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "xenia/gpu/shader_interpreter.h"
|
||||
|
||||
#include <cfloat>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
|
|
|
@ -32,10 +32,9 @@ void main(uint3 xe_thread_id : SV_DispatchThreadID) {
|
|||
}
|
||||
// UNORM conversion according to the Direct3D 10+ rules.
|
||||
uint3 input = uint3(xe_apply_gamma_source[xe_thread_id.xy] * 1023.0f + 0.5f);
|
||||
// The ramp is BGR, not RGB.
|
||||
float3 output = float3(XeApplyPWLGamma(input.r, 2u),
|
||||
float3 output = float3(XeApplyPWLGamma(input.r, 0u),
|
||||
XeApplyPWLGamma(input.g, 1u),
|
||||
XeApplyPWLGamma(input.b, 0u));
|
||||
XeApplyPWLGamma(input.b, 2u));
|
||||
xe_apply_gamma_dest[xe_thread_id.xy] =
|
||||
float4(output, XeApplyGammaGetAlpha(output));
|
||||
}
|
||||
|
|
|
@ -14,7 +14,8 @@ void main(uint3 xe_thread_id : SV_DispatchThreadID) {
|
|||
}
|
||||
// UNORM conversion according to the Direct3D 10+ rules.
|
||||
uint3 input = uint3(xe_apply_gamma_source[xe_thread_id.xy] * 255.0f + 0.5f);
|
||||
// The ramp is BGR, not RGB.
|
||||
// The ramp has blue in bits 0:9, green in 10:19, red in 20:29 - BGR passed as
|
||||
// an R10G10B10A2 buffer.
|
||||
float3 output = float3(xe_apply_gamma_ramp[input.r].b,
|
||||
xe_apply_gamma_ramp[input.g].g,
|
||||
xe_apply_gamma_ramp[input.b].r);
|
||||
|
|
|
@ -55,17 +55,17 @@ ld r0.xyz, r0.xyzw, T0[0].xyzw
|
|||
mad r0.xyz, r0.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
|
||||
ftou r0.xyz, r0.xyzx
|
||||
ushr r1.xyz, r0.xyzx, l(3, 3, 3, 0)
|
||||
imul null, r0.w, r1.z, l(3)
|
||||
imad r1.xy, r1.xyxx, l(3, 3, 0, 0), l(2, 1, 0, 0)
|
||||
ld r1.xz, r1.xxxx, T1[1].xzyw
|
||||
utof r1.x, r1.x
|
||||
imul null, r0.w, r1.x, l(3)
|
||||
ld r1.xw, r0.wwww, T1[1].xzwy
|
||||
utof r0.w, r1.x
|
||||
and r0.xyz, r0.xyzx, l(7, 7, 7, 0)
|
||||
imul null, r0.x, r1.z, r0.x
|
||||
imul null, r0.x, r1.w, r0.x
|
||||
utof r0.x, r0.x
|
||||
mad r0.x, r0.x, l(0.125000), r1.x
|
||||
mad r0.x, r0.x, l(0.125000), r0.w
|
||||
mul r0.x, r0.x, l(0.000015)
|
||||
min r2.x, r0.x, l(1.000000)
|
||||
ld r1.xy, r1.yyyy, T1[1].xyzw
|
||||
imad r0.xw, r1.yyyz, l(3, 0, 0, 3), l(1, 0, 0, 2)
|
||||
ld r1.xy, r0.xxxx, T1[1].xyzw
|
||||
utof r0.x, r1.x
|
||||
imul null, r0.y, r0.y, r1.y
|
||||
utof r0.y, r0.y
|
||||
|
@ -86,10 +86,10 @@ ret
|
|||
|
||||
const BYTE apply_gamma_pwl_cs[] =
|
||||
{
|
||||
68, 88, 66, 67, 180, 180,
|
||||
222, 28, 4, 138, 188, 113,
|
||||
52, 97, 214, 88, 116, 106,
|
||||
105, 240, 1, 0, 0, 0,
|
||||
68, 88, 66, 67, 134, 193,
|
||||
189, 188, 150, 246, 151, 78,
|
||||
29, 10, 33, 117, 212, 145,
|
||||
204, 130, 1, 0, 0, 0,
|
||||
128, 7, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
24, 2, 0, 0, 40, 2,
|
||||
|
@ -257,26 +257,16 @@ const BYTE apply_gamma_pwl_cs[] =
|
|||
0, 0, 0, 0, 38, 0,
|
||||
0, 8, 0, 208, 0, 0,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
35, 0, 0, 15, 50, 0,
|
||||
45, 0, 0, 8, 146, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 0, 16, 0, 1, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
3, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 64,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
45, 0, 0, 8, 82, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
6, 0, 16, 0, 1, 0,
|
||||
0, 0, 134, 125, 32, 0,
|
||||
246, 15, 16, 0, 0, 0,
|
||||
0, 0, 134, 119, 32, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 0, 86, 0, 0, 5,
|
||||
18, 0, 16, 0, 1, 0,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 10, 114, 0, 16, 0,
|
||||
|
@ -288,7 +278,7 @@ const BYTE apply_gamma_pwl_cs[] =
|
|||
0, 0, 38, 0, 0, 8,
|
||||
0, 208, 0, 0, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 1, 0,
|
||||
58, 0, 16, 0, 1, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 86, 0,
|
||||
0, 5, 18, 0, 16, 0,
|
||||
|
@ -298,8 +288,8 @@ const BYTE apply_gamma_pwl_cs[] =
|
|||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 62, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 62, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
56, 0, 0, 7, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
|
@ -309,10 +299,20 @@ const BYTE apply_gamma_pwl_cs[] =
|
|||
2, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 63, 45, 0, 0, 8,
|
||||
128, 63, 35, 0, 0, 15,
|
||||
146, 0, 16, 0, 0, 0,
|
||||
0, 0, 86, 9, 16, 0,
|
||||
1, 0, 0, 0, 2, 64,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 64, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 45, 0, 0, 8,
|
||||
50, 0, 16, 0, 1, 0,
|
||||
0, 0, 86, 5, 16, 0,
|
||||
1, 0, 0, 0, 70, 126,
|
||||
0, 0, 6, 0, 16, 0,
|
||||
0, 0, 0, 0, 70, 126,
|
||||
32, 0, 1, 0, 0, 0,
|
||||
1, 0, 0, 0, 86, 0,
|
||||
0, 5, 18, 0, 16, 0,
|
||||
|
|
|
@ -55,17 +55,17 @@ ld r0.xyz, r0.xyzw, T0[0].xyzw
|
|||
mad r0.xyz, r0.xyzx, l(1023.000000, 1023.000000, 1023.000000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
|
||||
ftou r0.xyz, r0.xyzx
|
||||
ushr r1.xyz, r0.xyzx, l(3, 3, 3, 0)
|
||||
imul null, r0.w, r1.z, l(3)
|
||||
imad r1.xy, r1.xyxx, l(3, 3, 0, 0), l(2, 1, 0, 0)
|
||||
ld r1.xz, r1.xxxx, T1[1].xzyw
|
||||
utof r1.x, r1.x
|
||||
imul null, r0.w, r1.x, l(3)
|
||||
ld r1.xw, r0.wwww, T1[1].xzwy
|
||||
utof r0.w, r1.x
|
||||
and r0.xyz, r0.xyzx, l(7, 7, 7, 0)
|
||||
imul null, r0.x, r1.z, r0.x
|
||||
imul null, r0.x, r1.w, r0.x
|
||||
utof r0.x, r0.x
|
||||
mad r0.x, r0.x, l(0.125000), r1.x
|
||||
mad r0.x, r0.x, l(0.125000), r0.w
|
||||
mul r0.x, r0.x, l(0.000015)
|
||||
min r2.x, r0.x, l(1.000000)
|
||||
ld r1.xy, r1.yyyy, T1[1].xyzw
|
||||
imad r0.xw, r1.yyyz, l(3, 0, 0, 3), l(1, 0, 0, 2)
|
||||
ld r1.xy, r0.xxxx, T1[1].xyzw
|
||||
utof r0.x, r1.x
|
||||
imul null, r0.y, r0.y, r1.y
|
||||
utof r0.y, r0.y
|
||||
|
@ -86,10 +86,10 @@ ret
|
|||
|
||||
const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
||||
{
|
||||
68, 88, 66, 67, 165, 122,
|
||||
242, 36, 160, 218, 193, 67,
|
||||
37, 43, 138, 45, 109, 219,
|
||||
226, 109, 1, 0, 0, 0,
|
||||
68, 88, 66, 67, 115, 68,
|
||||
69, 234, 116, 212, 118, 193,
|
||||
71, 10, 44, 165, 244, 209,
|
||||
63, 198, 1, 0, 0, 0,
|
||||
148, 7, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
24, 2, 0, 0, 40, 2,
|
||||
|
@ -257,26 +257,16 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
|||
0, 0, 0, 0, 38, 0,
|
||||
0, 8, 0, 208, 0, 0,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 64,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
35, 0, 0, 15, 50, 0,
|
||||
45, 0, 0, 8, 146, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 0, 16, 0, 1, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
3, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 64,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
45, 0, 0, 8, 82, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
6, 0, 16, 0, 1, 0,
|
||||
0, 0, 134, 125, 32, 0,
|
||||
246, 15, 16, 0, 0, 0,
|
||||
0, 0, 134, 119, 32, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 0, 86, 0, 0, 5,
|
||||
18, 0, 16, 0, 1, 0,
|
||||
130, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 10, 114, 0, 16, 0,
|
||||
|
@ -288,7 +278,7 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
|||
0, 0, 38, 0, 0, 8,
|
||||
0, 208, 0, 0, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 1, 0,
|
||||
58, 0, 16, 0, 1, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 86, 0,
|
||||
0, 5, 18, 0, 16, 0,
|
||||
|
@ -298,8 +288,8 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
|||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
0, 0, 0, 62, 10, 0,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 62, 58, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
56, 0, 0, 7, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
|
@ -309,10 +299,20 @@ const BYTE apply_gamma_pwl_fxaa_luma_cs[] =
|
|||
2, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 63, 45, 0, 0, 8,
|
||||
128, 63, 35, 0, 0, 15,
|
||||
146, 0, 16, 0, 0, 0,
|
||||
0, 0, 86, 9, 16, 0,
|
||||
1, 0, 0, 0, 2, 64,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 64, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 45, 0, 0, 8,
|
||||
50, 0, 16, 0, 1, 0,
|
||||
0, 0, 86, 5, 16, 0,
|
||||
1, 0, 0, 0, 70, 126,
|
||||
0, 0, 6, 0, 16, 0,
|
||||
0, 0, 0, 0, 70, 126,
|
||||
32, 0, 1, 0, 0, 0,
|
||||
1, 0, 0, 0, 86, 0,
|
||||
0, 5, 18, 0, 16, 0,
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -121,21 +121,21 @@ ret
|
|||
|
||||
const BYTE continuous_quad_hs[] =
|
||||
{
|
||||
68, 88, 66, 67, 41, 61,
|
||||
68, 236, 233, 38, 162, 138,
|
||||
209, 48, 160, 247, 155, 238,
|
||||
65, 82, 1, 0, 0, 0,
|
||||
12, 14, 0, 0, 6, 0,
|
||||
68, 88, 66, 67, 56, 101,
|
||||
228, 239, 192, 85, 186, 185,
|
||||
211, 32, 109, 84, 115, 240,
|
||||
153, 130, 1, 0, 0, 0,
|
||||
28, 14, 0, 0, 6, 0,
|
||||
0, 0, 56, 0, 0, 0,
|
||||
216, 10, 0, 0, 12, 11,
|
||||
0, 0, 64, 11, 0, 0,
|
||||
4, 12, 0, 0, 112, 13,
|
||||
232, 10, 0, 0, 28, 11,
|
||||
0, 0, 80, 11, 0, 0,
|
||||
20, 12, 0, 0, 128, 13,
|
||||
0, 0, 82, 68, 69, 70,
|
||||
152, 10, 0, 0, 1, 0,
|
||||
168, 10, 0, 0, 1, 0,
|
||||
0, 0, 120, 0, 0, 0,
|
||||
1, 0, 0, 0, 60, 0,
|
||||
0, 0, 1, 5, 83, 72,
|
||||
0, 5, 0, 0, 110, 10,
|
||||
0, 5, 0, 0, 126, 10,
|
||||
0, 0, 19, 19, 68, 37,
|
||||
60, 0, 0, 0, 24, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -235,137 +235,137 @@ const BYTE continuous_quad_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 156, 7,
|
||||
0, 0, 0, 0, 158, 7,
|
||||
0, 0, 168, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 179, 7, 0, 0,
|
||||
0, 0, 197, 7, 0, 0,
|
||||
176, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
212, 7, 0, 0, 180, 0,
|
||||
230, 7, 0, 0, 180, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 228, 7,
|
||||
0, 0, 0, 0, 246, 7,
|
||||
0, 0, 184, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 116, 6, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 249, 7, 0, 0,
|
||||
0, 0, 11, 8, 0, 0,
|
||||
192, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
28, 8, 0, 0, 0, 0,
|
||||
44, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
64, 8, 0, 0, 224, 0,
|
||||
80, 8, 0, 0, 224, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 85, 8,
|
||||
0, 0, 0, 0, 101, 8,
|
||||
0, 0, 228, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 52, 7, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 109, 8, 0, 0,
|
||||
0, 0, 125, 8, 0, 0,
|
||||
232, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
126, 8, 0, 0, 236, 0,
|
||||
142, 8, 0, 0, 236, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 166, 8,
|
||||
0, 0, 0, 0, 182, 8,
|
||||
0, 0, 240, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 220, 8, 0, 0,
|
||||
0, 0, 236, 8, 0, 0,
|
||||
0, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
247, 8, 0, 0, 8, 1,
|
||||
7, 9, 0, 0, 8, 1,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 17, 9,
|
||||
0, 0, 0, 0, 33, 9,
|
||||
0, 0, 16, 1, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 51, 9, 0, 0,
|
||||
0, 0, 67, 9, 0, 0,
|
||||
32, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
68, 9, 0, 0, 0, 0,
|
||||
84, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
104, 9, 0, 0, 64, 1,
|
||||
120, 9, 0, 0, 64, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 172, 9,
|
||||
0, 0, 0, 0, 188, 9,
|
||||
0, 0, 80, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 197, 9, 0, 0,
|
||||
0, 0, 213, 9, 0, 0,
|
||||
96, 1, 0, 0, 64, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
216, 9, 0, 0, 0, 0,
|
||||
232, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
252, 9, 0, 0, 160, 1,
|
||||
12, 10, 0, 0, 160, 1,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 20, 10,
|
||||
0, 0, 0, 0, 36, 10,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 56, 10,
|
||||
0, 0, 0, 0, 72, 10,
|
||||
0, 0, 192, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 86, 10, 0, 0,
|
||||
0, 0, 102, 10, 0, 0,
|
||||
208, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
184, 8, 0, 0, 0, 0,
|
||||
200, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
|
@ -455,11 +455,14 @@ const BYTE continuous_quad_hs[] =
|
|||
0, 120, 101, 95, 112, 111,
|
||||
105, 110, 116, 95, 99, 111,
|
||||
110, 115, 116, 97, 110, 116,
|
||||
95, 114, 97, 100, 105, 117,
|
||||
115, 0, 120, 101, 95, 112,
|
||||
111, 105, 110, 116, 95, 115,
|
||||
99, 114, 101, 101, 110, 95,
|
||||
116, 111, 95, 110, 100, 99,
|
||||
95, 100, 105, 97, 109, 101,
|
||||
116, 101, 114, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 100, 105, 97, 109,
|
||||
101, 116, 101, 114, 95, 116,
|
||||
111, 95, 110, 100, 99, 95,
|
||||
114, 97, 100, 105, 117, 115,
|
||||
0, 120, 101, 95, 105, 110,
|
||||
116, 101, 114, 112, 111, 108,
|
||||
97, 116, 111, 114, 95, 115,
|
||||
|
@ -477,230 +480,230 @@ const BYTE continuous_quad_hs[] =
|
|||
105, 122, 122, 108, 101, 100,
|
||||
95, 115, 105, 103, 110, 115,
|
||||
0, 117, 105, 110, 116, 52,
|
||||
0, 171, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 116,
|
||||
101, 120, 116, 117, 114, 101,
|
||||
115, 95, 114, 101, 115, 111,
|
||||
108, 118, 101, 100, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 101, 115, 116,
|
||||
95, 114, 101, 102, 101, 114,
|
||||
101, 110, 99, 101, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 111, 95, 109,
|
||||
97, 115, 107, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 51, 50, 98, 112, 112,
|
||||
95, 116, 105, 108, 101, 95,
|
||||
112, 105, 116, 99, 104, 95,
|
||||
100, 119, 111, 114, 100, 115,
|
||||
95, 115, 99, 97, 108, 101,
|
||||
100, 0, 120, 101, 95, 99,
|
||||
111, 108, 111, 114, 95, 101,
|
||||
120, 112, 95, 98, 105, 97,
|
||||
115, 0, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
100, 114, 97, 109, 95, 112,
|
||||
111, 108, 121, 95, 111, 102,
|
||||
102, 115, 101, 116, 95, 102,
|
||||
114, 111, 110, 116, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 112, 111, 108, 121,
|
||||
95, 111, 102, 102, 115, 101,
|
||||
116, 95, 98, 97, 99, 107,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 100, 101,
|
||||
112, 116, 104, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 115, 116, 101, 110,
|
||||
99, 105, 108, 0, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
95, 114, 116, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 88, 69, 86, 69,
|
||||
82, 84, 69, 88, 73, 68,
|
||||
0, 171, 79, 83, 71, 78,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
102, 111, 114, 109, 97, 116,
|
||||
95, 102, 108, 97, 103, 115,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 114, 116,
|
||||
95, 99, 108, 97, 109, 112,
|
||||
0, 171, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 107, 101, 101, 112,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
171, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 108, 101, 110,
|
||||
100, 95, 102, 97, 99, 116,
|
||||
111, 114, 115, 95, 111, 112,
|
||||
115, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 98,
|
||||
108, 101, 110, 100, 95, 99,
|
||||
111, 110, 115, 116, 97, 110,
|
||||
116, 0, 77, 105, 99, 114,
|
||||
111, 115, 111, 102, 116, 32,
|
||||
40, 82, 41, 32, 72, 76,
|
||||
83, 76, 32, 83, 104, 97,
|
||||
100, 101, 114, 32, 67, 111,
|
||||
109, 112, 105, 108, 101, 114,
|
||||
32, 49, 48, 46, 49, 0,
|
||||
171, 171, 73, 83, 71, 78,
|
||||
44, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
0, 0, 1, 1, 0, 0,
|
||||
88, 69, 86, 69, 82, 84,
|
||||
69, 88, 73, 68, 0, 171,
|
||||
80, 67, 83, 71, 188, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
8, 0, 0, 0, 152, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
79, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 88, 69,
|
||||
86, 69, 82, 84, 69, 88,
|
||||
73, 68, 0, 171, 80, 67,
|
||||
83, 71, 188, 0, 0, 0,
|
||||
6, 0, 0, 0, 8, 0,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
1, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 14, 0, 0, 166, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
12, 0, 0, 0, 3, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
1, 14, 0, 0, 166, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
12, 0, 0, 0, 3, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
1, 14, 0, 0, 83, 86,
|
||||
95, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
83, 86, 95, 73, 110, 115,
|
||||
105, 100, 101, 84, 101, 115,
|
||||
115, 70, 97, 99, 116, 111,
|
||||
114, 0, 171, 171, 83, 72,
|
||||
69, 88, 100, 1, 0, 0,
|
||||
81, 0, 3, 0, 89, 0,
|
||||
0, 0, 113, 0, 0, 1,
|
||||
147, 32, 0, 1, 148, 32,
|
||||
0, 1, 149, 24, 0, 1,
|
||||
150, 32, 0, 1, 151, 24,
|
||||
0, 1, 106, 8, 0, 1,
|
||||
89, 0, 0, 7, 70, 142,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 115, 0,
|
||||
0, 1, 153, 0, 0, 2,
|
||||
4, 0, 0, 0, 95, 0,
|
||||
0, 2, 0, 112, 1, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
1, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
2, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
3, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 1, 14,
|
||||
0, 0, 166, 0, 0, 0,
|
||||
0, 0, 0, 0, 12, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 1, 14,
|
||||
0, 0, 166, 0, 0, 0,
|
||||
1, 0, 0, 0, 12, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 2, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
14, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 8,
|
||||
18, 32, 144, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
5, 0, 0, 0, 1, 14,
|
||||
0, 0, 83, 86, 95, 84,
|
||||
101, 115, 115, 70, 97, 99,
|
||||
116, 111, 114, 0, 83, 86,
|
||||
95, 73, 110, 115, 105, 100,
|
||||
101, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
171, 171, 83, 72, 69, 88,
|
||||
100, 1, 0, 0, 81, 0,
|
||||
3, 0, 89, 0, 0, 0,
|
||||
113, 0, 0, 1, 147, 32,
|
||||
0, 1, 148, 32, 0, 1,
|
||||
149, 24, 0, 1, 150, 32,
|
||||
0, 1, 151, 24, 0, 1,
|
||||
106, 8, 0, 1, 89, 0,
|
||||
0, 7, 70, 142, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 4, 0,
|
||||
0, 0, 95, 0, 0, 2,
|
||||
0, 112, 1, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
4, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 5, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
104, 0, 0, 2, 1, 0,
|
||||
0, 0, 91, 0, 0, 4,
|
||||
18, 32, 16, 0, 1, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
13, 0, 0, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
3, 0, 0, 0, 14, 0,
|
||||
0, 0, 104, 0, 0, 2,
|
||||
1, 0, 0, 0, 91, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 0, 54, 0, 0, 4,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 112, 1, 0,
|
||||
54, 0, 0, 8, 18, 32,
|
||||
144, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
115, 0, 0, 1, 153, 0,
|
||||
0, 2, 2, 0, 0, 0,
|
||||
95, 0, 0, 2, 0, 112,
|
||||
1, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 4, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 112, 1, 0, 54, 0,
|
||||
0, 9, 18, 32, 208, 0,
|
||||
4, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
16, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
2, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 9,
|
||||
18, 32, 208, 0, 4, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 83, 84, 65, 84,
|
||||
148, 0, 0, 0, 6, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 5, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
83, 84, 65, 84, 148, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
|
@ -708,17 +711,16 @@ const BYTE continuous_quad_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
3, 0, 0, 0, 4, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -112,21 +112,21 @@ ret
|
|||
|
||||
const BYTE continuous_triangle_hs[] =
|
||||
{
|
||||
68, 88, 66, 67, 186, 50,
|
||||
224, 20, 247, 162, 237, 207,
|
||||
151, 21, 132, 253, 255, 73,
|
||||
27, 33, 1, 0, 0, 0,
|
||||
124, 13, 0, 0, 6, 0,
|
||||
68, 88, 66, 67, 157, 238,
|
||||
46, 85, 189, 214, 238, 189,
|
||||
170, 130, 106, 213, 101, 223,
|
||||
102, 58, 1, 0, 0, 0,
|
||||
140, 13, 0, 0, 6, 0,
|
||||
0, 0, 56, 0, 0, 0,
|
||||
216, 10, 0, 0, 12, 11,
|
||||
0, 0, 64, 11, 0, 0,
|
||||
212, 11, 0, 0, 224, 12,
|
||||
232, 10, 0, 0, 28, 11,
|
||||
0, 0, 80, 11, 0, 0,
|
||||
228, 11, 0, 0, 240, 12,
|
||||
0, 0, 82, 68, 69, 70,
|
||||
152, 10, 0, 0, 1, 0,
|
||||
168, 10, 0, 0, 1, 0,
|
||||
0, 0, 120, 0, 0, 0,
|
||||
1, 0, 0, 0, 60, 0,
|
||||
0, 0, 1, 5, 83, 72,
|
||||
0, 5, 0, 0, 110, 10,
|
||||
0, 5, 0, 0, 126, 10,
|
||||
0, 0, 19, 19, 68, 37,
|
||||
60, 0, 0, 0, 24, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -226,137 +226,137 @@ const BYTE continuous_triangle_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 156, 7,
|
||||
0, 0, 0, 0, 158, 7,
|
||||
0, 0, 168, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 179, 7, 0, 0,
|
||||
0, 0, 197, 7, 0, 0,
|
||||
176, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
212, 7, 0, 0, 180, 0,
|
||||
230, 7, 0, 0, 180, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 228, 7,
|
||||
0, 0, 0, 0, 246, 7,
|
||||
0, 0, 184, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 116, 6, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 249, 7, 0, 0,
|
||||
0, 0, 11, 8, 0, 0,
|
||||
192, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
28, 8, 0, 0, 0, 0,
|
||||
44, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
64, 8, 0, 0, 224, 0,
|
||||
80, 8, 0, 0, 224, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 85, 8,
|
||||
0, 0, 0, 0, 101, 8,
|
||||
0, 0, 228, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 52, 7, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 109, 8, 0, 0,
|
||||
0, 0, 125, 8, 0, 0,
|
||||
232, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
126, 8, 0, 0, 236, 0,
|
||||
142, 8, 0, 0, 236, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 166, 8,
|
||||
0, 0, 0, 0, 182, 8,
|
||||
0, 0, 240, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 220, 8, 0, 0,
|
||||
0, 0, 236, 8, 0, 0,
|
||||
0, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
247, 8, 0, 0, 8, 1,
|
||||
7, 9, 0, 0, 8, 1,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 17, 9,
|
||||
0, 0, 0, 0, 33, 9,
|
||||
0, 0, 16, 1, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 51, 9, 0, 0,
|
||||
0, 0, 67, 9, 0, 0,
|
||||
32, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
68, 9, 0, 0, 0, 0,
|
||||
84, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
104, 9, 0, 0, 64, 1,
|
||||
120, 9, 0, 0, 64, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 172, 9,
|
||||
0, 0, 0, 0, 188, 9,
|
||||
0, 0, 80, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 197, 9, 0, 0,
|
||||
0, 0, 213, 9, 0, 0,
|
||||
96, 1, 0, 0, 64, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
216, 9, 0, 0, 0, 0,
|
||||
232, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
252, 9, 0, 0, 160, 1,
|
||||
12, 10, 0, 0, 160, 1,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 20, 10,
|
||||
0, 0, 0, 0, 36, 10,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 56, 10,
|
||||
0, 0, 0, 0, 72, 10,
|
||||
0, 0, 192, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 86, 10, 0, 0,
|
||||
0, 0, 102, 10, 0, 0,
|
||||
208, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
184, 8, 0, 0, 0, 0,
|
||||
200, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
|
@ -446,11 +446,14 @@ const BYTE continuous_triangle_hs[] =
|
|||
0, 120, 101, 95, 112, 111,
|
||||
105, 110, 116, 95, 99, 111,
|
||||
110, 115, 116, 97, 110, 116,
|
||||
95, 114, 97, 100, 105, 117,
|
||||
115, 0, 120, 101, 95, 112,
|
||||
111, 105, 110, 116, 95, 115,
|
||||
99, 114, 101, 101, 110, 95,
|
||||
116, 111, 95, 110, 100, 99,
|
||||
95, 100, 105, 97, 109, 101,
|
||||
116, 101, 114, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 100, 105, 97, 109,
|
||||
101, 116, 101, 114, 95, 116,
|
||||
111, 95, 110, 100, 99, 95,
|
||||
114, 97, 100, 105, 117, 115,
|
||||
0, 120, 101, 95, 105, 110,
|
||||
116, 101, 114, 112, 111, 108,
|
||||
97, 116, 111, 114, 95, 115,
|
||||
|
@ -468,224 +471,223 @@ const BYTE continuous_triangle_hs[] =
|
|||
105, 122, 122, 108, 101, 100,
|
||||
95, 115, 105, 103, 110, 115,
|
||||
0, 117, 105, 110, 116, 52,
|
||||
0, 171, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 116,
|
||||
101, 120, 116, 117, 114, 101,
|
||||
115, 95, 114, 101, 115, 111,
|
||||
108, 118, 101, 100, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 101, 115, 116,
|
||||
95, 114, 101, 102, 101, 114,
|
||||
101, 110, 99, 101, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 111, 95, 109,
|
||||
97, 115, 107, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 51, 50, 98, 112, 112,
|
||||
95, 116, 105, 108, 101, 95,
|
||||
112, 105, 116, 99, 104, 95,
|
||||
100, 119, 111, 114, 100, 115,
|
||||
95, 115, 99, 97, 108, 101,
|
||||
100, 0, 120, 101, 95, 99,
|
||||
111, 108, 111, 114, 95, 101,
|
||||
120, 112, 95, 98, 105, 97,
|
||||
115, 0, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
100, 114, 97, 109, 95, 112,
|
||||
111, 108, 121, 95, 111, 102,
|
||||
102, 115, 101, 116, 95, 102,
|
||||
114, 111, 110, 116, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 112, 111, 108, 121,
|
||||
95, 111, 102, 102, 115, 101,
|
||||
116, 95, 98, 97, 99, 107,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 100, 101,
|
||||
112, 116, 104, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 115, 116, 101, 110,
|
||||
99, 105, 108, 0, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
95, 114, 116, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 88, 69, 86, 69,
|
||||
82, 84, 69, 88, 73, 68,
|
||||
0, 171, 79, 83, 71, 78,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
102, 111, 114, 109, 97, 116,
|
||||
95, 102, 108, 97, 103, 115,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 114, 116,
|
||||
95, 99, 108, 97, 109, 112,
|
||||
0, 171, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 107, 101, 101, 112,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
171, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 108, 101, 110,
|
||||
100, 95, 102, 97, 99, 116,
|
||||
111, 114, 115, 95, 111, 112,
|
||||
115, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 98,
|
||||
108, 101, 110, 100, 95, 99,
|
||||
111, 110, 115, 116, 97, 110,
|
||||
116, 0, 77, 105, 99, 114,
|
||||
111, 115, 111, 102, 116, 32,
|
||||
40, 82, 41, 32, 72, 76,
|
||||
83, 76, 32, 83, 104, 97,
|
||||
100, 101, 114, 32, 67, 111,
|
||||
109, 112, 105, 108, 101, 114,
|
||||
32, 49, 48, 46, 49, 0,
|
||||
171, 171, 73, 83, 71, 78,
|
||||
44, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
0, 0, 1, 1, 0, 0,
|
||||
88, 69, 86, 69, 82, 84,
|
||||
69, 88, 73, 68, 0, 171,
|
||||
80, 67, 83, 71, 140, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
8, 0, 0, 0, 104, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 104, 0,
|
||||
79, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
1, 14, 0, 0, 104, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 14, 0, 0, 118, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
14, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 88, 69,
|
||||
86, 69, 82, 84, 69, 88,
|
||||
73, 68, 0, 171, 80, 67,
|
||||
83, 71, 140, 0, 0, 0,
|
||||
4, 0, 0, 0, 8, 0,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
0, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 14, 0, 0, 83, 86,
|
||||
95, 84, 101, 115, 115, 70,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
1, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 1, 14,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
2, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 1, 14,
|
||||
0, 0, 118, 0, 0, 0,
|
||||
0, 0, 0, 0, 14, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 1, 14,
|
||||
0, 0, 83, 86, 95, 84,
|
||||
101, 115, 115, 70, 97, 99,
|
||||
116, 111, 114, 0, 83, 86,
|
||||
95, 73, 110, 115, 105, 100,
|
||||
101, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
83, 86, 95, 73, 110, 115,
|
||||
105, 100, 101, 84, 101, 115,
|
||||
115, 70, 97, 99, 116, 111,
|
||||
114, 0, 171, 171, 83, 72,
|
||||
69, 88, 4, 1, 0, 0,
|
||||
81, 0, 3, 0, 65, 0,
|
||||
0, 0, 113, 0, 0, 1,
|
||||
147, 24, 0, 1, 148, 24,
|
||||
0, 1, 149, 16, 0, 1,
|
||||
150, 32, 0, 1, 151, 24,
|
||||
0, 1, 106, 8, 0, 1,
|
||||
89, 0, 0, 7, 70, 142,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
171, 171, 83, 72, 69, 88,
|
||||
4, 1, 0, 0, 81, 0,
|
||||
3, 0, 65, 0, 0, 0,
|
||||
113, 0, 0, 1, 147, 24,
|
||||
0, 1, 148, 24, 0, 1,
|
||||
149, 16, 0, 1, 150, 32,
|
||||
0, 1, 151, 24, 0, 1,
|
||||
106, 8, 0, 1, 89, 0,
|
||||
0, 7, 70, 142, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 115, 0,
|
||||
0, 1, 153, 0, 0, 2,
|
||||
3, 0, 0, 0, 95, 0,
|
||||
0, 2, 0, 112, 1, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
17, 0, 0, 0, 103, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 3, 0,
|
||||
0, 0, 95, 0, 0, 2,
|
||||
0, 112, 1, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
1, 0, 0, 0, 18, 0,
|
||||
0, 0, 0, 0, 17, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 2, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
104, 0, 0, 2, 1, 0,
|
||||
0, 0, 91, 0, 0, 4,
|
||||
18, 32, 16, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 4, 18, 0,
|
||||
18, 32, 16, 0, 1, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
19, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 8,
|
||||
18, 32, 144, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 112, 1, 0, 54, 0,
|
||||
0, 8, 18, 32, 144, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 115, 0,
|
||||
0, 1, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 3, 0,
|
||||
0, 0, 20, 0, 0, 0,
|
||||
54, 0, 0, 7, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 83, 84, 65, 84,
|
||||
148, 0, 0, 0, 5, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 1, 115, 0, 0, 1,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
20, 0, 0, 0, 54, 0,
|
||||
0, 7, 18, 32, 16, 0,
|
||||
3, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
83, 84, 65, 84, 148, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
10, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -121,21 +121,21 @@ ret
|
|||
|
||||
const BYTE discrete_quad_hs[] =
|
||||
{
|
||||
68, 88, 66, 67, 228, 206,
|
||||
50, 86, 18, 2, 56, 90,
|
||||
135, 194, 252, 60, 37, 181,
|
||||
95, 80, 1, 0, 0, 0,
|
||||
12, 14, 0, 0, 6, 0,
|
||||
68, 88, 66, 67, 12, 3,
|
||||
52, 62, 60, 171, 174, 248,
|
||||
249, 81, 162, 162, 255, 59,
|
||||
137, 143, 1, 0, 0, 0,
|
||||
28, 14, 0, 0, 6, 0,
|
||||
0, 0, 56, 0, 0, 0,
|
||||
216, 10, 0, 0, 12, 11,
|
||||
0, 0, 64, 11, 0, 0,
|
||||
4, 12, 0, 0, 112, 13,
|
||||
232, 10, 0, 0, 28, 11,
|
||||
0, 0, 80, 11, 0, 0,
|
||||
20, 12, 0, 0, 128, 13,
|
||||
0, 0, 82, 68, 69, 70,
|
||||
152, 10, 0, 0, 1, 0,
|
||||
168, 10, 0, 0, 1, 0,
|
||||
0, 0, 120, 0, 0, 0,
|
||||
1, 0, 0, 0, 60, 0,
|
||||
0, 0, 1, 5, 83, 72,
|
||||
0, 5, 0, 0, 110, 10,
|
||||
0, 5, 0, 0, 126, 10,
|
||||
0, 0, 19, 19, 68, 37,
|
||||
60, 0, 0, 0, 24, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -235,137 +235,137 @@ const BYTE discrete_quad_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 156, 7,
|
||||
0, 0, 0, 0, 158, 7,
|
||||
0, 0, 168, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 179, 7, 0, 0,
|
||||
0, 0, 197, 7, 0, 0,
|
||||
176, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
212, 7, 0, 0, 180, 0,
|
||||
230, 7, 0, 0, 180, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 228, 7,
|
||||
0, 0, 0, 0, 246, 7,
|
||||
0, 0, 184, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 116, 6, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 249, 7, 0, 0,
|
||||
0, 0, 11, 8, 0, 0,
|
||||
192, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
28, 8, 0, 0, 0, 0,
|
||||
44, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
64, 8, 0, 0, 224, 0,
|
||||
80, 8, 0, 0, 224, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 85, 8,
|
||||
0, 0, 0, 0, 101, 8,
|
||||
0, 0, 228, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 52, 7, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 109, 8, 0, 0,
|
||||
0, 0, 125, 8, 0, 0,
|
||||
232, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
126, 8, 0, 0, 236, 0,
|
||||
142, 8, 0, 0, 236, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 166, 8,
|
||||
0, 0, 0, 0, 182, 8,
|
||||
0, 0, 240, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 220, 8, 0, 0,
|
||||
0, 0, 236, 8, 0, 0,
|
||||
0, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
247, 8, 0, 0, 8, 1,
|
||||
7, 9, 0, 0, 8, 1,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 17, 9,
|
||||
0, 0, 0, 0, 33, 9,
|
||||
0, 0, 16, 1, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 51, 9, 0, 0,
|
||||
0, 0, 67, 9, 0, 0,
|
||||
32, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
68, 9, 0, 0, 0, 0,
|
||||
84, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
104, 9, 0, 0, 64, 1,
|
||||
120, 9, 0, 0, 64, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 172, 9,
|
||||
0, 0, 0, 0, 188, 9,
|
||||
0, 0, 80, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 197, 9, 0, 0,
|
||||
0, 0, 213, 9, 0, 0,
|
||||
96, 1, 0, 0, 64, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
216, 9, 0, 0, 0, 0,
|
||||
232, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
252, 9, 0, 0, 160, 1,
|
||||
12, 10, 0, 0, 160, 1,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 20, 10,
|
||||
0, 0, 0, 0, 36, 10,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 56, 10,
|
||||
0, 0, 0, 0, 72, 10,
|
||||
0, 0, 192, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 86, 10, 0, 0,
|
||||
0, 0, 102, 10, 0, 0,
|
||||
208, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
184, 8, 0, 0, 0, 0,
|
||||
200, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
|
@ -455,11 +455,14 @@ const BYTE discrete_quad_hs[] =
|
|||
0, 120, 101, 95, 112, 111,
|
||||
105, 110, 116, 95, 99, 111,
|
||||
110, 115, 116, 97, 110, 116,
|
||||
95, 114, 97, 100, 105, 117,
|
||||
115, 0, 120, 101, 95, 112,
|
||||
111, 105, 110, 116, 95, 115,
|
||||
99, 114, 101, 101, 110, 95,
|
||||
116, 111, 95, 110, 100, 99,
|
||||
95, 100, 105, 97, 109, 101,
|
||||
116, 101, 114, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 100, 105, 97, 109,
|
||||
101, 116, 101, 114, 95, 116,
|
||||
111, 95, 110, 100, 99, 95,
|
||||
114, 97, 100, 105, 117, 115,
|
||||
0, 120, 101, 95, 105, 110,
|
||||
116, 101, 114, 112, 111, 108,
|
||||
97, 116, 111, 114, 95, 115,
|
||||
|
@ -477,230 +480,230 @@ const BYTE discrete_quad_hs[] =
|
|||
105, 122, 122, 108, 101, 100,
|
||||
95, 115, 105, 103, 110, 115,
|
||||
0, 117, 105, 110, 116, 52,
|
||||
0, 171, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 116,
|
||||
101, 120, 116, 117, 114, 101,
|
||||
115, 95, 114, 101, 115, 111,
|
||||
108, 118, 101, 100, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 101, 115, 116,
|
||||
95, 114, 101, 102, 101, 114,
|
||||
101, 110, 99, 101, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 111, 95, 109,
|
||||
97, 115, 107, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 51, 50, 98, 112, 112,
|
||||
95, 116, 105, 108, 101, 95,
|
||||
112, 105, 116, 99, 104, 95,
|
||||
100, 119, 111, 114, 100, 115,
|
||||
95, 115, 99, 97, 108, 101,
|
||||
100, 0, 120, 101, 95, 99,
|
||||
111, 108, 111, 114, 95, 101,
|
||||
120, 112, 95, 98, 105, 97,
|
||||
115, 0, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
100, 114, 97, 109, 95, 112,
|
||||
111, 108, 121, 95, 111, 102,
|
||||
102, 115, 101, 116, 95, 102,
|
||||
114, 111, 110, 116, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 112, 111, 108, 121,
|
||||
95, 111, 102, 102, 115, 101,
|
||||
116, 95, 98, 97, 99, 107,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 100, 101,
|
||||
112, 116, 104, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 115, 116, 101, 110,
|
||||
99, 105, 108, 0, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
95, 114, 116, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 88, 69, 86, 69,
|
||||
82, 84, 69, 88, 73, 68,
|
||||
0, 171, 79, 83, 71, 78,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
102, 111, 114, 109, 97, 116,
|
||||
95, 102, 108, 97, 103, 115,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 114, 116,
|
||||
95, 99, 108, 97, 109, 112,
|
||||
0, 171, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 107, 101, 101, 112,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
171, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 108, 101, 110,
|
||||
100, 95, 102, 97, 99, 116,
|
||||
111, 114, 115, 95, 111, 112,
|
||||
115, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 98,
|
||||
108, 101, 110, 100, 95, 99,
|
||||
111, 110, 115, 116, 97, 110,
|
||||
116, 0, 77, 105, 99, 114,
|
||||
111, 115, 111, 102, 116, 32,
|
||||
40, 82, 41, 32, 72, 76,
|
||||
83, 76, 32, 83, 104, 97,
|
||||
100, 101, 114, 32, 67, 111,
|
||||
109, 112, 105, 108, 101, 114,
|
||||
32, 49, 48, 46, 49, 0,
|
||||
171, 171, 73, 83, 71, 78,
|
||||
44, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
0, 0, 1, 1, 0, 0,
|
||||
88, 69, 86, 69, 82, 84,
|
||||
69, 88, 73, 68, 0, 171,
|
||||
80, 67, 83, 71, 188, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
8, 0, 0, 0, 152, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
79, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 14, 0, 0, 152, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 88, 69,
|
||||
86, 69, 82, 84, 69, 88,
|
||||
73, 68, 0, 171, 80, 67,
|
||||
83, 71, 188, 0, 0, 0,
|
||||
6, 0, 0, 0, 8, 0,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
11, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
1, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 14, 0, 0, 166, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
12, 0, 0, 0, 3, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
1, 14, 0, 0, 166, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
12, 0, 0, 0, 3, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
1, 14, 0, 0, 83, 86,
|
||||
95, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
83, 86, 95, 73, 110, 115,
|
||||
105, 100, 101, 84, 101, 115,
|
||||
115, 70, 97, 99, 116, 111,
|
||||
114, 0, 171, 171, 83, 72,
|
||||
69, 88, 100, 1, 0, 0,
|
||||
81, 0, 3, 0, 89, 0,
|
||||
0, 0, 113, 0, 0, 1,
|
||||
147, 32, 0, 1, 148, 32,
|
||||
0, 1, 149, 24, 0, 1,
|
||||
150, 8, 0, 1, 151, 24,
|
||||
0, 1, 106, 8, 0, 1,
|
||||
89, 0, 0, 7, 70, 142,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 115, 0,
|
||||
0, 1, 153, 0, 0, 2,
|
||||
4, 0, 0, 0, 95, 0,
|
||||
0, 2, 0, 112, 1, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
1, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
2, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 1, 14,
|
||||
0, 0, 152, 0, 0, 0,
|
||||
3, 0, 0, 0, 11, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 1, 14,
|
||||
0, 0, 166, 0, 0, 0,
|
||||
0, 0, 0, 0, 12, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 1, 14,
|
||||
0, 0, 166, 0, 0, 0,
|
||||
1, 0, 0, 0, 12, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 2, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
14, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 8,
|
||||
18, 32, 144, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
5, 0, 0, 0, 1, 14,
|
||||
0, 0, 83, 86, 95, 84,
|
||||
101, 115, 115, 70, 97, 99,
|
||||
116, 111, 114, 0, 83, 86,
|
||||
95, 73, 110, 115, 105, 100,
|
||||
101, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
171, 171, 83, 72, 69, 88,
|
||||
100, 1, 0, 0, 81, 0,
|
||||
3, 0, 89, 0, 0, 0,
|
||||
113, 0, 0, 1, 147, 32,
|
||||
0, 1, 148, 32, 0, 1,
|
||||
149, 24, 0, 1, 150, 8,
|
||||
0, 1, 151, 24, 0, 1,
|
||||
106, 8, 0, 1, 89, 0,
|
||||
0, 7, 70, 142, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 4, 0,
|
||||
0, 0, 95, 0, 0, 2,
|
||||
0, 112, 1, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
4, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 5, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
104, 0, 0, 2, 1, 0,
|
||||
0, 0, 91, 0, 0, 4,
|
||||
18, 32, 16, 0, 1, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
13, 0, 0, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
3, 0, 0, 0, 14, 0,
|
||||
0, 0, 104, 0, 0, 2,
|
||||
1, 0, 0, 0, 91, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 0, 54, 0, 0, 4,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 112, 1, 0,
|
||||
54, 0, 0, 8, 18, 32,
|
||||
144, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
115, 0, 0, 1, 153, 0,
|
||||
0, 2, 2, 0, 0, 0,
|
||||
95, 0, 0, 2, 0, 112,
|
||||
1, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 4, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 4, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 112, 1, 0, 54, 0,
|
||||
0, 9, 18, 32, 208, 0,
|
||||
4, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
16, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
2, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 9,
|
||||
18, 32, 208, 0, 4, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 83, 84, 65, 84,
|
||||
148, 0, 0, 0, 6, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 5, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
83, 84, 65, 84, 148, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
|
@ -708,17 +711,16 @@ const BYTE discrete_quad_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 11, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
11, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
3, 0, 0, 0, 1, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -112,21 +112,21 @@ ret
|
|||
|
||||
const BYTE discrete_triangle_hs[] =
|
||||
{
|
||||
68, 88, 66, 67, 148, 187,
|
||||
8, 94, 203, 120, 121, 120,
|
||||
126, 74, 170, 83, 209, 21,
|
||||
43, 73, 1, 0, 0, 0,
|
||||
124, 13, 0, 0, 6, 0,
|
||||
68, 88, 66, 67, 242, 103,
|
||||
49, 84, 105, 84, 128, 131,
|
||||
50, 149, 249, 84, 224, 173,
|
||||
77, 78, 1, 0, 0, 0,
|
||||
140, 13, 0, 0, 6, 0,
|
||||
0, 0, 56, 0, 0, 0,
|
||||
216, 10, 0, 0, 12, 11,
|
||||
0, 0, 64, 11, 0, 0,
|
||||
212, 11, 0, 0, 224, 12,
|
||||
232, 10, 0, 0, 28, 11,
|
||||
0, 0, 80, 11, 0, 0,
|
||||
228, 11, 0, 0, 240, 12,
|
||||
0, 0, 82, 68, 69, 70,
|
||||
152, 10, 0, 0, 1, 0,
|
||||
168, 10, 0, 0, 1, 0,
|
||||
0, 0, 120, 0, 0, 0,
|
||||
1, 0, 0, 0, 60, 0,
|
||||
0, 0, 1, 5, 83, 72,
|
||||
0, 5, 0, 0, 110, 10,
|
||||
0, 5, 0, 0, 126, 10,
|
||||
0, 0, 19, 19, 68, 37,
|
||||
60, 0, 0, 0, 24, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -226,137 +226,137 @@ const BYTE discrete_triangle_hs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 156, 7,
|
||||
0, 0, 0, 0, 158, 7,
|
||||
0, 0, 168, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 179, 7, 0, 0,
|
||||
0, 0, 197, 7, 0, 0,
|
||||
176, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
212, 7, 0, 0, 180, 0,
|
||||
230, 7, 0, 0, 180, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 228, 7,
|
||||
0, 0, 0, 0, 246, 7,
|
||||
0, 0, 184, 0, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 116, 6, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 249, 7, 0, 0,
|
||||
0, 0, 11, 8, 0, 0,
|
||||
192, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
28, 8, 0, 0, 0, 0,
|
||||
44, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
64, 8, 0, 0, 224, 0,
|
||||
80, 8, 0, 0, 224, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 85, 8,
|
||||
0, 0, 0, 0, 101, 8,
|
||||
0, 0, 228, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 52, 7, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 109, 8, 0, 0,
|
||||
0, 0, 125, 8, 0, 0,
|
||||
232, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
126, 8, 0, 0, 236, 0,
|
||||
142, 8, 0, 0, 236, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 166, 8,
|
||||
0, 0, 0, 0, 182, 8,
|
||||
0, 0, 240, 0, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 220, 8, 0, 0,
|
||||
0, 0, 236, 8, 0, 0,
|
||||
0, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
247, 8, 0, 0, 8, 1,
|
||||
7, 9, 0, 0, 8, 1,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 17, 9,
|
||||
0, 0, 0, 0, 33, 9,
|
||||
0, 0, 16, 1, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 51, 9, 0, 0,
|
||||
0, 0, 67, 9, 0, 0,
|
||||
32, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
68, 9, 0, 0, 0, 0,
|
||||
84, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
104, 9, 0, 0, 64, 1,
|
||||
120, 9, 0, 0, 64, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 172, 9,
|
||||
0, 0, 0, 0, 188, 9,
|
||||
0, 0, 80, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 197, 9, 0, 0,
|
||||
0, 0, 213, 9, 0, 0,
|
||||
96, 1, 0, 0, 64, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
216, 9, 0, 0, 0, 0,
|
||||
232, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
252, 9, 0, 0, 160, 1,
|
||||
12, 10, 0, 0, 160, 1,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 20, 10,
|
||||
0, 0, 0, 0, 36, 10,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 56, 10,
|
||||
0, 0, 0, 0, 72, 10,
|
||||
0, 0, 192, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 136, 9, 0, 0,
|
||||
0, 0, 152, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 86, 10, 0, 0,
|
||||
0, 0, 102, 10, 0, 0,
|
||||
208, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
184, 8, 0, 0, 0, 0,
|
||||
200, 8, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
|
@ -446,11 +446,14 @@ const BYTE discrete_triangle_hs[] =
|
|||
0, 120, 101, 95, 112, 111,
|
||||
105, 110, 116, 95, 99, 111,
|
||||
110, 115, 116, 97, 110, 116,
|
||||
95, 114, 97, 100, 105, 117,
|
||||
115, 0, 120, 101, 95, 112,
|
||||
111, 105, 110, 116, 95, 115,
|
||||
99, 114, 101, 101, 110, 95,
|
||||
116, 111, 95, 110, 100, 99,
|
||||
95, 100, 105, 97, 109, 101,
|
||||
116, 101, 114, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 100, 105, 97, 109,
|
||||
101, 116, 101, 114, 95, 116,
|
||||
111, 95, 110, 100, 99, 95,
|
||||
114, 97, 100, 105, 117, 115,
|
||||
0, 120, 101, 95, 105, 110,
|
||||
116, 101, 114, 112, 111, 108,
|
||||
97, 116, 111, 114, 95, 115,
|
||||
|
@ -468,224 +471,223 @@ const BYTE discrete_triangle_hs[] =
|
|||
105, 122, 122, 108, 101, 100,
|
||||
95, 115, 105, 103, 110, 115,
|
||||
0, 117, 105, 110, 116, 52,
|
||||
0, 171, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 116,
|
||||
101, 120, 116, 117, 114, 101,
|
||||
115, 95, 114, 101, 115, 111,
|
||||
108, 118, 101, 100, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 101, 115, 116,
|
||||
95, 114, 101, 102, 101, 114,
|
||||
101, 110, 99, 101, 0, 120,
|
||||
101, 95, 97, 108, 112, 104,
|
||||
97, 95, 116, 111, 95, 109,
|
||||
97, 115, 107, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 51, 50, 98, 112, 112,
|
||||
95, 116, 105, 108, 101, 95,
|
||||
112, 105, 116, 99, 104, 95,
|
||||
100, 119, 111, 114, 100, 115,
|
||||
95, 115, 99, 97, 108, 101,
|
||||
100, 0, 120, 101, 95, 99,
|
||||
111, 108, 111, 114, 95, 101,
|
||||
120, 112, 95, 98, 105, 97,
|
||||
115, 0, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
100, 114, 97, 109, 95, 112,
|
||||
111, 108, 121, 95, 111, 102,
|
||||
102, 115, 101, 116, 95, 102,
|
||||
114, 111, 110, 116, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 112, 111, 108, 121,
|
||||
95, 111, 102, 102, 115, 101,
|
||||
116, 95, 98, 97, 99, 107,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 100, 101,
|
||||
112, 116, 104, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 115, 116, 101, 110,
|
||||
99, 105, 108, 0, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
95, 114, 116, 95, 98, 97,
|
||||
115, 101, 95, 100, 119, 111,
|
||||
114, 100, 115, 95, 115, 99,
|
||||
97, 108, 101, 100, 0, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 88, 69, 86, 69,
|
||||
82, 84, 69, 88, 73, 68,
|
||||
0, 171, 79, 83, 71, 78,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
102, 111, 114, 109, 97, 116,
|
||||
95, 102, 108, 97, 103, 115,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 114, 116,
|
||||
95, 99, 108, 97, 109, 112,
|
||||
0, 171, 1, 0, 3, 0,
|
||||
1, 0, 4, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 172, 6,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 107, 101, 101, 112,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
171, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 108, 101, 110,
|
||||
100, 95, 102, 97, 99, 116,
|
||||
111, 114, 115, 95, 111, 112,
|
||||
115, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 98,
|
||||
108, 101, 110, 100, 95, 99,
|
||||
111, 110, 115, 116, 97, 110,
|
||||
116, 0, 77, 105, 99, 114,
|
||||
111, 115, 111, 102, 116, 32,
|
||||
40, 82, 41, 32, 72, 76,
|
||||
83, 76, 32, 83, 104, 97,
|
||||
100, 101, 114, 32, 67, 111,
|
||||
109, 112, 105, 108, 101, 114,
|
||||
32, 49, 48, 46, 49, 0,
|
||||
171, 171, 73, 83, 71, 78,
|
||||
44, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
0, 0, 1, 1, 0, 0,
|
||||
88, 69, 86, 69, 82, 84,
|
||||
69, 88, 73, 68, 0, 171,
|
||||
80, 67, 83, 71, 140, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
8, 0, 0, 0, 104, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 104, 0,
|
||||
79, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
1, 14, 0, 0, 104, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
13, 0, 0, 0, 3, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
1, 14, 0, 0, 118, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
14, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 14, 0, 0, 88, 69,
|
||||
86, 69, 82, 84, 69, 88,
|
||||
73, 68, 0, 171, 80, 67,
|
||||
83, 71, 140, 0, 0, 0,
|
||||
4, 0, 0, 0, 8, 0,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
0, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 14, 0, 0, 83, 86,
|
||||
95, 84, 101, 115, 115, 70,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
1, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 1, 14,
|
||||
0, 0, 104, 0, 0, 0,
|
||||
2, 0, 0, 0, 13, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 1, 14,
|
||||
0, 0, 118, 0, 0, 0,
|
||||
0, 0, 0, 0, 14, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 1, 14,
|
||||
0, 0, 83, 86, 95, 84,
|
||||
101, 115, 115, 70, 97, 99,
|
||||
116, 111, 114, 0, 83, 86,
|
||||
95, 73, 110, 115, 105, 100,
|
||||
101, 84, 101, 115, 115, 70,
|
||||
97, 99, 116, 111, 114, 0,
|
||||
83, 86, 95, 73, 110, 115,
|
||||
105, 100, 101, 84, 101, 115,
|
||||
115, 70, 97, 99, 116, 111,
|
||||
114, 0, 171, 171, 83, 72,
|
||||
69, 88, 4, 1, 0, 0,
|
||||
81, 0, 3, 0, 65, 0,
|
||||
0, 0, 113, 0, 0, 1,
|
||||
147, 24, 0, 1, 148, 24,
|
||||
0, 1, 149, 16, 0, 1,
|
||||
150, 8, 0, 1, 151, 24,
|
||||
0, 1, 106, 8, 0, 1,
|
||||
89, 0, 0, 7, 70, 142,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
171, 171, 83, 72, 69, 88,
|
||||
4, 1, 0, 0, 81, 0,
|
||||
3, 0, 65, 0, 0, 0,
|
||||
113, 0, 0, 1, 147, 24,
|
||||
0, 1, 148, 24, 0, 1,
|
||||
149, 16, 0, 1, 150, 8,
|
||||
0, 1, 151, 24, 0, 1,
|
||||
106, 8, 0, 1, 89, 0,
|
||||
0, 7, 70, 142, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 115, 0,
|
||||
0, 1, 153, 0, 0, 2,
|
||||
3, 0, 0, 0, 95, 0,
|
||||
0, 2, 0, 112, 1, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
17, 0, 0, 0, 103, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 115, 0, 0, 1,
|
||||
153, 0, 0, 2, 3, 0,
|
||||
0, 0, 95, 0, 0, 2,
|
||||
0, 112, 1, 0, 103, 0,
|
||||
0, 4, 18, 32, 16, 0,
|
||||
1, 0, 0, 0, 18, 0,
|
||||
0, 0, 0, 0, 17, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 2, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
104, 0, 0, 2, 1, 0,
|
||||
0, 0, 91, 0, 0, 4,
|
||||
18, 32, 16, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 4, 18, 0,
|
||||
18, 32, 16, 0, 1, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
19, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
91, 0, 0, 4, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 54, 0,
|
||||
0, 4, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 112,
|
||||
1, 0, 54, 0, 0, 8,
|
||||
18, 32, 144, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 112, 1, 0, 54, 0,
|
||||
0, 8, 18, 32, 144, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 115, 0,
|
||||
0, 1, 103, 0, 0, 4,
|
||||
18, 32, 16, 0, 3, 0,
|
||||
0, 0, 20, 0, 0, 0,
|
||||
54, 0, 0, 7, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 83, 84, 65, 84,
|
||||
148, 0, 0, 0, 5, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 4, 0,
|
||||
0, 1, 115, 0, 0, 1,
|
||||
103, 0, 0, 4, 18, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
20, 0, 0, 0, 54, 0,
|
||||
0, 7, 18, 32, 16, 0,
|
||||
3, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
83, 84, 65, 84, 148, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 1, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
10, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0
|
||||
0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,886 +0,0 @@
|
|||
#if 0
|
||||
//
|
||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
|
||||
//
|
||||
//
|
||||
//
|
||||
// Input signature:
|
||||
//
|
||||
// Name Index Mask Register SysValue Format Used
|
||||
// -------------------- ----- ------ -------- -------- ------- ------
|
||||
// TEXCOORD 0 xyzw 0 NONE float xyzw
|
||||
// TEXCOORD 1 xyzw 1 NONE float xyzw
|
||||
// TEXCOORD 2 xyzw 2 NONE float xyzw
|
||||
// TEXCOORD 3 xyzw 3 NONE float xyzw
|
||||
// TEXCOORD 4 xyzw 4 NONE float xyzw
|
||||
// TEXCOORD 5 xyzw 5 NONE float xyzw
|
||||
// TEXCOORD 6 xyzw 6 NONE float xyzw
|
||||
// TEXCOORD 7 xyzw 7 NONE float xyzw
|
||||
// TEXCOORD 8 xyzw 8 NONE float xyzw
|
||||
// TEXCOORD 9 xyzw 9 NONE float xyzw
|
||||
// TEXCOORD 10 xyzw 10 NONE float xyzw
|
||||
// TEXCOORD 11 xyzw 11 NONE float xyzw
|
||||
// TEXCOORD 12 xyzw 12 NONE float xyzw
|
||||
// TEXCOORD 13 xyzw 13 NONE float xyzw
|
||||
// TEXCOORD 14 xyzw 14 NONE float xyzw
|
||||
// TEXCOORD 15 xyzw 15 NONE float xyzw
|
||||
// TEXCOORD 16 xyz 16 NONE float xyz
|
||||
// SV_Position 0 xyzw 17 POS float xyzw
|
||||
// SV_ClipDistance 0 xyzw 18 CLIPDST float xyzw
|
||||
// SV_ClipDistance 1 xy 19 CLIPDST float xy
|
||||
// SV_CullDistance 0 z 19 CULLDST float
|
||||
//
|
||||
//
|
||||
// Output signature:
|
||||
//
|
||||
// Name Index Mask Register SysValue Format Used
|
||||
// -------------------- ----- ------ -------- -------- ------- ------
|
||||
// TEXCOORD 0 xyzw 0 NONE float xyzw
|
||||
// TEXCOORD 1 xyzw 1 NONE float xyzw
|
||||
// TEXCOORD 2 xyzw 2 NONE float xyzw
|
||||
// TEXCOORD 3 xyzw 3 NONE float xyzw
|
||||
// TEXCOORD 4 xyzw 4 NONE float xyzw
|
||||
// TEXCOORD 5 xyzw 5 NONE float xyzw
|
||||
// TEXCOORD 6 xyzw 6 NONE float xyzw
|
||||
// TEXCOORD 7 xyzw 7 NONE float xyzw
|
||||
// TEXCOORD 8 xyzw 8 NONE float xyzw
|
||||
// TEXCOORD 9 xyzw 9 NONE float xyzw
|
||||
// TEXCOORD 10 xyzw 10 NONE float xyzw
|
||||
// TEXCOORD 11 xyzw 11 NONE float xyzw
|
||||
// TEXCOORD 12 xyzw 12 NONE float xyzw
|
||||
// TEXCOORD 13 xyzw 13 NONE float xyzw
|
||||
// TEXCOORD 14 xyzw 14 NONE float xyzw
|
||||
// TEXCOORD 15 xyzw 15 NONE float xyzw
|
||||
// TEXCOORD 16 xyz 16 NONE float xyz
|
||||
// SV_Position 0 xyzw 17 POS float xyzw
|
||||
// SV_ClipDistance 0 xyzw 18 CLIPDST float xyzw
|
||||
// SV_ClipDistance 1 xy 19 CLIPDST float xy
|
||||
//
|
||||
gs_5_1
|
||||
dcl_globalFlags refactoringAllowed
|
||||
dcl_input v[4][0].xyzw
|
||||
dcl_input v[4][1].xyzw
|
||||
dcl_input v[4][2].xyzw
|
||||
dcl_input v[4][3].xyzw
|
||||
dcl_input v[4][4].xyzw
|
||||
dcl_input v[4][5].xyzw
|
||||
dcl_input v[4][6].xyzw
|
||||
dcl_input v[4][7].xyzw
|
||||
dcl_input v[4][8].xyzw
|
||||
dcl_input v[4][9].xyzw
|
||||
dcl_input v[4][10].xyzw
|
||||
dcl_input v[4][11].xyzw
|
||||
dcl_input v[4][12].xyzw
|
||||
dcl_input v[4][13].xyzw
|
||||
dcl_input v[4][14].xyzw
|
||||
dcl_input v[4][15].xyzw
|
||||
dcl_input v[4][16].xyz
|
||||
dcl_input_siv v[4][17].xyzw, position
|
||||
dcl_input v[4][18].xyzw
|
||||
dcl_input v[4][19].xy
|
||||
dcl_input v[4][19].z
|
||||
dcl_inputprimitive lineadj
|
||||
dcl_stream m0
|
||||
dcl_outputtopology trianglestrip
|
||||
dcl_output o0.xyzw
|
||||
dcl_output o1.xyzw
|
||||
dcl_output o2.xyzw
|
||||
dcl_output o3.xyzw
|
||||
dcl_output o4.xyzw
|
||||
dcl_output o5.xyzw
|
||||
dcl_output o6.xyzw
|
||||
dcl_output o7.xyzw
|
||||
dcl_output o8.xyzw
|
||||
dcl_output o9.xyzw
|
||||
dcl_output o10.xyzw
|
||||
dcl_output o11.xyzw
|
||||
dcl_output o12.xyzw
|
||||
dcl_output o13.xyzw
|
||||
dcl_output o14.xyzw
|
||||
dcl_output o15.xyzw
|
||||
dcl_output o16.xyz
|
||||
dcl_output_siv o17.xyzw, position
|
||||
dcl_output_siv o18.xyzw, clip_distance
|
||||
dcl_output_siv o19.xy, clip_distance
|
||||
dcl_maxout 4
|
||||
mov o0.xyzw, v[0][0].xyzw
|
||||
mov o1.xyzw, v[0][1].xyzw
|
||||
mov o2.xyzw, v[0][2].xyzw
|
||||
mov o3.xyzw, v[0][3].xyzw
|
||||
mov o4.xyzw, v[0][4].xyzw
|
||||
mov o5.xyzw, v[0][5].xyzw
|
||||
mov o6.xyzw, v[0][6].xyzw
|
||||
mov o7.xyzw, v[0][7].xyzw
|
||||
mov o8.xyzw, v[0][8].xyzw
|
||||
mov o9.xyzw, v[0][9].xyzw
|
||||
mov o10.xyzw, v[0][10].xyzw
|
||||
mov o11.xyzw, v[0][11].xyzw
|
||||
mov o12.xyzw, v[0][12].xyzw
|
||||
mov o13.xyzw, v[0][13].xyzw
|
||||
mov o14.xyzw, v[0][14].xyzw
|
||||
mov o15.xyzw, v[0][15].xyzw
|
||||
mov o16.xyz, v[0][16].xyzx
|
||||
mov o17.xyzw, v[0][17].xyzw
|
||||
mov o18.xyzw, v[0][18].xyzw
|
||||
mov o19.xy, v[0][19].xyxx
|
||||
emit_stream m0
|
||||
mov o0.xyzw, v[1][0].xyzw
|
||||
mov o1.xyzw, v[1][1].xyzw
|
||||
mov o2.xyzw, v[1][2].xyzw
|
||||
mov o3.xyzw, v[1][3].xyzw
|
||||
mov o4.xyzw, v[1][4].xyzw
|
||||
mov o5.xyzw, v[1][5].xyzw
|
||||
mov o6.xyzw, v[1][6].xyzw
|
||||
mov o7.xyzw, v[1][7].xyzw
|
||||
mov o8.xyzw, v[1][8].xyzw
|
||||
mov o9.xyzw, v[1][9].xyzw
|
||||
mov o10.xyzw, v[1][10].xyzw
|
||||
mov o11.xyzw, v[1][11].xyzw
|
||||
mov o12.xyzw, v[1][12].xyzw
|
||||
mov o13.xyzw, v[1][13].xyzw
|
||||
mov o14.xyzw, v[1][14].xyzw
|
||||
mov o15.xyzw, v[1][15].xyzw
|
||||
mov o16.xyz, v[1][16].xyzx
|
||||
mov o17.xyzw, v[1][17].xyzw
|
||||
mov o18.xyzw, v[1][18].xyzw
|
||||
mov o19.xy, v[1][19].xyxx
|
||||
emit_stream m0
|
||||
mov o0.xyzw, v[3][0].xyzw
|
||||
mov o1.xyzw, v[3][1].xyzw
|
||||
mov o2.xyzw, v[3][2].xyzw
|
||||
mov o3.xyzw, v[3][3].xyzw
|
||||
mov o4.xyzw, v[3][4].xyzw
|
||||
mov o5.xyzw, v[3][5].xyzw
|
||||
mov o6.xyzw, v[3][6].xyzw
|
||||
mov o7.xyzw, v[3][7].xyzw
|
||||
mov o8.xyzw, v[3][8].xyzw
|
||||
mov o9.xyzw, v[3][9].xyzw
|
||||
mov o10.xyzw, v[3][10].xyzw
|
||||
mov o11.xyzw, v[3][11].xyzw
|
||||
mov o12.xyzw, v[3][12].xyzw
|
||||
mov o13.xyzw, v[3][13].xyzw
|
||||
mov o14.xyzw, v[3][14].xyzw
|
||||
mov o15.xyzw, v[3][15].xyzw
|
||||
mov o16.xyz, v[3][16].xyzx
|
||||
mov o17.xyzw, v[3][17].xyzw
|
||||
mov o18.xyzw, v[3][18].xyzw
|
||||
mov o19.xy, v[3][19].xyxx
|
||||
emit_stream m0
|
||||
mov o0.xyzw, v[2][0].xyzw
|
||||
mov o1.xyzw, v[2][1].xyzw
|
||||
mov o2.xyzw, v[2][2].xyzw
|
||||
mov o3.xyzw, v[2][3].xyzw
|
||||
mov o4.xyzw, v[2][4].xyzw
|
||||
mov o5.xyzw, v[2][5].xyzw
|
||||
mov o6.xyzw, v[2][6].xyzw
|
||||
mov o7.xyzw, v[2][7].xyzw
|
||||
mov o8.xyzw, v[2][8].xyzw
|
||||
mov o9.xyzw, v[2][9].xyzw
|
||||
mov o10.xyzw, v[2][10].xyzw
|
||||
mov o11.xyzw, v[2][11].xyzw
|
||||
mov o12.xyzw, v[2][12].xyzw
|
||||
mov o13.xyzw, v[2][13].xyzw
|
||||
mov o14.xyzw, v[2][14].xyzw
|
||||
mov o15.xyzw, v[2][15].xyzw
|
||||
mov o16.xyz, v[2][16].xyzx
|
||||
mov o17.xyzw, v[2][17].xyzw
|
||||
mov o18.xyzw, v[2][18].xyzw
|
||||
mov o19.xy, v[2][19].xyxx
|
||||
emit_stream m0
|
||||
cut_stream m0
|
||||
ret
|
||||
// Approximately 86 instruction slots used
|
||||
#endif
|
||||
|
||||
const BYTE primitive_quad_list_gs[] =
|
||||
{
|
||||
68, 88, 66, 67, 26, 143,
|
||||
179, 72, 238, 147, 43, 130,
|
||||
37, 11, 116, 191, 138, 68,
|
||||
255, 76, 1, 0, 0, 0,
|
||||
36, 16, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
160, 0, 0, 0, 224, 2,
|
||||
0, 0, 72, 5, 0, 0,
|
||||
136, 15, 0, 0, 82, 68,
|
||||
69, 70, 100, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
60, 0, 0, 0, 1, 5,
|
||||
83, 71, 0, 5, 0, 0,
|
||||
60, 0, 0, 0, 19, 19,
|
||||
68, 37, 60, 0, 0, 0,
|
||||
24, 0, 0, 0, 40, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
36, 0, 0, 0, 12, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
77, 105, 99, 114, 111, 115,
|
||||
111, 102, 116, 32, 40, 82,
|
||||
41, 32, 72, 76, 83, 76,
|
||||
32, 83, 104, 97, 100, 101,
|
||||
114, 32, 67, 111, 109, 112,
|
||||
105, 108, 101, 114, 32, 49,
|
||||
48, 46, 49, 0, 73, 83,
|
||||
71, 78, 56, 2, 0, 0,
|
||||
21, 0, 0, 0, 8, 0,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
1, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
3, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
5, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
5, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
6, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
6, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
7, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
7, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
8, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
9, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
9, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
10, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
10, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
11, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
11, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
12, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
12, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
13, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
13, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
14, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
14, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
15, 0, 0, 0, 15, 15,
|
||||
0, 0, 0, 2, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
16, 0, 0, 0, 7, 7,
|
||||
0, 0, 9, 2, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
17, 0, 0, 0, 15, 15,
|
||||
0, 0, 21, 2, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
18, 0, 0, 0, 15, 15,
|
||||
0, 0, 21, 2, 0, 0,
|
||||
1, 0, 0, 0, 2, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
19, 0, 0, 0, 3, 3,
|
||||
0, 0, 37, 2, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
19, 0, 0, 0, 4, 0,
|
||||
0, 0, 84, 69, 88, 67,
|
||||
79, 79, 82, 68, 0, 83,
|
||||
86, 95, 80, 111, 115, 105,
|
||||
116, 105, 111, 110, 0, 83,
|
||||
86, 95, 67, 108, 105, 112,
|
||||
68, 105, 115, 116, 97, 110,
|
||||
99, 101, 0, 83, 86, 95,
|
||||
67, 117, 108, 108, 68, 105,
|
||||
115, 116, 97, 110, 99, 101,
|
||||
0, 171, 171, 171, 79, 83,
|
||||
71, 53, 96, 2, 0, 0,
|
||||
20, 0, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 2, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
2, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 3, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 2, 0, 0,
|
||||
5, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
5, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 6, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 6, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 2, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
8, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 9, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 9, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 2, 0, 0,
|
||||
11, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
11, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 12, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 12, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
15, 0, 0, 0, 0, 0,
|
||||
0, 0, 56, 2, 0, 0,
|
||||
14, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
14, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
56, 2, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 15, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 56, 2,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 3, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
7, 8, 0, 0, 0, 0,
|
||||
0, 0, 65, 2, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
17, 0, 0, 0, 15, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
77, 2, 0, 0, 0, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
3, 0, 0, 0, 18, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
0, 0, 0, 0, 77, 2,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
2, 0, 0, 0, 3, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
3, 12, 0, 0, 84, 69,
|
||||
88, 67, 79, 79, 82, 68,
|
||||
0, 83, 86, 95, 80, 111,
|
||||
115, 105, 116, 105, 111, 110,
|
||||
0, 83, 86, 95, 67, 108,
|
||||
105, 112, 68, 105, 115, 116,
|
||||
97, 110, 99, 101, 0, 171,
|
||||
171, 171, 83, 72, 69, 88,
|
||||
56, 10, 0, 0, 81, 0,
|
||||
2, 0, 142, 2, 0, 0,
|
||||
106, 8, 0, 1, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
95, 0, 0, 4, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
2, 0, 0, 0, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 3, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
95, 0, 0, 4, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
5, 0, 0, 0, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 6, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
95, 0, 0, 4, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
8, 0, 0, 0, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 9, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
95, 0, 0, 4, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
11, 0, 0, 0, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 12, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
95, 0, 0, 4, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
14, 0, 0, 0, 95, 0,
|
||||
0, 4, 242, 16, 32, 0,
|
||||
4, 0, 0, 0, 15, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
114, 16, 32, 0, 4, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
97, 0, 0, 5, 242, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
17, 0, 0, 0, 1, 0,
|
||||
0, 0, 95, 0, 0, 4,
|
||||
242, 16, 32, 0, 4, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
95, 0, 0, 4, 50, 16,
|
||||
32, 0, 4, 0, 0, 0,
|
||||
19, 0, 0, 0, 95, 0,
|
||||
0, 4, 66, 16, 32, 0,
|
||||
4, 0, 0, 0, 19, 0,
|
||||
0, 0, 93, 48, 0, 1,
|
||||
143, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
92, 40, 0, 1, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
0, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
1, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
2, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
3, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
4, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
5, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
6, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
7, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
8, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
9, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
10, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
11, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
12, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
13, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
14, 0, 0, 0, 101, 0,
|
||||
0, 3, 242, 32, 16, 0,
|
||||
15, 0, 0, 0, 101, 0,
|
||||
0, 3, 114, 32, 16, 0,
|
||||
16, 0, 0, 0, 103, 0,
|
||||
0, 4, 242, 32, 16, 0,
|
||||
17, 0, 0, 0, 1, 0,
|
||||
0, 0, 103, 0, 0, 4,
|
||||
242, 32, 16, 0, 18, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
103, 0, 0, 4, 50, 32,
|
||||
16, 0, 19, 0, 0, 0,
|
||||
2, 0, 0, 0, 94, 0,
|
||||
0, 2, 4, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 8, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 9, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 9, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 10, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 11, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 11, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 12, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 13, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 14, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 14, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 15, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
54, 0, 0, 6, 114, 32,
|
||||
16, 0, 16, 0, 0, 0,
|
||||
70, 18, 32, 0, 0, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 17, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 17, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 18, 0, 0, 0,
|
||||
70, 30, 32, 0, 0, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
54, 0, 0, 6, 50, 32,
|
||||
16, 0, 19, 0, 0, 0,
|
||||
70, 16, 32, 0, 0, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
117, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 8, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 9, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 9, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 10, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 11, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 11, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 12, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 13, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 14, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 14, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 15, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
54, 0, 0, 6, 114, 32,
|
||||
16, 0, 16, 0, 0, 0,
|
||||
70, 18, 32, 0, 1, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 17, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 17, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 18, 0, 0, 0,
|
||||
70, 30, 32, 0, 1, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
54, 0, 0, 6, 50, 32,
|
||||
16, 0, 19, 0, 0, 0,
|
||||
70, 16, 32, 0, 1, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
117, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 8, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 9, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 9, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 10, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 11, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 11, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 12, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 13, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 14, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 14, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 15, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
54, 0, 0, 6, 114, 32,
|
||||
16, 0, 16, 0, 0, 0,
|
||||
70, 18, 32, 0, 3, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 17, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 17, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 18, 0, 0, 0,
|
||||
70, 30, 32, 0, 3, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
54, 0, 0, 6, 50, 32,
|
||||
16, 0, 19, 0, 0, 0,
|
||||
70, 16, 32, 0, 3, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
117, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 1, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 2, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 3, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 4, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 5, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 5, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 6, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 7, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 7, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 8, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 9, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 9, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 10, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 10, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 11, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 11, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 12, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 12, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 13, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 13, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 14, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 14, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 15, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 15, 0, 0, 0,
|
||||
54, 0, 0, 6, 114, 32,
|
||||
16, 0, 16, 0, 0, 0,
|
||||
70, 18, 32, 0, 2, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 17, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 17, 0, 0, 0,
|
||||
54, 0, 0, 6, 242, 32,
|
||||
16, 0, 18, 0, 0, 0,
|
||||
70, 30, 32, 0, 2, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
54, 0, 0, 6, 50, 32,
|
||||
16, 0, 19, 0, 0, 0,
|
||||
70, 16, 32, 0, 2, 0,
|
||||
0, 0, 19, 0, 0, 0,
|
||||
117, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
118, 0, 0, 3, 0, 0,
|
||||
17, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 83, 84,
|
||||
65, 84, 148, 0, 0, 0,
|
||||
86, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
41, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
5, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -94,21 +94,21 @@ ret
|
|||
|
||||
const BYTE tessellation_adaptive_vs[] =
|
||||
{
|
||||
68, 88, 66, 67, 208, 91,
|
||||
167, 102, 8, 237, 14, 199,
|
||||
43, 1, 173, 204, 50, 149,
|
||||
119, 147, 1, 0, 0, 0,
|
||||
224, 13, 0, 0, 5, 0,
|
||||
68, 88, 66, 67, 128, 42,
|
||||
162, 230, 93, 182, 94, 173,
|
||||
222, 50, 66, 199, 253, 227,
|
||||
107, 225, 1, 0, 0, 0,
|
||||
240, 13, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
212, 10, 0, 0, 8, 11,
|
||||
0, 0, 64, 11, 0, 0,
|
||||
68, 13, 0, 0, 82, 68,
|
||||
69, 70, 152, 10, 0, 0,
|
||||
228, 10, 0, 0, 24, 11,
|
||||
0, 0, 80, 11, 0, 0,
|
||||
84, 13, 0, 0, 82, 68,
|
||||
69, 70, 168, 10, 0, 0,
|
||||
1, 0, 0, 0, 120, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
60, 0, 0, 0, 1, 5,
|
||||
254, 255, 0, 5, 0, 0,
|
||||
110, 10, 0, 0, 19, 19,
|
||||
126, 10, 0, 0, 19, 19,
|
||||
68, 37, 60, 0, 0, 0,
|
||||
24, 0, 0, 0, 40, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -208,136 +208,136 @@ const BYTE tessellation_adaptive_vs[] =
|
|||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
156, 7, 0, 0, 168, 0,
|
||||
158, 7, 0, 0, 168, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 179, 7,
|
||||
0, 0, 0, 0, 197, 7,
|
||||
0, 0, 176, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 212, 7, 0, 0,
|
||||
0, 0, 230, 7, 0, 0,
|
||||
180, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
228, 7, 0, 0, 184, 0,
|
||||
246, 7, 0, 0, 184, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 116, 6,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 249, 7,
|
||||
0, 0, 0, 0, 11, 8,
|
||||
0, 0, 192, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 28, 8, 0, 0,
|
||||
0, 0, 44, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 64, 8, 0, 0,
|
||||
0, 0, 80, 8, 0, 0,
|
||||
224, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
85, 8, 0, 0, 228, 0,
|
||||
101, 8, 0, 0, 228, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 52, 7,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 109, 8,
|
||||
0, 0, 0, 0, 125, 8,
|
||||
0, 0, 232, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 126, 8, 0, 0,
|
||||
0, 0, 142, 8, 0, 0,
|
||||
236, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
166, 8, 0, 0, 240, 0,
|
||||
182, 8, 0, 0, 240, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 184, 8,
|
||||
0, 0, 0, 0, 200, 8,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 220, 8,
|
||||
0, 0, 0, 0, 236, 8,
|
||||
0, 0, 0, 1, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 247, 8, 0, 0,
|
||||
0, 0, 7, 9, 0, 0,
|
||||
8, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
17, 9, 0, 0, 16, 1,
|
||||
33, 9, 0, 0, 16, 1,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 51, 9,
|
||||
0, 0, 0, 0, 67, 9,
|
||||
0, 0, 32, 1, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 68, 9, 0, 0,
|
||||
0, 0, 84, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 104, 9, 0, 0,
|
||||
0, 0, 120, 9, 0, 0,
|
||||
64, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
136, 9, 0, 0, 0, 0,
|
||||
152, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
172, 9, 0, 0, 80, 1,
|
||||
188, 9, 0, 0, 80, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 197, 9,
|
||||
0, 0, 0, 0, 213, 9,
|
||||
0, 0, 96, 1, 0, 0,
|
||||
64, 0, 0, 0, 0, 0,
|
||||
0, 0, 216, 9, 0, 0,
|
||||
0, 0, 232, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 252, 9, 0, 0,
|
||||
0, 0, 12, 10, 0, 0,
|
||||
160, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
20, 10, 0, 0, 0, 0,
|
||||
36, 10, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
56, 10, 0, 0, 192, 1,
|
||||
72, 10, 0, 0, 192, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 86, 10,
|
||||
0, 0, 0, 0, 102, 10,
|
||||
0, 0, 208, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
|
@ -427,12 +427,15 @@ const BYTE tessellation_adaptive_vs[] =
|
|||
97, 120, 0, 120, 101, 95,
|
||||
112, 111, 105, 110, 116, 95,
|
||||
99, 111, 110, 115, 116, 97,
|
||||
110, 116, 95, 114, 97, 100,
|
||||
105, 117, 115, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 116, 111, 95, 110,
|
||||
100, 99, 0, 120, 101, 95,
|
||||
110, 116, 95, 100, 105, 97,
|
||||
109, 101, 116, 101, 114, 0,
|
||||
120, 101, 95, 112, 111, 105,
|
||||
110, 116, 95, 115, 99, 114,
|
||||
101, 101, 110, 95, 100, 105,
|
||||
97, 109, 101, 116, 101, 114,
|
||||
95, 116, 111, 95, 110, 100,
|
||||
99, 95, 114, 97, 100, 105,
|
||||
117, 115, 0, 120, 101, 95,
|
||||
105, 110, 116, 101, 114, 112,
|
||||
111, 108, 97, 116, 111, 114,
|
||||
95, 115, 97, 109, 112, 108,
|
||||
|
@ -449,232 +452,231 @@ const BYTE tessellation_adaptive_vs[] =
|
|||
115, 119, 105, 122, 122, 108,
|
||||
101, 100, 95, 115, 105, 103,
|
||||
110, 115, 0, 117, 105, 110,
|
||||
116, 52, 0, 171, 171, 171,
|
||||
116, 52, 0, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 116, 101, 120,
|
||||
116, 117, 114, 101, 115, 95,
|
||||
114, 101, 115, 111, 108, 118,
|
||||
101, 100, 0, 120, 101, 95,
|
||||
97, 108, 112, 104, 97, 95,
|
||||
116, 101, 115, 116, 95, 114,
|
||||
101, 102, 101, 114, 101, 110,
|
||||
99, 101, 0, 120, 101, 95,
|
||||
97, 108, 112, 104, 97, 95,
|
||||
116, 111, 95, 109, 97, 115,
|
||||
107, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 51,
|
||||
50, 98, 112, 112, 95, 116,
|
||||
105, 108, 101, 95, 112, 105,
|
||||
116, 99, 104, 95, 100, 119,
|
||||
111, 114, 100, 115, 95, 115,
|
||||
99, 97, 108, 101, 100, 0,
|
||||
120, 101, 95, 99, 111, 108,
|
||||
111, 114, 95, 101, 120, 112,
|
||||
95, 98, 105, 97, 115, 0,
|
||||
1, 0, 3, 0, 1, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 172, 6, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 112, 111, 108,
|
||||
121, 95, 111, 102, 102, 115,
|
||||
101, 116, 95, 102, 114, 111,
|
||||
110, 116, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
112, 111, 108, 121, 95, 111,
|
||||
102, 102, 115, 101, 116, 95,
|
||||
98, 97, 99, 107, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 100, 101, 112, 116,
|
||||
104, 95, 98, 97, 115, 101,
|
||||
95, 100, 119, 111, 114, 100,
|
||||
115, 95, 115, 99, 97, 108,
|
||||
101, 100, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
115, 116, 101, 110, 99, 105,
|
||||
108, 0, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 97, 115, 101,
|
||||
95, 100, 119, 111, 114, 100,
|
||||
115, 95, 115, 99, 97, 108,
|
||||
101, 100, 0, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 102, 111,
|
||||
114, 109, 97, 116, 95, 102,
|
||||
108, 97, 103, 115, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 114, 116, 95, 99,
|
||||
108, 97, 109, 112, 0, 171,
|
||||
1, 0, 3, 0, 1, 0,
|
||||
4, 0, 4, 0, 0, 0,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 172, 6, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
107, 101, 101, 112, 95, 109,
|
||||
97, 115, 107, 0, 171, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 108, 101, 110, 100, 95,
|
||||
102, 97, 99, 116, 111, 114,
|
||||
115, 95, 111, 112, 115, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 98, 108, 101,
|
||||
110, 100, 95, 99, 111, 110,
|
||||
115, 116, 97, 110, 116, 0,
|
||||
77, 105, 99, 114, 111, 115,
|
||||
111, 102, 116, 32, 40, 82,
|
||||
41, 32, 72, 76, 83, 76,
|
||||
32, 83, 104, 97, 100, 101,
|
||||
114, 32, 67, 111, 109, 112,
|
||||
105, 108, 101, 114, 32, 49,
|
||||
48, 46, 49, 0, 171, 171,
|
||||
73, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 1, 0, 0, 83, 86,
|
||||
95, 86, 101, 114, 116, 101,
|
||||
120, 73, 68, 0, 79, 83,
|
||||
71, 78, 48, 0, 0, 0,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 88, 69, 84, 69,
|
||||
83, 83, 70, 65, 67, 84,
|
||||
79, 82, 0, 171, 171, 171,
|
||||
83, 72, 69, 88, 252, 1,
|
||||
0, 0, 81, 0, 1, 0,
|
||||
127, 0, 0, 0, 106, 8,
|
||||
0, 1, 89, 0, 0, 7,
|
||||
70, 142, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
96, 0, 0, 4, 18, 16,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 101, 0,
|
||||
0, 3, 18, 32, 16, 0,
|
||||
0, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
32, 0, 0, 12, 114, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 0, 6, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
2, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 83, 86, 95, 86,
|
||||
101, 114, 116, 101, 120, 73,
|
||||
68, 0, 79, 83, 71, 78,
|
||||
48, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
60, 0, 0, 7, 50, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
88, 69, 84, 69, 83, 83,
|
||||
70, 65, 67, 84, 79, 82,
|
||||
0, 171, 171, 171, 83, 72,
|
||||
69, 88, 252, 1, 0, 0,
|
||||
81, 0, 1, 0, 127, 0,
|
||||
0, 0, 106, 8, 0, 1,
|
||||
89, 0, 0, 7, 70, 142,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 96, 0,
|
||||
0, 4, 18, 16, 16, 0,
|
||||
0, 0, 0, 0, 6, 0,
|
||||
0, 0, 101, 0, 0, 3,
|
||||
18, 32, 16, 0, 0, 0,
|
||||
0, 0, 104, 0, 0, 2,
|
||||
1, 0, 0, 0, 32, 0,
|
||||
0, 12, 114, 0, 16, 0,
|
||||
0, 0, 0, 0, 6, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
1, 0, 0, 0, 2, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 60, 0,
|
||||
0, 7, 50, 0, 16, 0,
|
||||
0, 0, 0, 0, 150, 5,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
150, 5, 16, 0, 0, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
0, 0, 0, 0, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 41, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 16,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 8, 0,
|
||||
0, 0, 85, 0, 0, 7,
|
||||
66, 0, 16, 0, 0, 0,
|
||||
70, 0, 16, 0, 0, 0,
|
||||
0, 0, 31, 0, 4, 3,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 41, 0, 0, 7,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 16, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
1, 0, 0, 10, 82, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 2, 16, 0, 0, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 255, 0, 255, 0, 0,
|
||||
0, 0, 255, 0, 255, 0,
|
||||
0, 0, 0, 0, 30, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
54, 0, 0, 5, 18, 0,
|
||||
85, 0, 0, 7, 66, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 16, 16, 0, 0, 0,
|
||||
0, 0, 21, 0, 0, 1,
|
||||
31, 0, 4, 3, 26, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
85, 0, 0, 7, 34, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
16, 0, 0, 0, 140, 0,
|
||||
0, 11, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
1, 64, 0, 0, 16, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0,
|
||||
8, 0, 0, 0, 1, 0,
|
||||
0, 10, 82, 0, 16, 0,
|
||||
0, 0, 0, 0, 6, 2,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 0, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
2, 64, 0, 0, 0, 255,
|
||||
0, 255, 0, 0, 0, 0,
|
||||
255, 0, 255, 0, 0, 0,
|
||||
0, 0, 30, 0, 0, 7,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 0, 0,
|
||||
128, 63, 52, 0, 0, 9,
|
||||
18, 0, 0, 1, 54, 0,
|
||||
0, 5, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 16,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
21, 0, 0, 1, 31, 0,
|
||||
4, 3, 26, 0, 16, 0,
|
||||
0, 0, 0, 0, 85, 0,
|
||||
0, 7, 34, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 16, 0,
|
||||
0, 0, 140, 0, 0, 11,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
16, 0, 0, 0, 1, 64,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 0, 16, 0,
|
||||
0, 0, 0, 0, 21, 0,
|
||||
0, 1, 0, 0, 0, 7,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 0, 0, 128, 63,
|
||||
52, 0, 0, 9, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 51, 0, 0, 9,
|
||||
18, 32, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 62, 0, 0, 1,
|
||||
83, 84, 65, 84, 148, 0,
|
||||
0, 0, 18, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
51, 0, 0, 9, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 42, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 83, 84,
|
||||
65, 84, 148, 0, 0, 0,
|
||||
18, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 3, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
4, 0, 0, 0, 2, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
3, 0, 0, 0, 3, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
2, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
|
@ -685,5 +687,6 @@ const BYTE tessellation_adaptive_vs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0
|
||||
};
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
// float xe_point_vertex_diameter_min;// Offset: 140 Size: 4 [unused]
|
||||
// float3 xe_ndc_offset; // Offset: 144 Size: 12 [unused]
|
||||
// float xe_point_vertex_diameter_max;// Offset: 156 Size: 4 [unused]
|
||||
// float2 xe_point_constant_radius; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_to_ndc; // Offset: 168 Size: 8 [unused]
|
||||
// float2 xe_point_constant_diameter; // Offset: 160 Size: 8 [unused]
|
||||
// float2 xe_point_screen_diameter_to_ndc_radius;// Offset: 168 Size: 8 [unused]
|
||||
// uint xe_interpolator_sampling_pattern;// Offset: 176 Size: 4 [unused]
|
||||
// uint xe_ps_param_gen; // Offset: 180 Size: 4 [unused]
|
||||
// uint2 xe_sample_count_log2; // Offset: 184 Size: 8 [unused]
|
||||
|
@ -96,21 +96,21 @@ ret
|
|||
|
||||
const BYTE tessellation_indexed_vs[] =
|
||||
{
|
||||
68, 88, 66, 67, 188, 215,
|
||||
146, 114, 163, 91, 37, 43,
|
||||
43, 60, 196, 54, 82, 23,
|
||||
130, 140, 1, 0, 0, 0,
|
||||
20, 14, 0, 0, 5, 0,
|
||||
68, 88, 66, 67, 147, 89,
|
||||
233, 26, 127, 143, 37, 15,
|
||||
206, 150, 85, 19, 220, 93,
|
||||
185, 243, 1, 0, 0, 0,
|
||||
36, 14, 0, 0, 5, 0,
|
||||
0, 0, 52, 0, 0, 0,
|
||||
212, 10, 0, 0, 8, 11,
|
||||
0, 0, 60, 11, 0, 0,
|
||||
120, 13, 0, 0, 82, 68,
|
||||
69, 70, 152, 10, 0, 0,
|
||||
228, 10, 0, 0, 24, 11,
|
||||
0, 0, 76, 11, 0, 0,
|
||||
136, 13, 0, 0, 82, 68,
|
||||
69, 70, 168, 10, 0, 0,
|
||||
1, 0, 0, 0, 120, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
60, 0, 0, 0, 1, 5,
|
||||
254, 255, 0, 5, 0, 0,
|
||||
110, 10, 0, 0, 19, 19,
|
||||
126, 10, 0, 0, 19, 19,
|
||||
68, 37, 60, 0, 0, 0,
|
||||
24, 0, 0, 0, 40, 0,
|
||||
0, 0, 40, 0, 0, 0,
|
||||
|
@ -210,136 +210,136 @@ const BYTE tessellation_indexed_vs[] =
|
|||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
156, 7, 0, 0, 168, 0,
|
||||
158, 7, 0, 0, 168, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 232, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 179, 7,
|
||||
0, 0, 0, 0, 197, 7,
|
||||
0, 0, 176, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 212, 7, 0, 0,
|
||||
0, 0, 230, 7, 0, 0,
|
||||
180, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
228, 7, 0, 0, 184, 0,
|
||||
246, 7, 0, 0, 184, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
0, 0, 0, 0, 116, 6,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 249, 7,
|
||||
0, 0, 0, 0, 11, 8,
|
||||
0, 0, 192, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 28, 8, 0, 0,
|
||||
0, 0, 44, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 64, 8, 0, 0,
|
||||
0, 0, 80, 8, 0, 0,
|
||||
224, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
85, 8, 0, 0, 228, 0,
|
||||
101, 8, 0, 0, 228, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 52, 7,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 109, 8,
|
||||
0, 0, 0, 0, 125, 8,
|
||||
0, 0, 232, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 160, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 126, 8, 0, 0,
|
||||
0, 0, 142, 8, 0, 0,
|
||||
236, 0, 0, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
160, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
166, 8, 0, 0, 240, 0,
|
||||
182, 8, 0, 0, 240, 0,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 184, 8,
|
||||
0, 0, 0, 0, 200, 8,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 220, 8,
|
||||
0, 0, 0, 0, 236, 8,
|
||||
0, 0, 0, 1, 0, 0,
|
||||
8, 0, 0, 0, 0, 0,
|
||||
0, 0, 232, 5, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 247, 8, 0, 0,
|
||||
0, 0, 7, 9, 0, 0,
|
||||
8, 1, 0, 0, 8, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
232, 5, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
17, 9, 0, 0, 16, 1,
|
||||
33, 9, 0, 0, 16, 1,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 160, 5,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 51, 9,
|
||||
0, 0, 0, 0, 67, 9,
|
||||
0, 0, 32, 1, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 68, 9, 0, 0,
|
||||
0, 0, 84, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 104, 9, 0, 0,
|
||||
0, 0, 120, 9, 0, 0,
|
||||
64, 1, 0, 0, 16, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
136, 9, 0, 0, 0, 0,
|
||||
152, 9, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
172, 9, 0, 0, 80, 1,
|
||||
188, 9, 0, 0, 80, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 197, 9,
|
||||
0, 0, 0, 0, 213, 9,
|
||||
0, 0, 96, 1, 0, 0,
|
||||
64, 0, 0, 0, 0, 0,
|
||||
0, 0, 216, 9, 0, 0,
|
||||
0, 0, 232, 9, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 252, 9, 0, 0,
|
||||
0, 0, 12, 10, 0, 0,
|
||||
160, 1, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
20, 10, 0, 0, 0, 0,
|
||||
36, 10, 0, 0, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
56, 10, 0, 0, 192, 1,
|
||||
72, 10, 0, 0, 192, 1,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
0, 0, 0, 0, 136, 9,
|
||||
0, 0, 0, 0, 152, 9,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
0, 0, 255, 255, 255, 255,
|
||||
0, 0, 0, 0, 86, 10,
|
||||
0, 0, 0, 0, 102, 10,
|
||||
0, 0, 208, 1, 0, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
0, 0, 184, 8, 0, 0,
|
||||
0, 0, 200, 8, 0, 0,
|
||||
0, 0, 0, 0, 255, 255,
|
||||
255, 255, 0, 0, 0, 0,
|
||||
255, 255, 255, 255, 0, 0,
|
||||
|
@ -429,12 +429,15 @@ const BYTE tessellation_indexed_vs[] =
|
|||
97, 120, 0, 120, 101, 95,
|
||||
112, 111, 105, 110, 116, 95,
|
||||
99, 111, 110, 115, 116, 97,
|
||||
110, 116, 95, 114, 97, 100,
|
||||
105, 117, 115, 0, 120, 101,
|
||||
95, 112, 111, 105, 110, 116,
|
||||
95, 115, 99, 114, 101, 101,
|
||||
110, 95, 116, 111, 95, 110,
|
||||
100, 99, 0, 120, 101, 95,
|
||||
110, 116, 95, 100, 105, 97,
|
||||
109, 101, 116, 101, 114, 0,
|
||||
120, 101, 95, 112, 111, 105,
|
||||
110, 116, 95, 115, 99, 114,
|
||||
101, 101, 110, 95, 100, 105,
|
||||
97, 109, 101, 116, 101, 114,
|
||||
95, 116, 111, 95, 110, 100,
|
||||
99, 95, 114, 97, 100, 105,
|
||||
117, 115, 0, 120, 101, 95,
|
||||
105, 110, 116, 101, 114, 112,
|
||||
111, 108, 97, 116, 111, 114,
|
||||
95, 115, 97, 109, 112, 108,
|
||||
|
@ -451,242 +454,242 @@ const BYTE tessellation_indexed_vs[] =
|
|||
115, 119, 105, 122, 122, 108,
|
||||
101, 100, 95, 115, 105, 103,
|
||||
110, 115, 0, 117, 105, 110,
|
||||
116, 52, 0, 171, 171, 171,
|
||||
116, 52, 0, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 116, 101, 120, 116, 117,
|
||||
114, 101, 115, 95, 114, 101,
|
||||
115, 111, 108, 118, 101, 100,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 101,
|
||||
115, 116, 95, 114, 101, 102,
|
||||
101, 114, 101, 110, 99, 101,
|
||||
0, 120, 101, 95, 97, 108,
|
||||
112, 104, 97, 95, 116, 111,
|
||||
95, 109, 97, 115, 107, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 51, 50, 98,
|
||||
112, 112, 95, 116, 105, 108,
|
||||
101, 95, 112, 105, 116, 99,
|
||||
104, 95, 100, 119, 111, 114,
|
||||
100, 115, 95, 115, 99, 97,
|
||||
108, 101, 100, 0, 120, 101,
|
||||
95, 99, 111, 108, 111, 114,
|
||||
95, 101, 120, 112, 95, 98,
|
||||
105, 97, 115, 0, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 112, 111, 108, 121, 95,
|
||||
111, 102, 102, 115, 101, 116,
|
||||
95, 102, 114, 111, 110, 116,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 112, 111,
|
||||
108, 121, 95, 111, 102, 102,
|
||||
115, 101, 116, 95, 98, 97,
|
||||
99, 107, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
100, 101, 112, 116, 104, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 120, 101, 95, 101, 100,
|
||||
114, 97, 109, 95, 115, 116,
|
||||
101, 110, 99, 105, 108, 0,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 116, 101, 120,
|
||||
116, 117, 114, 101, 115, 95,
|
||||
114, 101, 115, 111, 108, 118,
|
||||
101, 100, 0, 120, 101, 95,
|
||||
97, 108, 112, 104, 97, 95,
|
||||
116, 101, 115, 116, 95, 114,
|
||||
101, 102, 101, 114, 101, 110,
|
||||
99, 101, 0, 120, 101, 95,
|
||||
97, 108, 112, 104, 97, 95,
|
||||
116, 111, 95, 109, 97, 115,
|
||||
107, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 51,
|
||||
50, 98, 112, 112, 95, 116,
|
||||
105, 108, 101, 95, 112, 105,
|
||||
116, 99, 104, 95, 100, 119,
|
||||
111, 114, 100, 115, 95, 115,
|
||||
99, 97, 108, 101, 100, 0,
|
||||
120, 101, 95, 99, 111, 108,
|
||||
111, 114, 95, 101, 120, 112,
|
||||
95, 98, 105, 97, 115, 0,
|
||||
1, 0, 3, 0, 1, 0,
|
||||
0, 0, 37, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 97, 115, 101, 95, 100,
|
||||
119, 111, 114, 100, 115, 95,
|
||||
115, 99, 97, 108, 101, 100,
|
||||
0, 171, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 37, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 102, 111, 114, 109,
|
||||
97, 116, 95, 102, 108, 97,
|
||||
103, 115, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
114, 116, 95, 99, 108, 97,
|
||||
109, 112, 0, 171, 1, 0,
|
||||
3, 0, 1, 0, 4, 0,
|
||||
4, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 172, 6, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 112, 111, 108,
|
||||
121, 95, 111, 102, 102, 115,
|
||||
101, 116, 95, 102, 114, 111,
|
||||
110, 116, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
112, 111, 108, 121, 95, 111,
|
||||
102, 102, 115, 101, 116, 95,
|
||||
98, 97, 99, 107, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 100, 101, 112, 116,
|
||||
104, 95, 98, 97, 115, 101,
|
||||
95, 100, 119, 111, 114, 100,
|
||||
115, 95, 115, 99, 97, 108,
|
||||
101, 100, 0, 120, 101, 95,
|
||||
101, 100, 114, 97, 109, 95,
|
||||
115, 116, 101, 110, 99, 105,
|
||||
108, 0, 1, 0, 19, 0,
|
||||
1, 0, 4, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 19, 8,
|
||||
0, 0, 120, 101, 95, 101,
|
||||
100, 114, 97, 109, 95, 114,
|
||||
116, 95, 98, 97, 115, 101,
|
||||
95, 100, 119, 111, 114, 100,
|
||||
115, 95, 115, 99, 97, 108,
|
||||
101, 100, 0, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
19, 8, 0, 0, 120, 101,
|
||||
172, 6, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 102, 111,
|
||||
114, 109, 97, 116, 95, 102,
|
||||
108, 97, 103, 115, 0, 120,
|
||||
101, 95, 101, 100, 114, 97,
|
||||
109, 95, 114, 116, 95, 99,
|
||||
108, 97, 109, 112, 0, 171,
|
||||
1, 0, 3, 0, 1, 0,
|
||||
4, 0, 4, 0, 0, 0,
|
||||
95, 114, 116, 95, 107, 101,
|
||||
101, 112, 95, 109, 97, 115,
|
||||
107, 0, 171, 171, 1, 0,
|
||||
19, 0, 1, 0, 4, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 172, 6, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
107, 101, 101, 112, 95, 109,
|
||||
97, 115, 107, 0, 171, 171,
|
||||
1, 0, 19, 0, 1, 0,
|
||||
4, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 19, 8, 0, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 114, 116, 95,
|
||||
98, 108, 101, 110, 100, 95,
|
||||
102, 97, 99, 116, 111, 114,
|
||||
115, 95, 111, 112, 115, 0,
|
||||
120, 101, 95, 101, 100, 114,
|
||||
97, 109, 95, 98, 108, 101,
|
||||
110, 100, 95, 99, 111, 110,
|
||||
115, 116, 97, 110, 116, 0,
|
||||
77, 105, 99, 114, 111, 115,
|
||||
111, 102, 116, 32, 40, 82,
|
||||
41, 32, 72, 76, 83, 76,
|
||||
32, 83, 104, 97, 100, 101,
|
||||
114, 32, 67, 111, 109, 112,
|
||||
105, 108, 101, 114, 32, 49,
|
||||
48, 46, 49, 0, 171, 171,
|
||||
73, 83, 71, 78, 44, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
8, 0, 0, 0, 32, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
6, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 1, 0, 0, 83, 86,
|
||||
95, 86, 101, 114, 116, 101,
|
||||
120, 73, 68, 0, 79, 83,
|
||||
37, 8, 0, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 114, 116, 95, 98, 108,
|
||||
101, 110, 100, 95, 102, 97,
|
||||
99, 116, 111, 114, 115, 95,
|
||||
111, 112, 115, 0, 120, 101,
|
||||
95, 101, 100, 114, 97, 109,
|
||||
95, 98, 108, 101, 110, 100,
|
||||
95, 99, 111, 110, 115, 116,
|
||||
97, 110, 116, 0, 77, 105,
|
||||
99, 114, 111, 115, 111, 102,
|
||||
116, 32, 40, 82, 41, 32,
|
||||
72, 76, 83, 76, 32, 83,
|
||||
104, 97, 100, 101, 114, 32,
|
||||
67, 111, 109, 112, 105, 108,
|
||||
101, 114, 32, 49, 48, 46,
|
||||
49, 0, 171, 171, 73, 83,
|
||||
71, 78, 44, 0, 0, 0,
|
||||
1, 0, 0, 0, 8, 0,
|
||||
0, 0, 32, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 3, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 14,
|
||||
0, 0, 88, 69, 86, 69,
|
||||
82, 84, 69, 88, 73, 68,
|
||||
0, 171, 83, 72, 69, 88,
|
||||
52, 2, 0, 0, 81, 0,
|
||||
1, 0, 141, 0, 0, 0,
|
||||
106, 8, 0, 1, 89, 0,
|
||||
0, 7, 70, 142, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 96, 0, 0, 4,
|
||||
18, 16, 16, 0, 0, 0,
|
||||
0, 0, 6, 0, 0, 0,
|
||||
101, 0, 0, 3, 18, 32,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
104, 0, 0, 2, 1, 0,
|
||||
0, 0, 32, 0, 0, 12,
|
||||
114, 0, 16, 0, 0, 0,
|
||||
0, 0, 6, 128, 48, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 6, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
2, 64, 0, 0, 1, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 1,
|
||||
0, 0, 83, 86, 95, 86,
|
||||
101, 114, 116, 101, 120, 73,
|
||||
68, 0, 79, 83, 71, 78,
|
||||
44, 0, 0, 0, 1, 0,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
32, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 0, 0, 0,
|
||||
0, 0, 60, 0, 0, 7,
|
||||
50, 0, 16, 0, 0, 0,
|
||||
0, 0, 150, 5, 16, 0,
|
||||
0, 0, 0, 0, 70, 0,
|
||||
0, 0, 1, 14, 0, 0,
|
||||
88, 69, 86, 69, 82, 84,
|
||||
69, 88, 73, 68, 0, 171,
|
||||
83, 72, 69, 88, 52, 2,
|
||||
0, 0, 81, 0, 1, 0,
|
||||
141, 0, 0, 0, 106, 8,
|
||||
0, 1, 89, 0, 0, 7,
|
||||
70, 142, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
96, 0, 0, 4, 18, 16,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
31, 0, 4, 3, 10, 0,
|
||||
6, 0, 0, 0, 101, 0,
|
||||
0, 3, 18, 32, 16, 0,
|
||||
0, 0, 0, 0, 104, 0,
|
||||
0, 2, 1, 0, 0, 0,
|
||||
32, 0, 0, 12, 114, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
41, 0, 0, 7, 18, 0,
|
||||
6, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 2, 64,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
2, 0, 0, 0, 3, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
60, 0, 0, 7, 50, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 16, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
8, 0, 0, 0, 85, 0,
|
||||
0, 7, 66, 0, 16, 0,
|
||||
150, 5, 16, 0, 0, 0,
|
||||
0, 0, 70, 0, 16, 0,
|
||||
0, 0, 0, 0, 31, 0,
|
||||
4, 3, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 41, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 16,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 8, 0,
|
||||
0, 0, 1, 0, 0, 10,
|
||||
82, 0, 16, 0, 0, 0,
|
||||
0, 0, 6, 2, 16, 0,
|
||||
0, 0, 0, 0, 2, 64,
|
||||
0, 0, 0, 255, 0, 255,
|
||||
0, 0, 0, 0, 255, 0,
|
||||
255, 0, 0, 0, 0, 0,
|
||||
30, 0, 0, 7, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 18, 0,
|
||||
0, 1, 54, 0, 0, 5,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 16, 16, 0,
|
||||
0, 0, 0, 0, 21, 0,
|
||||
0, 1, 31, 0, 4, 3,
|
||||
26, 0, 16, 0, 0, 0,
|
||||
0, 0, 85, 0, 0, 7,
|
||||
34, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
66, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 16, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 8, 0, 0, 0,
|
||||
1, 0, 0, 10, 82, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
6, 2, 16, 0, 0, 0,
|
||||
0, 0, 2, 64, 0, 0,
|
||||
0, 255, 0, 255, 0, 0,
|
||||
0, 0, 255, 0, 255, 0,
|
||||
0, 0, 0, 0, 30, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 18, 0, 0, 1,
|
||||
54, 0, 0, 5, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 16, 16, 0, 0, 0,
|
||||
0, 0, 21, 0, 0, 1,
|
||||
31, 0, 4, 3, 26, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
85, 0, 0, 7, 34, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
16, 0, 0, 0, 140, 0,
|
||||
0, 11, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 1, 64,
|
||||
0, 0, 16, 0, 0, 0,
|
||||
140, 0, 0, 11, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 16, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
16, 0, 0, 0, 10, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 26, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
26, 0, 16, 0, 0, 0,
|
||||
0, 0, 21, 0, 0, 1,
|
||||
30, 0, 0, 9, 18, 0,
|
||||
21, 0, 0, 1, 30, 0,
|
||||
0, 9, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 26, 128, 48, 0,
|
||||
26, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 1, 0,
|
||||
0, 7, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
1, 64, 0, 0, 255, 255,
|
||||
255, 0, 83, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 42, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 84, 0, 0, 9,
|
||||
18, 0, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 58, 128,
|
||||
48, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 86, 0, 0, 5,
|
||||
18, 32, 16, 0, 0, 0,
|
||||
0, 0, 10, 0, 16, 0,
|
||||
0, 0, 0, 0, 62, 0,
|
||||
0, 1, 83, 84, 65, 84,
|
||||
148, 0, 0, 0, 20, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
0, 0, 0, 0, 2, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 7, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 1, 0, 0, 0,
|
||||
1, 0, 0, 7, 18, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
10, 0, 16, 0, 0, 0,
|
||||
0, 0, 1, 64, 0, 0,
|
||||
255, 255, 255, 0, 83, 0,
|
||||
0, 9, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
42, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 84, 0,
|
||||
0, 9, 18, 0, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
58, 128, 48, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 86, 0,
|
||||
0, 5, 18, 32, 16, 0,
|
||||
0, 0, 0, 0, 10, 0,
|
||||
16, 0, 0, 0, 0, 0,
|
||||
62, 0, 0, 1, 83, 84,
|
||||
65, 84, 148, 0, 0, 0,
|
||||
20, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
2, 0, 0, 0, 0, 0,
|
||||
0, 0, 4, 0, 0, 0,
|
||||
7, 0, 0, 0, 2, 0,
|
||||
0, 0, 2, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 1, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
1, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
|
@ -696,5 +699,5 @@ const BYTE tessellation_indexed_vs[] =
|
|||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0
|
||||
0, 0
|
||||
};
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
#include "xenos_draw.hlsli"
|
||||
|
||||
// TODO(Triang3l): Figure out how to see which interpolator gets adjusted.
|
||||
|
||||
[maxvertexcount(4)]
|
||||
void main(point XeVertexPreGS xe_in[1],
|
||||
inout TriangleStream<XeVertexPostGS> xe_stream) {
|
||||
// TODO(Triang3l): Handle ps_ucp_mode.
|
||||
if (xe_in[0].cull_distance < 0.0 || any(isnan(xe_in[0].post_gs.position))) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The vertex shader's header writes -1.0f to point_size by default, so any
|
||||
// non-negative value means that it was overwritten by the translated vertex
|
||||
// shader.
|
||||
float2 point_radius = xe_point_constant_radius;
|
||||
float point_vertex_diameter = xe_in[0].post_gs.pre_ps.point_params.z;
|
||||
if (point_vertex_diameter >= 0.0) {
|
||||
// Already clamped in the vertex shader (combined with making it
|
||||
// non-negative).
|
||||
point_radius = point_vertex_diameter * 0.5;
|
||||
}
|
||||
if (!all(point_radius > 0.0)) {
|
||||
// 4D5307F1 has zero-size snowflakes, drop them quicker.
|
||||
return;
|
||||
}
|
||||
point_radius *= xe_point_screen_to_ndc;
|
||||
point_radius *= xe_in[0].post_gs.position.w;
|
||||
|
||||
XeVertexPostGS xe_out;
|
||||
xe_out.pre_ps.interpolators = xe_in[0].post_gs.pre_ps.interpolators;
|
||||
xe_out.pre_ps.point_params.z = xe_in[0].post_gs.pre_ps.point_params.z;
|
||||
xe_out.position.zw = xe_in[0].post_gs.position.zw;
|
||||
// TODO(Triang3l): Handle ps_ucp_mode.
|
||||
xe_out.clip_distance_0123 = xe_in[0].post_gs.clip_distance_0123;
|
||||
xe_out.clip_distance_45 = xe_in[0].post_gs.clip_distance_45;
|
||||
|
||||
// V = 0 in the top (+Y in Direct3D), 1 in the bottom, according to the
|
||||
// analysis of Adreno 200 behavior (V = 1 towards -gl_FragCoord.y, the bottom,
|
||||
// but the top-left rule is used for rasterization, and gl_FragCoord is
|
||||
// generated from |PsParamGen.xy| via multiply-addition as opposed to just
|
||||
// addition, so -gl_FragCoord.y is likely positive in screen coordinates, or
|
||||
// +|PsParamGen.y|).
|
||||
// TODO(Triang3l): On Vulkan, sign of Y needs to inverted because of the
|
||||
// upper-left origin.
|
||||
xe_out.pre_ps.point_params.xy = float2(0.0, 0.0);
|
||||
xe_out.position.xy =
|
||||
xe_in[0].post_gs.position.xy + float2(-point_radius.x, point_radius.y);
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out.pre_ps.point_params.xy = float2(0.0, 1.0);
|
||||
xe_out.position.xy = xe_in[0].post_gs.position.xy - point_radius;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out.pre_ps.point_params.xy = float2(1.0, 0.0);
|
||||
xe_out.position.xy = xe_in[0].post_gs.position.xy + point_radius;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out.pre_ps.point_params.xy = float2(1.0, 1.0);
|
||||
xe_out.position.xy =
|
||||
xe_in[0].post_gs.position.xy + float2(point_radius.x, -point_radius.y);
|
||||
xe_stream.Append(xe_out);
|
||||
xe_stream.RestartStrip();
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
#include "xenos_draw.hlsli"
|
||||
|
||||
[maxvertexcount(4)]
|
||||
void main(lineadj XeVertexPreGS xe_in[4],
|
||||
inout TriangleStream<XeVertexPostGS> xe_stream) {
|
||||
// Culling should probably be done per-triangle - while there's no
|
||||
// RETAIN_QUADS on Adreno 2xx, on R6xx it's always disabled for
|
||||
// non-tessellated quads, so they are always decomposed into triangles.
|
||||
// Therefore, not doing any cull distance or NaN position checks here.
|
||||
// TODO(Triang3l): Find whether vertex killing should actually work for each
|
||||
// triangle or for the entire quad.
|
||||
// TODO(Triang3l): Find the correct order.
|
||||
XeVertexPostGS xe_out;
|
||||
xe_out = xe_in[0].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[1].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[3].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[2].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_stream.RestartStrip();
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
#include "xenos_draw.hlsli"
|
||||
|
||||
[maxvertexcount(6)]
|
||||
void main(triangle XeVertexPreGS xe_in[3],
|
||||
inout TriangleStream<XeVertexPostGS> xe_stream) {
|
||||
if (max(max(xe_in[0].cull_distance, xe_in[1].cull_distance),
|
||||
xe_in[2].cull_distance) < 0.0f ||
|
||||
any(isnan(xe_in[0].post_gs.position)) ||
|
||||
any(isnan(xe_in[1].post_gs.position)) ||
|
||||
any(isnan(xe_in[2].post_gs.position))) {
|
||||
return;
|
||||
}
|
||||
|
||||
XeVertexPostGS xe_out;
|
||||
|
||||
xe_out = xe_in[0].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[1].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[2].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_stream.RestartStrip();
|
||||
|
||||
// Find the diagonal (the edge that is longer than both the other two) and
|
||||
// mirror the other vertex across it.
|
||||
float3 edge_01 =
|
||||
xe_in[1].post_gs.position.xyz - xe_in[0].post_gs.position.xyz;
|
||||
float3 edge_02 =
|
||||
xe_in[2].post_gs.position.xyz - xe_in[0].post_gs.position.xyz;
|
||||
float3 edge_12 =
|
||||
xe_in[2].post_gs.position.xyz - xe_in[1].post_gs.position.xyz;
|
||||
float3 edge_squares = float3(
|
||||
dot(edge_01, edge_01), dot(edge_02, edge_02), dot(edge_12, edge_12));
|
||||
float3 v3_signs;
|
||||
if (edge_squares.z > edge_squares.x && edge_squares.z > edge_squares.y) {
|
||||
// 12 is the diagonal. Most games use this form.
|
||||
//
|
||||
// 0 ------ 1 0: -1,-1
|
||||
// | - | 1: 1,-1
|
||||
// | // | 2: -1, 1
|
||||
// | - | 3: [ 1, 1 ]
|
||||
// 2 ----- [3]
|
||||
//
|
||||
// 0 ------ 2 0: -1,-1
|
||||
// | - | 1: -1, 1
|
||||
// | // | 2: 1,-1
|
||||
// | - | 3: [ 1, 1 ]
|
||||
// 1 ------[3]
|
||||
xe_out = xe_in[2].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[1].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
v3_signs = float3(-1.0f, 1.0f, 1.0f);
|
||||
} else if (edge_squares.y > edge_squares.x &&
|
||||
edge_squares.y > edge_squares.z) {
|
||||
// 02 is the diagonal.
|
||||
//
|
||||
// 0 ------ 1 0: -1,-1
|
||||
// | - | 1: 1,-1
|
||||
// | \\ | 2: 1, 1
|
||||
// | - | 3: [-1, 1 ]
|
||||
// [3] ----- 2
|
||||
xe_out = xe_in[0].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[2].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
v3_signs = float3(1.0f, -1.0f, 1.0f);
|
||||
} else {
|
||||
// 01 is the diagonal. Not seen in any game so far.
|
||||
//
|
||||
// 0 ------ 2 0: -1,-1
|
||||
// | - | 1: 1, 1
|
||||
// | \\ | 2: 1,-1
|
||||
// | - | 3: [-1, 1 ]
|
||||
// [3] ----- 1
|
||||
xe_out = xe_in[1].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_out = xe_in[0].post_gs;
|
||||
xe_stream.Append(xe_out);
|
||||
v3_signs = float3(1.0f, 1.0f, -1.0f);
|
||||
}
|
||||
[unroll] for (int i = 0; i < 16; ++i) {
|
||||
xe_out.pre_ps.interpolators[i] =
|
||||
v3_signs.x * xe_in[0].post_gs.pre_ps.interpolators[i] +
|
||||
v3_signs.y * xe_in[1].post_gs.pre_ps.interpolators[i] +
|
||||
v3_signs.z * xe_in[2].post_gs.pre_ps.interpolators[i];
|
||||
}
|
||||
xe_out.pre_ps.point_params =
|
||||
v3_signs.x * xe_in[0].post_gs.pre_ps.point_params +
|
||||
v3_signs.y * xe_in[1].post_gs.pre_ps.point_params +
|
||||
v3_signs.z * xe_in[2].post_gs.pre_ps.point_params;
|
||||
xe_out.position = v3_signs.x * xe_in[0].post_gs.position +
|
||||
v3_signs.y * xe_in[1].post_gs.position +
|
||||
v3_signs.z * xe_in[2].post_gs.position;
|
||||
xe_out.clip_distance_0123 = v3_signs.x * xe_in[0].post_gs.clip_distance_0123 +
|
||||
v3_signs.y * xe_in[1].post_gs.clip_distance_0123 +
|
||||
v3_signs.z * xe_in[2].post_gs.clip_distance_0123;
|
||||
xe_out.clip_distance_45 = v3_signs.x * xe_in[0].post_gs.clip_distance_45 +
|
||||
v3_signs.y * xe_in[1].post_gs.clip_distance_45 +
|
||||
v3_signs.z * xe_in[2].post_gs.clip_distance_45;
|
||||
xe_stream.Append(xe_out);
|
||||
xe_stream.RestartStrip();
|
||||
}
|
|
@ -18,8 +18,8 @@ cbuffer xe_system_cbuffer : register(b0) {
|
|||
float3 xe_ndc_offset;
|
||||
float xe_point_vertex_diameter_max;
|
||||
|
||||
float2 xe_point_constant_radius;
|
||||
float2 xe_point_screen_to_ndc;
|
||||
float2 xe_point_constant_diameter;
|
||||
float2 xe_point_screen_diameter_to_ndc_radius;
|
||||
|
||||
uint xe_interpolator_sampling_pattern;
|
||||
uint xe_ps_param_gen;
|
||||
|
@ -70,7 +70,7 @@ struct XeHSControlPointOutput {
|
|||
|
||||
struct XeVertexPrePS {
|
||||
float4 interpolators[16] : TEXCOORD0;
|
||||
float3 point_params : TEXCOORD16;
|
||||
float3 point_parameters : TEXCOORD16;
|
||||
};
|
||||
|
||||
struct XeVertexPostGS {
|
||||
|
|
|
@ -9,8 +9,11 @@
|
|||
|
||||
#include "xenia/gpu/trace_player.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "xenia/gpu/command_processor.h"
|
||||
#include "xenia/gpu/graphics_system.h"
|
||||
#include "xenia/gpu/registers.h"
|
||||
#include "xenia/gpu/xenos.h"
|
||||
#include "xenia/memory.h"
|
||||
|
||||
|
@ -33,8 +36,6 @@ TracePlayer::TracePlayer(GraphicsSystem* graphics_system)
|
|||
assert_not_null(playback_event_);
|
||||
}
|
||||
|
||||
TracePlayer::~TracePlayer() { delete[] edram_snapshot_; }
|
||||
|
||||
const TraceReader::Frame* TracePlayer::current_frame() const {
|
||||
if (current_frame_index_ >= frame_count()) {
|
||||
return nullptr;
|
||||
|
@ -197,13 +198,12 @@ void TracePlayer::PlayTraceOnThread(const uint8_t* trace_data,
|
|||
case TraceCommandType::kEdramSnapshot: {
|
||||
auto cmd = reinterpret_cast<const EdramSnapshotCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd);
|
||||
if (!edram_snapshot_) {
|
||||
edram_snapshot_ = new uint8_t[xenos::kEdramSizeBytes];
|
||||
}
|
||||
std::unique_ptr<uint8_t[]> edram_snapshot(
|
||||
new uint8_t[xenos::kEdramSizeBytes]);
|
||||
DecompressMemory(cmd->encoding_format, trace_ptr, cmd->encoded_length,
|
||||
edram_snapshot_, xenos::kEdramSizeBytes);
|
||||
edram_snapshot.get(), xenos::kEdramSizeBytes);
|
||||
trace_ptr += cmd->encoded_length;
|
||||
command_processor->RestoreEdramSnapshot(edram_snapshot_);
|
||||
command_processor->RestoreEdramSnapshot(edram_snapshot.get());
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kEvent: {
|
||||
|
@ -219,6 +219,34 @@ void TracePlayer::PlayTraceOnThread(const uint8_t* trace_data,
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kRegisters: {
|
||||
auto cmd = reinterpret_cast<const RegistersCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd);
|
||||
std::unique_ptr<uint32_t[]> register_values(
|
||||
new uint32_t[cmd->register_count]);
|
||||
DecompressMemory(cmd->encoding_format, trace_ptr, cmd->encoded_length,
|
||||
register_values.get(),
|
||||
sizeof(uint32_t) * cmd->register_count);
|
||||
trace_ptr += cmd->encoded_length;
|
||||
command_processor->RestoreRegisters(
|
||||
cmd->first_register, register_values.get(), cmd->register_count,
|
||||
cmd->execute_callbacks);
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kGammaRamp: {
|
||||
auto cmd = reinterpret_cast<const GammaRampCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd);
|
||||
std::unique_ptr<uint32_t[]> gamma_ramps(new uint32_t[256 + 3 * 128]);
|
||||
DecompressMemory(cmd->encoding_format, trace_ptr, cmd->encoded_length,
|
||||
gamma_ramps.get(), sizeof(uint32_t) * (256 + 3 * 128));
|
||||
trace_ptr += cmd->encoded_length;
|
||||
command_processor->RestoreGammaRamp(
|
||||
reinterpret_cast<const reg::DC_LUT_30_COLOR*>(gamma_ramps.get()),
|
||||
reinterpret_cast<const reg::DC_LUT_PWL_DATA*>(gamma_ramps.get() +
|
||||
256),
|
||||
cmd->rw_component);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ enum class TracePlaybackMode {
|
|||
class TracePlayer : public TraceReader {
|
||||
public:
|
||||
TracePlayer(GraphicsSystem* graphics_system);
|
||||
~TracePlayer() override;
|
||||
|
||||
GraphicsSystem* graphics_system() const { return graphics_system_; }
|
||||
void SetPresentLastCopy(bool present_last_copy) {
|
||||
|
@ -66,7 +65,6 @@ class TracePlayer : public TraceReader {
|
|||
bool playing_trace_ = false;
|
||||
std::atomic<uint32_t> playback_percent_ = {0};
|
||||
std::unique_ptr<xe::threading::Event> playback_event_;
|
||||
uint8_t* edram_snapshot_ = nullptr;
|
||||
};
|
||||
|
||||
} // namespace gpu
|
||||
|
|
|
@ -53,6 +53,8 @@ enum class TraceCommandType : uint32_t {
|
|||
kMemoryWrite,
|
||||
kEdramSnapshot,
|
||||
kEvent,
|
||||
kRegisters,
|
||||
kGammaRamp,
|
||||
};
|
||||
|
||||
struct PrimaryBufferStartCommand {
|
||||
|
@ -134,6 +136,40 @@ struct EventCommand {
|
|||
Type event_type;
|
||||
};
|
||||
|
||||
// Represents a range of registers.
|
||||
struct RegistersCommand {
|
||||
TraceCommandType type;
|
||||
|
||||
uint32_t first_register;
|
||||
uint32_t register_count;
|
||||
// Whether to set the registers via WriteRegister, which may have side
|
||||
// effects, rather than by copying them directly to the register file.
|
||||
bool execute_callbacks;
|
||||
|
||||
// Encoding format of the values in the trace file.
|
||||
MemoryEncodingFormat encoding_format;
|
||||
// Number of bytes the values occupy in the trace file in their encoded form.
|
||||
// If no encoding is used, this will be sizeof(uint32_t) * register_count.
|
||||
uint32_t encoded_length;
|
||||
};
|
||||
|
||||
// Represents a gamma ramp - encoded 256 DC_LUT_30_COLOR values and 128
|
||||
// interleaved RGB DC_LUT_PWL_DATA values.
|
||||
// Assuming that all other gamma ramp state is saved as plain registers.
|
||||
struct GammaRampCommand {
|
||||
TraceCommandType type;
|
||||
|
||||
// The component index (0 = red, 1 = green, 2 = blue) for the next
|
||||
// DC_LUT_SEQ_COLOR or DC_LUT_PWL_DATA read or write.
|
||||
uint8_t rw_component;
|
||||
|
||||
// Encoding format of the ramps in the trace file.
|
||||
MemoryEncodingFormat encoding_format;
|
||||
// Number of bytes the ramps occupy in the trace file in their encoded form.
|
||||
// If no encoding is used, this will be sizeof(uint32_t) * (256 + 3 * 128).
|
||||
uint32_t encoded_length;
|
||||
};
|
||||
|
||||
} // namespace gpu
|
||||
} // namespace xe
|
||||
|
||||
|
|
|
@ -205,6 +205,16 @@ void TraceReader::ParseTrace() {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kRegisters: {
|
||||
auto cmd = reinterpret_cast<const RegistersCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd) + cmd->encoded_length;
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kGammaRamp: {
|
||||
auto cmd = reinterpret_cast<const GammaRampCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd) + cmd->encoded_length;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
// Broken trace file?
|
||||
assert_unhandled_case(type);
|
||||
|
@ -218,8 +228,8 @@ void TraceReader::ParseTrace() {
|
|||
}
|
||||
|
||||
bool TraceReader::DecompressMemory(MemoryEncodingFormat encoding_format,
|
||||
const uint8_t* src, size_t src_size,
|
||||
uint8_t* dest, size_t dest_size) {
|
||||
const void* src, size_t src_size, void* dest,
|
||||
size_t dest_size) {
|
||||
switch (encoding_format) {
|
||||
case MemoryEncodingFormat::kNone:
|
||||
assert_true(src_size == dest_size);
|
||||
|
|
|
@ -20,36 +20,6 @@
|
|||
namespace xe {
|
||||
namespace gpu {
|
||||
|
||||
// void Foo() {
|
||||
// auto trace_ptr = trace_data;
|
||||
// while (trace_ptr < trace_data + trace_size) {
|
||||
// auto cmd_type = *reinterpret_cast<const TraceCommandType*>(trace_ptr);
|
||||
// switch (cmd_type) {
|
||||
// case TraceCommandType::kPrimaryBufferStart:
|
||||
// break;
|
||||
// case TraceCommandType::kPrimaryBufferEnd:
|
||||
// break;
|
||||
// case TraceCommandType::kIndirectBufferStart:
|
||||
// break;
|
||||
// case TraceCommandType::kIndirectBufferEnd:
|
||||
// break;
|
||||
// case TraceCommandType::kPacketStart:
|
||||
// break;
|
||||
// case TraceCommandType::kPacketEnd:
|
||||
// break;
|
||||
// case TraceCommandType::kMemoryRead:
|
||||
// break;
|
||||
// case TraceCommandType::kMemoryWrite:
|
||||
// break;
|
||||
// case TraceCommandType::kEvent:
|
||||
// break;
|
||||
// }
|
||||
// /*trace_ptr = graphics_system->PlayTrace(
|
||||
// trace_ptr, trace_size - (trace_ptr - trace_data),
|
||||
// GraphicsSystem::TracePlaybackMode::kBreakOnSwap);*/
|
||||
// }
|
||||
//}
|
||||
|
||||
class TraceReader {
|
||||
public:
|
||||
struct CommandBuffer {
|
||||
|
@ -135,9 +105,8 @@ class TraceReader {
|
|||
|
||||
protected:
|
||||
void ParseTrace();
|
||||
bool DecompressMemory(MemoryEncodingFormat encoding_format,
|
||||
const uint8_t* src, size_t src_size, uint8_t* dest,
|
||||
size_t dest_size);
|
||||
bool DecompressMemory(MemoryEncodingFormat encoding_format, const void* src,
|
||||
size_t src_size, void* dest, size_t dest_size);
|
||||
|
||||
std::unique_ptr<MappedMemory> mmap_;
|
||||
const uint8_t* trace_data_ = nullptr;
|
||||
|
|
|
@ -408,6 +408,18 @@ void TraceViewer::DrawPacketDisassemblerUI() {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kRegisters: {
|
||||
auto cmd = reinterpret_cast<const RegistersCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd) + cmd->encoded_length;
|
||||
// ImGui::BulletText("Registers");
|
||||
break;
|
||||
}
|
||||
case TraceCommandType::kGammaRamp: {
|
||||
auto cmd = reinterpret_cast<const GammaRampCommand*>(trace_ptr);
|
||||
trace_ptr += sizeof(*cmd) + cmd->encoded_length;
|
||||
// ImGui::BulletText("GammaRamp");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
ImGui::EndChild();
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "xenia/gpu/trace_writer.h"
|
||||
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
|
||||
#include "third_party/snappy/snappy-sinksource.h"
|
||||
#include "third_party/snappy/snappy.h"
|
||||
|
@ -19,6 +20,7 @@
|
|||
#include "xenia/base/filesystem.h"
|
||||
#include "xenia/base/logging.h"
|
||||
#include "xenia/base/string.h"
|
||||
#include "xenia/gpu/registers.h"
|
||||
#include "xenia/gpu/xenos.h"
|
||||
|
||||
namespace xe {
|
||||
|
@ -194,7 +196,7 @@ class SnappySink : public snappy::Sink {
|
|||
|
||||
void TraceWriter::WriteMemoryCommand(TraceCommandType type, uint32_t base_ptr,
|
||||
size_t length, const void* host_ptr) {
|
||||
MemoryCommand cmd;
|
||||
MemoryCommand cmd = {};
|
||||
cmd.type = type;
|
||||
cmd.base_ptr = base_ptr;
|
||||
cmd.encoding_format = MemoryEncodingFormat::kNone;
|
||||
|
@ -232,8 +234,9 @@ void TraceWriter::WriteMemoryCommand(TraceCommandType type, uint32_t base_ptr,
|
|||
}
|
||||
|
||||
void TraceWriter::WriteEdramSnapshot(const void* snapshot) {
|
||||
EdramSnapshotCommand cmd;
|
||||
EdramSnapshotCommand cmd = {};
|
||||
cmd.type = TraceCommandType::kEdramSnapshot;
|
||||
|
||||
if (compress_output_) {
|
||||
// Write the header now so we reserve space in the buffer.
|
||||
long header_position = std::ftell(file_);
|
||||
|
@ -272,5 +275,93 @@ void TraceWriter::WriteEvent(EventCommand::Type event_type) {
|
|||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
}
|
||||
|
||||
void TraceWriter::WriteRegisters(uint32_t first_register,
|
||||
const uint32_t* register_values,
|
||||
uint32_t register_count,
|
||||
bool execute_callbacks_on_play) {
|
||||
RegistersCommand cmd = {};
|
||||
cmd.type = TraceCommandType::kRegisters;
|
||||
cmd.first_register = first_register;
|
||||
cmd.register_count = register_count;
|
||||
cmd.execute_callbacks = execute_callbacks_on_play;
|
||||
|
||||
uint32_t uncompressed_length = uint32_t(sizeof(uint32_t) * register_count);
|
||||
if (compress_output_) {
|
||||
// Write the header now so we reserve space in the buffer.
|
||||
long header_position = std::ftell(file_);
|
||||
cmd.encoding_format = MemoryEncodingFormat::kSnappy;
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
|
||||
// Stream the content right to the buffer.
|
||||
snappy::ByteArraySource snappy_source(
|
||||
reinterpret_cast<const char*>(register_values), uncompressed_length);
|
||||
SnappySink snappy_sink(file_);
|
||||
cmd.encoded_length =
|
||||
static_cast<uint32_t>(snappy::Compress(&snappy_source, &snappy_sink));
|
||||
|
||||
// Seek back and overwrite the header with our final size.
|
||||
std::fseek(file_, header_position, SEEK_SET);
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
std::fseek(file_, header_position + sizeof(cmd) + cmd.encoded_length,
|
||||
SEEK_SET);
|
||||
} else {
|
||||
// Uncompressed - write the values directly to the file.
|
||||
cmd.encoding_format = MemoryEncodingFormat::kNone;
|
||||
cmd.encoded_length = uncompressed_length;
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
fwrite(register_values, 1, uncompressed_length, file_);
|
||||
}
|
||||
}
|
||||
|
||||
void TraceWriter::WriteGammaRamp(
|
||||
const reg::DC_LUT_30_COLOR* gamma_ramp_256_entry_table,
|
||||
const reg::DC_LUT_PWL_DATA* gamma_ramp_pwl_rgb,
|
||||
uint32_t gamma_ramp_rw_component) {
|
||||
GammaRampCommand cmd = {};
|
||||
cmd.type = TraceCommandType::kGammaRamp;
|
||||
cmd.rw_component = uint8_t(gamma_ramp_rw_component);
|
||||
|
||||
constexpr uint32_t k256EntryTableUncompressedLength =
|
||||
sizeof(reg::DC_LUT_30_COLOR) * 256;
|
||||
constexpr uint32_t kPWLUncompressedLength =
|
||||
sizeof(reg::DC_LUT_PWL_DATA) * 3 * 128;
|
||||
constexpr uint32_t kUncompressedLength =
|
||||
k256EntryTableUncompressedLength + kPWLUncompressedLength;
|
||||
if (compress_output_) {
|
||||
// Write the header now so we reserve space in the buffer.
|
||||
long header_position = std::ftell(file_);
|
||||
cmd.encoding_format = MemoryEncodingFormat::kSnappy;
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
|
||||
// Stream the content right to the buffer.
|
||||
{
|
||||
std::unique_ptr<char[]> gamma_ramps(new char[kUncompressedLength]);
|
||||
std::memcpy(gamma_ramps.get(), gamma_ramp_256_entry_table,
|
||||
k256EntryTableUncompressedLength);
|
||||
std::memcpy(gamma_ramps.get() + k256EntryTableUncompressedLength,
|
||||
gamma_ramp_pwl_rgb, kPWLUncompressedLength);
|
||||
snappy::ByteArraySource snappy_source(gamma_ramps.get(),
|
||||
kUncompressedLength);
|
||||
SnappySink snappy_sink(file_);
|
||||
cmd.encoded_length =
|
||||
static_cast<uint32_t>(snappy::Compress(&snappy_source, &snappy_sink));
|
||||
}
|
||||
|
||||
// Seek back and overwrite the header with our final size.
|
||||
std::fseek(file_, header_position, SEEK_SET);
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
std::fseek(file_, header_position + sizeof(cmd) + cmd.encoded_length,
|
||||
SEEK_SET);
|
||||
} else {
|
||||
// Uncompressed - write the values directly to the file.
|
||||
cmd.encoding_format = MemoryEncodingFormat::kNone;
|
||||
cmd.encoded_length = kUncompressedLength;
|
||||
fwrite(&cmd, 1, sizeof(cmd), file_);
|
||||
fwrite(gamma_ramp_256_entry_table, 1, k256EntryTableUncompressedLength,
|
||||
file_);
|
||||
fwrite(gamma_ramp_pwl_rgb, 1, kPWLUncompressedLength, file_);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace gpu
|
||||
} // namespace xe
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <set>
|
||||
#include <string>
|
||||
|
||||
#include "xenia/gpu/registers.h"
|
||||
#include "xenia/gpu/trace_protocol.h"
|
||||
|
||||
namespace xe {
|
||||
|
@ -44,6 +45,11 @@ class TraceWriter {
|
|||
const void* host_ptr = nullptr);
|
||||
void WriteEdramSnapshot(const void* snapshot);
|
||||
void WriteEvent(EventCommand::Type event_type);
|
||||
void WriteRegisters(uint32_t first_register, const uint32_t* register_values,
|
||||
uint32_t register_count, bool execute_callbacks_on_play);
|
||||
void WriteGammaRamp(const reg::DC_LUT_30_COLOR* gamma_ramp_256_entry_table,
|
||||
const reg::DC_LUT_PWL_DATA* gamma_ramp_pwl_rgb,
|
||||
uint32_t gamma_ramp_rw_component);
|
||||
|
||||
private:
|
||||
void WriteMemoryCommand(TraceCommandType type, uint32_t base_ptr,
|
||||
|
|
|
@ -1614,6 +1614,8 @@ bool VulkanCommandProcessor::IssueCopy() {
|
|||
}
|
||||
|
||||
void VulkanCommandProcessor::InitializeTrace() {
|
||||
CommandProcessor::InitializeTrace();
|
||||
|
||||
if (!BeginSubmission(true)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -113,8 +113,6 @@ Win32FilePicker::~Win32FilePicker() = default;
|
|||
bool Win32FilePicker::Show(Window* parent_window) {
|
||||
// TODO(benvanik): FileSaveDialog.
|
||||
assert_true(mode() == Mode::kOpen);
|
||||
// TODO(benvanik): folder dialogs.
|
||||
assert_true(type() == Type::kFile);
|
||||
|
||||
Microsoft::WRL::ComPtr<IFileDialog> file_dialog;
|
||||
HRESULT hr =
|
||||
|
@ -134,18 +132,21 @@ bool Win32FilePicker::Show(Window* parent_window) {
|
|||
if (!SUCCEEDED(hr)) {
|
||||
return false;
|
||||
}
|
||||
// FOS_PICKFOLDERS
|
||||
// FOS_FILEMUSTEXIST
|
||||
// FOS_PATHMUSTEXIST
|
||||
flags |= FOS_FORCEFILESYSTEM;
|
||||
if (multi_selection()) {
|
||||
flags |= FOS_ALLOWMULTISELECT;
|
||||
}
|
||||
if (type() == Type::kDirectory) {
|
||||
flags |= FOS_PICKFOLDERS;
|
||||
}
|
||||
hr = file_dialog->SetOptions(flags);
|
||||
if (!SUCCEEDED(hr)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type() == Type::kFile) {
|
||||
// Set the file types to display only. Notice that this is a 1-based array.
|
||||
std::vector<std::pair<std::u16string, std::u16string>> file_pairs;
|
||||
std::vector<COMDLG_FILTERSPEC> file_types;
|
||||
|
@ -153,8 +154,8 @@ bool Win32FilePicker::Show(Window* parent_window) {
|
|||
const auto& file_pair =
|
||||
file_pairs.emplace_back(std::move(xe::to_utf16(extension.first)),
|
||||
std::move(xe::to_utf16(extension.second)));
|
||||
file_types.push_back(
|
||||
{(LPCWSTR)file_pair.first.c_str(), (LPCWSTR)file_pair.second.c_str()});
|
||||
file_types.push_back({(LPCWSTR)file_pair.first.c_str(),
|
||||
(LPCWSTR)file_pair.second.c_str()});
|
||||
}
|
||||
hr = file_dialog->SetFileTypes(static_cast<UINT>(file_types.size()),
|
||||
file_types.data());
|
||||
|
@ -166,6 +167,7 @@ bool Win32FilePicker::Show(Window* parent_window) {
|
|||
if (!SUCCEEDED(hr)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Create an event handling object, and hook it up to the dialog.
|
||||
Microsoft::WRL::ComPtr<IFileDialogEvents> file_dialog_events;
|
||||
|
|
|
@ -21,5 +21,6 @@ project("xenia-ui")
|
|||
|
||||
filter("platforms:Windows")
|
||||
links({
|
||||
"DXGI",
|
||||
"dwmapi",
|
||||
"dxgi",
|
||||
})
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
#include "xenia/ui/virtual_key.h"
|
||||
#include "xenia/ui/windowed_app_context_win.h"
|
||||
|
||||
// For per-monitor DPI awareness v1.
|
||||
#include <ShellScalingApi.h>
|
||||
#include <dwmapi.h>
|
||||
|
||||
namespace xe {
|
||||
namespace ui {
|
||||
|
@ -182,6 +182,14 @@ bool Win32Window::OpenImpl() {
|
|||
}
|
||||
}
|
||||
|
||||
// Disable rounded corners starting with Windows 11 (or silently receive and
|
||||
// ignore E_INVALIDARG on Windows versions before 10.0.22000.0), primarily to
|
||||
// preserve all pixels of the guest output.
|
||||
DWM_WINDOW_CORNER_PREFERENCE window_corner_preference = DWMWCP_DONOTROUND;
|
||||
DwmSetWindowAttribute(hwnd_, DWMWA_WINDOW_CORNER_PREFERENCE,
|
||||
&window_corner_preference,
|
||||
sizeof(window_corner_preference));
|
||||
|
||||
// Disable flicks.
|
||||
ATOM atom = GlobalAddAtomW(L"MicrosoftTabletPenServiceProperty");
|
||||
const DWORD_PTR dwHwndTabletProperty =
|
||||
|
|
|
@ -920,7 +920,7 @@ class BuildShadersCommand(Command):
|
|||
print('ERROR: could not find 32-bit Program Files')
|
||||
return 1
|
||||
windows_sdk_bin_path = os.path.join(
|
||||
program_files_path, 'Windows Kits/10/bin/10.0.19041.0/x64')
|
||||
program_files_path, 'Windows Kits/10/bin/10.0.22000.0/x64')
|
||||
if not os.path.exists(windows_sdk_bin_path):
|
||||
print('ERROR: could not find Windows 10 SDK binaries')
|
||||
return 1
|
||||
|
|
Loading…
Reference in New Issue