Use std::string_view in rsx code

This commit is contained in:
Megamouse
2026-06-14 06:28:53 +02:00
parent f8c88c3a7a
commit f95a225d63
16 changed files with 70 additions and 71 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ std::string GLFragmentDecompilerThread::getFunction(FUNCTION f)
return glsl::getFunctionImpl(f); return glsl::getFunctionImpl(f);
} }
std::string GLFragmentDecompilerThread::compareFunction(COMPARE f, const std::string &Op0, const std::string &Op1) std::string GLFragmentDecompilerThread::compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1)
{ {
return glsl::compareFunctionImpl(f, Op0, Op1); return glsl::compareFunctionImpl(f, Op0, Op1);
} }
+2 -2
View File
@@ -34,8 +34,8 @@ public:
protected: protected:
std::string getFloatTypeName(usz elementCount) override; std::string getFloatTypeName(usz elementCount) override;
std::string getHalfTypeName(usz elementCount) override; std::string getHalfTypeName(usz elementCount) override;
std::string getFunction(FUNCTION) override; std::string getFunction(FUNCTION f) override;
std::string compareFunction(COMPARE, const std::string&, const std::string&) override; std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1) override;
void insertHeader(std::stringstream &OS) override; void insertHeader(std::stringstream &OS) override;
void insertInputs(std::stringstream &OS) override; void insertInputs(std::stringstream &OS) override;
+1 -1
View File
@@ -21,7 +21,7 @@ std::string GLVertexDecompilerThread::getFunction(FUNCTION f)
return glsl::getFunctionImpl(f); return glsl::getFunctionImpl(f);
} }
std::string GLVertexDecompilerThread::compareFunction(COMPARE f, const std::string &Op0, const std::string &Op1, bool scalar) std::string GLVertexDecompilerThread::compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar)
{ {
return glsl::compareFunctionImpl(f, Op0, Op1, scalar); return glsl::compareFunctionImpl(f, Op0, Op1, scalar);
} }
+2 -2
View File
@@ -26,8 +26,8 @@ struct GLVertexDecompilerThread : public VertexProgramDecompiler
protected: protected:
std::string getFloatTypeName(usz elementCount) override; std::string getFloatTypeName(usz elementCount) override;
std::string getIntTypeName(usz elementCount) override; std::string getIntTypeName(usz elementCount) override;
std::string getFunction(FUNCTION) override; std::string getFunction(FUNCTION f) override;
std::string compareFunction(COMPARE, const std::string&, const std::string&, bool scalar) override; std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar) override;
void insertHeader(std::stringstream& OS) override; void insertHeader(std::stringstream& OS) override;
void insertInputs(std::stringstream& OS, const std::vector<ParamType>& inputs) override; void insertInputs(std::stringstream& OS, const std::vector<ParamType>& inputs) override;
@@ -111,11 +111,11 @@ protected:
/** returns string calling function where arguments are passed via /** returns string calling function where arguments are passed via
* $0 $1 $2 substring. * $0 $1 $2 substring.
*/ */
virtual std::string getFunction(FUNCTION) = 0; virtual std::string getFunction(FUNCTION f) = 0;
/** returns string calling comparison function on 2 args passed as strings. /** returns string calling comparison function on 2 args passed as strings.
*/ */
virtual std::string compareFunction(COMPARE, const std::string &, const std::string &) = 0; virtual std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1) = 0;
/** Insert header of shader file (eg #version, "system constants"...) /** Insert header of shader file (eg #version, "system constants"...)
*/ */
+1 -1
View File
@@ -73,7 +73,7 @@ namespace glsl
} }
} }
std::string compareFunctionImpl(COMPARE f, const std::string &Op0, const std::string &Op1, bool scalar) std::string compareFunctionImpl(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar)
{ {
if (scalar) if (scalar)
{ {
+1 -1
View File
@@ -71,7 +71,7 @@ namespace glsl
std::string getFloatTypeNameImpl(usz elementCount); std::string getFloatTypeNameImpl(usz elementCount);
std::string getHalfTypeNameImpl(usz elementCount); std::string getHalfTypeNameImpl(usz elementCount);
std::string compareFunctionImpl(COMPARE f, const std::string &Op0, const std::string &Op1, bool scalar = false); std::string compareFunctionImpl(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar = false);
void insert_vertex_input_fetch(std::stringstream& OS, glsl_rules rules, bool glsl4_compliant=true); void insert_vertex_input_fetch(std::stringstream& OS, glsl_rules rules, bool glsl4_compliant=true);
void insert_rop_init(std::ostream& OS); void insert_rop_init(std::ostream& OS);
void insert_rop(std::ostream& OS, const shader_properties& props); void insert_rop(std::ostream& OS, const shader_properties& props);
+5 -5
View File
@@ -130,7 +130,7 @@ struct ParamType
{ {
} }
bool HasItem(const std::string& name) const bool HasItem(std::string_view name) const
{ {
return std::any_of(items.cbegin(), items.cend(), [&name](const auto& item) return std::any_of(items.cbegin(), items.cend(), [&name](const auto& item)
{ {
@@ -138,7 +138,7 @@ struct ParamType
}); });
} }
bool ReplaceOrInsert(const std::string& name, const ParamItem& item) bool ReplaceOrInsert(std::string_view name, const ParamItem& item)
{ {
if (HasItem(name)) if (HasItem(name))
{ {
@@ -168,7 +168,7 @@ struct ParamArray
{ {
std::vector<ParamType> params[PF_PARAM_COUNT]; std::vector<ParamType> params[PF_PARAM_COUNT];
ParamType* SearchParam(const ParamFlag &flag, const std::string& type) ParamType* SearchParam(const ParamFlag& flag, std::string_view type)
{ {
for (auto& param : params[flag]) for (auto& param : params[flag])
{ {
@@ -179,7 +179,7 @@ struct ParamArray
return nullptr; return nullptr;
} }
bool HasParamTypeless(const ParamFlag flag, const std::string& name) const bool HasParamTypeless(const ParamFlag flag, std::string_view name) const
{ {
const auto& p = params[flag]; const auto& p = params[flag];
return std::any_of(p.cbegin(), p.cend(), [&name](const auto& param) return std::any_of(p.cbegin(), p.cend(), [&name](const auto& param)
@@ -188,7 +188,7 @@ struct ParamArray
}); });
} }
bool HasParam(const ParamFlag flag, const std::string& type, const std::string& name) bool HasParam(const ParamFlag flag, std::string_view type, std::string_view name)
{ {
const ParamType* t = SearchParam(flag, type); const ParamType* t = SearchParam(flag, type);
return t && t->HasItem(name); return t && t->HasItem(name);
@@ -99,11 +99,11 @@ protected:
/** returns string calling function where arguments are passed via /** returns string calling function where arguments are passed via
* $0 $1 $2 substring. * $0 $1 $2 substring.
*/ */
virtual std::string getFunction(FUNCTION) = 0; virtual std::string getFunction(FUNCTION f) = 0;
/** returns string calling comparison function on 2 args passed as strings. /** returns string calling comparison function on 2 args passed as strings.
*/ */
virtual std::string compareFunction(COMPARE, const std::string &, const std::string &, bool scalar = false) = 0; virtual std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar = false) = 0;
/** Insert header of shader file (eg #version, "system constants"...) /** Insert header of shader file (eg #version, "system constants"...)
*/ */
+1 -1
View File
@@ -21,7 +21,7 @@ std::string VKFragmentDecompilerThread::getFunction(FUNCTION f)
return glsl::getFunctionImpl(f); return glsl::getFunctionImpl(f);
} }
std::string VKFragmentDecompilerThread::compareFunction(COMPARE f, const std::string &Op0, const std::string &Op1) std::string VKFragmentDecompilerThread::compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1)
{ {
return glsl::compareFunctionImpl(f, Op0, Op1); return glsl::compareFunctionImpl(f, Op0, Op1);
} }
+2 -2
View File
@@ -37,8 +37,8 @@ public:
protected: protected:
std::string getFloatTypeName(usz elementCount) override; std::string getFloatTypeName(usz elementCount) override;
std::string getHalfTypeName(usz elementCount) override; std::string getHalfTypeName(usz elementCount) override;
std::string getFunction(FUNCTION) override; std::string getFunction(FUNCTION f) override;
std::string compareFunction(COMPARE, const std::string&, const std::string&) override; std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1) override;
void insertHeader(std::stringstream &OS) override; void insertHeader(std::stringstream &OS) override;
void insertInputs(std::stringstream &OS) override; void insertInputs(std::stringstream &OS) override;
+5 -5
View File
@@ -282,7 +282,7 @@ namespace vk
return *this; return *this;
} }
bool program::has_uniform(program_input_type type, const std::string& uniform_name) bool program::has_uniform(program_input_type type, std::string_view uniform_name)
{ {
for (auto& set : m_sets) for (auto& set : m_sets)
{ {
@@ -296,7 +296,7 @@ namespace vk
return false; return false;
} }
std::pair<u32, u32> program::get_uniform_location(::glsl::program_domain domain, program_input_type type, const std::string& uniform_name) std::pair<u32, u32> program::get_uniform_location(::glsl::program_domain domain, program_input_type type, std::string_view uniform_name)
{ {
for (unsigned i = 0; i < ::size32(m_sets); ++i) for (unsigned i = 0; i < ::size32(m_sets); ++i)
{ {
@@ -632,7 +632,7 @@ namespace vk
std::unordered_map<u32, VkDescriptorType> descriptor_type_map; std::unordered_map<u32, VkDescriptorType> descriptor_type_map;
auto descriptor_count = [](const std::string& name) -> u32 auto descriptor_count = [](std::string_view name) -> u32
{ {
const auto start = name.find_last_of("["); const auto start = name.find_last_of("[");
if (start == std::string::npos) if (start == std::string::npos)
@@ -643,8 +643,8 @@ namespace vk
const auto end = name.find_last_of("]"); const auto end = name.find_last_of("]");
ensure(end != std::string::npos && start < end, "Invalid variable name"); ensure(end != std::string::npos && start < end, "Invalid variable name");
const std::string array_size = name.substr(start + 1, end - start - 1); const std::string_view array_size = name.substr(start + 1, end - start - 1);
if (const auto count = std::atoi(array_size.c_str()); if (const auto count = std::atoi(array_size.data());
count > 0) count > 0)
{ {
return count; return count;
+2 -3
View File
@@ -221,13 +221,12 @@ namespace vk
program& link(bool separate_stages); program& link(bool separate_stages);
program& bind(const vk::command_buffer& cmd, VkPipelineBindPoint bind_point); program& bind(const vk::command_buffer& cmd, VkPipelineBindPoint bind_point);
bool has_uniform(program_input_type type, const std::string &uniform_name); bool has_uniform(program_input_type type, std::string_view uniform_name);
std::pair<u32, u32> get_uniform_location(::glsl::program_domain domain, program_input_type type, const std::string& uniform_name); std::pair<u32, u32> get_uniform_location(::glsl::program_domain domain, program_input_type type, std::string_view uniform_name);
void bind_uniform(const VkDescriptorImageInfoEx& image_descriptor, u32 set_id, u32 binding_point); void bind_uniform(const VkDescriptorImageInfoEx& image_descriptor, u32 set_id, u32 binding_point);
void bind_uniform(const VkDescriptorBufferInfoEx& buffer_descriptor, u32 set_id, u32 binding_point); void bind_uniform(const VkDescriptorBufferInfoEx& buffer_descriptor, u32 set_id, u32 binding_point);
void bind_uniform(const VkDescriptorBufferViewEx& buffer_view, u32 set_id, u32 binding_point); void bind_uniform(const VkDescriptorBufferViewEx& buffer_view, u32 set_id, u32 binding_point);
void bind_uniform(const VkDescriptorBufferViewEx& buffer_view, ::glsl::program_domain domain, program_input_type type, const std::string &binding_name);
void bind_uniform_array(const std::span<const VkDescriptorImageInfoEx>& image_descriptors,u32 set_id, u32 binding_point); void bind_uniform_array(const std::span<const VkDescriptorImageInfoEx>& image_descriptors,u32 set_id, u32 binding_point);
+1 -1
View File
@@ -21,7 +21,7 @@ std::string VKVertexDecompilerThread::getFunction(FUNCTION f)
return glsl::getFunctionImpl(f); return glsl::getFunctionImpl(f);
} }
std::string VKVertexDecompilerThread::compareFunction(COMPARE f, const std::string &Op0, const std::string &Op1, bool scalar) std::string VKVertexDecompilerThread::compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar)
{ {
return glsl::compareFunctionImpl(f, Op0, Op1, scalar); return glsl::compareFunctionImpl(f, Op0, Op1, scalar);
} }
+2 -2
View File
@@ -25,8 +25,8 @@ struct VKVertexDecompilerThread : public VertexProgramDecompiler
protected: protected:
std::string getFloatTypeName(usz elementCount) override; std::string getFloatTypeName(usz elementCount) override;
std::string getIntTypeName(usz elementCount) override; std::string getIntTypeName(usz elementCount) override;
std::string getFunction(FUNCTION) override; std::string getFunction(FUNCTION f) override;
std::string compareFunction(COMPARE, const std::string&, const std::string&, bool scalar) override; std::string compareFunction(COMPARE f, std::string_view Op0, std::string_view Op1, bool scalar) override;
void insertHeader(std::stringstream& OS) override; void insertHeader(std::stringstream& OS) override;
void insertInputs(std::stringstream& OS, const std::vector<ParamType>& inputs) override; void insertInputs(std::stringstream& OS, const std::vector<ParamType>& inputs) override;
+1 -1
View File
@@ -51,7 +51,7 @@ namespace rsx::assembler
return nullptr; return nullptr;
}; };
static FlowGraph CFG_from_source(const std::string& asm_) static FlowGraph CFG_from_source(std::string_view asm_)
{ {
auto ir = FPIR::from_source(asm_); auto ir = FPIR::from_source(asm_);