mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-06-26 12:26:18 +00:00
Handle immediate inline samplers (#3015)
* Handle immediate inline sampler * Simplify inline sampler handling
This commit is contained in:
parent
9dd35c3a42
commit
efa8f6a154
7 changed files with 54 additions and 38 deletions
|
@ -3,6 +3,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <span>
|
||||
#include <variant>
|
||||
#include <vector>
|
||||
#include <boost/container/small_vector.hpp>
|
||||
#include <boost/container/static_vector.hpp>
|
||||
|
@ -91,11 +92,15 @@ struct ImageResource {
|
|||
using ImageResourceList = boost::container::small_vector<ImageResource, NumImages>;
|
||||
|
||||
struct SamplerResource {
|
||||
u32 sharp_idx;
|
||||
AmdGpu::Sampler inline_sampler{};
|
||||
std::variant<u32, AmdGpu::Sampler> sampler;
|
||||
u32 associated_image : 4;
|
||||
u32 disable_aniso : 1;
|
||||
|
||||
SamplerResource(u32 sharp_idx, u32 associated_image_, bool disable_aniso_)
|
||||
: sampler{sharp_idx}, associated_image{associated_image_}, disable_aniso{disable_aniso_} {}
|
||||
SamplerResource(AmdGpu::Sampler sampler_)
|
||||
: sampler{sampler_}, associated_image{0}, disable_aniso(0) {}
|
||||
|
||||
constexpr AmdGpu::Sampler GetSharp(const Info& info) const noexcept;
|
||||
};
|
||||
using SamplerResourceList = boost::container::small_vector<SamplerResource, NumSamplers>;
|
||||
|
@ -318,7 +323,9 @@ constexpr AmdGpu::Image ImageResource::GetSharp(const Info& info) const noexcept
|
|||
}
|
||||
|
||||
constexpr AmdGpu::Sampler SamplerResource::GetSharp(const Info& info) const noexcept {
|
||||
return inline_sampler ? inline_sampler : info.ReadUdSharp<AmdGpu::Sampler>(sharp_idx);
|
||||
return std::holds_alternative<AmdGpu::Sampler>(sampler)
|
||||
? std::get<AmdGpu::Sampler>(sampler)
|
||||
: info.ReadUdSharp<AmdGpu::Sampler>(std::get<u32>(sampler));
|
||||
}
|
||||
|
||||
constexpr AmdGpu::Image FMaskResource::GetSharp(const Info& info) const noexcept {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue