|
|
@ -12,6 +12,7 @@ |
|
|
#include "common/common_types.h" |
|
|
#include "common/common_types.h" |
|
|
#include "video_core/engines/engine_upload.h" |
|
|
#include "video_core/engines/engine_upload.h" |
|
|
#include "video_core/gpu.h" |
|
|
#include "video_core/gpu.h" |
|
|
|
|
|
#include "video_core/textures/texture.h" |
|
|
|
|
|
|
|
|
namespace Core { |
|
|
namespace Core { |
|
|
class System; |
|
|
class System; |
|
|
@ -111,7 +112,7 @@ public: |
|
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x3FE); |
|
|
INSERT_PADDING_WORDS(0x3FE); |
|
|
|
|
|
|
|
|
u32 texture_const_buffer_index; |
|
|
|
|
|
|
|
|
u32 tex_cb_index; |
|
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x374); |
|
|
INSERT_PADDING_WORDS(0x374); |
|
|
}; |
|
|
}; |
|
|
@ -149,7 +150,7 @@ public: |
|
|
union { |
|
|
union { |
|
|
BitField<0, 8, u32> const_buffer_enable_mask; |
|
|
BitField<0, 8, u32> const_buffer_enable_mask; |
|
|
BitField<29, 2, u32> cache_layout; |
|
|
BitField<29, 2, u32> cache_layout; |
|
|
} memory_config; |
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
INSERT_PADDING_WORDS(0x8); |
|
|
INSERT_PADDING_WORDS(0x8); |
|
|
|
|
|
|
|
|
@ -194,6 +195,14 @@ public: |
|
|
/// Write the value to the register identified by method. |
|
|
/// Write the value to the register identified by method. |
|
|
void CallMethod(const GPU::MethodCall& method_call); |
|
|
void CallMethod(const GPU::MethodCall& method_call); |
|
|
|
|
|
|
|
|
|
|
|
Tegra::Texture::FullTextureInfo GetTexture(std::size_t offset) const; |
|
|
|
|
|
|
|
|
|
|
|
/// Given a Texture Handle, returns the TSC and TIC entries. |
|
|
|
|
|
Texture::FullTextureInfo GetTextureInfo(const Texture::TextureHandle tex_handle, |
|
|
|
|
|
std::size_t offset) const; |
|
|
|
|
|
|
|
|
|
|
|
u32 AccessConstBuffer32(u64 const_buffer, u64 offset) const; |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
Core::System& system; |
|
|
Core::System& system; |
|
|
VideoCore::RasterizerInterface& rasterizer; |
|
|
VideoCore::RasterizerInterface& rasterizer; |
|
|
@ -201,6 +210,12 @@ private: |
|
|
Upload::State upload_state; |
|
|
Upload::State upload_state; |
|
|
|
|
|
|
|
|
void ProcessLaunch(); |
|
|
void ProcessLaunch(); |
|
|
|
|
|
|
|
|
|
|
|
/// Retrieves information about a specific TIC entry from the TIC buffer. |
|
|
|
|
|
Texture::TICEntry GetTICEntry(u32 tic_index) const; |
|
|
|
|
|
|
|
|
|
|
|
/// Retrieves information about a specific TSC entry from the TSC buffer. |
|
|
|
|
|
Texture::TSCEntry GetTSCEntry(u32 tsc_index) const; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
#define ASSERT_REG_POSITION(field_name, position) \ |
|
|
#define ASSERT_REG_POSITION(field_name, position) \ |
|
|
@ -218,12 +233,12 @@ ASSERT_REG_POSITION(launch, 0xAF); |
|
|
ASSERT_REG_POSITION(tsc, 0x557); |
|
|
ASSERT_REG_POSITION(tsc, 0x557); |
|
|
ASSERT_REG_POSITION(tic, 0x55D); |
|
|
ASSERT_REG_POSITION(tic, 0x55D); |
|
|
ASSERT_REG_POSITION(code_loc, 0x582); |
|
|
ASSERT_REG_POSITION(code_loc, 0x582); |
|
|
ASSERT_REG_POSITION(texture_const_buffer_index, 0x982); |
|
|
|
|
|
|
|
|
ASSERT_REG_POSITION(tex_cb_index, 0x982); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(program_start, 0x8); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(program_start, 0x8); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(grid_dim_x, 0xC); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(grid_dim_x, 0xC); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(shared_alloc, 0x11); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(shared_alloc, 0x11); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(block_dim_x, 0x12); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(block_dim_x, 0x12); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(memory_config, 0x14); |
|
|
|
|
|
|
|
|
ASSERT_LAUNCH_PARAM_POSITION(const_buffer_enable_mask, 0x14); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(const_buffer_config, 0x1D); |
|
|
ASSERT_LAUNCH_PARAM_POSITION(const_buffer_config, 0x1D); |
|
|
|
|
|
|
|
|
#undef ASSERT_REG_POSITION |
|
|
#undef ASSERT_REG_POSITION |
|
|
|