On 05/02/2013 12:08 AM, Topi Pohjolainen wrote:
No functional change in preparation for supporting multiple planes
per image each having its own region.
Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com>
---
src/mesa/drivers/dri/intel/intel_fbo.c | 6 +--
src/mesa/drivers/dri/intel/intel_regions.h | 7 ++-
src/mesa/drivers/dri/intel/intel_screen.c | 69 ++++++++++++++--------------
src/mesa/drivers/dri/intel/intel_tex_image.c | 2 +-
4 files changed, 45 insertions(+), 39 deletions(-)
[snip]
diff --git a/src/mesa/drivers/dri/intel/intel_regions.h
b/src/mesa/drivers/dri/intel/intel_regions.h
index 1fb6b27..e610f6b 100644
--- a/src/mesa/drivers/dri/intel/intel_regions.h
+++ b/src/mesa/drivers/dri/intel/intel_regions.h
@@ -129,8 +129,13 @@ struct intel_image_format {
} planes[3];
};
+/**
+ * An image representing multiple planes may come in two flavours:
+ * - all planes in single region but in different offsets or
+ * - each plane in its own region.
+ */
In case (1), does image->regions contain a single image, or does
it contain 3 pointers to the same image?
More importantly, I don't understand a key point here. By examining a given
instance
of __DRIimageRec, how can I determine if the image falls under case (1)
or case (2)?
Here is a concrete instance of the problem I don't know how to solve.
Suppose that I have an instance of __DRIimageRec and that I've determined
so far that its contents are as below, where image->planar_format was obtained
by a lookup in the intel_screen.c:intel_image_formats table.
image = {
// ...
.planar_format = {
.fourcc = __DRI_IMAGE_FOURCC_YUV422,
.components = __DRI_IMAGE_COMPONENTS_Y_U_V,
.nplanes = 3,
. planes = {
[0] = {
.buffer_index = 0,
.dri_format = __DRI_IMAGE_FORMAT_R8,
// ...
},
[1] = {
.buffer_index = 1,
.dri_format = __DRI_IMAGE_FORMAT_R8,
// ...
},
[2] = {
.buffer_index = 2,
.dri_format = __DRI_IMAGE_FORMAT_R8,
// ...
},
};
With this information, how can I know if dereferencing image->regions[1]
will segfault or not? That is, how can I know if this image have one or
three images?
struct __DRIimageRec {
- struct intel_region *region;
+ struct intel_region *regions[3];
GLenum internal_format;
uint32_t dri_format;
GLuint format;
[snip]
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev