[D3D12] Refactoring: DXBC -> Dxbc
This commit is contained in:
parent
952819ed87
commit
574f85cc15
|
@ -60,7 +60,7 @@ void D3D12Shader::SetTexturesAndSamplers(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D12Shader::DisassembleDXBC(const ui::d3d12::D3D12Provider* provider) {
|
bool D3D12Shader::DisassembleDxbc(const ui::d3d12::D3D12Provider* provider) {
|
||||||
if (!host_disassembly_.empty()) {
|
if (!host_disassembly_.empty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ class D3D12Shader : public Shader {
|
||||||
const DxbcShaderTranslator::SamplerBinding* sampler_bindings,
|
const DxbcShaderTranslator::SamplerBinding* sampler_bindings,
|
||||||
uint32_t sampler_binding_count);
|
uint32_t sampler_binding_count);
|
||||||
|
|
||||||
bool DisassembleDXBC(const ui::d3d12::D3D12Provider* provider);
|
bool DisassembleDxbc(const ui::d3d12::D3D12Provider* provider);
|
||||||
|
|
||||||
static constexpr uint32_t kMaxTextureSRVIndexBits =
|
static constexpr uint32_t kMaxTextureSRVIndexBits =
|
||||||
DxbcShaderTranslator::kMaxTextureSRVIndexBits;
|
DxbcShaderTranslator::kMaxTextureSRVIndexBits;
|
||||||
|
|
|
@ -254,7 +254,7 @@ bool PipelineCache::TranslateShader(D3D12Shader* shader,
|
||||||
// Disassemble the shader for dumping.
|
// Disassemble the shader for dumping.
|
||||||
if (FLAGS_d3d12_dxbc_disasm) {
|
if (FLAGS_d3d12_dxbc_disasm) {
|
||||||
auto provider = command_processor_->GetD3D12Context()->GetD3D12Provider();
|
auto provider = command_processor_->GetD3D12Context()->GetD3D12Provider();
|
||||||
if (!shader->DisassembleDXBC(provider)) {
|
if (!shader->DisassembleDxbc(provider)) {
|
||||||
XELOGE("Failed to disassemble DXBC shader %.16" PRIX64,
|
XELOGE("Failed to disassemble DXBC shader %.16" PRIX64,
|
||||||
shader->ucode_data_hash());
|
shader->ucode_data_hash());
|
||||||
}
|
}
|
||||||
|
|
|
@ -870,10 +870,10 @@ void DxbcShaderTranslator::StartVertexOrDomainShader() {
|
||||||
++stat_.instruction_count;
|
++stat_.instruction_count;
|
||||||
++stat_.mov_instruction_count;
|
++stat_.mov_instruction_count;
|
||||||
|
|
||||||
if (IsDXBCVertexShader()) {
|
if (IsDxbcVertexShader()) {
|
||||||
// Write the vertex index to GPR 0.
|
// Write the vertex index to GPR 0.
|
||||||
StartVertexShader_LoadVertexIndex();
|
StartVertexShader_LoadVertexIndex();
|
||||||
} else if (IsDXBCDomainShader()) {
|
} else if (IsDxbcDomainShader()) {
|
||||||
uint32_t temp_register_operand_length = IndexableGPRsUsed() ? 3 : 2;
|
uint32_t temp_register_operand_length = IndexableGPRsUsed() ? 3 : 2;
|
||||||
|
|
||||||
// Copy the domain location to r0.yz (for quad patches) or r0.xyz (for
|
// Copy the domain location to r0.yz (for quad patches) or r0.xyz (for
|
||||||
|
@ -1339,9 +1339,9 @@ void DxbcShaderTranslator::StartPixelShader() {
|
||||||
void DxbcShaderTranslator::StartTranslation() {
|
void DxbcShaderTranslator::StartTranslation() {
|
||||||
// Allocate global system temporary registers that may also be used in the
|
// Allocate global system temporary registers that may also be used in the
|
||||||
// epilogue.
|
// epilogue.
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
system_temp_position_ = PushSystemTemp(true);
|
system_temp_position_ = PushSystemTemp(true);
|
||||||
} else if (IsDXBCPixelShader()) {
|
} else if (IsDxbcPixelShader()) {
|
||||||
if (!is_depth_only_pixel_shader_) {
|
if (!is_depth_only_pixel_shader_) {
|
||||||
for (uint32_t i = 0; i < 4; ++i) {
|
for (uint32_t i = 0; i < 4; ++i) {
|
||||||
// In the ROV path, no need to initialize the colors because original
|
// In the ROV path, no need to initialize the colors because original
|
||||||
|
@ -1372,9 +1372,9 @@ void DxbcShaderTranslator::StartTranslation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write stage-specific prologue.
|
// Write stage-specific prologue.
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
StartVertexOrDomainShader();
|
StartVertexOrDomainShader();
|
||||||
} else if (IsDXBCPixelShader()) {
|
} else if (IsDxbcPixelShader()) {
|
||||||
StartPixelShader();
|
StartPixelShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6870,16 +6870,16 @@ void DxbcShaderTranslator::CompleteShaderCode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write stage-specific epilogue.
|
// Write stage-specific epilogue.
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
CompleteVertexOrDomainShader();
|
CompleteVertexOrDomainShader();
|
||||||
} else if (IsDXBCPixelShader()) {
|
} else if (IsDxbcPixelShader()) {
|
||||||
CompletePixelShader();
|
CompletePixelShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
// Release system_temp_position_.
|
// Release system_temp_position_.
|
||||||
PopSystemTemp();
|
PopSystemTemp();
|
||||||
} else if (IsDXBCPixelShader()) {
|
} else if (IsDxbcPixelShader()) {
|
||||||
if (edram_rov_used_) {
|
if (edram_rov_used_) {
|
||||||
// Release system_temp_depth_.
|
// Release system_temp_depth_.
|
||||||
PopSystemTemp();
|
PopSystemTemp();
|
||||||
|
@ -6930,7 +6930,7 @@ std::vector<uint8_t> DxbcShaderTranslator::CompleteTranslation() {
|
||||||
|
|
||||||
shader_object_.clear();
|
shader_object_.clear();
|
||||||
|
|
||||||
uint32_t has_pcsg = IsDXBCDomainShader() ? 1 : 0;
|
uint32_t has_pcsg = IsDxbcDomainShader() ? 1 : 0;
|
||||||
|
|
||||||
// Write the shader object header.
|
// Write the shader object header.
|
||||||
shader_object_.push_back('CBXD');
|
shader_object_.push_back('CBXD');
|
||||||
|
@ -9634,7 +9634,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// Do the part involving derivative calculation unconditionally, and re-enter
|
// Do the part involving derivative calculation unconditionally, and re-enter
|
||||||
// the predicate check before writing the result.
|
// the predicate check before writing the result.
|
||||||
bool suppress_predication = false;
|
bool suppress_predication = false;
|
||||||
if (IsDXBCPixelShader()) {
|
if (IsDxbcPixelShader()) {
|
||||||
if (instr.opcode == FetchOpcode::kGetTextureComputedLod ||
|
if (instr.opcode == FetchOpcode::kGetTextureComputedLod ||
|
||||||
instr.opcode == FetchOpcode::kGetTextureGradients) {
|
instr.opcode == FetchOpcode::kGetTextureGradients) {
|
||||||
suppress_predication = true;
|
suppress_predication = true;
|
||||||
|
@ -9716,7 +9716,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
uint32_t tfetch_pair_offset = (tfetch_index >> 1) * 3;
|
uint32_t tfetch_pair_offset = (tfetch_index >> 1) * 3;
|
||||||
|
|
||||||
// TODO(Triang3l): kGetTextureBorderColorFrac.
|
// TODO(Triang3l): kGetTextureBorderColorFrac.
|
||||||
if (!IsDXBCPixelShader() &&
|
if (!IsDxbcPixelShader() &&
|
||||||
(instr.opcode == FetchOpcode::kGetTextureComputedLod ||
|
(instr.opcode == FetchOpcode::kGetTextureComputedLod ||
|
||||||
instr.opcode == FetchOpcode::kGetTextureGradients)) {
|
instr.opcode == FetchOpcode::kGetTextureGradients)) {
|
||||||
// Quickly skip everything if tried to get anything involving derivatives
|
// Quickly skip everything if tried to get anything involving derivatives
|
||||||
|
@ -10337,7 +10337,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
if (instr.opcode == FetchOpcode::kGetTextureComputedLod) {
|
if (instr.opcode == FetchOpcode::kGetTextureComputedLod) {
|
||||||
// The non-pixel-shader case should be handled before because it
|
// The non-pixel-shader case should be handled before because it
|
||||||
// just returns a constant in this case.
|
// just returns a constant in this case.
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
replicate_result = true;
|
replicate_result = true;
|
||||||
shader_code_.push_back(
|
shader_code_.push_back(
|
||||||
ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_1_SB_OPCODE_LOD) |
|
ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_1_SB_OPCODE_LOD) |
|
||||||
|
@ -10442,7 +10442,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// Both sample_l and sample_b should add the LOD bias as the last
|
// Both sample_l and sample_b should add the LOD bias as the last
|
||||||
// operand in our case.
|
// operand in our case.
|
||||||
bool explicit_lod =
|
bool explicit_lod =
|
||||||
!instr.attributes.use_computed_lod || !IsDXBCPixelShader();
|
!instr.attributes.use_computed_lod || !IsDxbcPixelShader();
|
||||||
if (explicit_lod) {
|
if (explicit_lod) {
|
||||||
shader_code_.push_back(
|
shader_code_.push_back(
|
||||||
ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_SAMPLE_L) |
|
ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_SAMPLE_L) |
|
||||||
|
@ -10821,7 +10821,7 @@ void DxbcShaderTranslator::ProcessTextureFetchInstruction(
|
||||||
// Release coord_temp.
|
// Release coord_temp.
|
||||||
PopSystemTemp();
|
PopSystemTemp();
|
||||||
} else if (instr.opcode == FetchOpcode::kGetTextureGradients) {
|
} else if (instr.opcode == FetchOpcode::kGetTextureGradients) {
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
store_result = true;
|
store_result = true;
|
||||||
// pv.xz = ddx(coord.xy)
|
// pv.xz = ddx(coord.xy)
|
||||||
shader_code_.push_back(
|
shader_code_.push_back(
|
||||||
|
@ -13549,21 +13549,21 @@ void DxbcShaderTranslator::WriteResourceDefinitions() {
|
||||||
resource_count +=
|
resource_count +=
|
||||||
uint32_t(sampler_bindings_.size()) + 1 + uint32_t(texture_srvs_.size());
|
uint32_t(sampler_bindings_.size()) + 1 + uint32_t(texture_srvs_.size());
|
||||||
}
|
}
|
||||||
if (IsDXBCPixelShader() && edram_rov_used_) {
|
if (IsDxbcPixelShader() && edram_rov_used_) {
|
||||||
// EDRAM.
|
// EDRAM.
|
||||||
++resource_count;
|
++resource_count;
|
||||||
}
|
}
|
||||||
shader_object_.push_back(resource_count);
|
shader_object_.push_back(resource_count);
|
||||||
// Bound resource buffer offset (set later).
|
// Bound resource buffer offset (set later).
|
||||||
shader_object_.push_back(0);
|
shader_object_.push_back(0);
|
||||||
if (IsDXBCVertexShader()) {
|
if (IsDxbcVertexShader()) {
|
||||||
// vs_5_1
|
// vs_5_1
|
||||||
shader_object_.push_back(0xFFFE0501u);
|
shader_object_.push_back(0xFFFE0501u);
|
||||||
} else if (IsDXBCDomainShader()) {
|
} else if (IsDxbcDomainShader()) {
|
||||||
// ds_5_1
|
// ds_5_1
|
||||||
shader_object_.push_back(0x44530501u);
|
shader_object_.push_back(0x44530501u);
|
||||||
} else {
|
} else {
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
// ps_5_1
|
// ps_5_1
|
||||||
shader_object_.push_back(0xFFFF0501u);
|
shader_object_.push_back(0xFFFF0501u);
|
||||||
}
|
}
|
||||||
|
@ -13875,7 +13875,7 @@ void DxbcShaderTranslator::WriteResourceDefinitions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint32_t edram_name_offset = new_offset;
|
uint32_t edram_name_offset = new_offset;
|
||||||
if (IsDXBCPixelShader() && edram_rov_used_) {
|
if (IsDxbcPixelShader() && edram_rov_used_) {
|
||||||
new_offset += AppendString(shader_object_, "xe_edram");
|
new_offset += AppendString(shader_object_, "xe_edram");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13965,7 +13965,7 @@ void DxbcShaderTranslator::WriteResourceDefinitions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDXBCPixelShader() && edram_rov_used_) {
|
if (IsDxbcPixelShader() && edram_rov_used_) {
|
||||||
// EDRAM uint32 buffer.
|
// EDRAM uint32 buffer.
|
||||||
shader_object_.push_back(edram_name_offset);
|
shader_object_.push_back(edram_name_offset);
|
||||||
// D3D_SIT_UAV_RWTYPED.
|
// D3D_SIT_UAV_RWTYPED.
|
||||||
|
@ -14032,7 +14032,7 @@ void DxbcShaderTranslator::WriteInputSignature() {
|
||||||
const uint32_t signature_position_dwords = 2;
|
const uint32_t signature_position_dwords = 2;
|
||||||
const uint32_t signature_size_dwords = 6;
|
const uint32_t signature_size_dwords = 6;
|
||||||
|
|
||||||
if (IsDXBCVertexShader()) {
|
if (IsDxbcVertexShader()) {
|
||||||
// Only unswapped vertex index.
|
// Only unswapped vertex index.
|
||||||
shader_object_.push_back(1);
|
shader_object_.push_back(1);
|
||||||
// Unknown.
|
// Unknown.
|
||||||
|
@ -14054,13 +14054,13 @@ void DxbcShaderTranslator::WriteInputSignature() {
|
||||||
|
|
||||||
// Vertex index semantic name.
|
// Vertex index semantic name.
|
||||||
AppendString(shader_object_, "SV_VertexID");
|
AppendString(shader_object_, "SV_VertexID");
|
||||||
} else if (IsDXBCDomainShader()) {
|
} else if (IsDxbcDomainShader()) {
|
||||||
// No inputs - tessellation factors specified in PCSG.
|
// No inputs - tessellation factors specified in PCSG.
|
||||||
shader_object_.push_back(0);
|
shader_object_.push_back(0);
|
||||||
// Unknown.
|
// Unknown.
|
||||||
shader_object_.push_back(8);
|
shader_object_.push_back(8);
|
||||||
} else {
|
} else {
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
// Interpolators, point parameters (coordinates, size), clip space ZW,
|
// Interpolators, point parameters (coordinates, size), clip space ZW,
|
||||||
// screen position, is front face.
|
// screen position, is front face.
|
||||||
shader_object_.push_back(kInterpolatorCount + 4);
|
shader_object_.push_back(kInterpolatorCount + 4);
|
||||||
|
@ -14154,7 +14154,7 @@ void DxbcShaderTranslator::WriteInputSignature() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DxbcShaderTranslator::WritePatchConstantSignature() {
|
void DxbcShaderTranslator::WritePatchConstantSignature() {
|
||||||
assert_true(IsDXBCDomainShader());
|
assert_true(IsDxbcDomainShader());
|
||||||
|
|
||||||
uint32_t chunk_position_dwords = uint32_t(shader_object_.size());
|
uint32_t chunk_position_dwords = uint32_t(shader_object_.size());
|
||||||
|
|
||||||
|
@ -14237,7 +14237,7 @@ void DxbcShaderTranslator::WriteOutputSignature() {
|
||||||
const uint32_t signature_position_dwords = 2;
|
const uint32_t signature_position_dwords = 2;
|
||||||
const uint32_t signature_size_dwords = 6;
|
const uint32_t signature_size_dwords = 6;
|
||||||
|
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
// Interpolators, point parameters (coordinates, size), clip space ZW,
|
// Interpolators, point parameters (coordinates, size), clip space ZW,
|
||||||
// screen position.
|
// screen position.
|
||||||
shader_object_.push_back(kInterpolatorCount + 3);
|
shader_object_.push_back(kInterpolatorCount + 3);
|
||||||
|
@ -14303,7 +14303,7 @@ void DxbcShaderTranslator::WriteOutputSignature() {
|
||||||
shader_object_[position_name_position_dwords] = new_offset;
|
shader_object_[position_name_position_dwords] = new_offset;
|
||||||
new_offset += AppendString(shader_object_, "SV_Position");
|
new_offset += AppendString(shader_object_, "SV_Position");
|
||||||
} else {
|
} else {
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
if (edram_rov_used_) {
|
if (edram_rov_used_) {
|
||||||
// No outputs - only ROV read/write.
|
// No outputs - only ROV read/write.
|
||||||
shader_object_.push_back(0);
|
shader_object_.push_back(0);
|
||||||
|
@ -14371,12 +14371,12 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
uint32_t chunk_position_dwords = uint32_t(shader_object_.size());
|
uint32_t chunk_position_dwords = uint32_t(shader_object_.size());
|
||||||
|
|
||||||
uint32_t shader_type;
|
uint32_t shader_type;
|
||||||
if (IsDXBCVertexShader()) {
|
if (IsDxbcVertexShader()) {
|
||||||
shader_type = D3D10_SB_VERTEX_SHADER;
|
shader_type = D3D10_SB_VERTEX_SHADER;
|
||||||
} else if (IsDXBCDomainShader()) {
|
} else if (IsDxbcDomainShader()) {
|
||||||
shader_type = D3D11_SB_DOMAIN_SHADER;
|
shader_type = D3D11_SB_DOMAIN_SHADER;
|
||||||
} else {
|
} else {
|
||||||
assert_true(IsDXBCPixelShader());
|
assert_true(IsDxbcPixelShader());
|
||||||
shader_type = D3D10_SB_PIXEL_SHADER;
|
shader_type = D3D10_SB_PIXEL_SHADER;
|
||||||
}
|
}
|
||||||
shader_object_.push_back(
|
shader_object_.push_back(
|
||||||
|
@ -14396,7 +14396,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
// Inputs/outputs have 1D-indexed operands with a component mask and a
|
// Inputs/outputs have 1D-indexed operands with a component mask and a
|
||||||
// register index.
|
// register index.
|
||||||
|
|
||||||
if (IsDXBCDomainShader()) {
|
if (IsDxbcDomainShader()) {
|
||||||
// Not using control point data since Xenos only has a vertex shader acting
|
// Not using control point data since Xenos only has a vertex shader acting
|
||||||
// as both vertex shader and domain shader.
|
// as both vertex shader and domain shader.
|
||||||
uint32_t control_point_count;
|
uint32_t control_point_count;
|
||||||
|
@ -14556,7 +14556,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unordered access views.
|
// Unordered access views.
|
||||||
if (IsDXBCPixelShader() && edram_rov_used_) {
|
if (IsDxbcPixelShader() && edram_rov_used_) {
|
||||||
// EDRAM uint32 rasterizer-ordered buffer (U0, at u0, space0).
|
// EDRAM uint32 rasterizer-ordered buffer (U0, at u0, space0).
|
||||||
shader_object_.push_back(
|
shader_object_.push_back(
|
||||||
ENCODE_D3D10_SB_OPCODE_TYPE(
|
ENCODE_D3D10_SB_OPCODE_TYPE(
|
||||||
|
@ -14578,8 +14578,8 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inputs and outputs.
|
// Inputs and outputs.
|
||||||
if (IsDXBCVertexOrDomainShader()) {
|
if (IsDxbcVertexOrDomainShader()) {
|
||||||
if (IsDXBCDomainShader()) {
|
if (IsDxbcDomainShader()) {
|
||||||
// Domain location input (barycentric for triangles, UV for quads).
|
// Domain location input (barycentric for triangles, UV for quads).
|
||||||
uint32_t domain_location_mask;
|
uint32_t domain_location_mask;
|
||||||
if (vertex_shader_type_ == VertexShaderType::kTriangleDomain) {
|
if (vertex_shader_type_ == VertexShaderType::kTriangleDomain) {
|
||||||
|
@ -14648,7 +14648,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
shader_object_.push_back(uint32_t(InOutRegister::kVSOutPosition));
|
shader_object_.push_back(uint32_t(InOutRegister::kVSOutPosition));
|
||||||
shader_object_.push_back(ENCODE_D3D10_SB_NAME(D3D10_SB_NAME_POSITION));
|
shader_object_.push_back(ENCODE_D3D10_SB_NAME(D3D10_SB_NAME_POSITION));
|
||||||
++stat_.dcl_count;
|
++stat_.dcl_count;
|
||||||
} else if (IsDXBCPixelShader()) {
|
} else if (IsDxbcPixelShader()) {
|
||||||
// Interpolator input.
|
// Interpolator input.
|
||||||
if (!is_depth_only_pixel_shader_) {
|
if (!is_depth_only_pixel_shader_) {
|
||||||
uint32_t interpolator_count =
|
uint32_t interpolator_count =
|
||||||
|
@ -14778,7 +14778,7 @@ void DxbcShaderTranslator::WriteShaderCode() {
|
||||||
|
|
||||||
// Initialize the depth output if used, which must be initialized on every
|
// Initialize the depth output if used, which must be initialized on every
|
||||||
// execution path.
|
// execution path.
|
||||||
if (!edram_rov_used_ && IsDXBCPixelShader() && writes_depth()) {
|
if (!edram_rov_used_ && IsDxbcPixelShader() && writes_depth()) {
|
||||||
shader_object_.push_back(ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_MOV) |
|
shader_object_.push_back(ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_MOV) |
|
||||||
ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(4));
|
ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(4));
|
||||||
shader_object_.push_back(
|
shader_object_.push_back(
|
||||||
|
|
|
@ -776,19 +776,19 @@ class DxbcShaderTranslator : public ShaderTranslator {
|
||||||
|
|
||||||
// Use these instead of is_vertex_shader/is_pixel_shader because they don't
|
// Use these instead of is_vertex_shader/is_pixel_shader because they don't
|
||||||
// take is_depth_only_pixel_shader_ into account.
|
// take is_depth_only_pixel_shader_ into account.
|
||||||
inline bool IsDXBCVertexOrDomainShader() const {
|
inline bool IsDxbcVertexOrDomainShader() const {
|
||||||
return !is_depth_only_pixel_shader_ && is_vertex_shader();
|
return !is_depth_only_pixel_shader_ && is_vertex_shader();
|
||||||
}
|
}
|
||||||
inline bool IsDXBCVertexShader() const {
|
inline bool IsDxbcVertexShader() const {
|
||||||
return IsDXBCVertexOrDomainShader() &&
|
return IsDxbcVertexOrDomainShader() &&
|
||||||
vertex_shader_type_ == VertexShaderType::kVertex;
|
vertex_shader_type_ == VertexShaderType::kVertex;
|
||||||
}
|
}
|
||||||
inline bool IsDXBCDomainShader() const {
|
inline bool IsDxbcDomainShader() const {
|
||||||
return IsDXBCVertexOrDomainShader() &&
|
return IsDxbcVertexOrDomainShader() &&
|
||||||
(vertex_shader_type_ == VertexShaderType::kTriangleDomain ||
|
(vertex_shader_type_ == VertexShaderType::kTriangleDomain ||
|
||||||
vertex_shader_type_ == VertexShaderType::kQuadDomain);
|
vertex_shader_type_ == VertexShaderType::kQuadDomain);
|
||||||
}
|
}
|
||||||
inline bool IsDXBCPixelShader() const {
|
inline bool IsDxbcPixelShader() const {
|
||||||
return is_depth_only_pixel_shader_ || is_pixel_shader();
|
return is_depth_only_pixel_shader_ || is_pixel_shader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue