### Godot version

4.0.2

### System information

Windows 11, GLES3, nVidia RTX 3070, driver 528.49

### Issue description

When drawing a viewport in Compatibility (GLES3) mode, the filter mode for the CanvasItem doing the drawing is ignored and nearest is always used. This is true regardless of using SubViewportContainer or TextureRect to perform the drawing.

From https://github.com/godotengine/godot-proposals/issues/1467, the culprit appears to be here:

https://github.com/godotengine/godot/blob/677b63d7656fd0f11e224e0858fcf9479486595d/drivers/gles3/rasterizer_gles3.cpp#L302

### Steps to reproduce

- Open the minimal reproduction project.
- Run the project with Compatibility renderer.
- Viewport texture is not filtered even though it's explicitly set to use Linear.
- Set renderer to Forward+ or Mobile.
- Run the project.
- Viewport texture is filtered.

### Minimal reproduction project

[ViewportTextureFilterBug.zip](https://github.com/godotengine/godot/files/11216987/ViewportTextureFilterBug.zip)

return RID();
}
void TextureStorage::decal_initialize(RID p_rid) {
}
void TextureStorage::decal_set_size(RID p_decal, const Vector3 &p_size) {
}
void TextureStorage::decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) {
}
void TextureStorage::decal_set_emission_energy(RID p_decal, float p_energy) {
}
void TextureStorage::decal_set_albedo_mix(RID p_decal, float p_mix) {
}
void TextureStorage::decal_set_modulate(RID p_decal, const Color &p_modulate) {
}
void TextureStorage::decal_set_cull_mask(RID p_decal, uint32_t p_layers) {
}
void TextureStorage::decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) {