GPUDevice: Normalize supports_texture_buffers => texture_buffers

This commit is contained in:
Stenzek 2025-01-21 19:06:37 +10:00
parent 9d4789e082
commit 389276bb03
No known key found for this signature in database
7 changed files with 15 additions and 15 deletions

View File

@ -961,7 +961,7 @@ bool GPU_HW::CreateBuffers(Error* error)
} }
} }
if (g_gpu_device->GetFeatures().supports_texture_buffers) if (g_gpu_device->GetFeatures().texture_buffers)
{ {
if (!(m_vram_upload_buffer = g_gpu_device->CreateTextureBuffer(GPUTextureBuffer::Format::R16UI, if (!(m_vram_upload_buffer = g_gpu_device->CreateTextureBuffer(GPUTextureBuffer::Format::R16UI,
GPUDevice::MIN_TEXEL_BUFFER_ELEMENTS, error))) GPUDevice::MIN_TEXEL_BUFFER_ELEMENTS, error)))
@ -1616,7 +1616,7 @@ bool GPU_HW::CompilePipelines(Error* error)
// VRAM write // VRAM write
{ {
const bool use_buffer = features.supports_texture_buffers; const bool use_buffer = features.texture_buffers;
const bool use_ssbo = features.texture_buffers_emulated_with_ssbo; const bool use_ssbo = features.texture_buffers_emulated_with_ssbo;
std::unique_ptr<GPUShader> fs = g_gpu_device->CreateShader( std::unique_ptr<GPUShader> fs = g_gpu_device->CreateShader(
GPUShaderStage::Fragment, shadergen.GetLanguage(), GPUShaderStage::Fragment, shadergen.GetLanguage(),
@ -3381,7 +3381,7 @@ void GPU_HW::UpdateVRAMOnGPU(u32 x, u32 y, u32 width, u32 height, const void* da
GPUDevice::AutoRecycleTexture upload_texture; GPUDevice::AutoRecycleTexture upload_texture;
u32 map_index; u32 map_index;
if (!g_gpu_device->GetFeatures().supports_texture_buffers) if (!g_gpu_device->GetFeatures().texture_buffers)
{ {
map_index = 0; map_index = 0;
upload_texture = upload_texture =

View File

@ -178,7 +178,7 @@ void D3D11Device::SetFeatures(FeatureMask disabled_features)
m_features.per_sample_shading = (feature_level >= D3D_FEATURE_LEVEL_10_1); m_features.per_sample_shading = (feature_level >= D3D_FEATURE_LEVEL_10_1);
m_features.noperspective_interpolation = true; m_features.noperspective_interpolation = true;
m_features.texture_copy_to_self = false; m_features.texture_copy_to_self = false;
m_features.supports_texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS); m_features.texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS);
m_features.texture_buffers_emulated_with_ssbo = false; m_features.texture_buffers_emulated_with_ssbo = false;
m_features.feedback_loops = false; m_features.feedback_loops = false;
m_features.geometry_shaders = !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS); m_features.geometry_shaders = !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS);

View File

@ -1339,7 +1339,7 @@ void D3D12Device::SetFeatures(D3D_FEATURE_LEVEL feature_level, FeatureMask disab
m_features.noperspective_interpolation = true; m_features.noperspective_interpolation = true;
m_features.texture_copy_to_self = m_features.texture_copy_to_self =
/*!(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF)*/ false; // TODO: Support with Enhanced Barriers /*!(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF)*/ false; // TODO: Support with Enhanced Barriers
m_features.supports_texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS); m_features.texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS);
m_features.texture_buffers_emulated_with_ssbo = false; m_features.texture_buffers_emulated_with_ssbo = false;
m_features.feedback_loops = false; m_features.feedback_loops = false;
m_features.geometry_shaders = !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS); m_features.geometry_shaders = !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS);

View File

@ -589,7 +589,7 @@ public:
bool per_sample_shading : 1; bool per_sample_shading : 1;
bool noperspective_interpolation : 1; bool noperspective_interpolation : 1;
bool texture_copy_to_self : 1; bool texture_copy_to_self : 1;
bool supports_texture_buffers : 1; bool texture_buffers : 1;
bool texture_buffers_emulated_with_ssbo : 1; bool texture_buffers_emulated_with_ssbo : 1;
bool feedback_loops : 1; bool feedback_loops : 1;
bool geometry_shaders : 1; bool geometry_shaders : 1;

View File

@ -379,7 +379,7 @@ void MetalDevice::SetFeatures(FeatureMask disabled_features)
m_features.per_sample_shading = true; m_features.per_sample_shading = true;
m_features.noperspective_interpolation = true; m_features.noperspective_interpolation = true;
m_features.texture_copy_to_self = !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF); m_features.texture_copy_to_self = !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF);
m_features.supports_texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS); m_features.texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS);
m_features.texture_buffers_emulated_with_ssbo = true; m_features.texture_buffers_emulated_with_ssbo = true;
m_features.feedback_loops = (m_features.framebuffer_fetch || supports_barriers); m_features.feedback_loops = (m_features.framebuffer_fetch || supports_barriers);
m_features.geometry_shaders = false; m_features.geometry_shaders = false;

