diff options
author | marha <marha@users.sourceforge.net> | 2013-02-15 08:16:33 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-02-15 08:16:33 +0100 |
commit | 6f6a2340d40759b77ef43965efdd24f3e4e623fd (patch) | |
tree | eb25fb9622df69a72ee33e655617a1127780cb90 /mesalib/src/mesa/state_tracker/st_format.c | |
parent | b41f74438672dd682bc01ae818cb3da654f22c1e (diff) | |
download | vcxsrv-6f6a2340d40759b77ef43965efdd24f3e4e623fd.tar.gz vcxsrv-6f6a2340d40759b77ef43965efdd24f3e4e623fd.tar.bz2 vcxsrv-6f6a2340d40759b77ef43965efdd24f3e4e623fd.zip |
libxcb mesa xserver xkeyboard-config git update 15 Feb 2013
xserver commit 90642948cc78834d95f7a3bddaac7ff77b68ed7e
libxcb commit 0dd8f8d26a758bc385e79d9239bf6ef2e3d7bf13
xkeyboard-config commit 067b0e4fd8d4fe707d86b24ae83bcacb61624231
mesa commit 6dbe94c12cd1b3b912a7083055178e0dfd7372af
Diffstat (limited to 'mesalib/src/mesa/state_tracker/st_format.c')
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_format.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mesalib/src/mesa/state_tracker/st_format.c b/mesalib/src/mesa/state_tracker/st_format.c index 02969b995..5fd44e76d 100644 --- a/mesalib/src/mesa/state_tracker/st_format.c +++ b/mesalib/src/mesa/state_tracker/st_format.c @@ -1675,6 +1675,41 @@ st_choose_renderbuffer_format(struct st_context *st, /** + * Given an OpenGL user-requested format and type, and swapBytes state, + * return the format which exactly matches those parameters, so that + * a memcpy-based transfer can be done. + * + * If no format is supported, return PIPE_FORMAT_NONE. + */ +enum pipe_format +st_choose_matching_format(struct pipe_screen *screen, unsigned bind, + GLenum format, GLenum type, GLboolean swapBytes) +{ + gl_format mesa_format; + + for (mesa_format = 1; mesa_format < MESA_FORMAT_COUNT; mesa_format++) { + if (_mesa_get_format_color_encoding(mesa_format) == GL_SRGB) { + continue; + } + + if (_mesa_format_matches_format_and_type(mesa_format, format, type, + swapBytes)) { + enum pipe_format format = st_mesa_format_to_pipe_format(mesa_format); + + if (format && + screen->is_format_supported(screen, format, PIPE_TEXTURE_2D, 0, + bind)) { + return format; + } + /* It's unlikely to find 2 matching Mesa formats. */ + break; + } + } + return PIPE_FORMAT_NONE; +} + + +/** * Called via ctx->Driver.ChooseTextureFormat(). */ gl_format |