Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mesa
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
virgl-es
mesa
Commits
f301932d
Commit
f301932d
authored
Jun 06, 2010
by
Kristian Høgsberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
intel: Support EGL_MESA_image_drm
parent
9087ba12
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
87 additions
and
0 deletions
+87
-0
src/mesa/drivers/dri/intel/intel_regions.c
src/mesa/drivers/dri/intel/intel_regions.c
+16
-0
src/mesa/drivers/dri/intel/intel_regions.h
src/mesa/drivers/dri/intel/intel_regions.h
+3
-0
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_screen.c
+68
-0
No files found.
src/mesa/drivers/dri/intel/intel_regions.c
View file @
f301932d
...
...
@@ -192,6 +192,22 @@ intel_region_alloc(struct intel_screen *screen,
aligned_pitch
/
cpp
,
tiling
,
buffer
);
}
GLboolean
intel_region_flink
(
struct
intel_region
*
region
,
uint32_t
*
name
)
{
if
(
region
->
name
==
0
)
{
if
(
drm_intel_bo_flink
(
region
->
buffer
,
&
region
->
name
))
return
GL_FALSE
;
_mesa_HashInsert
(
region
->
screen
->
named_regions
,
region
->
name
,
region
);
}
*
name
=
region
->
name
;
return
GL_TRUE
;
}
struct
intel_region
*
intel_region_alloc_for_handle
(
struct
intel_screen
*
screen
,
GLuint
cpp
,
...
...
src/mesa/drivers/dri/intel/intel_regions.h
View file @
f301932d
...
...
@@ -88,6 +88,9 @@ intel_region_alloc_for_handle(struct intel_screen *screen,
GLuint
width
,
GLuint
height
,
GLuint
pitch
,
unsigned
int
handle
,
const
char
*
name
);
GLboolean
intel_region_flink
(
struct
intel_region
*
region
,
uint32_t
*
name
);
void
intel_region_reference
(
struct
intel_region
**
dst
,
struct
intel_region
*
src
);
...
...
src/mesa/drivers/dri/intel/intel_screen.c
View file @
f301932d
...
...
@@ -207,11 +207,79 @@ intel_destroy_image(__DRIimage *image)
FREE
(
image
);
}
static
__DRIimage
*
intel_create_image
(
__DRIscreen
*
screen
,
int
width
,
int
height
,
int
format
,
unsigned
int
use
,
void
*
loaderPrivate
)
{
__DRIimage
*
image
;
struct
intel_screen
*
intelScreen
=
screen
->
private
;
int
cpp
;
image
=
CALLOC
(
sizeof
*
image
);
if
(
image
==
NULL
)
return
NULL
;
switch
(
format
)
{
case
__DRI_IMAGE_FORMAT_RGB565
:
image
->
format
=
MESA_FORMAT_RGB565
;
image
->
internal_format
=
GL_RGB
;
image
->
data_type
=
GL_UNSIGNED_BYTE
;
break
;
case
__DRI_IMAGE_FORMAT_XRGB8888
:
image
->
format
=
MESA_FORMAT_XRGB8888
;
image
->
internal_format
=
GL_RGB
;
image
->
data_type
=
GL_UNSIGNED_BYTE
;
break
;
case
__DRI_IMAGE_FORMAT_ARGB8888
:
image
->
format
=
MESA_FORMAT_ARGB8888
;
image
->
internal_format
=
GL_RGBA
;
image
->
data_type
=
GL_UNSIGNED_BYTE
;
break
;
default:
free
(
image
);
return
NULL
;
}
image
->
data
=
loaderPrivate
;
cpp
=
_mesa_get_format_bytes
(
image
->
format
);
image
->
region
=
intel_region_alloc
(
intelScreen
,
I915_TILING_NONE
,
cpp
,
width
,
height
,
GL_TRUE
);
if
(
image
->
region
==
NULL
)
{
FREE
(
image
);
return
NULL
;
}
return
image
;
}
static
GLboolean
intel_query_image
(
__DRIimage
*
image
,
int
attrib
,
int
*
value
)
{
switch
(
attrib
)
{
case
__DRI_IMAGE_ATTRIB_STRIDE
:
*
value
=
image
->
region
->
pitch
*
image
->
region
->
cpp
;
return
GL_TRUE
;
case
__DRI_IMAGE_ATTRIB_HANDLE
:
*
value
=
image
->
region
->
buffer
->
handle
;
return
GL_TRUE
;
case
__DRI_IMAGE_ATTRIB_NAME
:
return
intel_region_flink
(
image
->
region
,
(
uint32_t
*
)
value
);
default:
return
GL_FALSE
;
}
}
static
struct
__DRIimageExtensionRec
intelImageExtension
=
{
{
__DRI_IMAGE
,
__DRI_IMAGE_VERSION
},
intel_create_image_from_name
,
intel_create_image_from_renderbuffer
,
intel_destroy_image
,
intel_create_image
,
intel_query_image
};
static
const
__DRIextension
*
intelScreenExtensions
[]
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment