mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-03-17 18:55:19 +01:00
rsx: Tighten data contract for "external" raw images
This commit is contained in:
parent
3194bd3fb4
commit
9e6fecb4ca
|
|
@ -220,7 +220,7 @@ namespace gl
|
|||
m_input_filter = gl::filter::linear;
|
||||
}
|
||||
|
||||
gl::texture_view* ui_overlay_renderer::load_simple_image(rsx::overlays::image_info_base* desc, bool temp_resource, u32 owner_uid)
|
||||
gl::texture_view* ui_overlay_renderer::load_simple_image(const rsx::overlays::image_info_base* desc, bool temp_resource, u32 owner_uid)
|
||||
{
|
||||
auto tex = std::make_unique<gl::texture>(GL_TEXTURE_2D, desc->w, desc->h, 1, 1, 1, GL_RGBA8, RSX_FORMAT_CLASS_COLOR);
|
||||
tex->copy_from(desc->as_span(), gl::texture::format::rgba, gl::texture::type::uint_8_8_8_8, {});
|
||||
|
|
@ -236,7 +236,7 @@ namespace gl
|
|||
}
|
||||
else
|
||||
{
|
||||
const u64 key = reinterpret_cast<u64>(desc);
|
||||
const u64 key = reinterpret_cast<uintptr_t>(desc);
|
||||
temp_image_cache[key] = std::make_pair(owner_uid, std::move(tex));
|
||||
temp_view_cache[key] = std::move(view);
|
||||
}
|
||||
|
|
@ -287,7 +287,7 @@ namespace gl
|
|||
}
|
||||
}
|
||||
|
||||
gl::texture_view* ui_overlay_renderer::find_font(rsx::overlays::font* font)
|
||||
gl::texture_view* ui_overlay_renderer::find_font(const rsx::overlays::font* font)
|
||||
{
|
||||
const auto font_size = font->get_glyph_data_dimensions();
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ namespace gl
|
|||
return result;
|
||||
}
|
||||
|
||||
gl::texture_view* ui_overlay_renderer::find_temp_image(rsx::overlays::image_info_base* desc, u32 owner_uid)
|
||||
gl::texture_view* ui_overlay_renderer::find_temp_image(const rsx::overlays::image_info_base* desc, u32 owner_uid)
|
||||
{
|
||||
const bool dirty = std::exchange(desc->dirty, false);
|
||||
const u64 key = reinterpret_cast<u64>(desc);
|
||||
|
|
@ -431,7 +431,7 @@ namespace gl
|
|||
}
|
||||
case rsx::overlays::image_resource_id::raw_image:
|
||||
{
|
||||
cmd_->bind_texture(31, GL_TEXTURE_2D, find_temp_image(static_cast<rsx::overlays::image_info_base*>(cmd.config.external_data_ref), ui.uid)->id());
|
||||
cmd_->bind_texture(31, GL_TEXTURE_2D, find_temp_image(static_cast<const rsx::overlays::image_info_base*>(cmd.config.external_data_ref), ui.uid)->id());
|
||||
break;
|
||||
}
|
||||
case rsx::overlays::image_resource_id::font_file:
|
||||
|
|
|
|||
|
|
@ -75,16 +75,16 @@ namespace gl
|
|||
|
||||
ui_overlay_renderer();
|
||||
|
||||
gl::texture_view* load_simple_image(rsx::overlays::image_info_base* desc, bool temp_resource, u32 owner_uid);
|
||||
gl::texture_view* load_simple_image(const rsx::overlays::image_info_base* desc, bool temp_resource, u32 owner_uid);
|
||||
|
||||
void create();
|
||||
void destroy();
|
||||
|
||||
void remove_temp_resources(u64 key);
|
||||
|
||||
gl::texture_view* find_font(rsx::overlays::font* font);
|
||||
gl::texture_view* find_font(const rsx::overlays::font* font);
|
||||
|
||||
gl::texture_view* find_temp_image(rsx::overlays::image_info_base* desc, u32 owner_uid);
|
||||
gl::texture_view* find_temp_image(const rsx::overlays::image_info_base* desc, u32 owner_uid);
|
||||
|
||||
void set_primitive_type(rsx::overlays::primitive_type type);
|
||||
|
||||
|
|
|
|||
|
|
@ -953,7 +953,7 @@ namespace rsx
|
|||
external_ref = nullptr;
|
||||
}
|
||||
|
||||
void image_view::set_raw_image(image_info_base* raw_image)
|
||||
void image_view::set_raw_image(const image_info_base* raw_image)
|
||||
{
|
||||
image_resource_ref = image_resource_id::raw_image;
|
||||
external_ref = raw_image;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace rsx
|
|||
{
|
||||
int w = 0, h = 0, channels = 0;
|
||||
int bpp = 0;
|
||||
bool dirty = false;
|
||||
mutable bool dirty = false;
|
||||
|
||||
image_info_base() {}
|
||||
virtual ~image_info_base() {}
|
||||
|
|
@ -108,7 +108,7 @@ namespace rsx
|
|||
|
||||
u8 texture_ref = image_resource_id::none;
|
||||
font* font_ref = nullptr;
|
||||
void* external_data_ref = nullptr;
|
||||
const void* external_data_ref = nullptr;
|
||||
|
||||
u8 blur_strength = 0;
|
||||
|
||||
|
|
@ -314,7 +314,7 @@ namespace rsx
|
|||
{
|
||||
protected:
|
||||
u8 image_resource_ref = image_resource_id::none;
|
||||
void* external_ref = nullptr;
|
||||
const void* external_ref = nullptr;
|
||||
|
||||
// Strength of blur effect
|
||||
u8 blur_strength = 0;
|
||||
|
|
@ -325,7 +325,7 @@ namespace rsx
|
|||
compiled_resource& get_compiled() override;
|
||||
|
||||
void set_image_resource(u8 resource_id);
|
||||
void set_raw_image(image_info_base* raw_image);
|
||||
void set_raw_image(const image_info_base* raw_image);
|
||||
void clear_image();
|
||||
void set_blur_strength(u8 strength);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -434,7 +434,7 @@ namespace vk
|
|||
}
|
||||
}
|
||||
|
||||
vk::image_view* ui_overlay_renderer::find_font(rsx::overlays::font* font, vk::command_buffer& cmd, vk::data_heap& upload_heap)
|
||||
vk::image_view* ui_overlay_renderer::find_font(const rsx::overlays::font* font, vk::command_buffer& cmd, vk::data_heap& upload_heap)
|
||||
{
|
||||
const auto image_size = font->get_glyph_data_dimensions();
|
||||
|
||||
|
|
@ -462,7 +462,7 @@ namespace vk
|
|||
true, false, bytes.data(), -1);
|
||||
}
|
||||
|
||||
vk::image_view* ui_overlay_renderer::find_temp_image(rsx::overlays::image_info_base* desc, vk::command_buffer& cmd, vk::data_heap& upload_heap, u32 owner_uid)
|
||||
vk::image_view* ui_overlay_renderer::find_temp_image(const rsx::overlays::image_info_base* desc, vk::command_buffer& cmd, vk::data_heap& upload_heap, u32 owner_uid)
|
||||
{
|
||||
const bool dirty = std::exchange(desc->dirty, false);
|
||||
const u64 key = reinterpret_cast<u64>(desc);
|
||||
|
|
@ -660,7 +660,7 @@ namespace vk
|
|||
: rsx::overlays::texture_sampling_mode::font3D;
|
||||
break;
|
||||
case rsx::overlays::image_resource_id::raw_image:
|
||||
src = find_temp_image(static_cast<rsx::overlays::image_info_base*>(command.config.external_data_ref), cmd, upload_heap, ui.uid);
|
||||
src = find_temp_image(static_cast<const rsx::overlays::image_info_base*>(command.config.external_data_ref), cmd, upload_heap, ui.uid);
|
||||
break;
|
||||
default:
|
||||
src = view_cache[command.config.texture_ref].get();
|
||||
|
|
|
|||
|
|
@ -153,8 +153,8 @@ namespace vk
|
|||
|
||||
void remove_temp_resources(u32 key);
|
||||
|
||||
vk::image_view* find_font(rsx::overlays::font* font, vk::command_buffer& cmd, vk::data_heap& upload_heap);
|
||||
vk::image_view* find_temp_image(rsx::overlays::image_info_base* desc, vk::command_buffer& cmd, vk::data_heap& upload_heap, u32 owner_uid);
|
||||
vk::image_view* find_font(const rsx::overlays::font* font, vk::command_buffer& cmd, vk::data_heap& upload_heap);
|
||||
vk::image_view* find_temp_image(const rsx::overlays::image_info_base* desc, vk::command_buffer& cmd, vk::data_heap& upload_heap, u32 owner_uid);
|
||||
|
||||
std::vector<vk::glsl::program_input> get_vertex_inputs() override;
|
||||
std::vector<vk::glsl::program_input> get_fragment_inputs() override;
|
||||
|
|
|
|||
Loading…
Reference in a new issue