Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(580)

Side by Side Diff: components/exo/wayland/server.cc

Issue 2110213002: Revert of Add format modifier IDs for EGL_EXT_image_dma_buf_import extension (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/exo/display_unittest.cc ('k') | gpu/ipc/client/gpu_channel_host.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/exo/wayland/server.h" 5 #include "components/exo/wayland/server.h"
6 6
7 #include <grp.h> 7 #include <grp.h>
8 #include <linux/input.h> 8 #include <linux/input.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 [format](const drm_supported_format& supported_format) { 514 [format](const drm_supported_format& supported_format) {
515 return supported_format.drm_format == format; 515 return supported_format.drm_format == format;
516 }); 516 });
517 if (supported_format == 517 if (supported_format ==
518 (drm_supported_formats + arraysize(drm_supported_formats))) { 518 (drm_supported_formats + arraysize(drm_supported_formats))) {
519 wl_resource_post_error(resource, WL_DRM_ERROR_INVALID_FORMAT, 519 wl_resource_post_error(resource, WL_DRM_ERROR_INVALID_FORMAT,
520 "invalid format 0x%x", format); 520 "invalid format 0x%x", format);
521 return; 521 return;
522 } 522 }
523 523
524 std::vector<gfx::NativePixmapPlane> planes; 524 std::vector<int> strides{stride0, stride1, stride2};
525 planes.emplace_back(stride0, offset0, 0); 525 std::vector<int> offsets{offset0, offset1, offset2};
526 planes.emplace_back(stride1, offset1, 0);
527 planes.emplace_back(stride2, offset2, 0);
528 std::vector<base::ScopedFD> fds; 526 std::vector<base::ScopedFD> fds;
529 527
530 size_t num_planes = 528 int planes =
531 gfx::NumberOfPlanesForBufferFormat(supported_format->buffer_format); 529 gfx::NumberOfPlanesForBufferFormat(supported_format->buffer_format);
532 planes.resize(num_planes); 530 strides.resize(planes);
531 offsets.resize(planes);
533 fds.push_back(base::ScopedFD(name)); 532 fds.push_back(base::ScopedFD(name));
534 533
535 std::unique_ptr<Buffer> buffer = 534 std::unique_ptr<Buffer> buffer =
536 GetUserDataAs<Display>(resource)->CreateLinuxDMABufBuffer( 535 GetUserDataAs<Display>(resource)->CreateLinuxDMABufBuffer(
537 gfx::Size(width, height), supported_format->buffer_format, planes, 536 gfx::Size(width, height), supported_format->buffer_format, strides,
538 std::move(fds)); 537 offsets, std::move(fds));
539 if (!buffer) { 538 if (!buffer) {
540 wl_resource_post_no_memory(resource); 539 wl_resource_post_no_memory(resource);
541 return; 540 return;
542 } 541 }
543 542
544 wl_resource* buffer_resource = 543 wl_resource* buffer_resource =
545 wl_resource_create(client, &wl_buffer_interface, 1, id); 544 wl_resource_create(client, &wl_buffer_interface, 1, id);
546 545
547 buffer->set_release_callback(base::Bind(&HandleBufferReleaseCallback, 546 buffer->set_release_callback(base::Bind(&HandleBufferReleaseCallback,
548 base::Unretained(buffer_resource))); 547 base::Unretained(buffer_resource)));
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 660
662 size_t num_planes = 661 size_t num_planes =
663 gfx::NumberOfPlanesForBufferFormat(supported_format->buffer_format); 662 gfx::NumberOfPlanesForBufferFormat(supported_format->buffer_format);
664 663
665 if (linux_buffer_params->planes.size() != num_planes) { 664 if (linux_buffer_params->planes.size() != num_planes) {
666 wl_resource_post_error(resource, ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_IDX, 665 wl_resource_post_error(resource, ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_IDX,
667 "plane idx out of bounds"); 666 "plane idx out of bounds");
668 return; 667 return;
669 } 668 }
670 669
671 std::vector<gfx::NativePixmapPlane> planes; 670 std::vector<int> strides;
671 std::vector<int> offsets;
672 std::vector<base::ScopedFD> fds; 672 std::vector<base::ScopedFD> fds;
673 673
674 for (uint32_t i = 0; i < num_planes; ++i) { 674 for (uint32_t i = 0; i < num_planes; ++i) {
675 auto plane_it = linux_buffer_params->planes.find(i); 675 auto plane_it = linux_buffer_params->planes.find(i);
676 if (plane_it == linux_buffer_params->planes.end()) { 676 if (plane_it == linux_buffer_params->planes.end()) {
677 wl_resource_post_error(resource, 677 wl_resource_post_error(resource,
678 ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE, 678 ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE,
679 "missing a plane"); 679 "missing a plane");
680 return; 680 return;
681 } 681 }
682 LinuxBufferParams::Plane& plane = plane_it->second; 682 LinuxBufferParams::Plane& plane = plane_it->second;
683 planes.emplace_back(plane.stride, plane.offset, 0); 683 strides.push_back(plane.stride);
684 offsets.push_back(plane.offset);
684 if (plane.fd.is_valid()) 685 if (plane.fd.is_valid())
685 fds.push_back(std::move(plane.fd)); 686 fds.push_back(std::move(plane.fd));
686 } 687 }
687 688
688 std::unique_ptr<Buffer> buffer = 689 std::unique_ptr<Buffer> buffer =
689 linux_buffer_params->display->CreateLinuxDMABufBuffer( 690 linux_buffer_params->display->CreateLinuxDMABufBuffer(
690 gfx::Size(width, height), supported_format->buffer_format, planes, 691 gfx::Size(width, height), supported_format->buffer_format, strides,
691 std::move(fds)); 692 offsets, std::move(fds));
692 if (!buffer) { 693 if (!buffer) {
693 zwp_linux_buffer_params_v1_send_failed(resource); 694 zwp_linux_buffer_params_v1_send_failed(resource);
694 return; 695 return;
695 } 696 }
696 697
697 wl_resource* buffer_resource = 698 wl_resource* buffer_resource =
698 wl_resource_create(client, &wl_buffer_interface, 1, 0); 699 wl_resource_create(client, &wl_buffer_interface, 1, 0);
699 700
700 buffer->set_release_callback(base::Bind(&HandleBufferReleaseCallback, 701 buffer->set_release_callback(base::Bind(&HandleBufferReleaseCallback,
701 base::Unretained(buffer_resource))); 702 base::Unretained(buffer_resource)));
(...skipping 2133 matching lines...) Expand 10 before | Expand all | Expand 10 after
2835 DCHECK(event_loop); 2836 DCHECK(event_loop);
2836 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds()); 2837 wl_event_loop_dispatch(event_loop, timeout.InMilliseconds());
2837 } 2838 }
2838 2839
2839 void Server::Flush() { 2840 void Server::Flush() {
2840 wl_display_flush_clients(wl_display_.get()); 2841 wl_display_flush_clients(wl_display_.get());
2841 } 2842 }
2842 2843
2843 } // namespace wayland 2844 } // namespace wayland
2844 } // namespace exo 2845 } // namespace exo
OLDNEW
« no previous file with comments | « components/exo/display_unittest.cc ('k') | gpu/ipc/client/gpu_channel_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698