mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 02:10:11 +01:00
mesa/main: prefer R8-textures instead of A8 for glBitmap in display lists
This allows drivers to communicate that they prefer R8 textures rather than A8 for glBitmap usage. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
f92226931b
commit
bbdbb02a5f
3 changed files with 16 additions and 3 deletions
|
|
@ -941,9 +941,14 @@ build_bitmap_atlas(struct gl_context *ctx, struct gl_bitmap_atlas *atlas,
|
|||
goto out_of_memory;
|
||||
}
|
||||
|
||||
_mesa_init_teximage_fields(ctx, atlas->texImage,
|
||||
atlas->texWidth, atlas->texHeight, 1, 0,
|
||||
GL_ALPHA, MESA_FORMAT_A_UNORM8);
|
||||
if (ctx->Const.BitmapUsesRed)
|
||||
_mesa_init_teximage_fields(ctx, atlas->texImage,
|
||||
atlas->texWidth, atlas->texHeight, 1, 0,
|
||||
GL_RED, MESA_FORMAT_R_UNORM8);
|
||||
else
|
||||
_mesa_init_teximage_fields(ctx, atlas->texImage,
|
||||
atlas->texWidth, atlas->texHeight, 1, 0,
|
||||
GL_ALPHA, MESA_FORMAT_A_UNORM8);
|
||||
|
||||
/* alloc image storage */
|
||||
if (!ctx->Driver.AllocTextureImageBuffer(ctx, atlas->texImage)) {
|
||||
|
|
|
|||
|
|
@ -4130,6 +4130,9 @@ struct gl_constants
|
|||
/** Is the drivers uniform storage packed or padded to 16 bytes. */
|
||||
bool PackedDriverUniformStorage;
|
||||
|
||||
/** Wether or not glBitmap uses red textures rather than alpha */
|
||||
bool BitmapUsesRed;
|
||||
|
||||
/** GL_ARB_gl_spirv */
|
||||
struct spirv_supported_capabilities SpirVCapabilities;
|
||||
|
||||
|
|
|
|||
|
|
@ -621,6 +621,11 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
|
|||
ctx->Const.PackedDriverUniformStorage =
|
||||
screen->get_param(screen, PIPE_CAP_PACKED_UNIFORMS);
|
||||
|
||||
ctx->Const.BitmapUsesRed =
|
||||
screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM,
|
||||
PIPE_TEXTURE_2D, 0, 0,
|
||||
PIPE_BIND_SAMPLER_VIEW);
|
||||
|
||||
st->has_stencil_export =
|
||||
screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT);
|
||||
st->has_etc1 = screen->is_format_supported(screen, PIPE_FORMAT_ETC1_RGB8,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue