mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 22:20:09 +01:00
intel: Add a flag for miptree mapping to disable transcoding.
I want to reuse intel_miptree_map() to replace some region mapping that's broken for separate stencil, but doing so would result in new demands on ETC transcode that we actually don't want to happen. Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
parent
e63c959451
commit
6d6bd2ac7c
2 changed files with 17 additions and 4 deletions
|
|
@ -1571,9 +1571,10 @@ intel_miptree_map_singlesample(struct intel_context *intel,
|
|||
|
||||
if (mt->format == MESA_FORMAT_S8) {
|
||||
intel_miptree_map_s8(intel, mt, map, level, slice);
|
||||
} else if (mt->etc_format != MESA_FORMAT_NONE) {
|
||||
} else if (mt->etc_format != MESA_FORMAT_NONE &&
|
||||
!(mode & BRW_MAP_DIRECT_BIT)) {
|
||||
intel_miptree_map_etc(intel, mt, map, level, slice);
|
||||
} else if (mt->stencil_mt) {
|
||||
} else if (mt->stencil_mt && !(mode & BRW_MAP_DIRECT_BIT)) {
|
||||
intel_miptree_map_depthstencil(intel, mt, map, level, slice);
|
||||
}
|
||||
/* According to the Ivy Bridge PRM, Vol1 Part4, section 1.2.1.2 (Graphics
|
||||
|
|
@ -1629,9 +1630,10 @@ intel_miptree_unmap_singlesample(struct intel_context *intel,
|
|||
|
||||
if (mt->format == MESA_FORMAT_S8) {
|
||||
intel_miptree_unmap_s8(intel, mt, map, level, slice);
|
||||
} else if (mt->etc_format != MESA_FORMAT_NONE) {
|
||||
} else if (mt->etc_format != MESA_FORMAT_NONE &&
|
||||
!(map->mode & BRW_MAP_DIRECT_BIT)) {
|
||||
intel_miptree_unmap_etc(intel, mt, map, level, slice);
|
||||
} else if (mt->stencil_mt) {
|
||||
} else if (mt->stencil_mt && !(map->mode & BRW_MAP_DIRECT_BIT)) {
|
||||
intel_miptree_unmap_depthstencil(intel, mt, map, level, slice);
|
||||
} else if (map->bo) {
|
||||
intel_miptree_unmap_blit(intel, mt, map, level, slice);
|
||||
|
|
|
|||
|
|
@ -66,6 +66,17 @@ extern "C" {
|
|||
struct intel_resolve_map;
|
||||
struct intel_texture_image;
|
||||
|
||||
/**
|
||||
* When calling intel_miptree_map() on an ETC-transcoded-to-RGB miptree or a
|
||||
* depthstencil-split-to-separate-stencil miptree, we'll normally make a
|
||||
* tmeporary and recreate the kind of data requested by Mesa core, since we're
|
||||
* satisfying some glGetTexImage() request or something.
|
||||
*
|
||||
* However, occasionally you want to actually map the miptree's current data
|
||||
* without transcoding back. This flag to intel_miptree_map() gets you that.
|
||||
*/
|
||||
#define BRW_MAP_DIRECT_BIT 0x80000000
|
||||
|
||||
struct intel_miptree_map {
|
||||
/** Bitfield of GL_MAP_READ_BIT, GL_MAP_WRITE_BIT, GL_MAP_INVALIDATE_BIT */
|
||||
GLbitfield mode;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue