dri/intel: Add explicit size parameter to intel_region_alloc_for_fd

Instead of assuming that the size will be height * pitch, have the caller pass
in the size explicitly.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
Keith Packard 2013-06-03 20:59:31 -07:00 committed by Eric Anholt
parent 888533dcd6
commit bf6591e948
6 changed files with 10 additions and 9 deletions

View File

@ -209,6 +209,7 @@ struct intel_region *
intel_region_alloc_for_fd(struct intel_screen *screen,
GLuint cpp,
GLuint width, GLuint height, GLuint pitch,
GLuint size,
int fd, const char *name)
{
struct intel_region *region;
@ -216,8 +217,7 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
int ret;
uint32_t bit_6_swizzle, tiling;
buffer = drm_intel_bo_gem_create_from_prime(screen->bufmgr,
fd, height * pitch);
buffer = drm_intel_bo_gem_create_from_prime(screen->bufmgr, fd, size);
if (buffer == NULL)
return NULL;
ret = drm_intel_bo_get_tiling(buffer, &tiling, &bit_6_swizzle);

View File

@ -91,7 +91,7 @@ struct intel_region *
intel_region_alloc_for_fd(struct intel_screen *screen,
GLuint cpp,
GLuint width, GLuint height, GLuint pitch,
int fd, const char *name);
GLuint size, int fd, const char *name);
bool
intel_region_flink(struct intel_region *region, uint32_t *name);

View File

@ -654,8 +654,8 @@ intel_create_image_from_fds(__DRIscreen *screen,
return NULL;
image->region = intel_region_alloc_for_fd(intelScreen,
1, width, height,
strides[0], fds[0], "image");
f->planes[0].cpp, width, height, strides[0],
height * strides[0], fds[0], "image");
if (image->region == NULL) {
free(image);
return NULL;

View File

@ -209,6 +209,7 @@ struct intel_region *
intel_region_alloc_for_fd(struct intel_screen *screen,
GLuint cpp,
GLuint width, GLuint height, GLuint pitch,
GLuint size,
int fd, const char *name)
{
struct intel_region *region;
@ -216,8 +217,7 @@ intel_region_alloc_for_fd(struct intel_screen *screen,
int ret;
uint32_t bit_6_swizzle, tiling;
buffer = drm_intel_bo_gem_create_from_prime(screen->bufmgr,
fd, height * pitch);
buffer = drm_intel_bo_gem_create_from_prime(screen->bufmgr, fd, size);
if (buffer == NULL)
return NULL;
ret = drm_intel_bo_get_tiling(buffer, &tiling, &bit_6_swizzle);

View File

@ -92,6 +92,7 @@ struct intel_region *
intel_region_alloc_for_fd(struct intel_screen *screen,
GLuint cpp,
GLuint width, GLuint height, GLuint pitch,
GLuint size,
int fd, const char *name);
bool

View File

@ -719,8 +719,8 @@ intel_create_image_from_fds(__DRIscreen *screen,
return NULL;
image->region = intel_region_alloc_for_fd(intelScreen,
1, width, height,
strides[0], fds[0], "image");
f->planes[0].cpp, width, height, strides[0],
height * strides[0], fds[0], "image");
if (image->region == NULL) {
free(image);
return NULL;