|
|
|
@ -482,19 +482,8 @@ std::vector<Texture::FullTextureInfo> Maxwell3D::GetStageTextures(Regs::ShaderSt |
|
|
|
return textures; |
|
|
|
} |
|
|
|
|
|
|
|
Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage, |
|
|
|
std::size_t offset) const { |
|
|
|
auto& shader = state.shader_stages[static_cast<std::size_t>(stage)]; |
|
|
|
auto& tex_info_buffer = shader.const_buffers[regs.tex_cb_index]; |
|
|
|
ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); |
|
|
|
|
|
|
|
const GPUVAddr tex_info_address = |
|
|
|
tex_info_buffer.address + offset * sizeof(Texture::TextureHandle); |
|
|
|
|
|
|
|
ASSERT(tex_info_address < tex_info_buffer.address + tex_info_buffer.size); |
|
|
|
|
|
|
|
const Texture::TextureHandle tex_handle{memory_manager.Read<u32>(tex_info_address)}; |
|
|
|
|
|
|
|
Texture::FullTextureInfo Maxwell3D::GetTextureInfo(const Texture::TextureHandle tex_handle, |
|
|
|
std::size_t offset) const { |
|
|
|
Texture::FullTextureInfo tex_info{}; |
|
|
|
tex_info.index = static_cast<u32>(offset); |
|
|
|
|
|
|
|
@ -511,6 +500,22 @@ Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage, |
|
|
|
return tex_info; |
|
|
|
} |
|
|
|
|
|
|
|
Texture::FullTextureInfo Maxwell3D::GetStageTexture(Regs::ShaderStage stage, |
|
|
|
std::size_t offset) const { |
|
|
|
auto& shader = state.shader_stages[static_cast<std::size_t>(stage)]; |
|
|
|
auto& tex_info_buffer = shader.const_buffers[regs.tex_cb_index]; |
|
|
|
ASSERT(tex_info_buffer.enabled && tex_info_buffer.address != 0); |
|
|
|
|
|
|
|
const GPUVAddr tex_info_address = |
|
|
|
tex_info_buffer.address + offset * sizeof(Texture::TextureHandle); |
|
|
|
|
|
|
|
ASSERT(tex_info_address < tex_info_buffer.address + tex_info_buffer.size); |
|
|
|
|
|
|
|
const Texture::TextureHandle tex_handle{memory_manager.Read<u32>(tex_info_address)}; |
|
|
|
|
|
|
|
return GetTextureInfo(tex_handle, offset); |
|
|
|
} |
|
|
|
|
|
|
|
u32 Maxwell3D::GetRegisterValue(u32 method) const { |
|
|
|
ASSERT_MSG(method < Regs::NUM_REGS, "Invalid Maxwell3D register"); |
|
|
|
return regs.reg_array[method]; |
|
|
|
|