Move sampler border parameter to renderer gl

This commit is contained in:
2026-06-02 06:22:41 +02:00
parent 8130a922d0
commit 36fea6b870
6 changed files with 24 additions and 10 deletions

View File

@@ -135,11 +135,12 @@ Known local toolchain state:
used by `RTT::create`. It also validates Shape index-type and fill/stroke
primitive-mode mapping used by the legacy mesh draw path, plus the
PanoPainter cube-face to OpenGL texture-target mapping used by `TextureCube`.
It also owns and validates sampler wrap S/T/R plus min/mag filter parameter
ordering used by legacy `Sampler`. The PanoPainter shader attribute binding
catalog used by legacy `Shader` creation also lives here. It also owns the
PanoPainter shader uniform catalog and legacy hash mapping used by `Shader`
active-uniform discovery and the uniform uniqueness check.
It also owns and validates sampler wrap S/T/R, min/mag filter, and desktop
border-color parameter mapping used by legacy `Sampler`. The PanoPainter
shader attribute binding catalog used by legacy `Shader` creation also lives
here. It also owns the PanoPainter shader uniform catalog and legacy hash
mapping used by `Shader` active-uniform discovery and the uniform uniqueness
check.
- `windows-msvc-vcpkg-headless` validates manifest install/configure/build/test
for the current headless component matrix; see DEBT-0007 for remaining app
and platform triplet migration.

View File

@@ -396,9 +396,9 @@ decisions used by legacy `Shape` drawing and the PanoPainter cube-face to
OpenGL texture-target mapping used by `TextureCube` also live in
`pp_renderer_gl`. The legacy app delegates extension, upload-format,
framebuffer diagnostic, render-target texture parameter, mesh draw-mode, and
cube-face texture-target interpretation to that backend library. Sampler wrap
and min/mag filter parameter mapping for legacy `Sampler` also lives in
`pp_renderer_gl`. The PanoPainter shader attribute
cube-face texture-target interpretation to that backend library. Sampler wrap,
min/mag filter, and desktop border-color parameter mapping for legacy
`Sampler` also lives in `pp_renderer_gl`. The PanoPainter shader attribute
binding catalog also lives in `pp_renderer_gl` and is consumed by legacy
`Shader` creation. Shader uniform hashing, catalog validation, active-uniform
mapping, and the legacy uniform uniqueness check now delegate to
@@ -648,7 +648,8 @@ Results:
mode mapping, PanoPainter cube-face texture-target order, and the linear
clamp-to-edge render-target texture parameter set used by `RTT::create`.
Sampler parameter validation covers wrap S/T/R plus min/mag filter ordering
used by legacy `Sampler::set` and `Sampler::set_filter`.
used by legacy `Sampler::set` and `Sampler::set_filter`, plus the desktop
border-color parameter name used by `Sampler::set_border`.
Shader attribute binding catalog validation covers the current `pos`, `uvs`,
`uvs2`, `col`, and `nor` bindings and rejects empty, unnamed, null-name, and
duplicate-name catalogs while preserving legacy shared locations. Shader

View File

@@ -44,6 +44,7 @@ constexpr std::uint32_t gl_texture_min_filter = 0x2801U;
constexpr std::uint32_t gl_texture_wrap_s = 0x2802U;
constexpr std::uint32_t gl_texture_wrap_t = 0x2803U;
constexpr std::uint32_t gl_texture_wrap_r = 0x8072U;
constexpr std::uint32_t gl_texture_border_color = 0x1004U;
constexpr std::uint32_t gl_clamp_to_edge = 0x812FU;
[[nodiscard]] bool contains(std::string_view text, std::string_view needle) noexcept
@@ -237,4 +238,9 @@ std::array<OpenGlTextureParameter, 2> sampler_filter_parameters(
};
}
std::uint32_t sampler_border_color_parameter_name() noexcept
{
return gl_texture_border_color;
}
}

View File

@@ -51,5 +51,6 @@ struct OpenGlTextureParameter {
[[nodiscard]] std::array<OpenGlTextureParameter, 2> sampler_filter_parameters(
std::uint32_t filter_min,
std::uint32_t filter_mag) noexcept;
[[nodiscard]] std::uint32_t sampler_border_color_parameter_name() noexcept;
}

View File

@@ -332,7 +332,10 @@ void Sampler::set_border(glm::vec4 rgba)
App::I->render_task([this, rgba]
{
#if USE_SAMPLER && !defined(__GLES__)
glSamplerParameterfv(id, GL_TEXTURE_BORDER_COLOR, glm::value_ptr(rgba));
glSamplerParameterfv(
id,
static_cast<GLenum>(pp::renderer::gl::sampler_border_color_parameter_name()),
glm::value_ptr(rgba));
#endif // USE_SAMPLER
});
}

View File

@@ -211,6 +211,8 @@ void maps_sampler_parameters(pp::tests::Harness& h)
PP_EXPECT(h, filters[0].value == 0x2600U);
PP_EXPECT(h, filters[1].name == 0x2800U);
PP_EXPECT(h, filters[1].value == 0x2601U);
PP_EXPECT(h, pp::renderer::gl::sampler_border_color_parameter_name() == 0x1004U);
}
void exposes_shader_attribute_binding_catalog(pp::tests::Harness& h)