1
0
Fork 0
forked from suyu/suyu

maxwell_3d: Allow texture handles with TIC id zero

Also remove "enabled" field from Tegra::Texture::FullTextureInfo because
it would become unused.
This commit is contained in:
ReinUsesLisp 2019-01-22 00:57:30 -03:00
parent e01a9de35f
commit 390721a561
3 changed files with 7 additions and 21 deletions

View file

@ -462,13 +462,9 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt
sizeof(Texture::TextureHandle); sizeof(Texture::TextureHandle);
// Load the TIC data. // Load the TIC data.
if (tex_handle.tic_id != 0) { auto tic_entry = GetTICEntry(tex_handle.tic_id);
tex_info.enabled = true; // TODO(Subv): Workaround for BitField's move constructor being deleted.
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
auto tic_entry = GetTICEntry(tex_handle.tic_id);
// TODO(Subv): Workaround for BitField's move constructor being deleted.
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
}
// Load the TSC data // Load the TSC data
if (tex_handle.tsc_id != 0) { if (tex_handle.tsc_id != 0) {
@ -477,8 +473,7 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt
std::memcpy(&tex_info.tsc, &tsc_entry, sizeof(tsc_entry)); std::memcpy(&tex_info.tsc, &tsc_entry, sizeof(tsc_entry));
} }
if (tex_info.enabled) textures.push_back(tex_info);
textures.push_back(tex_info);
} }
return textures; return textures;
@ -501,13 +496,9 @@ Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage,
tex_info.index = static_cast<u32>(offset); tex_info.index = static_cast<u32>(offset);
// Load the TIC data. // Load the TIC data.
if (tex_handle.tic_id != 0) { auto tic_entry = GetTICEntry(tex_handle.tic_id);
tex_info.enabled = true; // TODO(Subv): Workaround for BitField's move constructor being deleted.
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
auto tic_entry = GetTICEntry(tex_handle.tic_id);
// TODO(Subv): Workaround for BitField's move constructor being deleted.
std::memcpy(&tex_info.tic, &tic_entry, sizeof(tic_entry));
}
// Load the TSC data // Load the TSC data
if (tex_handle.tsc_id != 0) { if (tex_handle.tsc_id != 0) {

View file

@ -1008,10 +1008,6 @@ void RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, const Shader& s
auto& unit = state.texture_units[current_bindpoint]; auto& unit = state.texture_units[current_bindpoint];
const auto texture = maxwell3d.GetStageTexture(entry.GetStage(), entry.GetOffset()); const auto texture = maxwell3d.GetStageTexture(entry.GetStage(), entry.GetOffset());
if (!texture.enabled) {
unit.texture = 0;
continue;
}
texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc); texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc);

View file

@ -317,7 +317,6 @@ struct FullTextureInfo {
u32 index; u32 index;
TICEntry tic; TICEntry tic;
TSCEntry tsc; TSCEntry tsc;
bool enabled;
}; };
/// Returns the number of bytes per pixel of the input texture format. /// Returns the number of bytes per pixel of the input texture format.