View File

@ -418,16 +418,16 @@ bool OpenGLDevice::CheckFeatures(FeatureMask disabled_features)
#ifdef __APPLE__ #ifdef __APPLE__
// Partial texture buffer uploads appear to be broken in macOS's OpenGL driver. // Partial texture buffer uploads appear to be broken in macOS's OpenGL driver.
m_features.supports_texture_buffers = false; m_features.texture_buffers = false;
#else #else
m_features.supports_texture_buffers = m_features.texture_buffers =
!(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS) && (GLAD_GL_VERSION_3_1 || GLAD_GL_ES_VERSION_3_2); !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS) && (GLAD_GL_VERSION_3_1 || GLAD_GL_ES_VERSION_3_2);
// And Samsung's ANGLE/GLES driver? // And Samsung's ANGLE/GLES driver?
if (std::strstr(reinterpret_cast<const char*>(glGetString(GL_RENDERER)), "ANGLE")) if (std::strstr(reinterpret_cast<const char*>(glGetString(GL_RENDERER)), "ANGLE"))
m_features.supports_texture_buffers = false; m_features.texture_buffers = false;
if (m_features.supports_texture_buffers) if (m_features.texture_buffers)
{ {
GLint max_texel_buffer_size = 0; GLint max_texel_buffer_size = 0;
glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, reinterpret_cast<GLint*>(&max_texel_buffer_size)); glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, reinterpret_cast<GLint*>(&max_texel_buffer_size));
@ -436,12 +436,12 @@ bool OpenGLDevice::CheckFeatures(FeatureMask disabled_features)
{ {
WARNING_LOG("GL_MAX_TEXTURE_BUFFER_SIZE ({}) is below required minimum ({}), not using texture buffers.", WARNING_LOG("GL_MAX_TEXTURE_BUFFER_SIZE ({}) is below required minimum ({}), not using texture buffers.",
max_texel_buffer_size, MIN_TEXEL_BUFFER_ELEMENTS); max_texel_buffer_size, MIN_TEXEL_BUFFER_ELEMENTS);
m_features.supports_texture_buffers = false; m_features.texture_buffers = false;
} }
} }
#endif #endif
if (!m_features.supports_texture_buffers && !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS)) if (!m_features.texture_buffers && !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS))
{ {
// Try SSBOs. // Try SSBOs.
GLint max_fragment_storage_blocks = 0; GLint max_fragment_storage_blocks = 0;
@ -459,7 +459,7 @@ bool OpenGLDevice::CheckFeatures(FeatureMask disabled_features)
if (m_features.texture_buffers_emulated_with_ssbo) if (m_features.texture_buffers_emulated_with_ssbo)
{ {
INFO_LOG("Using shader storage buffers for VRAM writes."); INFO_LOG("Using shader storage buffers for VRAM writes.");
m_features.supports_texture_buffers = true; m_features.texture_buffers = true;
} }
else else
{ {

View File

@ -2432,7 +2432,7 @@ void VulkanDevice::SetFeatures(FeatureMask disabled_features, const VkPhysicalDe
m_features.noperspective_interpolation = true; m_features.noperspective_interpolation = true;
m_features.texture_copy_to_self = !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF); m_features.texture_copy_to_self = !(disabled_features & FEATURE_MASK_TEXTURE_COPY_TO_SELF);
m_features.per_sample_shading = vk_features.sampleRateShading; m_features.per_sample_shading = vk_features.sampleRateShading;
m_features.supports_texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS); m_features.texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS);
m_features.feedback_loops = !(disabled_features & FEATURE_MASK_FEEDBACK_LOOPS); m_features.feedback_loops = !(disabled_features & FEATURE_MASK_FEEDBACK_LOOPS);
#ifdef __APPLE__ #ifdef __APPLE__